From 637134bb6f226b7bb7077cf70965d1fe167e99fd Mon Sep 17 00:00:00 2001
From: Jeffrey Wigger <jeffrey.wigger@epfl.ch>
Date: Fri, 17 Jun 2022 09:19:45 +0200
Subject: [PATCH] added aucillary files

---
 .../ip_addr_7Machines-checkpoint.json         |    9 +
 eval/16_regular.edges                         |   49 +
 eval/ip_addr_1Machines.json                   |    3 +
 eval/run_grid1.sh                             |  107 +
 eval/run_grid_server.sh                       |  102 +
 eval/run_reddit_local2.sh                     |  115 +
 eval/run_xtimes_reddit_local2.sh              |  114 +
 .../config_reddit_jwins_local.ini             |   43 +
 .../config_reddit_sharing_local2.ini          |   36 +
 .../config_reddit_topkacc_local.ini           |   51 +
 random files/16_regular.edges                 |   49 +
 random files/16_regular.png                   |  Bin 0 -> 40971 bytes
 random files/16_ring.edges                    |   33 +
 random files/16_ring.png                      |  Bin 0 -> 21915 bytes
 random files/192_regular.edges                |  961 +++
 random files/192_regular.png                  |  Bin 0 -> 208289 bytes
 random files/288_regular.edges                | 1441 ++++
 random files/384_regular.edges                | 2305 ++++++
 random files/96_star.edges                    |  191 +
 random files/96_star.png                      |  Bin 0 -> 128116 bytes
 random files/Diff0:1000.png                   |  Bin 0 -> 22638 bytes
 random files/FFT_Histogram.png                |  Bin 0 -> 10912 bytes
 random files/Freq_Diff_Values.png             |  Bin 0 -> 10136 bytes
 random files/Freq_Values.png                  |  Bin 0 -> 9116 bytes
 random files/Gradient_Values.png              |  Bin 0 -> 28369 bytes
 random files/Hist.png                         |  Bin 0 -> 7435 bytes
 random files/Parameter_Frequency.png          |  Bin 0 -> 12656 bytes
 random files/Parameter_Histogram.png          |  Bin 0 -> 9409 bytes
 random files/Parameter_Values.png             |  Bin 0 -> 25008 bytes
 random files/Parameters.png                   |  Bin 0 -> 37971 bytes
 random files/ParametersWaveletHaar.png        |  Bin 0 -> 22638 bytes
 random files/ParametersWaveletHaar.svg        | 2332 ++++++
 random files/ParametersWaveletHaarAcc.png     |  Bin 0 -> 21988 bytes
 random files/PartialModel.py                  |  381 +
 random files/PartialModelWed.py               |  381 +
 random files/WVFreq_Diff_Values.png           |  Bin 0 -> 21344 bytes
 random files/WVFreq_Values.png                |  Bin 0 -> 20025 bytes
 random files/accHist.png                      |  Bin 0 -> 9003 bytes
 random files/accPercentiles.png               |  Bin 0 -> 15237 bytes
 random files/accPercentiles70.png             |  Bin 0 -> 14525 bytes
 random files/celeba.ipynb                     |  768 ++
 random files/generate_graph.py                |   19 +
 random files/ip_addr_1Machines.json           |    3 +
 random files/learningrate-Copy2.ipynb         | 7121 +++++++++++++++++
 random files/learningrate.ipynb               | 6547 +++++++++++++++
 random files/multiprocessing_tests.py         |   56 +
 random files/playground_jw.ipynb              |  999 +++
 random files/playground_jw_quant.ipynb        | 4179 ++++++++++
 random files/plotting_from_csv.py             |  173 +
 random files/reddit.ipynb                     |  960 +++
 random files/test_elias.py                    |  177 +
 random files/testing_time_offset_dup.py       |   25 +
 random files/top10_Histogram.png              |  Bin 0 -> 8419 bytes
 random files/wavelet_bad.png                  |  Bin 0 -> 34007 bytes
 random files/wavelet_bad_approx.png           |  Bin 0 -> 32727 bytes
 random files/wavelet_bad_approx_good.png      |  Bin 0 -> 37790 bytes
 random files/wavelet_bad_approx_partial.png   |  Bin 0 -> 27962 bytes
 random files/wavelet_good.png                 |  Bin 0 -> 37790 bytes
 src/__init__.py                               |    0
 src/decentralizepy/compression/__init__.py    |    0
 60 files changed, 29730 insertions(+)
 create mode 100644 eval/.ipynb_checkpoints/ip_addr_7Machines-checkpoint.json
 create mode 100644 eval/16_regular.edges
 create mode 100644 eval/ip_addr_1Machines.json
 create mode 100755 eval/run_grid1.sh
 create mode 100755 eval/run_grid_server.sh
 create mode 100755 eval/run_reddit_local2.sh
 create mode 100755 eval/run_xtimes_reddit_local2.sh
 create mode 100644 eval/step_configs/config_reddit_jwins_local.ini
 create mode 100644 eval/step_configs/config_reddit_sharing_local2.ini
 create mode 100644 eval/step_configs/config_reddit_topkacc_local.ini
 create mode 100644 random files/16_regular.edges
 create mode 100644 random files/16_regular.png
 create mode 100644 random files/16_ring.edges
 create mode 100644 random files/16_ring.png
 create mode 100644 random files/192_regular.edges
 create mode 100644 random files/192_regular.png
 create mode 100644 random files/288_regular.edges
 create mode 100644 random files/384_regular.edges
 create mode 100644 random files/96_star.edges
 create mode 100644 random files/96_star.png
 create mode 100644 random files/Diff0:1000.png
 create mode 100644 random files/FFT_Histogram.png
 create mode 100644 random files/Freq_Diff_Values.png
 create mode 100644 random files/Freq_Values.png
 create mode 100644 random files/Gradient_Values.png
 create mode 100644 random files/Hist.png
 create mode 100644 random files/Parameter_Frequency.png
 create mode 100644 random files/Parameter_Histogram.png
 create mode 100644 random files/Parameter_Values.png
 create mode 100644 random files/Parameters.png
 create mode 100644 random files/ParametersWaveletHaar.png
 create mode 100644 random files/ParametersWaveletHaar.svg
 create mode 100644 random files/ParametersWaveletHaarAcc.png
 create mode 100644 random files/PartialModel.py
 create mode 100644 random files/PartialModelWed.py
 create mode 100644 random files/WVFreq_Diff_Values.png
 create mode 100644 random files/WVFreq_Values.png
 create mode 100644 random files/accHist.png
 create mode 100644 random files/accPercentiles.png
 create mode 100644 random files/accPercentiles70.png
 create mode 100644 random files/celeba.ipynb
 create mode 100644 random files/generate_graph.py
 create mode 100644 random files/ip_addr_1Machines.json
 create mode 100644 random files/learningrate-Copy2.ipynb
 create mode 100644 random files/learningrate.ipynb
 create mode 100644 random files/multiprocessing_tests.py
 create mode 100644 random files/playground_jw.ipynb
 create mode 100644 random files/playground_jw_quant.ipynb
 create mode 100644 random files/plotting_from_csv.py
 create mode 100644 random files/reddit.ipynb
 create mode 100644 random files/test_elias.py
 create mode 100644 random files/testing_time_offset_dup.py
 create mode 100644 random files/top10_Histogram.png
 create mode 100644 random files/wavelet_bad.png
 create mode 100644 random files/wavelet_bad_approx.png
 create mode 100644 random files/wavelet_bad_approx_good.png
 create mode 100644 random files/wavelet_bad_approx_partial.png
 create mode 100644 random files/wavelet_good.png
 create mode 100644 src/__init__.py
 create mode 100644 src/decentralizepy/compression/__init__.py

diff --git a/eval/.ipynb_checkpoints/ip_addr_7Machines-checkpoint.json b/eval/.ipynb_checkpoints/ip_addr_7Machines-checkpoint.json
new file mode 100644
index 0000000..889afa0
--- /dev/null
+++ b/eval/.ipynb_checkpoints/ip_addr_7Machines-checkpoint.json
@@ -0,0 +1,9 @@
+{
+    "0": "10.90.41.127",
+    "1": "10.90.41.128",
+    "2": "10.90.41.129",
+    "3": "10.90.41.130",
+    "4": "10.90.41.131",
+    "5": "10.90.41.132",
+    "6": "10.90.41.133"
+}
\ No newline at end of file
diff --git a/eval/16_regular.edges b/eval/16_regular.edges
new file mode 100644
index 0000000..4e847b9
--- /dev/null
+++ b/eval/16_regular.edges
@@ -0,0 +1,49 @@
+16
+0 1
+0 3
+0 15
+1 0
+1 10
+1 2
+2 1
+2 3
+2 15
+3 0
+3 2
+3 4
+4 9
+4 3
+4 5
+5 4
+5 13
+5 6
+6 11
+6 5
+6 7
+7 8
+7 14
+7 6
+8 9
+8 12
+8 7
+9 8
+9 10
+9 4
+10 1
+10 11
+10 9
+11 10
+11 12
+11 6
+12 8
+12 11
+12 13
+13 12
+13 5
+13 14
+14 15
+14 13
+14 7
+15 0
+15 2
+15 14
diff --git a/eval/ip_addr_1Machines.json b/eval/ip_addr_1Machines.json
new file mode 100644
index 0000000..15d6591
--- /dev/null
+++ b/eval/ip_addr_1Machines.json
@@ -0,0 +1,3 @@
+{
+    "0": "127.0.0.1"
+}
\ No newline at end of file
diff --git a/eval/run_grid1.sh b/eval/run_grid1.sh
new file mode 100755
index 0000000..e8e6659
--- /dev/null
+++ b/eval/run_grid1.sh
@@ -0,0 +1,107 @@
+#!/bin/bash
+# Documentation
+# This bash file takes three inputs. The first argument (nfs_home) is the path to the nfs home directory.
+# The second one (python_bin) is the path to the python bin folder.
+# The last argument (logs_subfolder) is the path to the logs folder with respect to the nfs home directory.
+#
+# The nfs home directory should contain the code of this framework stored in $nfs_home/decentralizepy and a folder
+# called configs which contains the file 'ip_addr_6Machines.json'
+# The python bin folder needs to include all the dependencies of this project including crudini.
+# The results will be stored in $nfs_home/$logs_subfolder
+# Each of the experiments will be stored in its own folder inside the logs_subfolder. The folder of the experiment
+# starts with the last part of the config name, i.e., for 'config_celeba_topkacc.ini' it will start with topkacc.
+# The name further includes the learning rate, rounds and batchsize as well as the exact date at which the experiment
+# was run.
+# Example: ./run_grid.sh  /mnt/nfs/wigger /mnt/nfs/wigger/anaconda3/envs/sacs39/bin /logs/celaba
+#
+# Additional requirements:
+# Each node needs a folder called 'tmp' in the user's home directory
+#
+# Note:
+# - The script does not change the optimizer. All configs are writen to use Adam.
+#   For SGD these need to be changed manually
+# - The script will set '--test_after' and '--train_evaluate_after' to comm_rounds_per_global_epoch, i.e., the eavaluation
+#   on the train set and on the test set is carried out every global epoch.
+# - The '--reset_optimizer' option is set to 0, i.e., the optimizer is not reset after a communication round (only
+#   relevant for Adams and other optimizers with internal state)
+#
+# Addapting the script to other datasets:
+# Change the variable 'dataset_size' to reflect the data sets size.
+#
+# Known issues:
+# - If the script is started at the very end of a minute then there is a change that two folders are created as not all
+#   machines may start running the script at the exact same moment.
+
+nfs_home=$1
+python_bin=$2
+logs_subfolder=$3
+decpy_path=$nfs_home/decentralizepy/eval
+cd $decpy_path
+
+env_python=$python_bin/python3
+graph=192_regular.edges
+config_file=~/tmp/config.ini
+procs_per_machine=32
+machines=6
+global_epochs=25
+eval_file=testing.py
+log_level=INFO
+
+ip_machines=$nfs_home/configs/ip_addr_6Machines.json
+
+m=`cat $ip_machines | grep $(/sbin/ifconfig ens785 | grep 'inet ' | awk '{print $2}') | cut -d'"' -f2`
+export PYTHONFAULTHANDLER=1
+
+# Base configs for which the gird search is done
+tests=("step_configs/config_celeba_sharing.ini")
+# Learning rates to test
+lrs=( "0.1" "0.01" "0.001")
+
+batchsize=("8" "16")
+comm_rounds_per_global_epoch=("1" "10" "100")
+# Celeba has 63741 samples
+procs=`expr $procs_per_machine \* $machines`
+echo procs: $procs
+dataset_size=63741
+samples_per_user=`expr $dataset_size / $procs`
+echo samples per user: $samples_per_user
+
+for b in "${batchsize[@]}"
+do
+  echo batchsize: $b
+  for r in "${comm_rounds_per_global_epoch[@]}"
+  do
+    echo communication rounds per global epoch: $r
+    batches_per_epoch=$(($samples_per_user / $b))
+    echo batches per global epoch: $batches_per_epoch
+    iterations=$(($global_epochs * $r))
+    echo iterations: $iterations
+    batches_per_comm_round=$($env_python -c "from math import floor; x = floor($batches_per_epoch / $r); print(1 if x==0 else x)")
+    new_iterations=$($env_python -c "from math import floor; x = floor($batches_per_epoch / $r); y = floor((($batches_per_epoch / $r) -x +1)*$iterations); print($iterations if x==0 else y)")
+    echo batches per communication round: $batches_per_comm_round
+    echo corrected iterations: $new_iterations
+    for lr in "${lrs[@]}"
+    do
+      for i in "${tests[@]}"
+      do
+        echo $i
+        IFS='_' read -ra NAMES <<< $i
+        IFS='.' read -ra NAME <<< ${NAMES[-1]}
+        log_dir=$nfs_home$logs_subfolder/${NAME[0]}:lr=$lr:r=$r:b=$b:$(date '+%Y-%m-%dT%H:%M')/machine$m
+        echo results are stored in: $log_dir
+        mkdir -p $log_dir
+        cp $i $config_file
+        $python_bin/crudini --set $config_file COMMUNICATION addresses_filepath $ip_machines
+        $python_bin/crudini --set $config_file OPTIMIZER_PARAMS lr $lr
+        $python_bin/crudini --set $config_file TRAIN_PARAMS rounds $batches_per_comm_round
+        $python_bin/crudini --set $config_file TRAIN_PARAMS batch_size $b
+        $env_python $eval_file -ro 0 -tea $r -ld $log_dir -mid $m -ps $procs_per_machine -ms $machines -is $new_iterations -gf $graph -ta $r -cf $config_file -ll $log_level
+        echo $i is done
+        sleep 1
+        echo end of sleep
+      done
+    done
+  done
+done
+#
+
diff --git a/eval/run_grid_server.sh b/eval/run_grid_server.sh
new file mode 100755
index 0000000..b5b9982
--- /dev/null
+++ b/eval/run_grid_server.sh
@@ -0,0 +1,102 @@
+#!/bin/bash
+# Documentation
+# This bash file takes three inputs. The first argument (nfs_home) is the path to the nfs home directory.
+# The second one (python_bin) is the path to the python bin folder.
+# The last argument (logs_subfolder) is the path to the logs folder with respect to the nfs home directory.
+#
+# The nfs home directory should contain the code of this framework stored in $nfs_home/decentralizepy and a folder
+# called configs which contains the file 'ip_addr_6Machines.json'
+# The python bin folder needs to include all the dependencies of this project including crudini.
+# The results will be stored in $nfs_home/$logs_subfolder
+# Each of the experiments will be stored in its own folder inside the logs_subfolder. The folder of the experiment
+# starts with the last part of the config name, i.e., for 'config_celeba_topkacc.ini' it will start with topkacc.
+# The name further includes the learning rate, rounds and batchsize as well as the exact date at which the experiment
+# was run.
+# Example:
+#
+# Note:
+# - The script does not change the optimizer. All configs are writen to use Adam.
+#   For SGD these need to be changed manually
+# - The script will set '--test_after' and '--train_evaluate_after' to comm_rounds_per_global_epoch, i.e., the eavaluation
+#   on the train set and on the test set is carried out every global epoch.
+# - The '--reset_optimizer' option is set to 0, i.e., the optimizer is not reset after a communication round (only
+#   relevant for Adams and other optimizers with internal state)
+#
+#
+# Known issues:
+# - If the script is started at the very end of a minute then there is a change that two folders are created as not all
+#   machines may start running the script at the exact same moment.
+
+nfs_home=$1
+python_bin=$2
+logs_subfolder=$3
+decpy_path=$nfs_home/decentralizepy/eval
+cd $decpy_path
+
+env_python=$python_bin/python3
+graph=192_regular.edges #4_node_fullyConnected.edges
+config_file=~/tmp/config.ini
+procs_per_machine=32
+machines=6
+global_epochs=1
+eval_file=testing.py
+log_level=INFO
+
+ip_machines=$nfs_home/configs/ip_addr_6Machines.json
+
+m=`cat $ip_machines | grep $(/sbin/ifconfig ens785 | grep 'inet ' | awk '{print $2}') | cut -d'"' -f2`
+export PYTHONFAULTHANDLER=1
+
+# Base configs for which the gird search is done
+tests=("step_configs/config_celeba_sharing.ini")
+# Learning rates to test
+lrs=( "0.1" "0.01")
+
+batchsize=("8" "16")
+comm_rounds_per_global_epoch=("1" "10")
+# Celeba has 63741 samples
+procs=`expr $procs_per_machine \* $machines`
+echo procs: $procs
+dataset_size=63741
+samples_per_user=`expr $dataset_size / $procs`
+echo samples per user: $samples_per_user
+
+for b in "${batchsize[@]}"
+do
+  echo batchsize: $b
+  for r in "${comm_rounds_per_global_epoch[@]}"
+  do
+    echo communication rounds per global epoch: $r
+    batches_per_epoch=$(($samples_per_user / $b))
+    echo batches per global epoch: $batches_per_epoch
+    iterations=$(($global_epochs * $r))
+    echo iterations: $iterations
+    batches_per_comm_round=$($env_python -c "from math import floor; x = floor($batches_per_epoch / $r); print(1 if x==0 else x)")
+    new_iterations=$($env_python -c "from math import floor; x = floor($batches_per_epoch / $r); y = floor((($batches_per_epoch / $r) -x +1)*$iterations); print($iterations if x==0 else y)")
+    echo batches per communication round: $batches_per_comm_round
+    echo corrected iterations: $new_iterations
+    for lr in "${lrs[@]}"
+    do
+      for i in "${tests[@]}"
+      do
+        echo $i
+        IFS='_' read -ra NAMES <<< $i
+        IFS='.' read -ra NAME <<< ${NAMES[-1]}
+        log_dir=$nfs_home$logs_subfolder/${NAME[0]}:lr=$lr:r=$r:b=$b:$(date '+%Y-%m-%dT%H:%M')/machine$m
+        echo results are stored in: $log_dir
+        mkdir -p $log_dir
+        cp $i $config_file
+        $python_bin/crudini --set $config_file COMMUNICATION addresses_filepath $ip_machines
+        $python_bin/crudini --set $config_file OPTIMIZER_PARAMS lr $lr
+        $python_bin/crudini --set $config_file TRAIN_PARAMS rounds $batches_per_comm_round
+        $python_bin/crudini --set $config_file TRAIN_PARAMS batch_size $b
+        $env_python $eval_file -ro 0 -tea $r -ld $log_dir -mid $m -ps $procs_per_machine -ms $machines -is $new_iterations -gf $graph -ta $r -cf $config_file -ll $log_level
+        echo $i is done
+        sleep 1
+        echo end of sleep
+      done
+    done
+  done
+done
+#
+
diff --git a/eval/run_reddit_local2.sh b/eval/run_reddit_local2.sh
new file mode 100755
index 0000000..5bcebde
--- /dev/null
+++ b/eval/run_reddit_local2.sh
@@ -0,0 +1,115 @@
+#!/bin/bash
+# Documentation
+# This bash file takes three inputs. The first argument (nfs_home) is the path to the nfs home directory.
+# The second one (python_bin) is the path to the python bin folder.
+# The last argument (logs_subfolder) is the path to the logs folder with respect to the nfs home directory.
+#
+# The nfs home directory should contain the code of this framework stored in $nfs_home/decentralizepy and a folder
+# called configs which contains the file 'ip_addr_6Machines.json'
+# The python bin folder needs to include all the dependencies of this project including crudini.
+# The results will be stored in $nfs_home/$logs_subfolder
+# Each of the experiments will be stored in its own folder inside the logs_subfolder. The folder of the experiment
+# starts with the last part of the config name, i.e., for 'config_celeba_topkacc.ini' it will start with topkacc.
+# The name further includes the learning rate, rounds and batchsize as well as the exact date at which the experiment
+# was run.
+# Example: ./run_grid.sh  /mnt/nfs/wigger /mnt/nfs/wigger/anaconda3/envs/sacs39/bin /logs/celeba
+#
+# Additional requirements:
+# Each node needs a folder called 'tmp' in the user's home directory
+#
+# Note:
+# - The script does not change the optimizer. All configs are writen to use SGD.
+# - The script will set '--test_after' and '--train_evaluate_after' such that it happens at the end of a global epoch.
+# - The '--reset_optimizer' option is set to 0, i.e., the optimizer is not reset after a communication round (only
+#   relevant for Adams and other optimizers with internal state)
+#
+# Addapting the script to other datasets:
+# Change the variable 'dataset_size' to reflect the data sets size.
+#
+# Known issues:
+# - If the script is started at the very end of a minute then there is a change that two folders are created as not all
+#   machines may start running the script at the exact same moment.
+
+nfs_home=/tmp/logs/
+python_bin=/home/jeffrey/anaconda3/envs/sacs39/bin
+logs_subfolder=reddit_local
+
+env_python=$python_bin/python3
+graph=16_regular.edges
+config_file=~/tmp/config.ini
+procs_per_machine=16
+machines=1
+global_epochs=2
+eval_file=testing.py
+log_level=DEBUG
+
+ip_machines=ip_addr_1Machines.json
+
+m=`cat $ip_machines | grep $(/sbin/ifconfig ens785 | grep 'inet ' | awk '{print $2}') | cut -d'"' -f2`
+
+# Base configs for which the gird search is done
+tests=("step_configs/config_reddit_jwins+_local.ini") #("step_configs/config_reddit_sharing_local.ini")
+# Learning ratesJwinsDynamicGraph.py
+lr="1"
+# Batch size
+batchsize="16"
+# The number of communication rounds per global epoch
+comm_rounds_per_global_epoch="10"
+procs=`expr $procs_per_machine \* $machines`
+echo procs: $procs
+# Celeba has 63741 samples
+# Reddit has 70642
+# Femnist 734463
+# Shakespeares 3678451
+dataset_size=70642
+# Calculating the number of samples that each user/proc will have on average
+samples_per_user=`expr $dataset_size / $procs`
+echo samples per user: $samples_per_user
+
+# random_seeds for which to rerun the experiments
+random_seeds=("97")
+# random_seed = 97
+echo batchsize: $batchsize
+echo communication rounds per global epoch: $comm_rounds_per_global_epoch
+# calculating how many batches there are in a global epoch for each user/proc
+batches_per_epoch=$(($samples_per_user / $batchsize))
+echo batches per global epoch: $batches_per_epoch
+# the number of iterations in 25 global epochs
+iterations=$($env_python -c "from math import floor; print($batches_per_epoch * $global_epochs) if $comm_rounds_per_global_epoch >= $batches_per_epoch else print($global_epochs * $comm_rounds_per_global_epoch)")
+echo iterations: $iterations
+# calculating the number of batches each user/proc uses per communication step (The actual number may be a float, which we round down)
+batches_per_comm_round=$($env_python -c "from math import floor; x = floor($batches_per_epoch / $comm_rounds_per_global_epoch); print(1 if x==0 else x)")
+# since the batches per communication round were rounded down we need to change the number of iterations to reflect that
+new_iterations=$($env_python -c "from math import floor; tmp = floor($batches_per_epoch / $comm_rounds_per_global_epoch); x = 1 if tmp == 0 else tmp; y = floor((($batches_per_epoch / $comm_rounds_per_global_epoch)/x)*$iterations); print($iterations if y<$iterations else y)")
+echo batches per communication round: $batches_per_comm_round
+echo corrected iterations: $new_iterations
+test_after=10 #$(($new_iterations / $global_epochs))
+echo test after: $test_after
+for i in "${tests[@]}"
+do
+  for seed in "${random_seeds[@]}"
+  do
+    echo $i
+    IFS='_' read -ra NAMES <<< $i
+    IFS='.' read -ra NAME <<< ${NAMES[-1]}
+    log_dir_base=$nfs_home$logs_subfolder/${NAME[0]}:lr=$lr:r=$comm_rounds_per_global_epoch:b=$batchsize:$(date '+%Y-%m-%dT%H:%M')
+    echo results are stored in: $log_dir_base
+    log_dir=$log_dir_base/machine0
+    mkdir -p $log_dir
+    weight_store_dir=$log_dir_base/weights
+    mkdir -p $weight_store_dir
+    cp $i $config_file
+    # changing the config files to reflect the values of the current grid search state
+    $python_bin/crudini --set $config_file COMMUNICATION addresses_filepath $ip_machines
+    $python_bin/crudini --set $config_file OPTIMIZER_PARAMS lr $lr
+    $python_bin/crudini --set $config_file TRAIN_PARAMS rounds $batches_per_comm_round
+    $python_bin/crudini --set $config_file TRAIN_PARAMS batch_size $batchsize
+    $python_bin/crudini --set $config_file DATASET random_seed $seed
+
+    $env_python -q -X faulthandler $eval_file -ro 0 -tea $test_after -ld $log_dir -wsd $weight_store_dir -mid 0 -ps $procs_per_machine -ms $machines -is $new_iterations -gf $graph -ta $test_after -cf $config_file -ll $log_level
+    echo $i is done
+    sleep 10
+    echo end of sleep
+    done
+done
+#
\ No newline at end of file
diff --git a/eval/run_xtimes_reddit_local2.sh b/eval/run_xtimes_reddit_local2.sh
new file mode 100755
index 0000000..9751bdc
--- /dev/null
+++ b/eval/run_xtimes_reddit_local2.sh
@@ -0,0 +1,114 @@
+#!/bin/bash
+# Documentation
+# This bash file takes three inputs. The first argument (nfs_home) is the path to the nfs home directory.
+# The second one (python_bin) is the path to the python bin folder.
+# The last argument (logs_subfolder) is the path to the logs folder with respect to the nfs home directory.
+#
+# The nfs home directory should contain the code of this framework stored in $nfs_home/decentralizepy and a folder
+# called configs which contains the file 'ip_addr_6Machines.json'
+# The python bin folder needs to include all the dependencies of this project including crudini.
+# The results will be stored in $nfs_home/$logs_subfolder
+# Each of the experiments will be stored in its own folder inside the logs_subfolder. The folder of the experiment
+# starts with the last part of the config name, i.e., for 'config_celeba_topkacc.ini' it will start with topkacc.
+# The name further includes the learning rate, rounds and batchsize as well as the exact date at which the experiment
+# was run.
+# Example: ./run_grid.sh  /mnt/nfs/wigger /mnt/nfs/wigger/anaconda3/envs/sacs39/bin /logs/celeba
+#
+# Additional requirements:
+# Each node needs a folder called 'tmp' in the user's home directory
+#
+# Note:
+# - The script does not change the optimizer. All configs are writen to use SGD.
+# - The script will set '--test_after' and '--train_evaluate_after' such that it happens at the end of a global epoch.
+# - The '--reset_optimizer' option is set to 0, i.e., the optimizer is not reset after a communication round (only
+#   relevant for Adams and other optimizers with internal state)
+#
+# Addapting the script to other datasets:
+# Change the variable 'dataset_size' to reflect the data sets size.
+#
+# Known issues:
+# - If the script is started at the very end of a minute then there is a change that two folders are created as not all
+#   machines may start running the script at the exact same moment.
+
+nfs_home=/tmp/logs/
+python_bin=/home/jeffrey/anaconda3/envs/sacs39/bin
+logs_subfolder=reddit_local/
+
+env_python=$python_bin/python3
+graph=16_regular.edges
+config_file=~/tmp/config.ini
+procs_per_machine=16
+machines=1
+global_epochs=2
+eval_file=testing.py
+log_level=INFO
+
+ip_machines=ip_addr_1Machines.json
+
+m=`cat $ip_machines | grep $(/sbin/ifconfig ens785 | grep 'inet ' | awk '{print $2}') | cut -d'"' -f2`
+
+# Base configs for which the gird search is done
+tests=("step_configs/config_reddit_topkacc_local.ini") # config_reddit_sharing_local.ini") # config_reddit_subsampling_local.ini") #
+# Learning rates
+lr="1"
+# Batch size
+batchsize="16"
+# The number of communication rounds per global epoch
+comm_rounds_per_global_epoch="10"
+procs=`expr $procs_per_machine \* $machines`
+echo procs: $procs
+# Celeba has 63741 samples
+# Reddit has 70642
+# Femnist 734463
+# Shakespeares 3678451
+dataset_size=70642
+# Calculating the number of samples that each user/proc will have on average
+samples_per_user=`expr $dataset_size / $procs`
+echo samples per user: $samples_per_user
+
+# random_seeds for which to rerun the experiments
+random_seeds=("97")
+# random_seed = 97
+echo batchsize: $batchsize
+echo communication rounds per global epoch: $comm_rounds_per_global_epoch
+# calculating how many batches there are in a global epoch for each user/proc
+batches_per_epoch=$(($samples_per_user / $batchsize))
+echo batches per global epoch: $batches_per_epoch
+# the number of iterations in 25 global epochs
+iterations=$($env_python -c "from math import floor; print($batches_per_epoch * $global_epochs) if $comm_rounds_per_global_epoch >= $batches_per_epoch else print($global_epochs * $comm_rounds_per_global_epoch)")
+echo iterations: $iterations
+# calculating the number of batches each user/proc uses per communication step (The actual number may be a float, which we round down)
+batches_per_comm_round=$($env_python -c "from math import floor; x = floor($batches_per_epoch / $comm_rounds_per_global_epoch); print(1 if x==0 else x)")
+# since the batches per communication round were rounded down we need to change the number of iterations to reflect that
+new_iterations=$($env_python -c "from math import floor; tmp = floor($batches_per_epoch / $comm_rounds_per_global_epoch); x = 1 if tmp == 0 else tmp; y = floor((($batches_per_epoch / $comm_rounds_per_global_epoch)/x)*$iterations); print($iterations if y<$iterations else y)")
+echo batches per communication round: $batches_per_comm_round
+echo corrected iterations: $new_iterations
+test_after=$(($new_iterations / $global_epochs))
+echo test after: $test_after
+for i in "${tests[@]}"
+do
+  for seed in "${random_seeds[@]}"
+  do
+    echo $i
+    IFS='_' read -ra NAMES <<< $i
+    IFS='.' read -ra NAME <<< ${NAMES[-1]}
+    log_dir_base=$nfs_home$logs_subfolder/${NAME[0]}:lr=$lr:r=$comm_rounds_per_global_epoch:b=$batchsize:$(date '+%Y-%m-%dT%H:%M')
+    echo results are stored in: $log_dir_base
+    log_dir=$log_dir_base/machine0
+    mkdir -p $log_dir
+    weight_store_dir=$log_dir_base/weights
+    mkdir -p $weight_store_dir
+    cp $i $config_file
+    # changing the config files to reflect the values of the current grid search state
+    $python_bin/crudini --set $config_file COMMUNICATION addresses_filepath $ip_machines
+    $python_bin/crudini --set $config_file OPTIMIZER_PARAMS lr $lr
+    $python_bin/crudini --set $config_file TRAIN_PARAMS rounds $batches_per_comm_round
+    $python_bin/crudini --set $config_file TRAIN_PARAMS batch_size $batchsize
+    $python_bin/crudini --set $config_file DATASET random_seed $seed
+    $env_python $eval_file -ro 0 -tea $test_after -ld $log_dir -wsd $weight_store_dir -mid 0 -ps $procs_per_machine -ms $machines -is $new_iterations -gf $graph -ta $test_after -cf $config_file -ll $log_level
+    echo $i is done
+    sleep 10
+    echo end of sleep
+    done
+done
+#
\ No newline at end of file
diff --git a/eval/step_configs/config_reddit_jwins_local.ini b/eval/step_configs/config_reddit_jwins_local.ini
new file mode 100644
index 0000000..90ad9d2
--- /dev/null
+++ b/eval/step_configs/config_reddit_jwins_local.ini
@@ -0,0 +1,43 @@
+[DATASET]
+dataset_package = decentralizepy.datasets.Reddit
+dataset_class = Reddit
+random_seed = 97
+model_class = RNN
+train_dir = /home/jeffrey/Downloads/reddit/per_user_data/train
+test_dir = /home/jeffrey/Downloads/reddit/new_small_data/test
+; python list of fractions below
+sizes =
+
+[OPTIMIZER_PARAMS]
+optimizer_package = torch.optim
+optimizer_class = SGD
+lr = 0.001
+
+[TRAIN_PARAMS]
+training_package = decentralizepy.training.Training
+training_class = Training
+rounds = 47
+full_epochs = False
+batch_size = 16
+shuffle = True
+loss_package = torch.nn
+loss_class = CrossEntropyLoss
+
+[COMMUNICATION]
+comm_package = decentralizepy.communication.TCP
+comm_class = TCP
+addresses_filepath = ip_addr_6Machines.json
+compression_package = decentralizepy.compression.EliasFpzipLossy
+compression_class = EliasFpzipLossy
+compress = False
+
+[SHARING]
+sharing_package = decentralizepy.sharing.RandomAlphaWavelet
+sharing_class = RandomAlpha
+change_based_selection = True
+alpha_list = [0.1,0.15,0.2,0.25,0.3,0.4,1.0]
+wavelet=sym2
+level= 4
+accumulation = True
+accumulate_averaging_changes = True
+metadata_cap = 0.5
\ No newline at end of file
diff --git a/eval/step_configs/config_reddit_sharing_local2.ini b/eval/step_configs/config_reddit_sharing_local2.ini
new file mode 100644
index 0000000..6a8a2eb
--- /dev/null
+++ b/eval/step_configs/config_reddit_sharing_local2.ini
@@ -0,0 +1,36 @@
+[DATASET]
+dataset_package = decentralizepy.datasets.Reddit
+dataset_class = Reddit
+random_seed = 97
+model_class = RNN
+train_dir = /home/jeffrey/Downloads/reddit/per_user_data/train
+test_dir = /home/jeffrey/Downloads/reddit/new_small_data/test
+; python list of fractions below
+sizes =
+
+[OPTIMIZER_PARAMS]
+optimizer_package = torch.optim
+optimizer_class = SGD
+lr = 0.001
+
+[TRAIN_PARAMS]
+training_package = decentralizepy.training.Training
+training_class = Training
+rounds = 47
+full_epochs = False
+batch_size = 16
+shuffle = True
+loss_package = torch.nn
+loss_class = CrossEntropyLoss
+
+[COMMUNICATION]
+comm_package = decentralizepy.communication.TCP
+comm_class = TCP
+addresses_filepath = ip_addr_6Machines.json
+compression_package = decentralizepy.compression.Elias
+compression_class = Elias
+compress = False
+
+[SHARING]
+sharing_package = decentralizepy.sharing.Sharing
+sharing_class = Sharing
diff --git a/eval/step_configs/config_reddit_topkacc_local.ini b/eval/step_configs/config_reddit_topkacc_local.ini
new file mode 100644
index 0000000..8841ba4
--- /dev/null
+++ b/eval/step_configs/config_reddit_topkacc_local.ini
@@ -0,0 +1,51 @@
+[DATASET]
+dataset_package = decentralizepy.datasets.Reddit
+dataset_class = Reddit
+random_seed = 97
+model_class = RNN
+train_dir = /home/jeffrey/Downloads/reddit/per_user_data/train
+test_dir = /home/jeffrey/Downloads/reddit/new_small_data/test
+; python list of fractions below
+sizes =
+
+[OPTIMIZER_PARAMS]
+optimizer_package = torch.optim
+optimizer_class = SGD
+lr = 0.001
+
+[TRAIN_PARAMS]
+training_package = decentralizepy.training.Training
+training_class = Training
+rounds = 47
+full_epochs = False
+batch_size = 16
+shuffle = True
+loss_package = torch.nn
+loss_class = CrossEntropyLoss
+
+[COMMUNICATION]
+comm_package = decentralizepy.communication.TCP
+comm_class = TCP
+addresses_filepath = ip_addr_6Machines.json
+compression_package = decentralizepy.compression.Eliaszfplossy1
+compression_class = Eliaszfplossy1
+compress = True
+
+[SHARING]
+sharing_package = decentralizepy.sharing.WaveletBound
+sharing_class = WaveletBound
+alpha=0.1
+lower_bound=0.1
+metro_hastings=True
+;sharing_package = decentralizepy.sharing.PartialModel
+;sharing_class = PartialModel
+;alpha = 0.1
+;accumulation = True
+;accumulate_averaging_changes = True
+;sharing_package = decentralizepy.sharing.RandomAlphaWavelet
+;sharing_class = RandomAlpha
+;change_based_selection = True
+;wavelet=sym2
+;level= 4
+;accumulation = True
+;accumulate_averaging_changes = True
\ No newline at end of file
diff --git a/random files/16_regular.edges b/random files/16_regular.edges
new file mode 100644
index 0000000..4e847b9
--- /dev/null
+++ b/random files/16_regular.edges	
@@ -0,0 +1,49 @@
+16
+0 1
+0 3
+0 15
+1 0
+1 10
+1 2
+2 1
+2 3
+2 15
+3 0
+3 2
+3 4
+4 9
+4 3
+4 5
+5 4
+5 13
+5 6
+6 11
+6 5
+6 7
+7 8
+7 14
+7 6
+8 9
+8 12
+8 7
+9 8
+9 10
+9 4
+10 1
+10 11
+10 9
+11 10
+11 12
+11 6
+12 8
+12 11
+12 13
+13 12
+13 5
+13 14
+14 15
+14 13
+14 7
+15 0
+15 2
+15 14
diff --git a/random files/16_regular.png b/random files/16_regular.png
new file mode 100644
index 0000000000000000000000000000000000000000..d9b3acd3227cbb311a5e2da33bfb56138f52d887
GIT binary patch
literal 40971
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
Wn_Y!}&^!hI88v*o_1R%g8~;E0NJ%{a

literal 0
HcmV?d00001

diff --git a/random files/16_ring.edges b/random files/16_ring.edges
new file mode 100644
index 0000000..f94b76a
--- /dev/null
+++ b/random files/16_ring.edges	
@@ -0,0 +1,33 @@
+16
+0 1
+0 15
+1 0
+1 2
+2 1
+2 3
+3 2
+3 4
+4 3
+4 5
+5 4
+5 6
+6 5
+6 7
+7 8
+7 6
+8 9
+8 7
+9 8
+9 10
+10 9
+10 11
+11 10
+11 12
+12 11
+12 13
+13 12
+13 14
+14 13
+14 15
+15 0
+15 14
diff --git a/random files/16_ring.png b/random files/16_ring.png
new file mode 100644
index 0000000000000000000000000000000000000000..2a5f1cce138624fa76a06028f8fa4f6d63d6439a
GIT binary patch
literal 21915
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

literal 0
HcmV?d00001

diff --git a/random files/192_regular.edges b/random files/192_regular.edges
new file mode 100644
index 0000000..71162a7
--- /dev/null
+++ b/random files/192_regular.edges	
@@ -0,0 +1,961 @@
+192
+0 129
+0 33
+0 3
+0 113
+0 178
+1 98
+1 132
+1 12
+1 186
+1 59
+2 80
+2 147
+2 53
+2 55
+2 189
+3 0
+3 36
+3 109
+3 111
+3 176
+4 104
+4 42
+4 86
+4 185
+4 27
+5 21
+5 157
+5 123
+5 125
+5 63
+6 41
+6 171
+6 48
+6 58
+6 189
+7 32
+7 105
+7 171
+7 176
+7 126
+8 96
+8 65
+8 140
+8 54
+8 25
+9 91
+9 13
+9 83
+9 184
+9 27
+10 44
+10 13
+10 14
+10 79
+10 157
+11 160
+11 132
+11 142
+11 80
+11 158
+12 1
+12 134
+12 147
+12 85
+12 188
+13 66
+13 9
+13 10
+13 185
+13 127
+14 169
+14 10
+14 55
+14 92
+14 126
+15 103
+15 104
+15 170
+15 112
+15 17
+16 138
+16 141
+16 143
+16 149
+16 157
+17 35
+17 37
+17 15
+17 144
+17 190
+18 160
+18 35
+18 102
+18 186
+18 63
+19 78
+19 48
+19 183
+19 60
+19 191
+20 130
+20 133
+20 180
+20 117
+20 118
+21 164
+21 5
+21 135
+21 179
+21 117
+22 100
+22 108
+22 89
+22 60
+22 30
+23 132
+23 168
+23 170
+23 107
+23 110
+24 66
+24 45
+24 80
+24 26
+24 62
+25 96
+25 8
+25 110
+25 82
+25 182
+26 97
+26 163
+26 48
+26 24
+26 127
+27 4
+27 9
+27 78
+27 112
+27 62
+28 138
+28 107
+28 111
+28 176
+28 122
+29 36
+29 172
+29 79
+29 146
+29 89
+30 130
+30 78
+30 22
+30 87
+30 123
+31 64
+31 101
+31 172
+31 175
+31 50
+32 7
+32 73
+32 41
+32 113
+32 188
+33 0
+33 131
+33 145
+33 115
+33 116
+34 163
+34 100
+34 142
+34 56
+34 88
+35 99
+35 165
+35 17
+35 18
+35 191
+36 3
+36 37
+36 74
+36 114
+36 29
+37 129
+37 36
+37 109
+37 47
+37 17
+38 98
+38 136
+38 169
+38 111
+38 51
+39 162
+39 82
+39 83
+39 182
+39 91
+40 160
+40 99
+40 110
+40 82
+40 184
+41 32
+41 6
+41 135
+41 106
+41 94
+42 4
+42 71
+42 172
+42 145
+42 61
+43 167
+43 113
+43 181
+43 85
+43 151
+44 129
+44 166
+44 169
+44 10
+44 146
+45 130
+45 46
+45 85
+45 181
+45 24
+46 129
+46 45
+46 174
+46 180
+46 158
+47 128
+47 37
+47 141
+47 115
+47 84
+48 131
+48 6
+48 177
+48 19
+48 26
+49 177
+49 147
+49 118
+49 55
+49 58
+50 128
+50 165
+50 183
+50 56
+50 31
+51 38
+51 141
+51 80
+51 119
+51 90
+52 107
+52 175
+52 114
+52 184
+52 92
+53 129
+53 2
+53 176
+53 84
+53 63
+54 69
+54 8
+54 173
+54 181
+54 185
+55 2
+55 166
+55 14
+55 49
+55 88
+56 34
+56 78
+56 50
+56 150
+56 156
+57 69
+57 101
+57 173
+57 120
+57 122
+58 164
+58 6
+58 142
+58 49
+58 187
+59 1
+59 77
+59 174
+59 143
+59 114
+60 161
+60 71
+60 167
+60 19
+60 22
+61 70
+61 72
+61 42
+61 75
+61 77
+62 180
+62 24
+62 27
+62 125
+62 63
+63 65
+63 5
+63 18
+63 53
+63 62
+64 98
+64 163
+64 144
+64 89
+64 31
+65 100
+65 8
+65 148
+65 182
+65 63
+66 132
+66 68
+66 13
+66 87
+66 24
+67 133
+67 137
+67 76
+67 118
+67 154
+68 128
+68 66
+68 164
+68 171
+68 117
+69 171
+69 172
+69 85
+69 54
+69 57
+70 131
+70 79
+70 81
+70 186
+70 61
+71 131
+71 134
+71 42
+71 138
+71 60
+72 133
+72 104
+72 175
+72 145
+72 61
+73 32
+73 103
+73 145
+73 116
+73 153
+74 99
+74 36
+74 183
+74 155
+74 159
+75 165
+75 143
+75 185
+75 61
+75 158
+76 96
+76 67
+76 174
+76 178
+76 120
+77 103
+77 141
+77 90
+77 59
+77 61
+78 139
+78 19
+78 56
+78 27
+78 30
+79 162
+79 70
+79 10
+79 120
+79 29
+80 2
+80 11
+80 51
+80 24
+80 190
+81 70
+81 134
+81 141
+81 153
+81 189
+82 39
+82 40
+82 137
+82 135
+82 25
+83 39
+83 9
+83 86
+83 154
+83 94
+84 102
+84 105
+84 47
+84 53
+84 121
+85 69
+85 104
+85 43
+85 12
+85 45
+86 4
+86 133
+86 144
+86 83
+86 180
+87 66
+87 144
+87 146
+87 30
+87 159
+88 128
+88 34
+88 139
+88 55
+88 91
+89 64
+89 22
+89 151
+89 184
+89 29
+90 77
+90 173
+90 51
+90 156
+90 190
+91 39
+91 9
+91 151
+91 88
+91 188
+92 121
+92 131
+92 14
+92 52
+92 185
+93 161
+93 168
+93 143
+93 176
+93 182
+94 162
+94 166
+94 167
+94 41
+94 83
+95 130
+95 163
+95 105
+95 111
+95 117
+96 8
+96 139
+96 76
+96 25
+96 155
+97 162
+97 137
+97 147
+97 181
+97 26
+98 64
+98 1
+98 38
+98 152
+98 158
+99 35
+99 164
+99 40
+99 74
+99 142
+100 65
+100 34
+100 179
+100 22
+100 189
+101 110
+101 148
+101 57
+101 124
+101 31
+102 106
+102 114
+102 18
+102 148
+102 84
+103 104
+103 73
+103 109
+103 77
+103 15
+104 4
+104 103
+104 72
+104 15
+104 85
+105 7
+105 106
+105 177
+105 84
+105 95
+106 102
+106 41
+106 105
+106 172
+106 150
+107 23
+107 52
+107 183
+107 28
+107 191
+108 130
+108 134
+108 22
+108 120
+108 155
+109 3
+109 37
+109 103
+109 173
+109 149
+110 101
+110 40
+110 23
+110 25
+110 126
+111 3
+111 38
+111 116
+111 28
+111 95
+112 155
+112 174
+112 15
+112 27
+112 189
+113 160
+113 0
+113 32
+113 43
+113 115
+114 36
+114 102
+114 52
+114 150
+114 59
+115 33
+115 168
+115 136
+115 47
+115 113
+116 33
+116 73
+116 170
+116 111
+116 127
+117 68
+117 20
+117 21
+117 154
+117 95
+118 67
+118 140
+118 49
+118 20
+118 152
+119 174
+119 51
+119 149
+119 120
+119 187
+120 108
+120 76
+120 79
+120 119
+120 57
+121 162
+121 165
+121 170
+121 84
+121 92
+122 28
+122 180
+122 57
+122 187
+122 124
+123 5
+123 137
+123 30
+123 183
+123 190
+124 161
+124 101
+124 154
+124 140
+124 122
+125 5
+125 136
+125 177
+125 184
+125 62
+126 7
+126 173
+126 110
+126 175
+126 14
+127 135
+127 167
+127 13
+127 116
+127 26
+128 68
+128 47
+128 50
+128 88
+128 157
+129 0
+129 37
+129 44
+129 46
+129 53
+130 108
+130 45
+130 20
+130 30
+130 95
+131 33
+131 70
+131 71
+131 48
+131 92
+132 1
+132 66
+132 11
+132 23
+132 156
+133 67
+133 72
+133 148
+133 20
+133 86
+134 166
+134 71
+134 108
+134 12
+134 81
+135 41
+135 178
+135 82
+135 21
+135 127
+136 165
+136 38
+136 115
+136 125
+136 159
+137 97
+137 161
+137 67
+137 82
+137 123
+138 71
+138 16
+138 146
+138 182
+138 28
+139 96
+139 78
+139 150
+139 88
+139 153
+140 8
+140 124
+140 118
+140 153
+140 188
+141 77
+141 47
+141 16
+141 81
+141 51
+142 34
+142 99
+142 11
+142 151
+142 58
+143 75
+143 16
+143 186
+143 59
+143 93
+144 64
+144 171
+144 17
+144 86
+144 87
+145 33
+145 72
+145 73
+145 42
+145 153
+146 138
+146 44
+146 178
+146 87
+146 29
+147 97
+147 2
+147 166
+147 12
+147 49
+148 65
+148 133
+148 101
+148 102
+148 191
+149 164
+149 168
+149 109
+149 16
+149 119
+150 106
+150 139
+150 175
+150 114
+150 56
+151 168
+151 43
+151 142
+151 89
+151 91
+152 161
+152 98
+152 118
+152 154
+152 187
+153 73
+153 139
+153 140
+153 81
+153 145
+154 67
+154 83
+154 117
+154 152
+154 124
+155 96
+155 74
+155 108
+155 112
+155 190
+156 132
+156 169
+156 181
+156 56
+156 90
+157 128
+157 163
+157 5
+157 10
+157 16
+158 98
+158 75
+158 11
+158 46
+158 178
+159 160
+159 136
+159 74
+159 179
+159 87
+160 40
+160 11
+160 113
+160 18
+160 159
+161 137
+161 60
+161 152
+161 124
+161 93
+162 97
+162 39
+162 79
+162 121
+162 94
+163 64
+163 34
+163 26
+163 157
+163 95
+164 99
+164 68
+164 21
+164 149
+164 58
+165 35
+165 136
+165 75
+165 50
+165 121
+166 134
+166 44
+166 147
+166 55
+166 94
+167 170
+167 43
+167 60
+167 94
+167 127
+168 115
+168 23
+168 149
+168 151
+168 93
+169 38
+169 44
+169 14
+169 179
+169 156
+170 167
+170 15
+170 116
+170 23
+170 121
+171 68
+171 69
+171 6
+171 7
+171 144
+172 69
+172 42
+172 106
+172 29
+172 31
+173 109
+173 54
+173 57
+173 90
+173 126
+174 76
+174 46
+174 112
+174 119
+174 59
+175 72
+175 52
+175 150
+175 126
+175 31
+176 3
+176 7
+176 53
+176 28
+176 93
+177 105
+177 48
+177 49
+177 187
+177 125
+178 0
+178 135
+178 76
+178 146
+178 158
+179 100
+179 169
+179 21
+179 186
+179 159
+180 46
+180 20
+180 86
+180 122
+180 62
+181 97
+181 43
+181 45
+181 54
+181 156
+182 65
+182 39
+182 138
+182 25
+182 93
+183 74
+183 107
+183 50
+183 19
+183 123
+184 40
+184 9
+184 52
+184 89
+184 125
+185 4
+185 75
+185 13
+185 54
+185 92
+186 1
+186 70
+186 143
+186 18
+186 179
+187 122
+187 177
+187 119
+187 152
+187 58
+188 32
+188 140
+188 12
+188 91
+188 191
+189 2
+189 100
+189 6
+189 112
+189 81
+190 155
+190 80
+190 17
+190 90
+190 123
+191 35
+191 107
+191 19
+191 148
+191 188
diff --git a/random files/192_regular.png b/random files/192_regular.png
new file mode 100644
index 0000000000000000000000000000000000000000..ef86b2e34344d2b04e0df33d78ea4fb8c0cd1154
GIT binary patch
literal 208289
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%0A=7wCauN<mBk>N+7KpjwacyOa7yGV<Ba@Fk?SK{
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%0Dk$(EOOR}BFbw*v{WTl>P~pp0y*c*?
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
Ld@@bW@b3QsSBvAR

literal 0
HcmV?d00001

diff --git a/random files/288_regular.edges b/random files/288_regular.edges
new file mode 100644
index 0000000..3c7c269
--- /dev/null
+++ b/random files/288_regular.edges	
@@ -0,0 +1,1441 @@
+288
+0 193
+0 196
+0 44
+0 50
+0 185
+1 164
+1 136
+1 244
+1 183
+1 63
+2 260
+2 46
+2 273
+2 51
+2 25
+3 259
+3 197
+3 39
+3 232
+3 60
+4 226
+4 268
+4 238
+4 284
+4 188
+5 43
+5 141
+5 240
+5 81
+5 211
+6 97
+6 101
+6 7
+6 76
+6 152
+7 33
+7 6
+7 38
+7 9
+7 287
+8 236
+8 241
+8 178
+8 252
+8 220
+9 7
+9 77
+9 272
+9 211
+9 190
+10 34
+10 266
+10 172
+10 175
+10 241
+11 165
+11 12
+11 210
+11 115
+11 219
+12 131
+12 11
+12 176
+12 183
+12 94
+13 212
+13 278
+13 217
+13 187
+13 223
+14 261
+14 106
+14 141
+14 47
+14 280
+15 258
+15 110
+15 208
+15 119
+15 30
+16 139
+16 173
+16 83
+16 59
+16 125
+17 169
+17 50
+17 18
+17 212
+17 180
+18 163
+18 108
+18 17
+18 242
+18 281
+19 66
+19 26
+19 261
+19 218
+19 220
+20 160
+20 35
+20 174
+20 270
+20 253
+21 171
+21 205
+21 51
+21 55
+21 185
+22 264
+22 268
+22 117
+22 23
+22 91
+23 201
+23 271
+23 22
+23 190
+23 94
+24 163
+24 69
+24 168
+24 139
+24 215
+25 65
+25 2
+25 123
+25 125
+25 127
+26 162
+26 45
+26 177
+26 113
+26 19
+27 225
+27 98
+27 163
+27 48
+27 146
+28 160
+28 100
+28 164
+28 133
+28 85
+29 64
+29 229
+29 199
+29 211
+29 221
+30 39
+30 270
+30 15
+30 273
+30 189
+31 164
+31 166
+31 199
+31 103
+31 46
+32 64
+32 256
+32 104
+32 144
+32 156
+33 7
+33 266
+33 186
+33 221
+33 158
+34 230
+34 10
+34 115
+34 148
+34 286
+35 160
+35 168
+35 20
+35 91
+35 222
+36 133
+36 198
+36 239
+36 146
+36 218
+37 162
+37 92
+37 153
+37 123
+37 188
+38 198
+38 7
+38 76
+38 206
+38 120
+39 3
+39 101
+39 266
+39 282
+39 30
+40 194
+40 71
+40 111
+40 239
+40 148
+41 105
+41 78
+41 250
+41 253
+41 190
+42 239
+42 114
+42 115
+42 214
+42 218
+43 5
+43 209
+43 246
+43 247
+43 94
+44 0
+44 234
+44 174
+44 117
+44 124
+45 213
+45 117
+45 247
+45 26
+45 62
+46 161
+46 2
+46 228
+46 252
+46 31
+47 197
+47 266
+47 14
+47 282
+47 251
+48 192
+48 67
+48 195
+48 143
+48 27
+49 116
+49 52
+49 182
+49 189
+49 94
+50 0
+50 259
+50 265
+50 269
+50 17
+51 2
+51 163
+51 70
+51 211
+51 21
+52 258
+52 68
+52 140
+52 49
+52 54
+53 200
+53 137
+53 108
+53 151
+53 56
+54 75
+54 208
+54 52
+54 221
+54 61
+55 73
+55 141
+55 148
+55 21
+55 189
+56 101
+56 233
+56 239
+56 53
+56 287
+57 136
+57 148
+57 218
+57 91
+57 156
+58 216
+58 89
+58 88
+58 156
+58 93
+59 256
+59 197
+59 173
+59 16
+59 149
+60 3
+60 103
+60 83
+60 214
+60 157
+61 230
+61 264
+61 243
+61 54
+61 152
+62 224
+62 65
+62 45
+62 173
+62 84
+63 1
+63 228
+63 105
+63 75
+63 271
+64 32
+64 137
+64 147
+64 121
+64 29
+65 76
+65 276
+65 25
+65 62
+65 191
+66 167
+66 19
+66 275
+66 118
+66 126
+67 92
+67 48
+67 121
+67 124
+67 125
+68 200
+68 204
+68 52
+68 118
+68 156
+69 235
+69 215
+69 24
+69 249
+69 159
+70 202
+70 267
+70 106
+70 240
+70 51
+71 226
+71 135
+71 40
+71 167
+71 241
+72 161
+72 231
+72 151
+72 280
+72 287
+73 258
+73 269
+73 207
+73 55
+73 90
+74 174
+74 209
+74 210
+74 119
+74 284
+75 166
+75 79
+75 54
+75 279
+75 63
+76 65
+76 227
+76 6
+76 38
+76 215
+77 231
+77 9
+77 183
+77 154
+77 127
+78 224
+78 100
+78 41
+78 157
+78 223
+79 262
+79 104
+79 75
+79 206
+79 215
+80 257
+80 260
+80 236
+80 277
+80 154
+81 224
+81 194
+81 5
+81 230
+81 282
+82 265
+82 147
+82 150
+82 280
+82 90
+83 225
+83 16
+83 184
+83 122
+83 60
+84 99
+84 262
+84 105
+84 120
+84 62
+85 244
+85 151
+85 121
+85 122
+85 28
+86 226
+86 233
+86 201
+86 207
+86 120
+87 192
+87 199
+87 146
+87 123
+87 222
+88 106
+88 144
+88 114
+88 275
+88 58
+89 99
+89 180
+89 276
+89 58
+89 223
+90 73
+90 177
+90 82
+90 186
+90 126
+91 35
+91 140
+91 173
+91 22
+91 57
+92 67
+92 99
+92 37
+92 274
+92 283
+93 263
+93 277
+93 58
+93 253
+93 191
+94 195
+94 43
+94 12
+94 49
+94 23
+95 132
+95 103
+95 140
+95 179
+95 149
+96 188
+96 116
+96 281
+96 251
+96 124
+97 166
+97 167
+97 6
+97 233
+97 172
+98 128
+98 233
+98 279
+98 185
+98 27
+99 242
+99 84
+99 246
+99 89
+99 92
+100 78
+100 272
+100 183
+100 247
+100 28
+101 6
+101 39
+101 236
+101 143
+101 56
+102 129
+102 195
+102 200
+102 264
+102 178
+103 137
+103 31
+103 60
+103 95
+103 159
+104 224
+104 32
+104 235
+104 79
+104 220
+105 41
+105 108
+105 84
+105 63
+105 255
+106 70
+106 14
+106 88
+106 250
+106 157
+107 166
+107 202
+107 270
+107 216
+107 121
+108 105
+108 138
+108 269
+108 18
+108 53
+109 165
+109 111
+109 275
+109 147
+109 245
+110 260
+110 235
+110 206
+110 15
+110 146
+111 259
+111 40
+111 138
+111 109
+111 254
+112 132
+112 235
+112 274
+112 178
+112 275
+113 154
+113 251
+113 217
+113 26
+113 155
+114 42
+114 118
+114 152
+114 153
+114 88
+115 160
+115 34
+115 42
+115 11
+115 236
+116 96
+116 194
+116 49
+116 122
+116 187
+117 44
+117 45
+117 207
+117 22
+117 223
+118 66
+118 196
+118 68
+118 231
+118 114
+119 74
+119 15
+119 212
+119 219
+119 127
+120 38
+120 176
+120 273
+120 84
+120 86
+121 64
+121 67
+121 107
+121 245
+121 85
+122 144
+122 83
+122 116
+122 85
+122 285
+123 128
+123 37
+123 87
+123 25
+123 158
+124 96
+124 67
+124 44
+124 208
+124 150
+125 67
+125 172
+125 16
+125 25
+125 189
+126 160
+126 66
+126 238
+126 90
+126 254
+127 203
+127 77
+127 119
+127 216
+127 25
+128 98
+128 139
+128 175
+128 248
+128 123
+129 132
+129 102
+129 264
+129 169
+129 158
+130 167
+130 237
+130 178
+130 217
+130 154
+131 133
+131 138
+131 203
+131 12
+131 147
+132 129
+132 199
+132 171
+132 112
+132 95
+133 131
+133 36
+133 219
+133 28
+133 221
+134 232
+134 137
+134 208
+134 278
+134 219
+135 71
+135 263
+135 204
+135 282
+135 284
+136 193
+136 1
+136 237
+136 57
+136 286
+137 64
+137 134
+137 103
+137 53
+137 182
+138 131
+138 202
+138 108
+138 111
+138 191
+139 128
+139 16
+139 212
+139 24
+139 189
+140 159
+140 52
+140 185
+140 91
+140 95
+141 5
+141 14
+141 55
+141 154
+141 191
+142 237
+142 238
+142 185
+142 221
+142 158
+143 257
+143 101
+143 232
+143 268
+143 48
+144 32
+144 225
+144 88
+144 249
+144 122
+145 164
+145 197
+145 229
+145 283
+145 188
+146 36
+146 110
+146 277
+146 87
+146 27
+147 64
+147 258
+147 131
+147 109
+147 82
+148 34
+148 40
+148 55
+148 57
+148 253
+149 228
+149 173
+149 246
+149 59
+149 95
+150 234
+150 82
+150 184
+150 186
+150 124
+151 72
+151 85
+151 53
+151 182
+151 155
+152 6
+152 114
+152 184
+152 61
+152 191
+153 37
+153 269
+153 210
+153 242
+153 114
+154 130
+154 77
+154 141
+154 80
+154 113
+155 261
+155 172
+155 113
+155 151
+155 286
+156 32
+156 68
+156 176
+156 57
+156 58
+157 106
+157 268
+157 78
+157 282
+157 60
+158 129
+158 33
+158 142
+158 177
+158 123
+159 69
+159 103
+159 268
+159 140
+159 209
+160 35
+160 115
+160 20
+160 28
+160 126
+161 163
+161 167
+161 72
+161 46
+161 219
+162 37
+162 232
+162 205
+162 26
+162 255
+163 161
+163 18
+163 51
+163 24
+163 27
+164 1
+164 271
+164 145
+164 28
+164 31
+165 225
+165 11
+165 109
+165 244
+165 182
+166 97
+166 266
+166 75
+166 107
+166 31
+167 161
+167 66
+167 130
+167 97
+167 71
+168 35
+168 238
+168 180
+168 213
+168 24
+169 129
+169 195
+169 17
+169 179
+169 243
+170 261
+170 197
+170 213
+170 248
+170 285
+171 256
+171 227
+171 132
+171 21
+171 181
+172 97
+172 10
+172 179
+172 155
+172 125
+173 91
+173 16
+173 149
+173 59
+173 62
+174 234
+174 74
+174 44
+174 20
+174 213
+175 128
+175 10
+175 206
+175 177
+175 190
+176 232
+176 12
+176 273
+176 120
+176 156
+177 90
+177 202
+177 175
+177 26
+177 158
+178 130
+178 102
+178 8
+178 207
+178 112
+179 169
+179 172
+179 210
+179 279
+179 95
+180 168
+180 205
+180 17
+180 181
+180 89
+181 196
+181 265
+181 171
+181 271
+181 180
+182 165
+182 137
+182 208
+182 49
+182 151
+183 1
+183 100
+183 12
+183 77
+183 244
+184 280
+184 240
+184 83
+184 150
+184 152
+185 0
+185 98
+185 140
+185 142
+185 21
+186 33
+186 245
+186 150
+186 90
+186 287
+187 13
+187 274
+187 243
+187 116
+187 216
+188 96
+188 4
+188 37
+188 145
+188 242
+189 139
+189 49
+189 55
+189 125
+189 30
+190 41
+190 9
+190 175
+190 23
+190 222
+191 65
+191 138
+191 141
+191 152
+191 93
+192 263
+192 48
+192 276
+192 87
+192 285
+193 0
+193 194
+193 262
+193 136
+193 252
+194 193
+194 195
+194 40
+194 81
+194 116
+195 194
+195 102
+195 169
+195 48
+195 94
+196 0
+196 204
+196 181
+196 118
+196 251
+197 3
+197 170
+197 47
+197 145
+197 59
+198 36
+198 38
+198 205
+198 245
+198 255
+199 132
+199 214
+199 87
+199 29
+199 31
+200 68
+200 102
+200 267
+200 272
+200 53
+201 227
+201 204
+201 274
+201 86
+201 23
+202 70
+202 138
+202 107
+202 177
+202 247
+203 131
+203 277
+203 284
+203 222
+203 127
+204 196
+204 68
+204 135
+204 201
+204 237
+205 257
+205 162
+205 198
+205 180
+205 21
+206 38
+206 262
+206 110
+206 79
+206 175
+207 73
+207 238
+207 178
+207 117
+207 86
+208 134
+208 15
+208 182
+208 54
+208 124
+209 74
+209 43
+209 239
+209 277
+209 159
+210 74
+210 11
+210 179
+210 246
+210 153
+211 5
+211 9
+211 51
+211 29
+211 255
+212 139
+212 13
+212 17
+212 278
+212 119
+213 168
+213 170
+213 45
+213 174
+213 245
+214 199
+214 42
+214 267
+214 60
+214 255
+215 69
+215 76
+215 79
+215 24
+215 223
+216 107
+216 279
+216 58
+216 187
+216 127
+217 130
+217 228
+217 13
+217 113
+217 244
+218 36
+218 42
+218 19
+218 276
+218 57
+219 161
+219 133
+219 134
+219 11
+219 119
+220 8
+220 104
+220 19
+220 278
+220 253
+221 33
+221 133
+221 142
+221 54
+221 29
+222 35
+222 203
+222 87
+222 251
+222 190
+223 13
+223 78
+223 117
+223 215
+223 89
+224 104
+224 269
+224 78
+224 81
+224 62
+225 165
+225 144
+225 83
+225 250
+225 27
+226 227
+226 4
+226 71
+226 86
+226 283
+227 226
+227 201
+227 234
+227 171
+227 76
+228 217
+228 46
+228 149
+228 281
+228 63
+229 256
+229 258
+229 231
+229 145
+229 29
+230 34
+230 259
+230 231
+230 81
+230 61
+231 229
+231 230
+231 72
+231 77
+231 118
+232 162
+232 3
+232 134
+232 143
+232 176
+233 97
+233 98
+233 86
+233 279
+233 56
+234 227
+234 44
+234 174
+234 150
+234 252
+235 69
+235 104
+235 110
+235 270
+235 112
+236 101
+236 8
+236 80
+236 115
+236 280
+237 130
+237 136
+237 204
+237 142
+237 272
+238 4
+238 168
+238 142
+238 207
+238 126
+239 36
+239 40
+239 42
+239 209
+239 56
+240 257
+240 5
+240 70
+240 241
+240 184
+241 71
+241 8
+241 10
+241 240
+241 278
+242 99
+242 18
+242 153
+242 283
+242 188
+243 169
+243 265
+243 187
+243 61
+243 254
+244 1
+244 165
+244 85
+244 183
+244 217
+245 198
+245 109
+245 213
+245 121
+245 186
+246 99
+246 43
+246 210
+246 149
+246 286
+247 100
+247 202
+247 43
+247 45
+247 284
+248 128
+248 170
+248 272
+248 254
+248 287
+249 259
+249 69
+249 144
+249 273
+249 281
+250 225
+250 264
+250 41
+250 106
+250 271
+251 96
+251 196
+251 47
+251 113
+251 222
+252 193
+252 8
+252 234
+252 46
+252 254
+253 41
+253 20
+253 148
+253 220
+253 93
+254 111
+254 243
+254 248
+254 252
+254 126
+255 162
+255 198
+255 105
+255 211
+255 214
+256 32
+256 261
+256 229
+256 171
+256 59
+257 260
+257 205
+257 143
+257 80
+257 240
+258 229
+258 73
+258 15
+258 147
+258 52
+259 3
+259 230
+259 111
+259 50
+259 249
+260 257
+260 2
+260 263
+260 110
+260 80
+261 256
+261 170
+261 14
+261 19
+261 155
+262 193
+262 206
+262 79
+262 84
+262 285
+263 192
+263 260
+263 135
+263 281
+263 93
+264 129
+264 102
+264 22
+264 250
+264 61
+265 267
+265 82
+265 243
+265 50
+265 181
+266 33
+266 166
+266 39
+266 10
+266 47
+267 70
+267 200
+267 265
+267 276
+267 214
+268 4
+268 143
+268 22
+268 157
+268 159
+269 224
+269 73
+269 108
+269 50
+269 153
+270 107
+270 235
+270 20
+270 285
+270 30
+271 164
+271 181
+271 23
+271 250
+271 63
+272 100
+272 200
+272 9
+272 237
+272 248
+273 2
+273 176
+273 120
+273 249
+273 30
+274 201
+274 187
+274 112
+274 283
+274 92
+275 66
+275 109
+275 112
+275 88
+275 286
+276 192
+276 65
+276 267
+276 89
+276 218
+277 203
+277 80
+277 209
+277 146
+277 93
+278 134
+278 13
+278 241
+278 212
+278 220
+279 98
+279 233
+279 75
+279 179
+279 216
+280 72
+280 236
+280 14
+280 82
+280 184
+281 96
+281 228
+281 263
+281 18
+281 249
+282 135
+282 39
+282 47
+282 81
+282 157
+283 226
+283 145
+283 274
+283 242
+283 92
+284 4
+284 135
+284 74
+284 203
+284 247
+285 192
+285 262
+285 170
+285 270
+285 122
+286 34
+286 136
+286 275
+286 246
+286 155
+287 7
+287 186
+287 72
+287 248
+287 56
diff --git a/random files/384_regular.edges b/random files/384_regular.edges
new file mode 100644
index 0000000..14b3774
--- /dev/null
+++ b/random files/384_regular.edges	
@@ -0,0 +1,2305 @@
+384
+0 42
+0 203
+0 174
+0 212
+0 180
+0 22
+1 271
+1 304
+1 272
+1 212
+1 25
+1 282
+2 256
+2 354
+2 21
+2 54
+2 152
+2 313
+3 268
+3 332
+3 211
+3 20
+3 150
+3 119
+4 10
+4 42
+4 332
+4 247
+4 91
+4 254
+5 199
+5 204
+5 237
+5 374
+5 376
+5 157
+6 352
+6 296
+6 379
+6 21
+6 280
+6 347
+7 288
+7 194
+7 293
+7 174
+7 54
+7 310
+8 103
+8 333
+8 143
+8 242
+8 50
+8 87
+9 41
+9 203
+9 301
+9 112
+9 180
+9 53
+10 130
+10 4
+10 172
+10 141
+10 334
+10 22
+11 265
+11 43
+11 79
+11 341
+11 245
+11 283
+12 67
+12 73
+12 123
+12 27
+12 124
+12 253
+13 160
+13 297
+13 171
+13 173
+13 308
+13 248
+14 358
+14 294
+14 302
+14 339
+14 24
+14 286
+15 129
+15 361
+15 309
+15 153
+15 380
+15 94
+16 199
+16 170
+16 77
+16 240
+16 180
+16 319
+17 65
+17 68
+17 324
+17 43
+17 211
+17 245
+18 324
+18 231
+18 140
+18 305
+18 86
+18 183
+19 200
+19 363
+19 83
+19 211
+19 310
+19 189
+20 192
+20 3
+20 341
+20 278
+20 314
+20 59
+21 2
+21 163
+21 197
+21 6
+21 348
+21 63
+22 0
+22 33
+22 229
+22 10
+22 142
+22 115
+23 322
+23 131
+23 290
+23 103
+23 171
+23 81
+24 226
+24 98
+24 110
+24 14
+24 305
+24 383
+25 1
+25 314
+25 206
+25 175
+25 176
+25 90
+26 167
+26 41
+26 273
+26 340
+26 379
+26 188
+27 34
+27 138
+27 363
+27 12
+27 317
+27 255
+28 320
+28 293
+28 234
+28 209
+28 210
+28 91
+29 325
+29 267
+29 151
+29 281
+29 220
+29 62
+30 193
+30 197
+30 166
+30 134
+30 46
+30 312
+31 225
+31 365
+31 109
+31 311
+31 216
+31 221
+32 96
+32 192
+32 266
+32 343
+32 156
+32 381
+33 290
+33 35
+33 73
+33 43
+33 22
+33 319
+34 140
+34 366
+34 308
+34 183
+34 27
+34 62
+35 33
+35 333
+35 276
+35 215
+35 344
+35 314
+36 258
+36 336
+36 82
+36 254
+36 62
+36 127
+37 195
+37 43
+37 175
+37 337
+37 127
+37 319
+38 353
+38 264
+38 137
+38 305
+38 52
+38 380
+39 352
+39 268
+39 371
+39 181
+39 281
+39 252
+40 197
+40 168
+40 369
+40 243
+40 277
+40 315
+41 353
+41 257
+41 26
+41 9
+41 372
+41 186
+42 0
+42 323
+42 4
+42 82
+42 309
+42 94
+43 33
+43 37
+43 11
+43 303
+43 17
+43 350
+44 288
+44 261
+44 72
+44 367
+44 372
+44 119
+45 224
+45 198
+45 136
+45 143
+45 373
+45 158
+46 382
+46 60
+46 213
+46 156
+46 30
+46 351
+47 194
+47 259
+47 101
+47 294
+47 302
+47 272
+48 96
+48 297
+48 265
+48 153
+48 155
+48 61
+49 66
+49 205
+49 141
+49 113
+49 53
+49 149
+50 8
+50 201
+50 240
+50 117
+50 92
+50 95
+51 256
+51 265
+51 81
+51 147
+51 183
+51 121
+52 131
+52 38
+52 141
+52 272
+52 115
+52 315
+53 9
+53 203
+53 365
+53 49
+53 178
+53 91
+54 129
+54 2
+54 100
+54 7
+54 154
+54 283
+55 227
+55 131
+55 72
+55 138
+55 204
+55 188
+56 103
+56 266
+56 107
+56 171
+56 109
+56 371
+57 232
+57 108
+57 212
+57 217
+57 378
+57 316
+58 69
+58 209
+58 242
+58 221
+58 94
+58 223
+59 258
+59 361
+59 239
+59 147
+59 20
+59 188
+60 261
+60 205
+60 46
+60 271
+60 147
+60 222
+61 325
+61 167
+61 363
+61 48
+61 308
+61 281
+62 34
+62 36
+62 334
+62 304
+62 377
+62 29
+63 100
+63 176
+63 21
+63 309
+63 285
+63 253
+64 164
+64 334
+64 280
+64 250
+64 219
+64 94
+65 224
+65 172
+65 305
+65 17
+65 92
+65 157
+66 97
+66 137
+66 49
+66 180
+66 345
+66 282
+67 170
+67 12
+67 237
+67 84
+67 344
+67 93
+68 323
+68 163
+68 17
+68 86
+68 379
+68 124
+69 97
+69 202
+69 210
+69 147
+69 58
+69 188
+70 231
+70 274
+70 248
+70 220
+70 350
+70 286
+71 230
+71 102
+71 326
+71 330
+71 216
+71 287
+72 96
+72 321
+72 167
+72 44
+72 55
+72 351
+73 96
+73 33
+73 101
+73 12
+73 149
+73 377
+74 102
+74 295
+74 172
+74 183
+74 280
+74 120
+75 321
+75 165
+75 246
+75 278
+75 376
+75 126
+76 348
+76 158
+76 252
+76 253
+76 190
+76 127
+77 224
+77 132
+77 368
+77 16
+77 114
+77 181
+78 322
+78 236
+78 206
+78 366
+78 377
+78 156
+79 231
+79 328
+79 11
+79 277
+79 85
+79 282
+80 290
+80 135
+80 137
+80 238
+80 336
+80 343
+81 359
+81 110
+81 146
+81 51
+81 23
+81 279
+82 195
+82 36
+82 42
+82 274
+82 344
+82 250
+83 196
+83 232
+83 337
+83 19
+83 281
+83 382
+84 67
+84 166
+84 358
+84 335
+84 346
+84 255
+85 322
+85 79
+85 213
+85 218
+85 347
+85 189
+86 100
+86 68
+86 172
+86 18
+86 311
+86 92
+87 326
+87 8
+87 235
+87 112
+87 150
+87 90
+88 97
+88 268
+88 178
+88 146
+88 217
+88 187
+89 288
+89 97
+89 167
+89 107
+89 248
+89 286
+90 164
+90 87
+90 215
+90 120
+90 25
+90 285
+91 321
+91 4
+91 145
+91 53
+91 218
+91 28
+92 65
+92 50
+92 339
+92 86
+92 122
+92 381
+93 322
+93 67
+93 330
+93 206
+93 306
+93 249
+94 64
+94 295
+94 169
+94 42
+94 15
+94 58
+95 356
+95 263
+95 105
+95 50
+95 275
+95 249
+96 32
+96 72
+96 73
+96 48
+96 253
+96 159
+97 66
+97 324
+97 69
+97 367
+97 88
+97 89
+98 135
+98 168
+98 371
+98 24
+98 313
+98 158
+99 296
+99 298
+99 330
+99 146
+99 185
+99 122
+100 352
+100 54
+100 86
+100 282
+100 279
+100 63
+101 161
+101 327
+101 168
+101 73
+101 302
+101 47
+102 71
+102 74
+102 299
+102 204
+102 365
+102 380
+103 8
+103 241
+103 179
+103 23
+103 56
+103 154
+104 193
+104 164
+104 139
+104 115
+104 378
+104 349
+105 192
+105 166
+105 266
+105 205
+105 318
+105 95
+106 171
+106 332
+106 177
+106 244
+106 215
+106 126
+107 89
+107 260
+107 113
+107 311
+107 56
+107 377
+108 325
+108 210
+108 157
+108 57
+108 156
+108 285
+109 194
+109 355
+109 307
+109 56
+109 31
+109 383
+110 260
+110 261
+110 235
+110 241
+110 81
+110 24
+111 292
+111 138
+111 364
+111 276
+111 309
+111 188
+112 130
+112 168
+112 9
+112 87
+112 151
+112 316
+113 326
+113 107
+113 171
+113 269
+113 49
+113 219
+114 226
+114 234
+114 77
+114 208
+114 339
+114 314
+115 168
+115 104
+115 307
+115 52
+115 22
+115 119
+116 290
+116 227
+116 165
+116 357
+116 313
+116 317
+117 258
+117 166
+117 198
+117 298
+117 50
+117 221
+118 355
+118 262
+118 204
+118 173
+118 344
+118 153
+119 3
+119 44
+119 208
+119 369
+119 115
+119 341
+120 233
+120 74
+120 241
+120 342
+120 90
+120 315
+121 264
+121 232
+121 366
+121 335
+121 51
+121 190
+122 160
+122 99
+122 139
+122 381
+122 92
+122 189
+123 131
+123 329
+123 12
+123 300
+123 247
+123 313
+124 224
+124 68
+124 12
+124 333
+124 279
+124 222
+125 227
+125 358
+125 177
+125 372
+125 340
+125 351
+126 197
+126 263
+126 106
+126 75
+126 153
+126 318
+127 36
+127 37
+127 199
+127 76
+127 304
+127 287
+128 257
+128 162
+128 167
+128 206
+128 277
+128 287
+129 302
+129 15
+129 177
+129 244
+129 54
+129 316
+130 165
+130 327
+130 231
+130 10
+130 112
+130 210
+131 264
+131 297
+131 52
+131 23
+131 55
+131 123
+132 328
+132 267
+132 77
+132 375
+132 218
+132 253
+133 364
+133 334
+133 238
+133 241
+133 184
+133 189
+134 320
+134 259
+134 331
+134 367
+134 375
+134 30
+135 98
+135 293
+135 331
+135 80
+135 182
+135 383
+136 225
+136 45
+136 242
+136 243
+136 345
+136 223
+137 66
+137 291
+137 38
+137 80
+137 214
+137 221
+138 201
+138 266
+138 251
+138 111
+138 55
+138 27
+139 358
+139 104
+139 360
+139 272
+139 345
+139 122
+140 289
+140 34
+140 208
+140 18
+140 216
+140 254
+141 353
+141 327
+141 10
+141 49
+141 52
+141 213
+142 301
+142 365
+142 175
+142 277
+142 22
+142 278
+143 225
+143 8
+143 45
+143 207
+143 240
+143 351
+144 261
+144 333
+144 334
+144 369
+144 373
+144 222
+145 322
+145 170
+145 338
+145 154
+145 91
+145 220
+146 352
+146 99
+146 81
+146 306
+146 88
+146 221
+147 69
+147 267
+147 51
+147 216
+147 59
+147 60
+148 228
+148 269
+148 370
+148 212
+148 375
+148 159
+149 290
+149 197
+149 73
+149 297
+149 49
+149 283
+150 3
+150 326
+150 211
+150 87
+150 279
+150 314
+151 112
+151 274
+151 340
+151 374
+151 283
+151 29
+152 2
+152 196
+152 198
+152 264
+152 188
+152 350
+153 228
+153 15
+153 303
+153 48
+153 118
+153 126
+154 289
+154 103
+154 169
+154 145
+154 273
+154 54
+155 291
+155 355
+155 48
+155 305
+155 312
+155 345
+156 32
+156 163
+156 108
+156 46
+156 78
+156 383
+157 65
+157 5
+157 361
+157 362
+157 108
+157 312
+158 98
+158 325
+158 76
+158 45
+158 367
+158 213
+159 96
+159 230
+159 178
+159 148
+159 309
+159 380
+160 122
+160 328
+160 236
+160 13
+160 179
+160 186
+161 162
+161 101
+161 230
+161 370
+161 275
+161 246
+162 128
+162 161
+162 196
+162 181
+162 187
+162 220
+163 354
+163 68
+163 204
+163 370
+163 21
+163 156
+164 64
+164 104
+164 337
+164 90
+164 251
+164 254
+165 289
+165 130
+165 356
+165 75
+165 174
+165 116
+166 329
+166 105
+166 297
+166 84
+166 117
+166 30
+167 128
+167 72
+167 247
+167 89
+167 26
+167 61
+168 256
+168 98
+168 101
+168 40
+168 112
+168 115
+169 289
+169 294
+169 331
+169 94
+169 154
+169 190
+170 321
+170 67
+170 358
+170 16
+170 145
+170 274
+171 106
+171 13
+171 113
+171 342
+171 23
+171 56
+172 65
+172 202
+172 74
+172 10
+172 332
+172 86
+173 320
+173 198
+173 331
+173 13
+173 118
+173 377
+174 0
+174 165
+174 7
+174 267
+174 313
+174 350
+175 37
+175 142
+175 271
+175 248
+175 25
+175 187
+176 195
+176 228
+176 292
+176 239
+176 25
+176 63
+177 129
+177 106
+177 240
+177 241
+177 375
+177 125
+178 360
+178 233
+178 329
+178 53
+178 88
+178 159
+179 160
+179 192
+179 103
+179 231
+179 214
+179 285
+180 0
+180 66
+180 9
+180 271
+180 16
+180 247
+181 162
+181 195
+181 325
+181 39
+181 77
+181 278
+182 135
+182 233
+182 299
+182 335
+182 308
+182 183
+183 34
+183 74
+183 18
+183 51
+183 182
+183 184
+184 133
+184 295
+184 300
+184 367
+184 183
+184 347
+185 99
+185 355
+185 196
+185 230
+185 349
+185 222
+186 160
+186 262
+186 198
+186 264
+186 41
+186 270
+187 162
+187 261
+187 327
+187 234
+187 175
+187 88
+188 69
+188 111
+188 55
+188 152
+188 26
+188 59
+189 133
+189 199
+189 250
+189 19
+189 85
+189 122
+190 352
+190 169
+190 76
+190 121
+190 346
+190 283
+191 323
+191 357
+191 296
+191 336
+191 374
+191 286
+192 32
+192 105
+192 269
+192 179
+192 20
+192 348
+193 259
+193 104
+193 363
+193 245
+193 30
+193 254
+194 321
+194 7
+194 236
+194 109
+194 270
+194 47
+195 288
+195 37
+195 239
+195 176
+195 82
+195 181
+196 162
+196 293
+196 298
+196 83
+196 152
+196 185
+197 40
+197 208
+197 21
+197 149
+197 126
+197 30
+198 45
+198 173
+198 117
+198 152
+198 186
+198 284
+199 258
+199 5
+199 16
+199 376
+199 189
+199 127
+200 227
+200 236
+200 365
+200 302
+200 19
+200 280
+201 138
+201 298
+201 300
+201 50
+201 214
+201 378
+202 69
+202 299
+202 172
+202 237
+202 301
+202 243
+203 0
+203 9
+203 242
+203 53
+203 246
+203 377
+204 163
+204 5
+204 102
+204 267
+204 118
+204 55
+205 105
+205 60
+205 335
+205 337
+205 49
+205 252
+206 128
+206 78
+206 312
+206 25
+206 93
+206 223
+207 262
+207 235
+207 143
+207 304
+207 273
+207 381
+208 197
+208 140
+208 114
+208 374
+208 119
+208 255
+209 304
+209 370
+209 343
+209 58
+209 379
+209 28
+210 130
+210 69
+210 108
+210 376
+210 345
+210 28
+211 3
+211 17
+211 19
+211 150
+211 248
+211 382
+212 0
+212 1
+212 148
+212 214
+212 376
+212 57
+213 268
+213 141
+213 46
+213 271
+213 85
+213 158
+214 324
+214 137
+214 201
+214 179
+214 212
+214 342
+215 35
+215 356
+215 90
+215 106
+215 242
+215 314
+216 292
+216 71
+216 140
+216 307
+216 147
+216 31
+217 322
+217 359
+217 235
+217 88
+217 57
+217 250
+218 289
+218 132
+218 269
+218 85
+218 91
+218 287
+219 64
+219 257
+219 354
+219 113
+219 277
+219 286
+220 162
+220 70
+220 332
+220 145
+220 243
+220 29
+221 137
+221 146
+221 276
+221 117
+221 58
+221 31
+222 362
+222 239
+222 144
+222 124
+222 185
+222 60
+223 136
+223 331
+223 206
+223 367
+223 58
+223 348
+224 65
+224 265
+224 45
+224 77
+224 343
+224 124
+225 260
+225 136
+225 143
+225 276
+225 380
+225 31
+226 294
+226 331
+226 114
+226 243
+226 24
+226 345
+227 200
+227 273
+227 116
+227 55
+227 316
+227 125
+228 176
+228 148
+228 153
+228 348
+228 349
+228 254
+229 326
+229 296
+229 243
+229 276
+229 22
+229 344
+230 161
+230 71
+230 295
+230 361
+230 185
+230 159
+231 130
+231 70
+231 363
+231 79
+231 18
+231 179
+232 121
+232 237
+232 370
+232 83
+232 245
+232 57
+233 355
+233 305
+233 178
+233 308
+233 182
+233 120
+234 263
+234 360
+234 187
+234 114
+234 379
+234 28
+235 110
+235 207
+235 87
+235 312
+235 217
+235 351
+236 160
+236 194
+236 200
+236 78
+236 346
+236 315
+237 67
+237 292
+237 5
+237 232
+237 202
+237 238
+238 261
+238 133
+238 237
+238 80
+238 341
+238 348
+239 195
+239 328
+239 303
+239 176
+239 59
+239 222
+240 328
+240 143
+240 16
+240 177
+240 335
+240 50
+241 133
+241 103
+241 110
+241 177
+241 306
+241 120
+242 8
+242 136
+242 203
+242 215
+242 58
+242 255
+243 226
+243 229
+243 40
+243 136
+243 202
+243 220
+244 129
+244 323
+244 106
+244 362
+244 369
+244 374
+245 193
+245 232
+245 298
+245 11
+245 269
+245 17
+246 161
+246 75
+246 203
+246 251
+246 284
+246 383
+247 4
+247 167
+247 365
+247 368
+247 180
+247 123
+248 70
+248 13
+248 175
+248 211
+248 89
+248 318
+249 291
+249 383
+249 298
+249 339
+249 93
+249 95
+250 64
+250 338
+250 82
+250 189
+250 217
+250 381
+251 256
+251 164
+251 138
+251 307
+251 246
+251 281
+252 39
+252 328
+252 76
+252 205
+252 337
+252 372
+253 96
+253 132
+253 12
+253 76
+253 315
+253 63
+254 193
+254 164
+254 228
+254 36
+254 4
+254 140
+255 327
+255 366
+255 208
+255 242
+255 84
+255 27
+256 2
+256 263
+256 168
+256 51
+256 251
+256 382
+257 128
+257 357
+257 41
+257 275
+257 219
+257 284
+258 288
+258 36
+258 199
+258 362
+258 117
+258 59
+259 193
+259 134
+259 268
+259 364
+259 47
+259 347
+260 225
+260 354
+260 358
+260 266
+260 107
+260 110
+261 44
+261 238
+261 110
+261 144
+261 187
+261 60
+262 320
+262 292
+262 268
+262 207
+262 118
+262 186
+263 256
+263 291
+263 234
+263 371
+263 126
+263 95
+264 131
+264 38
+264 269
+264 152
+264 121
+264 186
+265 224
+265 356
+265 11
+265 48
+265 51
+265 276
+266 32
+266 260
+266 105
+266 138
+266 340
+266 56
+267 132
+267 204
+267 174
+267 368
+267 147
+267 29
+268 3
+268 259
+268 262
+268 39
+268 213
+268 88
+269 192
+269 264
+269 113
+269 148
+269 245
+269 218
+270 194
+270 323
+270 330
+270 301
+270 278
+270 186
+271 320
+271 1
+271 175
+271 180
+271 213
+271 60
+272 1
+272 139
+272 47
+272 303
+272 52
+272 375
+273 227
+273 26
+273 207
+273 340
+273 154
+273 379
+274 357
+274 70
+274 170
+274 364
+274 82
+274 151
+275 161
+275 257
+275 329
+275 368
+275 315
+275 95
+276 225
+276 35
+276 229
+276 265
+276 111
+276 221
+277 128
+277 40
+277 142
+277 79
+277 307
+277 219
+278 295
+278 75
+278 142
+278 270
+278 20
+278 181
+279 100
+279 81
+279 307
+279 150
+279 347
+279 124
+280 64
+280 294
+280 6
+280 200
+280 74
+280 330
+281 39
+281 366
+281 83
+281 61
+281 251
+281 29
+282 1
+282 66
+282 100
+282 79
+282 304
+282 287
+283 11
+283 149
+283 342
+283 54
+283 151
+283 190
+284 257
+284 357
+284 198
+284 368
+284 340
+284 246
+285 329
+285 108
+285 306
+285 179
+285 90
+285 63
+286 70
+286 14
+286 336
+286 89
+286 219
+286 191
+287 128
+287 71
+287 282
+287 378
+287 218
+287 127
+288 258
+288 195
+288 295
+288 7
+288 44
+288 89
+289 165
+289 154
+289 169
+289 364
+289 140
+289 218
+290 33
+290 80
+290 116
+290 149
+290 310
+290 23
+291 324
+291 263
+291 137
+291 249
+291 155
+291 350
+292 262
+292 237
+292 111
+292 176
+292 311
+292 216
+293 196
+293 135
+293 7
+293 297
+293 339
+293 28
+294 226
+294 169
+294 14
+294 47
+294 306
+294 280
+295 288
+295 230
+295 74
+295 278
+295 184
+295 94
+296 99
+296 229
+296 6
+296 333
+296 303
+296 191
+297 131
+297 293
+297 166
+297 13
+297 48
+297 149
+298 99
+298 196
+298 201
+298 245
+298 117
+298 249
+299 102
+299 202
+299 339
+299 371
+299 182
+299 311
+300 356
+300 325
+300 201
+300 301
+300 184
+300 123
+301 9
+301 202
+301 300
+301 142
+301 270
+301 350
+302 129
+302 101
+302 359
+302 200
+302 14
+302 47
+303 296
+303 43
+303 239
+303 272
+303 338
+303 153
+304 1
+304 207
+304 209
+304 282
+304 62
+304 127
+305 65
+305 38
+305 233
+305 18
+305 24
+305 155
+306 294
+306 241
+306 146
+306 371
+306 285
+306 93
+307 109
+307 115
+307 277
+307 279
+307 216
+307 251
+308 34
+308 233
+308 13
+308 366
+308 182
+308 61
+309 159
+309 360
+309 42
+309 15
+309 111
+309 63
+310 290
+310 7
+310 362
+310 332
+310 19
+310 346
+311 292
+311 107
+311 299
+311 86
+311 31
+311 351
+312 363
+312 235
+312 206
+312 155
+312 157
+312 30
+313 2
+313 98
+313 174
+313 116
+313 123
+313 318
+314 35
+314 114
+314 20
+314 150
+314 215
+314 25
+315 40
+315 236
+315 275
+315 52
+315 120
+315 253
+316 353
+316 129
+316 227
+316 321
+316 112
+316 57
+317 116
+317 372
+317 373
+317 344
+317 27
+317 381
+318 326
+318 359
+318 105
+318 248
+318 313
+318 126
+319 33
+319 37
+319 335
+319 16
+319 343
+319 346
+320 352
+320 134
+320 262
+320 173
+320 271
+320 28
+321 194
+321 72
+321 170
+321 75
+321 91
+321 316
+322 78
+322 145
+322 85
+322 23
+322 217
+322 93
+323 68
+323 42
+323 270
+323 338
+323 244
+323 191
+324 97
+324 291
+324 369
+324 18
+324 17
+324 214
+325 300
+325 108
+325 61
+325 181
+325 29
+325 158
+326 229
+326 71
+326 113
+326 150
+326 87
+326 318
+327 130
+327 101
+327 141
+327 341
+327 187
+327 255
+328 160
+328 132
+328 79
+328 240
+328 239
+328 252
+329 166
+329 369
+329 178
+329 275
+329 123
+329 285
+330 99
+330 71
+330 270
+330 373
+330 280
+330 93
+331 226
+331 134
+331 135
+331 169
+331 173
+331 223
+332 3
+332 4
+332 106
+332 172
+332 310
+332 220
+333 35
+333 296
+333 8
+333 360
+333 144
+333 124
+334 64
+334 133
+334 10
+334 144
+334 346
+334 62
+335 205
+335 240
+335 84
+335 182
+335 121
+335 319
+336 354
+336 36
+336 80
+336 347
+336 286
+336 191
+337 164
+337 37
+337 205
+337 83
+337 380
+337 252
+338 323
+338 364
+338 303
+338 145
+338 250
+338 382
+339 293
+339 299
+339 14
+339 114
+339 249
+339 92
+340 266
+340 273
+340 151
+340 26
+340 284
+340 125
+341 327
+341 11
+341 238
+341 20
+341 119
+341 349
+342 354
+342 171
+342 214
+342 120
+342 378
+342 283
+343 32
+343 224
+343 355
+343 80
+343 209
+343 319
+344 35
+344 67
+344 229
+344 82
+344 118
+344 317
+345 226
+345 66
+345 136
+345 139
+345 210
+345 155
+346 236
+346 334
+346 84
+346 310
+346 190
+346 319
+347 259
+347 6
+347 336
+347 85
+347 279
+347 184
+348 192
+348 228
+348 76
+348 238
+348 21
+348 223
+349 228
+349 104
+349 361
+349 372
+349 341
+349 185
+350 291
+350 70
+350 43
+350 301
+350 174
+350 152
+351 72
+351 235
+351 46
+351 143
+351 311
+351 125
+352 320
+352 100
+352 6
+352 39
+352 146
+352 190
+353 356
+353 38
+353 41
+353 141
+353 368
+353 316
+354 2
+354 163
+354 260
+354 336
+354 342
+354 219
+355 233
+355 109
+355 118
+355 343
+355 185
+355 155
+356 353
+356 165
+356 265
+356 300
+356 215
+356 95
+357 257
+357 274
+357 116
+357 378
+357 284
+357 191
+358 260
+358 170
+358 139
+358 14
+358 84
+358 125
+359 360
+359 302
+359 81
+359 376
+359 217
+359 318
+360 359
+360 234
+360 139
+360 333
+360 178
+360 309
+361 230
+361 15
+361 157
+361 374
+361 59
+361 349
+362 258
+362 370
+362 244
+362 310
+362 157
+362 222
+363 193
+363 231
+363 19
+363 312
+363 27
+363 61
+364 289
+364 259
+364 133
+364 111
+364 274
+364 338
+365 102
+365 200
+365 142
+365 53
+365 247
+365 31
+366 121
+366 34
+366 78
+366 308
+366 281
+366 255
+367 97
+367 134
+367 44
+367 184
+367 158
+367 223
+368 353
+368 267
+368 77
+368 275
+368 247
+368 284
+369 324
+369 40
+369 329
+369 144
+369 244
+369 119
+370 161
+370 163
+370 232
+370 362
+370 209
+370 148
+371 98
+371 39
+371 263
+371 299
+371 306
+371 56
+372 41
+372 44
+372 252
+372 125
+372 349
+372 317
+373 330
+373 45
+373 144
+373 375
+373 317
+373 382
+374 5
+374 361
+374 208
+374 244
+374 151
+374 191
+375 132
+375 134
+375 272
+375 177
+375 148
+375 373
+376 5
+376 359
+376 199
+376 75
+376 210
+376 212
+377 73
+377 107
+377 203
+377 173
+377 78
+377 62
+378 357
+378 104
+378 201
+378 342
+378 57
+378 287
+379 68
+379 6
+379 234
+379 209
+379 273
+379 26
+380 225
+380 102
+380 38
+380 15
+380 337
+380 159
+381 32
+381 122
+381 207
+381 250
+381 92
+381 317
+382 256
+382 46
+382 338
+382 83
+382 211
+382 373
+383 135
+383 109
+383 246
+383 24
+383 249
+383 156
diff --git a/random files/96_star.edges b/random files/96_star.edges
new file mode 100644
index 0000000..c13fb7b
--- /dev/null
+++ b/random files/96_star.edges	
@@ -0,0 +1,191 @@
+96
+0 1
+0 2
+0 3
+0 4
+0 5
+0 6
+0 7
+0 8
+0 9
+0 10
+0 11
+0 12
+0 13
+0 14
+0 15
+0 16
+0 17
+0 18
+0 19
+0 20
+0 21
+0 22
+0 23
+0 24
+0 25
+0 26
+0 27
+0 28
+0 29
+0 30
+0 31
+0 32
+0 33
+0 34
+0 35
+0 36
+0 37
+0 38
+0 39
+0 40
+0 41
+0 42
+0 43
+0 44
+0 45
+0 46
+0 47
+0 48
+0 49
+0 50
+0 51
+0 52
+0 53
+0 54
+0 55
+0 56
+0 57
+0 58
+0 59
+0 60
+0 61
+0 62
+0 63
+0 64
+0 65
+0 66
+0 67
+0 68
+0 69
+0 70
+0 71
+0 72
+0 73
+0 74
+0 75
+0 76
+0 77
+0 78
+0 79
+0 80
+0 81
+0 82
+0 83
+0 84
+0 85
+0 86
+0 87
+0 88
+0 89
+0 90
+0 91
+0 92
+0 93
+0 94
+0 95
+1 0
+2 0
+3 0
+4 0
+5 0
+6 0
+7 0
+8 0
+9 0
+10 0
+11 0
+12 0
+13 0
+14 0
+15 0
+16 0
+17 0
+18 0
+19 0
+20 0
+21 0
+22 0
+23 0
+24 0
+25 0
+26 0
+27 0
+28 0
+29 0
+30 0
+31 0
+32 0
+33 0
+34 0
+35 0
+36 0
+37 0
+38 0
+39 0
+40 0
+41 0
+42 0
+43 0
+44 0
+45 0
+46 0
+47 0
+48 0
+49 0
+50 0
+51 0
+52 0
+53 0
+54 0
+55 0
+56 0
+57 0
+58 0
+59 0
+60 0
+61 0
+62 0
+63 0
+64 0
+65 0
+66 0
+67 0
+68 0
+69 0
+70 0
+71 0
+72 0
+73 0
+74 0
+75 0
+76 0
+77 0
+78 0
+79 0
+80 0
+81 0
+82 0
+83 0
+84 0
+85 0
+86 0
+87 0
+88 0
+89 0
+90 0
+91 0
+92 0
+93 0
+94 0
+95 0
diff --git a/random files/96_star.png b/random files/96_star.png
new file mode 100644
index 0000000000000000000000000000000000000000..09920814dabde2b899fcbe1ab977939ca795db38
GIT binary patch
literal 128116
zcmeEug<F-|)-S0@h|=9iH;9ygbV#QtAzh-Blz>V|gLFtQx<M4A1nEW)loDxBS^=p$
z-o5wz?(_W*_dL%&XCGqmt~tjX<5zQqX=x}C;8NkDp`j6|D9h`hp<x7~p`m}rxddMk
z8J$^z{}FRnFml&*v2lND;cAU`*TVg=lZ(5P{X+&%YgadWmq$XpBD@0J40i7BkKM%i
z_?-Xe2Y6jvZTY4w_L|{Et~^#Yc0)rWv_SqrFOn{_M?*(LQ<0a|^UC=7##)ACb2_vV
zTfUP_qD}G=C)p2KECK$QH|*V8x4Q4dT)E`=&?1+ih+!&>iIejoCfN-Nb92UAj1&Kz
z)+VO6cps{I+@8&(dS}{tdfIL^EIw7s*C{4>F2isQ2Ma?sT9&z#{GWe?uk_pxLT5+5
z{9Gos<JzU{|9<AG97P~}3Hd28d<!&O<ogWQmiYhw5961YnFhjIoDQs3R!e%Hq`Fk^
z+Bw>5$%@h+yGEEK!nfFopBR$jU>R#De`53e8~Vd-n=~hGR5{?=4fKQX4Rh^stY=Zb
zi|*CP81U%A3j0&D=oIUv{dojyobA`nl$W|f+S72^Wn?_|8hO^<FXj4X`^1M+PmAv!
z=ZdGk*MXflYW`=ddWbx+g9J}x_^Wrv^axtbM#p2bQH&oe^3a>34)osNL4NYtb!1a}
z+`k+JRULdf!;cZ_-6QNW($jAbhfQU$Wh@EA#*i(j;bPF^=%Q~MBR>2}d#xm)8u=z0
zBfbpOg?*5MqR@#<l}>kt2SZ9#j~yzS0}7*6q8*I{2P?HpxKidJY0qJN=#&@7=O&Cq
z@d9Lhws0sZ;Fmdq<o$lkycAWX7v(kWgSX|ivq7w{iW8PncTGG3<2l+tB_$a4<~+w<
zwK<>sF2NPv<U7^B?6ME411<**<-&U))yC$&h9ii*&w5)@-=ZS3rQ&K!Jh$FWe^2=}
zZd|Mv3D?AsYF(Cp7R9R98BCSql6QP6Vt{h9VuJ-5a}DMrr)$Pm{=CmQ?Y}T;a<5{?
zI=QHV49DN`pFgfQ^!Z(uwnvdHF6^gqXRQ?>EEfNSP;6!OE^g?|;t!NxRFrLrErX-q
z9lbhO)z}FfOf80MMH#U7trL<Pkt4>i5PJ;BYGu3Dy%k(Fh&SFZ;<{t2&2X(pZK%Zr
z7fUQ?*v#^Z|L*h6oNXNcUB=ID%baT~a=AamST54p*qGhPurZ!DA#3(sRN+m&^xpE9
zJC#Mzs-=Oy-923EGT;33H^Lbt12I0jC>mJ_e=#|=f4j#$bgt?BH)8j)H13T|Ma9LR
z7YPPj!w;J~&6X{0M>w#KjB7>FYw60p=%i=W6Ra21MzI+b)E41dA#4BrP<9Q@cI)*I
z7<W>iF{Dg+72lc2N~0pG6K0w65YB!Vm#O-NjA%CuUb4i>32l4V#$i3Dk6W|s--n5H
zTV#c&>7vStbvF#?IvY06*r4o5FRF~JE-G1?kezsqZFdhv0gJEiAbJgU_C})n#L!W^
zQqZxjX4&UXwskU#A@w(%88kNJIR0$%I7SRwfn~e}%3(j5&Mf9pH}9!l)pf8}uG-cy
zDYmpp7$CDCL!Mhk`%`I#Ozfo%J@q)6lGo?_#rM_Mf3@|IPaw6gE0t)dFJ74U{N7uh
ze%$~2tW2<QvbaT#0-cpsqU$kpiazQ!r*a&Yck9a(`AC<!3qs5GKH<JmfE{H2G0%OC
zMb2|Qk2C&U%SMBiCFxuX+mgGarpnRT)zO~)enUwyBjdZIOA(D<Z0Zz96U+FdtWY?$
z|E>xXl)-oM8eRH{pWJ7o)5?U~yDKSrV|P>d%73H5zjXRGHQe()XK<9N7JQ?i|N65B
z8TN~Lf?XFV$U9#dn|>U-m5yueHXN$1&q-50+12seYHcUOOpGLycExyenff9ibNS3L
zsO3y#oL9k2l%6agA=}JSD!AmCbU@T{@AR-=M3j<=+DqKVW4(u;ieBQ>D!e7Sbt0|b
zyDe)h9+B!H1w-K5tAI?I9qAff0qj%LF?xM9vbOp>^m+;wL8429KQ+s7S-)1B$In<=
zD~v`D5SMZ;_Al$O*VF2XembGrTyWnF8(R&f53y_QTKA39K4jv2&QSQz`wl1)3|f_(
zGAdrYv!WV6k-(AvBlSGXui-7xN@;F-D7hwmzsG%>jjgkAaj%CHcWni@Dnn%$l&Rw|
z*{{V)MR2&jI0((mq|3>%UuCqh9@Vh%dHDIx19!4owd;v8vGGVVlljA4&~s&sUJ#T2
z_HAos;nE1tag`ursA_eR3FCo{O~z|DOUV2}PbF^Gy(uR9SI*2VtJ17>@9*zTt9PYx
zmq|SKKiQy$a>efxLW`t_Hn!w7&Jk3IgZ!-KcIfWz!TM*G=^CA<+qUDQ#Ob8s5gV>j
zg5izzz9cvaQS2Dkm%M7+1Qa}D&wFtG{{4#<6cRF4q@5=}J&v+dS_#u%c43#woPrt?
zF22v5a}Cp8Qd#FFlXWl^9DvXIuX1=NnWbK-TFYw4d!b>A(Rtu4aNL0{Obn^`%ypK-
z9Zte=r^WC1HOY%2-O*@q--rF=6BefZI!#l;ucafNDVZ6vseB8>8kwB<_|1qOPUS7a
zn+8)yx`mrLIA2k-c{16!L6@~+7qz>uWi}P1AB5J#DYLAtud`l3FMYW+H(XT9_NAi(
zGpfkYiDoVw0~@zUKGJx$B2@AxE{^q|=ijj^QMrkIp0osO<u<c+SQrY|=wxK0**=i#
z7DXI{mW)hJYW_gidzVY=@#j<HhYz0%?o#8D99azXyOV9MlYY!rXGAS|l}!Iu#?vl_
z#tpqvYx7#BWYNomP|jn0JT2M?PpeELYqcx(4$9CVj2fk?HM4Ga&d+DjN%^pQJdn<d
zo@5r0N7cyeU?Sk-6lbAW=d#vBCy6n~S&oB00eWdX@;362xAAhO!EJxiEP&&Qewg;;
zW*kkc8vJ55KGNE==NKiudvVue24tWF-nq>09q$uj$~=II871bzyCCB>(h4h8jchcH
zS<<qGUyGeZ25aEokR1}#yEwYJ#X*7M{B-_+l26^}<~l0maFiXEkK-9XW8mZAVUB;W
zQ+gv=os*NpNqF(X$1EnRw<56*<9P}4B0JLK0zt`iNK^8z5@5R!>G)<Ot*{>R!#m%v
z$umX7S*<|rFLUjYKK{K~c%Dw;bjk%Yt&2@YW(lOs^ul7FU&lEQ<qi^^(Dh!(DB~^w
z$beQ)OHkFxV7yM~Ou%8?fAz<}a}0NW#}rn_gwPu6{@k3LI4v9|u5aEY?M<bTWWP>1
z+cT2nRTULd;yY$%-+U=IDHT4&`?}~Ov!cg2ojXH<_FN_rhY+5Yc!Q)}_eQTuz*1jg
z#9XuQ;>L#R{rmR~_yiPOm-`e_1+9rlUs#3azA=-k_Vd9W`*i7*pnOU^GdFjnS~733
z<SCcjY^9QCsU8`QAm#!(i4~q6qiH%3bWI)ZfGw;zBZa0*V@L1lE#@mi94t>!A#dM`
zT)lcVL)-&bO|8GoR3rSf1bb@Ih_En1Q%^9tCc?8MiMvf6PwJ=m#KXn<UnxeOI>*~n
zP`1v_&WWJ`)<q}3dxn0|VPohcDCOJh#51wa)a_j5yKyGz7kOJ~E~pA6ePO4mSci#{
zg&#k1zg+rWc`xv5IcDFl>38TwX44G1_*lkA@3e9T1Qf^5e5?vpt)Da0USl+W{w;_1
zOl+B_;7BZJRj8EO8h6>|)2r*ssBkG9XtAtEotG;@TbPeJL)EXasjv{0m6z`x9H_?{
zYb(8Wyqx?d-1EiDmvG|7i?rp|EiY7!j3~(YO!IArGdZ(1ZO4y&tdfyGC3Kxm=J~yx
zXn1bUf+LZjcNQI&?!9&B{PSy?lHXjW#L^a(tgATR@+?)r@{*~k>A~itru`zPkW*!4
z<#4U-@T-UjIbB`i9#aL0j~_qkmFQierJW$hvi3YO3=uaYG)C2McC?i^9kO35!U)sT
z77dokW&&Wtj#Bu{(l1S6sjYv7OI7;ImoGG8u0bE3ZtFC8?XpaFFy)b6<r6K}QMV_}
zZGC8Cqd3>(E#`mf71E`hDC>K)V<GOo)&_r`-K5?r*SYWSta^P}f#CI@P+ReAnsk4*
z=PO_D26TP;6!fq&{K@w=^u*yrnhhVRf#jp2Ivry(!^`t3WSrDy3|cqa&3Lr%{NJ5t
z^e6FPn*aC|rc(b47YDVBYsM?-gU7zLJcD}SR$E`+H9ei4%x6}x>7^g~D_{cSl+t5#
zRxRrLcXNDvJ-+Kqco#MXzg=8=DwKE$V!Jq!y0ZH=bGG0l%GxmF%g83}OZ-{o*3QLJ
zOXB|c^(&>z_5~k~@gi}%-mpwdR~J_XH$6GuvZIrvt`sJGId}Z`pS97K_ZwUnHa1Fj
zs#7gSHa0ggSvawdDHSBLd+Kc!FDD#s&+nfeyFqQCYQ(I5&VC?=vK06HS+v)nlV{km
zm+-#kdilE;wBPUPzE;m#8Z2Ssxn5<$;_h)Rdv{b?<}>15RXx_FM^da89vqB4oGHc3
z&mVgxTbY<f|F+1{8Fic8_h3y{Ss6$4(M;?~$^iZ}Iq&@x`_BaymX`4w{#Pv4PAYMp
zrK?liGrSxjtvXU!ZCX&bw!gpMF+QF^E&9mZ&aP;zAx+r+&S<WJnAc9W>Z(eFT<FzZ
z=#)>Edajp@i|VIu#?fwxY{Zgt_fSHUjzs}f&z<P2<)ohXZ89$Sy>K_$_i#(QP=i)c
zBkiMhREVE`uDbjq9)hOsbS@sYownzg?i=G_Chs0;fAIX4m<%XVXd=5@xA5xS^qbbd
zzP)vgIX-seHkl<9?6u*%U8wQUs5r9kfLZt9Vpmiojo9nqENP@<5(oExeiiCV<{O66
zKR(%R)xW8E?^9RTLpwX=-q);R9vdV?y%)Y0g1W;(V!)5=8`=$dE<!hw$hnWst}~j;
zChdJVTrD#wr-DgjImvuwelel+IvF*ebz1Tse$`FqZ`q}#5w*2$X(u)cQ|E>PcHTY7
zCJ}uKZu`HMpB>;i*fauu-n%F<C@;}jB=ipoa9i$6Twa)mM&Wky$C-@JG^6L}<&wmh
z)r}feYwO%dRcns{JhIdCe^$*(F<_{y;3QjMsaT89I?LvMQ-T}e+|Kt2HdJI`dHLP#
zx#q78ZnkOV3kBZTH<W*~N7UheTdG4_W_-FegXVYkS7g?)A4gVJHVjurFL82tYbzRs
zVhzS4H|X<PXA~DtGp@B6{qWR<>ZacC`4}*}wFmnFt~`|ZfgE|Wd5tUBc>V!FSF;)V
zdj`%kj2DjM7W}1X2(GA#qAgrBXVk0iIT)Fk)O!B9=jZ2V_qE2l=H&lUvea!`|C@I4
zc+;Dko3(DM8o}Lz4w(G6Zlz?(U3~l_Q`NWEm?`BOl9fe2{m#YkTjS@BzC<o>c;Nlj
z;o&ild_^y>Tf7&)<=%~&eWGyJdq1035Q4=+aK%lW$_n5}{a@ML(}r3FJk{quz*}B$
zGYg%#*|6R|G%fyggt_c1MlIqXKT)EuOMq#sKV_<^8AC{aduO5Ja&T8du&L$4hk{MF
z6&j9rD93E_#IBhrp&mGoGoGIO{q0D`d%tIGG_P2%SSP8RS)}FJiQ?hbY*<Xp>RMW=
z@jbC~i4uC88gc-3R+M5n(zZ4}Vu{boL}p;F={gZ4>s$Dyl4a+52O2M<&yZeIJuDaP
z%`?2L<!qWP9u%-Tm>w$6WbyZ4-MBuajzYqd8yy|p%g0BjKt0v{t*<+sQ&~c8M456P
zP<O?kKx|`0jkV#_R8x(Yg24%brmg;GDI$(!Cx3qBxy-kO)mvLno!j!rc$XwtTLq&Z
zUF_Y`VMz<0wOKqTfBhd_vhQ1z3^=EemX^-Q$QWz=j=#6FAor!xY&b*AjoqNksIg1S
zBe*Irj~NcO74%BsM>DrZZz@bn*(8*y{__|V$m+5ktPVt*4uz9)J#=sghk7T%<mV#z
zrh`(=L7`Apm-%bu+QRl51<5#**(%k@&VP*;>xQiK;e0OCER+u;I^7?Z#-&X*PJ6mK
zoMk(ZA`nR_6e9cb5~{JXOvgB}XN+BMLB-J1wCekz!ar}jW#-;mu~Dn4rXiaeo=i<?
z^5<{g(%?YfuqQ}Pyi{ILa08B!?t7wJLQ;XoaY$inlp2)RaG&}f?^%0p&kX`{>rEG}
zyx(2a=wY7Q(B8iGrJTB;pn%(~<^IB=zO06p^tB>s*v0(t5|is^TW4a{rW*RWxO}!T
zbW$T@W9@^3Jfo||&Lag%cv>sy1NfNywfl{xO<vElvdofxpC_uKrlzK}N)31#Itzt#
z_qY0!`P|pXf}6beYix(<0N1b{R+lh+ScW5H2JAC7XuwHf{9g<rD6FVjR3cr-)YFuq
zsqfWc7@S<I9LIF}d(!NdgoKbqdr;7Dt+-QVVPSWkQVa=|<_fx=2hJ_7y~aOVvk^&2
z21&sIF*IT?Dl7Ry3F#Geb%h4cgvP|RMrV|Z_4=wTI^I7!xd}Zz+iUm7dYa)^tL`TA
zkK188Xt+c@167fcC9HTOb*cg=Uvv=>7GW62JVZIQ|1L39!8H<+gdJmp&|klQ|0cbP
z?&#=<S#pSG6D%41;e!N^Nqs&%Drc&w$d4aCQUtAW$;im+oTqONo+Xxhzmp)){0=qp
z_{kHC%`fHS<tBz4`<yR-ra(890)B<o^UXm1&jW`%)Y9d`q!6qV-aW(clGiO=KAeMx
z+KI`v&eQe1^&$PLFAd<t0<hURJ9*mBJw7rbV`5^me97Eq)uY*K_XYHb&$YIii36!*
z&^_30-MaNP$))x6*M>MY%}lGkrC!*Y5ol|up>*vU@u)itv5fwVFSuP4@+;275*0ju
zyE-^Jel9hvWGP>$8Oxsd{F(Xo?Mx_5F5yR8GY$Gw7(?Mr6=nDrib_gCZY$~yCN0)B
zkCr+@3D+k|$&-?jrlzO4JT$ChAMC%tZUvGzuwdnBbc5B0dR?G*F9yHjdpBlRoq7JZ
zw{m?IrW&w>nbHA6sY13yx8c40fg`KX^G4#GD%9@i#0{>F*6=#N_+>@T6BJ{E>6Es%
zw)@r$<%0(g?mu|2+^06+^xu2HZ=;E9e9J^-sht@7z%kxLP0nKRj;`FDM?80_KFwLL
z*0p}Ewp42TlFf-6n5n5-U%xyywjN31Go#a*K^ur?i%}(L8yMR3Io@N1H#_`#!_2t<
zopzpL@5CNYtt&H1hXeBx{`cN^wx9E@(rWmY-n|vxA79MlS)i?$k5`jwyD&H7|6V;X
zl6=l67sCJeyG&D4(^&IW{cIY(Rl*x42K^*_h4M@}X085!T9Vh+E<}IU_GJ$y^U*gp
zHm;9h=vm|3f>VT4aY2DiQc!?3&%Dh*3ghH?Y9h5*z_}mtornlL5yvljy?%X6ACLjW
z7lfW7*9&!<Yn3kzFK^KiLT~^e3L35(Y&HIyn3~>K$?-?GKt8Dge4}Whr#*-fk35CE
zf<iSkO8G3?MA>vY9vS`6Kp_dFJ@MSDD+;&08(FqI4UKBq;W){-A&&0ksvvCk&!0bQ
z>X^futR|6D6Rb?slVcTXAiw@=xVX5uH=0&rZ48C?M&jwpQg3`pN{W>oPhURpxx1X?
zmT86zt8`5&`{F(I0p33GyF6SrKK_;{)kM3o{3}C4Lq^8Ntlw^S<#KlJt=jx~ZvOD1
z@beA6e?_r@b-U~lvGw(J6c<*RDxtZ}h7`in-ByRHz4vVr2NQ|H>;3x6W_ogn3r10D
z<PFWQH`;{z!|P0lqxEuAZAjlX6~+I3E^~IBu8l_3(@}wCbJ$q366caNE-Ljq@QA3;
z(94R7igk{Y(QwMyJ)|gErA&ux#u&(kG6o7Y*AFWS$e~g-GH%Iwd3n8drX-l=av0h8
z_kkQJQwI7r_YMx^b#>#1-bj>MRV3ix;F!Z`97q+qOiO$0swu=JTBDch>NMX%OAz&Q
zR~cF{>obYBj2i<6D9V6r(~Zj*zuA0GO|Vp13+tHr(na|$U#0mTBYoaBHuf6Op!K@X
zYq^!>gEv;PvCfWHV?;W+yRwugduizOXaUzxc?xH%hGB3U*95^V@6q=zcJlf2Gu6rQ
z7UdpA9Rus1S+%mrK33dmu5fNF?!>+ejCe}u7|R~k3P*;ViGtpHR`~e%YxAwGGu_q(
zkCwu%)!4Nde1oI_MD=F{oU6#oW6e>oT75va{Utw|8-p>UahyI0w^1x~VPG&%?$tXL
zSFN%O#d(WO4yCH+9BHcmwRK`*R)S{5p<7V(uoIU~(kr&ukxM5ZhgRHOS%=`1tCzCQ
zl=<#0$u9}Cv=RF=PuQK+<gMA2RN!|2qY_h6avTbjTt$~#S@LLx{RZ}9<MX=`3iC&2
z1nFyo-pCo{zygm_+jefs)zjmBsJK|^0Ds;GjX|Id5RDTGO7j`*_%c9mP}Xo%$S*DJ
zhx0r7<x7Eee^PIVz(g2mFjauiqUogi0C5pHr%QSZLP@HQXNlHU)z`0pa)oudpN;mw
zacb^U5jr+5N!#S4sNAM<44Ju&7urIoWOM;ma8tbfuA8Z$!9Qm<O~mnrVgI|VUi?9c
zGpAhdcTcxXVR6E8au}hnXvPY^7|;alAVU!-_BvxKyhuG&(974Cn3gsQg|e=h%lqGQ
zwVK=%t%PU3<75Q_6Pf}pZZEje($XgJKIr@S@-o5?3o42qeDEaUxhH&=&s^2c-hMP+
zB_5wT(8oub&NG}Mu;dGRf_6*MRVhvt{iJ`uKm-|&pvY;da{s%fYiUob940t@fb%5t
zKDg!ilLGLsMvbQ8I3d=HgY5IlyBH{Dy#69V{IclsSDXfAJ+OcRLPB})C*i60_i7Ws
zKscK5Rj{*i&)t^CSR<YIn0xQaU#d;*w^l1F6y>JPX;dN({2m*6H$fBF@rFYoAS${#
zA8@e@%oRirF5NHtZjQHneNWt3XVTNtg`m|vw6q)@Q=R`+2t#^l=#5Fv<CYQ+w19$<
zbn{%kOS${DUA`md8Iz=RbVFZjZNJvp>xOhELQl1`8B9~CG;QV=6jYt00JrCH<B@y=
z-U<Cig*Q1p{V;ST;}$=$n>TNA8&xq3UflJWAOx9Bo1Q$1;d4)K`74JnWxczL-3^C7
z2^4Qm|1X^%f2lBT6y#hKFf}8WUCpP-@dsM<PR2if{d(f={%LraZ^120zI|h&v;lU>
z5nib7cUuhq4iqiX+YntWH#fK3+}!t2ZH<%JP@YvJ>NdfF=pb1XA1$|x?KetFNsW$-
zC_g<Cm7?3yFE!YOm%=BdTh<%=kdi_Hu($(3504+41GB_!73L`M2g~clk;t+ZcS&N~
z*NfslceDvHZek*{jE852*J-IkvBplXT21pw`l$7jwjjpB(;Le(Kmduz$;m?qsJnh|
zPQqchl&$eb9H0I+4Zw)Me}1Wj5vA@w1Nxi7sbBK_=TG(hl|j<mEihTu*4DmnZmQ)e
zM!{TDfN6<~-a&{tGBUy+HkXIRF{Y==WaSeBQfu|Lj)aPxCfWJK#6+Sm599T$v0n@R
z`zv?v^uL1*@0YT5MQk;ADAnfqqS}=QR#q%9G;T031UCB~j-k|&%S>O(#9}R=59BP3
z8_0wIlL7|Ep;xRO`xo}x;Ac%vc@_9vs_9~rSKv~Q1jGwndkKafG(eWo`UbbvTo^}n
z_MZi<d3G+!7bGPmVGrVyL0hnR_%Js?QpN)xy}P>`VVU^&{;#qxGA8xcChpd?wrCof
z8p_KD-I-{$h#Q4{9*zz51tkVe^}69uMRV2X4nXY!A|lH`nKN!b6QAwM5?^M)^VbZz
z%pb~x*MHyZz@RuJyWmoap3ZR9Kt-TdQs(>0glhP2O(11LsJ|7k+Ugm%;@~02N)7o+
z^p3BSjZaKi1Gb8!l}L(XRvOEe#Z0Wk_OA=6ef!q>;`|I$aixXD!NEb}8mlW$o;<--
z2|tZ&X}PTwLzn1#0ox$$f11K)*1|#&D9A}Z+^su|QcvN3e&yx`N5<sx`g)i=Qykan
z2QCKT93i~?;f`5l(Ik(}FBZ18Y=-@!-fPbJ-TUvd9`8KE(BZJk)>3>RvRz@;s`0_|
zR}Ty#0Lw6lNIoC+zv?z%&>{)bOZCBi;iLdw7?0u6p1z7J54hYae%um17tf8K{dVZ8
z`00k-Q;vFm=(VrDdq-YLNf)R9RMRJD9>gUAmX?;qX05lOnSO_+-D_Z9!W7q}5`Tk)
zQ|}eCQZ&2YPgom%A)!S$0OOTr(hv4srt71C5nU%HmV;#?c2?W+GvqezfmW->i|!6u
zm$=8qr~kCE_El&xc|N~4Xr%pV)YR01yPfBn#2Q?eRcrTrqcmUXn7a10e)za3w+ZL8
zW#)nOl0{n}I!z<7%BTVJtM~%vjB|A#lgl<_Y#JHapt0yxn!W)6N4v&Kr6GnOBGTZ!
zh}CD#&ewNIdz|ERRR1X4N6|!ba|=xfX>lxqDp~i)YcF}x9~k90=eBj4q4^6XdE-xA
zYTz!v+BdgEMW@q<i;I_;yo;`Po(7)q0tDF|xqH??$c0_zXbcSv;Sk~#&BdELI}fG^
zSiXAoN^4E_@<@?3Ga$N`m6a}y1Tv{4>Y#4wm*}bN`{CJ9FxZd8$G+0!{GEY?jjdgz
z#n_j?5x=$%0x^0%*R}u?6NZ_Y84WG1?yP1i-BuNo$GYH?YMrRo*$+=^pPhKtyUa%`
zgxa`LOO74gVxdaoSWzs&)X>ntrxj0tCSB`$_-JoA-V9xql5TpSPbG;_GO_h?J0`nU
z+N61nwMZFtg84|cECOp`gDqWLvK}=MT3`RqzjX2gqa>AVZ|id*;oRIDa8EXEy9$6b
z_nW-pbk9Xo0#4)lq^`up#U=1QNb8IshdFn_?nejQ2`PwYCx1BnxZ7S{CM>%5mh;2a
zH%nSx=)w3`^nEm7o%(_H66rf*MpB93($mvJapdi!Y))3%{+y}~3Joo!h}LfmHQ{7^
z%6k{({a#K^PC!^VA4>myLj$W<2{C>cqUN2bW#;Os{ycdsE?o2}UqjI$)qp8cHC5Dw
zuGVJo;o3+JY?emO$(x$3=6LQ4^GJmW{Fr#MuU~aJl*9Sauw{O{8;K0D&e!4KGAL{7
z>I%7WH?7KXl2<jEx4Z;Z820PAd7^=&3H7FB=@Qmq0_<ltR41^QRA6+he&<WQ#2ZiP
z<>CxFWaPLWOloOs-kGd;aD{*XSUeZ*8_dA+avo6ZoBYqjANafw5D*{{-IDM9V;QF^
zEV%5qobzb5k%F3<ZTE|a-ALfKw~mWTOZht~gXyA5YHAV0Y#RCRV}6qbkS^`3@`I;h
zLHP9keH!@gD(uxvleduZbt`2W)tS}xkN4A`I8E2d=FD}ZsyI1u!%?(?-aqh0B6<CD
zAs0(RGh`L)N67;f9ypc?3ulhn${TobViz+*k|EI5<T}*;4fT}3m>5DvMn*WdS+%zM
ztIyT&vV1G`?(P0`yGT^+(ujV|s#fE*`w))D&hD<t(do$IHi?tSYop?aUDxtk8ykR`
z+;8>~d0@%|1CxoF`3f$s&XG~zAbH1#vuLyt_I{6y$HYu^bv05*D(F3+PrvurB<t!5
zr`CbV-wyC>Vq+c-Lx%5;;(F`udoK>49Sa{zH7TiVcYkzdNIbo2Yr9GkC4Cey_(4+>
zqdH46{7GI&Y56WWDXBuC#+%2kt`Dc{ok56^V_f9p7EJqkdC9Suov-#PR;hZSUP0!L
z$W2q{bC(y9%=m3iK_%Ac3A5ovAQ9jH;28zN^k|c}TM~~+!8l#<-nHK%Nm`^4qM<EO
zLwaE$0NE@Z9Qs~eXMPnHrjl@yI7()vra5E#G|=y_52&7nARnwd5KO**Vp;e0?Pu1@
z@wX;<_J>4y=x+P<fQ|N=A`nW0`R2`}t|)3Q$%3-KqHq1a0RrQ6e!JqzaW=0hBZCG-
z`=j;ZyklU1d+-cOetoW40)*kaOuqTN^78T{WyV57nNs}=9id=%1h!ii39=b~WjB$M
zHNFs)?E+m_gsn8*IZ=Col$yF9MvrlmmjJ*$YgiM&`&#RcccZ_P)7x!7HeKGQp>qtE
zO})dJrPKwFUu^P@*Ro(}rK-+9NnbRELf{3EgT13&%V4<%cmkAF?`vRBJ<lS=4c&Zw
ze8$R6MB6($h)KJ+P3j{-0odDJR0`g=FsZY99ujg1<O=mC^#5c}7Sy8u&7P3l=H=uJ
z2UM>6{;|dB>FJo0F$Ey!;$jXUD$EQFGWL5yeFzW$*(C{3Q#6g(o!LeYQaWadWtP(Y
zi@UK;z@fdX9THnAsHMoo#KXfw#&a(yIhh<<6JlDm$t<@P-{=-)oqIoSK}QK>+X{N=
z`w-=0y26<T(p?tNbcv~`(kiaCHZ+KVwWQy}RW_6vpPkL%?%@&dZoPYWSO}vEmpTBd
z@dxm~;*fxeuN`OGtrvSgI`KT=*ca@wC8|;iTH(N;vIL)rQ{Y^XO19zg0>+ISHvpoB
zMv(Ir^dDjV{xfwRE`BkOMX5v)=+FaL0unUK?RoD4f7GCT7$5JP19`jRe#0HWCjvKb
zc6D|tEW0^4S`TST)~+0<ns%HsY6knTOEhc8&F~Qu6T<{fsNk=H=LS<gNg`Bh)@>Hx
zrvN{{GEvCk;i0DCc~)|=VcNocp^G$|w}9SFo$nB9z@@DP3RCa&6~VT}_e6eej01gI
zSXt?U0md&ZtiGxmPeinPWg7Ei3g2!{(yu4qBr*#7|Kim>y`{-By$D|fQJbIfda;?W
zrl#h-Iy>3&dvAC4_aPo2J?q%VE7rSl9zbkGV}Vve+3H*443n_IYnMsN=b#OQO^{%U
z>*VCHXZ<J#h}5WiFIIY;BrBA%nUr44WCmrKbUZuWQ^*lhS62sR^0fq^)~pm8_;TYV
z`dp*72q+R37JhIXu(h>iWMrfTUK`1wwi4kXpalwXcXpV7w%^;H+iwM&9z6k}xjo?G
zObKiup_&1#1WMT_j~{2lsB-@~6}Q+OqYLt$d!^bNsruI3t$z;7rEID=-Pg_@kU4a9
zZ66(t0}XHl=t%J2M$S9`=(M*c<q@4WVf)!uvrgloW(ZSekpJ1=T`2XdG`F%xXpZ-m
z^8j4CQU`AQ6g&R&iyEpzO$Y7A_BLU5)#V+)=toCK`Cm^AXC-HLcXv<E4(AadzP6TP
zqdf*=ac%a4sPnfv3z&U<MkQlR?C?V%@$rLJjkM$RbZT$F4I|&iCoI!xHckVG*)PLF
zU-^2Mj3G~%g$Q^6Vl+Up=E7sy*Egv0kxi%;9o+r$BZkO+yU1$1H(u+lgFcn$ql_*7
zDu5qp-hmtLExp%?i0(K!In`V;Umrtp7*=H5S?tw4!`oP0fLfun9m)X9FEv*oqM&iR
zP%~?7yqK6(HKA={LS*(?PJp8E^@K#W?Xh<*W(bvqL1*0PZr^yo8K6KbRo|NftNYv)
z-2Ajy-FRo}n@&9wrH1z7Mb}|sb`A|iA9*d$u|OcE_~356+2R1XsJ^Hsf}^^lX%{EB
zI_EY3D_<cbT!nsHyjA#U^@Qu=M`_c!*FtDfQBkBxt52RjEd+N5j;3t0<P5Y_OQ2V<
zXyz7iJ`+^~x)fw&UFT;f9D3}Fqz8SG*=3Svv6hF@Keo0qD>Otoavsr5CukjBq|1nb
z6GhN-rMJFV|NHvJhAY^#Adywo*5(0jX?k{IVDDzgV;oqZAI>q4#~#(4uQSSRuZ?<?
z8D!e*10?Wc#e)wdRILDh?d<IGDK8nk+doT$UZR@Bom%80!pj>S7>E|Uf3ZYx(WiBp
z@DLP)>YAEd&tKo5v#<@Gtq#5EhX)0piw#z2ct<>uRyIx*MdBzFu1Mybc=JY4R`*TT
z@w1B?T36fA^f3J=txOa+ci>2*h`HT><$|6W2<?>k+O_Puw?N9Gl3ur3+Rr?l%et@R
z<g^khFg_R$E}j~20g|hj<e>M!PeW+7Wcv6#ybR;W_R)OHT|K>o_TvDs%F*mYARzEE
z)E7MEpx|Keal`BDJxflurr!|)yIdJa?Jx^CLnU}{O1xl-Q+}nCdw>%z?(L*2H+$iN
zvCPo&Oyv7hwfaG2>`buYU|;gUX-Y{;`?0oGl(5CP9I;_uxa8mbtkltM%#r-%B?29v
zDRG|h(SNXVBA4NN-@}SK`#tfOi=tOggnISSPEJnpa&lxr6(ywtY4c29lb=;@dEv`=
zEQtKo!csF}7j?j~h2PbIrlfaBaP?{zG#$WH0?+=sqsoLnC}@p;v`i;MS`>0}Yy?_O
zYRUyUcMc8?Zu$P<mJ7kRfRF+{1%Ke$T4aC{_=G7|$4VjH=w90&ULG380ELbO+19c<
zdT{*a(~UJ10F;=B%Q%H+2QELrc+E^nl_&Hbl4g_u?t+4XSkf<S&CO-bPmh=BHUX*O
z2E(GZca%fKv_<Wg-l6yI4{Z3eIUs-HQwp+7JezO!Rf0+=HmYU<)K2-xgq`_+9veCE
zkamX0)`iCw!G~WO1ds?U@*`w;07eiKy?)}{AwZ^YJoWZw!&_kze>*z|WuR{#b1U8&
z-<*049cXcTI|ghpuq`aRA}J|NvzUs~*$^A`;OAFj5EFtWb78(KFva~_!ii6|=cIlt
zF2;+Xkq%z$@9o{;OdNabXc!!=8yxDZq4ZL3+M~0(Tgbc(4PXu;-;`W>0I1Z!z(8J6
zvBqWoc5vj6x}HbZ6ZV2#wI#O*#%?XQB=m1qCz5-dwO&aG<wvVcnP>fKpidP7=L`uj
z!9*Jab0_GuD01X~qJP-R`#0F8AN`vjIuIPQ-1+{o%(ylLb{jz@(0Rg}o26jd4(<G1
zg2r>D=F4MP$M};JCWUY<fP%sVGO#VmEf`0@`hi+;WLy;59Ua;xtS@9b8Aq8a76;IC
z8CER8&<4W6Jov>Kobbg@VZ=Y@n$uMiIXSGOV$Yb^VH^QMCvI}SbT6&%*=gTmwSG|a
zC54GSIF@u^kUaDcwKCCnr1(;z9|7kb!YB$*`+#wKA1^3C_!welD@(05M%0^mm8J14
zs|pxvn;YiNWif|dLK&B-+4f#V(n+O(Y*J(X5hFJ*FBN=H-2!!(Dg>1G(wnS2whUc`
z?Z<*ZKjNghl(dXq5F(z*cUpwTYf{gR2!2ODp#v+Ubb|5QL|x_{|2?n|?r4?XuMMRx
ze#rMs+V{PZiJpqbJcukiAlwN&`5_OAX6i=EqeqXpO`B5SFBdda=2|7=gzIrypZ)!f
zAgQS-BVHf+hyI4kZ<}7$N!9NW0i1;9VL$u+>U`#$eD0Eq(br5>*}vB>nUn2HuuR*8
zgjjrhfepRc7G@%Nkr@EZcJ`M0@rQNaTA@2hP<@x^eZesO1p%Ft%ETaov-Z@BKq9&7
zmtE|SK?i6$1L>kM(AeYn%x<3_uhJ_<Q3aQlI)+T%AT&-qNhE^(1ss6;Hbe*{NYMG9
zN1+<C8sG4-n4$mN-qwU8SFD{EGP9U3dV0bIN7-n$@s?TU4BFW0f<_eRi)CeHMaH!^
zz+=<&m<OII<h5fC@2MN`HrJt8kDBMJY%n=PzyuI-7-zq9l|~r=c}Pe|>Q;4PD1c#z
zRv-rYI<$Zj+dqmXT#Fd9(s@prD26i}O#X=8t={@n<L7K~$`sQ6lDBW)hHjwM>i-Pz
zdTE{5{_>Z0$oOsi8}(~wtp!>p1YHVX%bm_}(sl5q0KL3xFCQI~Gg$IR1;a$7m-b)!
z{_&+Ny`_!KrPu;;E!tsG6z+Fe7>@DT_SsolH@AKF;D7+@voUXy_cd?wEYqQ|G{3%R
zcum5AT3*ly1Dd!GhXw4mUeM^mPnvyxhr|1`G&gU9?vZG4uq(7dC%gOSPXP#9N5{w2
z0T=!t8iYm<T?BOZ^{Hs|L-&M~1*mZ$Ft@b9D*(*ej$p?UZIxf=(DxxoCc+@WHf^JT
zZ3+jd!SfdtV8A@@{S_bv+`3$k<1GQ*Afg$(zhrp!Q2@T+Z}b-H7V6!8*XT_I5t48?
zFLx}yL-@(U+?>JC%-lm9fRY^~8xwjk*%MV8+}CvqAisvNw6l{#A;&M=4hbBQ&PtdE
zm~UQrP<PMe5RmRYzUa%53pIN8h!#9+&4~}kV6r0WxVk!iW@hFRbmNXyh*eR^B1jE%
z<T{6maFC%~H^1;e3Mu7hOJ9$Q2H*AT*CQzeFo1jkaeD>q0=5!SvPS=oFT<JV&Anto
zu;y463Q=rMN(o-maC`d+N~Kio=eBBNq9YI-Sorm85U5wGusspTZ|46|FIGntJdl`y
zLIZuY0H4okt|_&sh#gVCU@1s=FKHz}Bj-qx7Of@3BBtikUrSS71Sx%_t)(<)?9mW}
z&Q2lcgGdR3o;HF5gM(t;d-?ZI&iz`<TDxD!pFcH*wD>(Lq7`@Ho}FXh7nk9NL=PH-
zE}11I@8>wSKyO9`1)w`QI~Ri-0}Z<^#!p^URP?6Hocc>u*3VLpAe#b%`A22z`9qkC
z#aj{<?O42~O+8So9A+(kjjQT-##qb6xOlQ8QQ0%C&_KDkVBB_srIUK=$-}f~LDpiu
zAQ?}s(}xcudF#7nS)9l7_qfm5Wm~&^DEo3E;LU?J0zPvdsJsxrq!4k?3ul_6Y-nZQ
zN0yh!-r$1<78<CxtH732MGAyti4K2U<-1=f@bD9k%}_>h!p`f+qRQ&=dZ~&r7N;xM
ztfs{$sCOXG0v4Dwt6Gv3(8=+NHy+2VfTr=OZ$<*}Tv%HA1Qmbf>Q%roLST(5E$@fI
z4UIvrSjZh^7c;7y9g@&rrb=7$59nN+{WH_*FEHq!;SFU>03Ff>ni>ea1{Icnetwk$
zybaz4Hhev46S>;a$oGfkj*k4+zB2^(AqBw2ivQNK`|97r?cweidJZix&A&pB6ilkU
zy=65REv%Eb%1z#_fW;5=z{*a_u;Tv5o*o=qTU+Qyp?aJsg$OcW`;S3&ud5q790GMr
z6TnUbZ2j}+&x@&kgS2T4^U!Ik>N!XOg@<}eUBJ@dT7&)`6U6M1gtLiQd$vw-0{k68
zU=w{wJQ2Vq2&jaW4`;GkyY`lT*|v0c<&~pk5pt%n48Zf}*V<5U`*t9r2gkG%hV2Mg
z0GnP4TYNRY`c7eXN8q5BUMW$2G>k%p9lrR8G;A=qv{0&~E5lipB-++mS-4HmUmyxb
zy0<bIQC%&-%gf7Ys^13)8CZ{U*6n8$w;nTqI+cGX7}x0DJx+ygejbwINA>KLo%?s0
zDU79}-^WxgZ7gu|L08m$FOt#Z9Vo2}7TDSE+eFpQ_|K>lHGli<w>CwOZd$soHulPC
zX<dUj`IRpE)1HgZlatBQN4_V2cmM$Cs2)vz`I3aFI)$3_Xkc)MfW8F=n(DjV%T+dm
zRLEE2<8@2A=3y%-#9Ub*2Qf^tNH{J>2gK|t;G=km1B}2g1JX}oTqGRJiq9YduPqla
z|H0NQHS~xVFJ2hEbx54)qGwl<lFhyixnQblE{25S%)U*jh9bvbSji{pqAn@Y0k^>i
zL_ysknjFA>u7vz^u1UH1QR_2oYaUUBCdD)@%}V9869tH7xGpJs{+#;Q6US^^{ZOGq
zWut@zbfeqP{#HSQhVMLo^M-bGbTmUcz!b$;y%g(BM8<uu{o|SGQI@#;?><uWH9$0g
z2CRBw8KK@ov$L~>r@eb4z$pi2{(WoqgKLa&vyTTiH@8u%fAh>f&27JwtF+=fNTx7}
zC;f2?F`MQ>|Eea<*XB2H5y5UW7aP=FTR=AJQYe->=p+^dg6engazKxV7;KVbB#>u*
zrzw8OgYdo^O`!p4uWM>51*XnJYik9-halW47#f0+m*q}wfpzK9Ln|w2G0a8{uGTP@
zAo~JjR;O5pRU_;68yih?>)ddha7f0*t2W*u)R0OD`18{k8P-5Yr|Rs9VS5a}Q6+o?
zXm<?i%wspVj**er<^JT)AmE{*Dsf>dyFmh9<W6F5Jyen<{4>++OD-fNbcv8I68v1H
zXd0EL=)sM^{eY1#Ed>EahIDQYXn~T?{_1s>s?mYK1d@+R`b}q~XzT0ifpP<O>Mb=)
zolZAiQ85yo48f?TPdVLwALIy`23HWoj{pAV0)?fst4q;--*au`In+7F5_W<T;f~?K
zf&b}{oLm42e(%t``*TJQO>ZlEQ7jL=Ne2YXDeQUg^d9;t%&ZF2<`S**EJ!8U*w|1C
zo_`NLtb`MJurYy$20a2PIT*x^QLUhmm|I(S(g&P=Y!AlMo#DH2BLqqn67A1JLzN1s
z0?_uwDH)<7^c@6@?zytgw+7e(1rT=p5(#J$8GCO9&u{ym_P}^Af+Q#mI;XES!4Mzf
zoItXMoY<*=)+g}w`!SHDG)xL!vljL0hn;rwEmDv)`HpDZmHM<?J1j(30Izlo562i*
znrZ{+iKdsXXv8jfQD1-4_s`Fd0|Swut5rW<xC4Jq8K{W&#rd;>%0lyxFCgRecx{9c
z3{><Y9TYC{4Rv$KTdJoChhbj6ilAB4Kr-ZAgH1Y8)6;<f(FR9arJ^5|R-5H3Uk9-;
z*-olY7)|=w-%n5r#H4{xT13Re%#c<u+u4S5eaq*79aPmj5buEH;<xO=2k@bS_@Gi-
zFbA$&x$+UZoTT?2%ZC^Mz>q(mdH>`kFca&kSp5VD*$Di~T4=i6Xi%&pRNR{=>2vU^
z;BI;iyp@%qH>G<I$rT_|ZVBOBz4CjBKu*B^mV*c~jL|-=Pf9x{2tHyFvO<rHj0Dkq
zVI)TmI=i`*RZwCgX$-w|lJA?1GK(poKUkXT02QihYjumH%WHb#*$9D@3p<Rz0xD1q
z#dSwc&K}l1OS-g0dcP8}AfSH<dj2%J?RSKBYWG<m*2C}FGy9qM0$?1l@bYSK>>Hby
z>>sS_4rNL6O`fl;tf1kpOOSyv14YT|g=T%~fCg_O9kkYl?z<5%jxfVa+Kz#Cqfm*;
zip(P5lPbY|hLF+#2x=DtHh;m`0Eq)8CZ;hG2aPDe#5F#@9g?_>U(2uV*nTN9?f_(n
z98Uu3o9c&t>kF_Y&?{i@{mDN2i94eg{l~_^l@(?JB<PZ%RGyrldKYMBRoo1j0H|7Q
zSV;#hxclGKjDYPB4eF06+39W2Y3}w$TA75&-$ACJ_x=qyl88Ku*n3xqZ|wZ}Wzx{4
zWlJCj(K6^_LC_sNJw4$sn{Msv+yKXp2GT1)oDp1aP=2oyh9YF0BF5xi+cU-~8`atn
zz+ig#t<D~egk38ThVR0{f-GcG-#=LlX)mAALHfO3k(TV%E;L6qfG?j(FP%@Iao>N>
z4_HGD2ai(%i-v|KQl3dAKlJJP7%M&)Kwp}56^{-98G)CX0Z9i0@4zH5sxn7M=AUZf
z!4<4lz~j#`FOO9`kbr|3|HB`SU?jbCCeRy8XXiI_y2|A6C@E0*3+>pht3y#>9FxDB
zD&c;y2a#X!&?0~)AdxM=HV|+%GA@i~1hg#&%T!%gm#>v`=YESHCG?E9yQ-WK|0|s$
zYcG}N#+i%5LY=c=H4TZKT1fdIdO8^LNF*FMaq;beJ50An9Z-9XPfo*uuc8hjC7=Aj
z0_3>VpG*k<fuc^R67M|PS-^z;zXXqsq?iyJ9NrN?rT84&!2=|u(iKA=14?DU`7s-S
zGK9|pye~1V90Io(=gJjEvzEwr*C4rj1I)62yg$X$R1g3`+G>N%TFT4=7gw3(wfwBo
z%*;$xO^s@-9i_lSEC5a_hK+Krh+_`z0wB@Lpka7f4VdyqA3UAYx|I|ab-?{KsJPz?
z-0gGoRdAI}Tl{)~3_xJR{PbuSX?c(~?JNIyBm{t|_55!H&<A1)3dqs-I$pl*y%&Ux
zrb<&ONE)RTw=SF<Zo>jmL+?@2(}V0zUEA!eR1THNS65a@c7E#X3kSES#{bL*_NTPQ
zO*aSzvALsTKfDUu0z-T(_g~-iSsxhIgkw2>@~y;)Qdgv|F1iZR?Z~82ObM$(fCX}U
zj5UtZ<wl7{JrXk%vKjaeNDr>F!~ho8Ex#uMC?M|PQJq6C1`>2#H<hu!&&`U8OW?`Q
zaI34UTY_>=;MB*})zt;>Sg6@oIp<FBE&tP7P`!)5crAgXA*TWs+1AI)2MjY|a3JAN
z?85*8iO~prymyag5w#MLb*y@cPy^OrYQst`JtDAu^hm?pJp0bvy=TwPtmN8c?ob$g
zW&CdDi`MFUh+Kf^eRIKvci{;mX4Vnhf<+Kn1~R3n2?z-2r2Plr+2C%JYGb5yAP7`$
zAiP4~NXp$Mr=`6M@QNMsJ)l|k=`C)9f&js=Yow%|u<F$i>Vh2(%lAqkl?{Wg3#BgX
z{4D`E*AsxsZ~4z#{LlIzf>I2F1X77`K4YP&eTE8}?>fSZi0tx-kS;gK?EHGcp&1|m
zb5(unbB|rdS=N}tvN7B-AuhP1y)#b$(G|4Tlk{F-nyELPso?E&0=NKXF;b#m%5oB{
zp!gZCN1G*1r96oDYJV45;Its=G}}lDYmJIL`Mqff+I?H2$L0~xHDeftxpNt*A3<=i
z|58Rtf7{O-Bz@$NkLD@Wf|;z|><zvtEi*GSfau`_4qY?~VY_Sab_?OlPT%UnVq>o%
zm~5dTGAfG0xF-MpSsb)0)nHuGoxQzW7>TY?t#+eKa4#>m=zSOHY0wPZU_Ca*i#y=u
zK<v~@qqBq%1@NPQJDIa##B6r6jUr%GEXGKWRjfcjg9pGQZs>;qBwGgrGYuXVq}S&#
zqFP#7K*z}6d`e40qmF1&V12<E?cHKdRE0_;482PG1A5#zocGW9GKggdugd`&2s9dY
zJRKTe|L<09_b3p|4}MK2<B{|7gX{rWuf+Atzh(&SfO|mH)YLHEkP{8oj>fy{$_ltu
zIjA*x{X_Jn1F{E7V{qs5v#f@<&@nvn&dyF7APv9cJqvq#6#x@35o~hL;L@PBPsihv
zijezKzAq3d!N#TwI{2&b@V=e*&}VGmcFp_u@4rKDhjG0uhyzL>k7?5_a1TKnNG9bn
zFn4ho20;L>A{aDws}ug-m{<hK3^6Srt%Hty7p^b?6;yknWJC#OqT9imHr!o!v(f?#
zWNmYk%Zg%sb8{a~QBXUX@*HMS8BN>2m!9_J>DnOCp$#({<c_qJU5HFT1`opC!|s&}
zV28t<KF*IPY>vk^wzkQ<i`%dR5USM%K#bg^`QZ;jrwyzu_qVE-%`qbUW<TV>okL8z
z<lp3A=Vsok?-nro@e=Y1(6Uh{GyygMCXnDglEZ)oR0T{H%bV3(i{%9p<A>Uiv$JCd
zr^jL_L(KTmDK-|CIVjq2M*!~RUILa0^zVlLBA>*{K>6+!3%JN{X1PfE#UnBzc~9hK
zW^v~8vR&=w9e+<HFEmn?!j@D}AmJJtQoqp8KY|PoD}F=yaa)Y^7JNQ}kmRIQzrz)k
zDbTJF75C!&BnC+nz|MiE7`GtyU5Pvtl!WVabkXtg#19(XRq7s0(9Km<@ed3PfH{~8
zmt7I&1gDVSek?!oO$r8tpg}E?fn5@V>?2WF5THFl$SQ)Cg-F9N8{$5ch_G6fFTiz>
zI0x<LkwCkkulKxloLr*10K|;Up|-ZRpzw*wN;BPD`7kWaACPJ?212LfPH}d6$`4^N
zI878(R2b6oIg3AjK+4i6ts99nLF3$q!gnVRgyc^~PmeMH?+|&W-pBp#0FofVR16FZ
z9VZhns1fmd1i1^ZP)+%d3+gcA;ey5Vv=9JM)dcpBU<x6I7DyDhF^Oc5kdLGmjfVd>
z3fBOjadX^%Up2O>9R%wDs51n-h_?<C4*?(pcP@Az;2Eu6TtoSSfukL>2u<vG5VB$;
zAg>_|;e#g+;;2Ci*&IypD;A>qb`%Z{4to&LxdyWhx(D2AVg<ORxwNjr2d~NmZW4f_
zQPBFq8hjNMH7HEz0>v)&?5{9*8}C1S5Q4<&4b98}SP>z=M|-a!t_xyeH}n(WUzp~A
zoAoO0r-Ht!3)J$4Mn=klUoV`)(Ryc-hSKL?>oowLn(+ziwMXxxn-L_;7W6=S`SRuH
z__+GoV@U0Q{hlmwF$~j`v65Tr=<i>!Azng&hKh=c^3ky;;!9yvB}BF&12`a>c{#-S
zdtw*iw!^(c*{^@_V&;$!t$_P<y0g-~yHB1VH*qM1Y_#g^w1J*L9|Nl%wxkF^CQuUO
z8pqFXZ@JW>T0w+EqNlI~w*cHAVMHLB98>{cr36XIC<lLHepID(`|{lUt(dfjJVl`E
zKOg%s#}kNR+p0DBNS)Id%Vo%`7){d)hAwh(1mdGPa80J{e#2|vbtUQ@Rq+4de1`)n
z{=TxJ2wv4KAowA}2>pR&tp#uoR~a<&ZZFzbpW>6#ow3Vk{l=_-r9*xT8VFnmPzkw8
zi)2rTBC7|oft?^11rR|M3J+`;PzkW%9U}L1glva;5<eu9fm{gKFBOIts-Y5M1MqPv
zkIvd)I3nP_=o$+g4*+qRtc>5mvMkXneyufex;Dx@*Yb=jnY#x#{Vm9qhkVL{n8aO>
zjS&wR&MpL=v4w<cgTA<j@2m_`gTxgBW*@XuHP0+yGh=f$BI1J~OcNu03FO~_Z;e11
z!=)@loaca63;1Z@am=h4+&Z&`BrJ?}Ey#jEUU3NSMb?(3Fo9_b(^>~SYiN4|fK$|f
zO9A$~JNkYeE}cQ@G}Uun2OB;yB~0H{bM>DOPf1wSK1Hse)4URm&j$dHCLtjKadjDJ
zmmo?qi8zd#gKm+)lcB^)6#}&caoG%b&ybl%cq|NgHbFr_xmEBq5#j#gk+`B&;?2~p
zg)?N<{P}Z3QZfT5@fcjYIX^#f0e+D`a*NUe@RJ|tOgR+!kgox%K?hbEw6c$YbU<D<
z30a9<c4>J3KEJ^QGU;&dw`}IcNLpH20@RAWfL$tjQDj-N8CM|RgGMX{!^x;fgNwgM
zM-b6XkG)ud;4aAEaPwAs$_^$ZKAmI=I5H5sf{5{7<ySE=g}+j~{VH>4D$^zT+JJ&|
z0A+$zih~!2&i)dRHcT_UJ}N7?B9{S&dKYni?8jIjb+gpBphpTSN&ygZcwq`WJUozt
zLZM+|<B_TFrpz-6l0y0qR8jV~$wH^MTK~D1ndrKw6(9;94{-U%Ad5Am<Dx(=fhhrV
zKOJN#b0;UDW48ZYw%_@G7abh)uY`7|5m`-B{d>_t%V-s1Bryncgu7J`qL3L(6WQI{
z>l^WgiQl<+PPnb5IDh(iaY2Ni|2wQD!nZ+0{S5e`@#%JSOpIp87bZUF^fn9a!H9$o
z_y--ipwK?wl;?hzxjk1Tb+JlBPGt#_6FD%pVdCf82SL6q_yl7UKF(qKss@>2lJ};d
zL(iQty0-K4bFitgA3T^9j`4W<v>R>$!x`a{tOP9p2n+&>5k`PW2XKW3+=RG_Bp0Md
zK*0iYVD0>^Uh_c4=*luKUEv=L8Zt7)|4a~YG?1!radByAF;SR$=R)tXF}?sx4P(C+
z4!-)f1@|HhB;+<Q(5~#fybe&<o_KgDK(c0H(LcFoT;oD3@g~XRhJ@dA8c64{XP8r8
z%7b17x0tfvoHN8JS5;MI!^UG>zSzm&H0jV{isJ`k76}I3yjcK(BWOlk53ZbV{8)fv
z#S5ue2DqvEbbHRi!9f+qLxbOOjm~5e5dgbI7z|cDpHc@78ard34YNyqNpw3_=df=k
zNfuoex<6|V;2#2;0Or-)%pl$eB2{0Z=H6iZYqIadbTSMb_X1t!nixSFP{D)NaRKxw
z^xeCsjUBB}Y%73puFSPglo}GlfNySYZnvBT=?3_s5QzH!m@l`%qWRfGA7jJ2Or^-t
zjCL6tdlaH{?d|QaqN8n~-9e}9pEXvX1CJB|iU1K1SqYSIB(n#S9}Z|W%W&Q0V_RDw
z@a!5$aU$ie%Bq!ok|el;d^F6k(Z3%JW81W|`Sia9CFz)%p$P~GK<-uolP-dr*s!3>
zuos-EmC){fLi_=gFYw0{pj4l@x#_YG6l&0!0$xXMo&c7JRYf7k0Ip2K4a5BL->lvH
zhXM&}BFU9JHx^yR65#5=PK2m%p2`wj(*%^*uaEx__!DTNU=PJQ{#^R@k<}K>Mwn3R
zkB;to3>8-EQQLB8C63Q|=HIAu_5CSmQN+~L=@mPb11GjtRtY0t_?vm=tzPp1>O@So
zug_rMQydKkER`G4+rMUsj*OeZ+X3V)AR@vFccGy%*MNZreE>Cn`vcq#$cD2I{Qe~}
zkk;3W-G_4}p_fG=K?>-+z{R@22!%WbFEsww5*Rrehvkv~rXi`{z~@BO24iW!hXk|<
z_k_9Jpqz+)t;~XG<q}V~kb?+U=MW(e>T?NVSE^=}aB&VQZl>i~IwUI*H5e$~lA!p+
zXvcKE3h`As$sVw=5zgo1;{%o)r*^-9HM1HMq2KS0TdJGSv*uV_fj1(7VGxqW;Pbe4
zyXh0SjddW=1fO~X%Ec-Gf-70Qf6+TG;2zvVv=Di}hZD!-3A8O?bRXpG0Uc+iW3oSL
z&Y0li%3r62V_pb?4j@&<g$Ag_T`1|D^T90XtfM0@#9-Pnf`?~eXU8!#oU{_bgq>bT
z5>R(P<Q3=MdzEDtC?zFjKT$#ovjp<-ix8%R)Ig%atLtz}1%y@pn>TMjyaJN2iNFMG
zeR9Cjv4*H11qB5^xbKMk2ty4#{<zY+x%eJUE~sQAvsY|j@NZ_1Gm{lm!#2Gh6_*>}
zrBz8?E7Q|91O*OoS2qB*<JGJHqI=}!4?f%+mAhx0z^?rQM$p3g`u}0;O`v*S->-l3
zJf<keRGP_9rc5b?N}&NcM9Dm7DpICU##9oSMFS#ZiAbdZQRX3<q>xHfq@LGx&Ut>n
z=fBqfS?jl+^F4?9eBST-zV3bPy{~<zQWpF5>vtzLRmXnW@z`~4dcAu~;ek}**x3W=
z_au6bB@gjTzWrQJg&4S_Z|~y^nH~=>LAJ)V@BgOW(-$wa_zQkHQRmu~W+?pi!l+<u
z<hUZ2?$g5E$Ic1NE^6;}z`c%EbOCK6D~ob8uxMfRn&PKA5P_RHM*!rO(Ie0+C;{|B
zO?{vB*RnR7Fz;2%QX2oF=jZ>T7ctWfbj?j{zOJ(5{1tb2^93(1bQSKGjb8Qpx9zDh
ztwVSB?JF)K{;=R0WHV{<We~~v=B=j_U;LiDuIfx;8=K;O6V{k0Zw%kpA$z?3=wT6%
zUJM9r6p(m(!}{bsU3YHUR38{*Z*G*$blGyoMnrR^e)A2M?0<Z`)#{(6*OtEPymswc
zXlrXeK4&fq(c;3=&gJ`+%=0N*XCYx-w{L3Lpuvtk*1szcgmgTvZ*nKzV(~bQ@b`mk
z%lFJxufaIg9I^D^hd+l2A3<=C=FxtBh(zdAzW2&HY1R^AVBeRKwr8yi5QrDAefKbZ
zZ<^Pn-@&|pgEckk<yaGNQ7|w%9J1EpuQ~)EIO^@3H_K@w0EtIShfNHq7&C@>?Yr^~
zUS3qC(Uve0JW3k6YBq|iZ!gpFy*BydLDk@aJQ$Cj;iWg@gI%tzu>;G$y0(O$_4YV`
zbk(=)BbeP&?AsmJhVe{FP4$76R3EoSM8&GAy1EOOw`{-8PrVTv>stE3xHCpRP$A60
zRhz9BFYEifrN`rMK)$}Qs}xTLPn@xU{tx@lY4RZ>+0)hj4iju?6?@JMuIcr?b|6DZ
zbPFqg6x(A*04%iO^VrT0L9vIgzsFDU5A+Z(9JBhfX>jbqo=q(1d#8u$%<vYp6^3^g
zMYVEvc2*v|v<q(K`za|qr1ZnXdEZYR=aNs?@$%KHNt7=DS|aN#24gvW)WeCN42QkF
zu6Sbe(vceT4r-c}$GbQ3!M37X^Jtl-LwHwvqB^9I!$14@_}u0Er;$t3Xm?JVzpX(L
zK;j16o5Lu&Rh6pl+b}#132hb(tDC#K)6%7nI23V(ZJF+P>1j%udO3@}19gCd-u7J-
zo8wb)ahg(-NB@oro42|{O8}|W$$Rvjw4Zy9dbJO_Q2d^!oP$dX+PWUL1SE(p^&2+P
z9`K0g1vYZV$RD8h_n_3Dz)*dcly)L4Lu}}OO}eu5&$f^e>j%wn_e*WBsA!6;@$$xs
zp8UCw2n|#QlN0^*6;uRnbK2WQPHw$^{d$<@d$cMDo~LboHJ``n824%ZA{(`1<t;Ys
zAC2MlURsCvo(c8Fd%yqj&~(O?Q=)lsHZc62gNs<o7(6-$eL(ae75Yf5v+aR7M~Azc
zz_2*PxN7u&uV2`Dib~r|T&b5<<c$&0TzDFpg1EWHYOV3;$y$Cv)Gf|TTxZW8Kc1+K
zKBjj^&CK&kZ}#dDlWwC5){hNUTs$(s=<n4Nzl7Df*WnVLPt^qt7P5O<T=%%itRAh$
zY#zV)I>&}_km+o2ykA|Z5*z8ouXM8AZr{sRY3PAY<OjgWF<U4t2K=r8jlB1*B`Q9<
z2F(08`s<^6;=s|=)C8z(XFD*5bE4vioqkOpzwpx1<+#l(_-@V1ewcLbes;h6fPv~$
zYfijuIm+5tDo@|*9oH4jcf9bpOXmEeBklI|*KAvSrmIF|i(6~Ibz|X>xv(1pcRv&j
z#s~vq9|8Di!c%xh!Tp>X^xW2FQgM~eiE~Yh_Nk5*IRf_cBvk@Jd>g(7g})+is7AIi
z&zGJqb`^x+(_1O}3sl{QuZ>?=zxHk0seWDLacN-wyYy?bbM;}wP1PPfq!FTp28jw%
zYST4;uzLK4-`imIAb~{@O<hXwFpQ(=URIXD-HDIRb@~tys=u_$Ehs<$Pycll^HED5
z2rl@tAf&U(?p+=`{mWk+H}Jpa4s+Fw?{vDfbEev`v1edjeNmSg4nEGH9(3{+_Tc5k
zE}hgnN0c>4PO>a|F{HZVDZ{Q#_0DV}TTgfWM2pj9rcI9BzjLP^LuE9H$M#*kp!?K*
zm@b}5@e4sU>w8o!hZUVbv-Juv7~3i&Amx~m5s4VNxD`CyYDa09Y2(3a`wem*7qZTU
z3l~;>e!iOqx&Nw9k4<BCmmlZ3VNy5^<X&*?AMY5{8b{1o!;eH;8Lh8ZKr&j|FyC!w
zOcW5H6|uUaYcD|XMy5hclz|uTxM`@r4BYsG5H$}QR3SOLBJ&_xcJSV2kk@#s%83~2
zfDKEp&-5D<=BB(wtJtll0^6(j&FECQzQ6A02)}n~wg?P(4*Si0piB>C1>5FE4+&1!
z7(ToUD6`3$C8L>73#dK!>>rnFfA5=C1&ZVZG+`dr?&t9UivgvMMu!=+6j6h-%@Y5%
zL^sgr*hl0vbm;!me>=WyfqPV-v8+Aiksd<;sUP`J76YI2)neR#=vSvsowDP~M6;4q
zkW28ewS9PQv<f?^tU~g{#CKn9u9m_4AUgYm%LAvg_JxU>?ljAx+0;Rf>rCzxf9TqH
z$f{56#JU1MiiAksfiYhwzj%mR9?hVT?;PDvP&U=yU~*4{RB?cmVvm_$i!5(E<kX26
zQCDFZdh6+h+edapZV=~@#fz!M9aYSCe{nt-&)hhK-$axgkxwawC{40MVMAFOrH$H-
z*tj9+^?aS`>u3Hk*e(g(Q#}mqG=NTYqs9C23lH?N07Doq|4<K{ct1P)sOSOok`+IG
z1jD!j(<Y^b6qnEP-`+w=_d{-O0&88{_DriILsy?f@3dI5^T6O`j_VFS9c4DN`5^_n
z1MBr6?vO0^L`L>P)^q_aynOvSZS}dK8h$LD@2o?+n;YgYT$qV7Hm2364I4I$qzC_C
z9;C7nuoX0{(YZF+lY%QV9z4L9wR6=~56WFvHZ~%k0mP>I8)!%65$gtUw7O8(Qumxl
z>-1sQ){pW!DRyv^N)X8fRb_c9x@wbNq>OX*sH;7qAJ=f;gJ8^6cQG1qmfCV+0%gs4
zaYBwlz6&OzdTXs;j4AcyYCCJC8@mj<w$_evo^3dc#4p2?bA$bP+WJ_&#L@-mDS{uP
ztvSglhPZf;Zox&{^jw>^gUl8@K3*T%ybJz3X(ksh9*-wVLD${Df<#8UiokYS-ZqmW
z(!VjV)kjbrR1BI|pyA4o7oqJ3?6p0s?ur!y8+K;zCNfeElPYY=vp=4Jn>mTw(!A%e
z_LzuAptWI#?p#~J3daA}nxe*NnS;ovV|MMkS#TJ1&9d;QtqEqIt1mdqX=6aGA0tmo
z+$DKozZy?{@;HP)$4M%~ZLEcrY+s=$&z;^K=dwMe*(jtub|$i{?w1)AeZ$Nj@#i(5
zL{Vvg>MG(`1pZ(yoME!#I%XEvs}-M_y(JY+Kf0z786l^F{8Ii{wsxwQW;{1O7^_I}
zi>SR@wlwVP7<UJ^Hs4Sye<H4-!*oR*I%(DYbv$<X%gilwN7%2YqauJeataH_?(RIW
z3WV<l*xi;q`Bg*f28~Z0Gl*U$tZYEHN87u<PlusU8Msgpe}D|Pz`w$yf3%aQTFy*O
z=*M7zV;pjg8Z|mS)N!HnW5{tF4yT9i9qKlAPIf#m^a(6Hi|@_t4a0EN4jDSs1_O)f
z8xYnf-umm;uNn3_e*XNC;;GI1-mw^ecie>eef0JB<H+o{>eEE5v<$;{M!d@?o%VEu
zz5>Jim`Jo|-X2aFOn&<|q}SQDb7GwOv@8=}H0Bj?mX6t_e3zHXu$0OEc2RKz-lip7
zxSD!C^h9a(g8#9tt1LM&)$2>hj(+tD)FZRUqk3CW8HTu(_F%MUHbf#`Zoz#l9;w5$
zsY?&#h27htcZyx75BpK_K3<>{;QkaiSJpl3&FS^i=d5=l2&VHm!vT?fc{pNJzB2#G
zW}Hg8OWLR?_%v$Tv?;FN6qx-5=womqmi99zyxX60{``5O4`xK1&nbR>-f~le#+j`e
z3VNXuY3Veoj`?fc!Y0RgvXx)o+~57zU?xcNU^dRpxY-e1E9UAK$jCb{FU?jNvV4}p
zJ7bUtJZ`gAtrFAIEid$MxghCe*BjjfUJjn}<ndc@F;iLj;2WO*#RXZK-li9AN6+Zl
zlWjJKasYjh_u<1GR8aSdPwj`T`6BcG4*Lx{0ikK^6injqx+I`hvdF~wLBK&cegC!>
z|C^~xrgOW1C4<9H@2qrNnN#iG!Kt3^sLAocsKvf4B?ZI*e9uC!Fk3<VLn(`q8IFUG
ze|(toH0SP_-m6xvk_Rtnm{grv*gk6L$cGpj>f|d0o><(LhF`U&bm4)FBahIMFuka%
zt8b<Huf)O?`miUaxh*`UOl);=w{EfdMd#G%Y*&21)RDHY^MLvL7AjA*v}|c>n}vs;
z)}NHSV<`=%-dLVv+GN&3)eq->?n%CXfA*q9mh5K&Eo80%n5{1-SMs0QKf`dbpJHC|
z94^<?pA@ox=A;+DGQpIS*`+T-h^X4_*Uas-p;dYM)ooWM<~OdQc^QxM?Bm13w$zNJ
z5Q`TkuhTiP$FDsJWAuxrY|9}YRgi!WREh7T)7C8iICrv(1$`{ZT&(cGiKnYd-VKuo
zGFBHvUQ%YJ&4qSRY5{#CwlF+yUAt)8)k`CP#SS%hoUXBvnaJnKzufi?zDKHIO0{i0
zUc-)|aZ)&>)k21JBW8xZ$v4xiF+P9p9O{Ir+HCE}?u#QN0E=(u3*|D)**SsADBc+$
zzU>X?slnZ{%@26ZGRp7EXW8rH)0_|c5i|z;-_7^Cy!e%VXnF>lC7SW^p=(QaK^K#s
zLqj;iY>Rp5vm-^?o+7miFYpgyx{uoW?Y-@{3BMzS>$`Ks<c`DFu0JX&@@Y`$x>kIB
zJ&>Lb>yrPQHv<8=c*HkzJ~nQl-X@QeRF;)K>@!s(vr8`sDPdHh=v=?N?BB7%AmeGL
z4`4m=*V2G42N~VQylJ8E=#h3Yt;^1x_tMi_G64y6!K@{^&2SPEFshzbwy>Y$QVdha
z9K#UfGhf&h1Z3!|CJv*AUFGd&eCc-De<95b8Z?Vu@-XMp8Moa7a!RM#ZeIL%-mugL
zZ}v1XDc0yZ?sP;)li$0W`&1=Dx{@8OR<R^^vay1voAH0v<>2x>PA;)7vCvn*At1@8
z)8AVW@t`y1g#OjVdm}66YSriG&T~lb3ZW=U85*cqCxI)Ihm4&+Wt8@R)^6?Ir^8i^
zEk`GW>}k?`@Dl*w6XGOjsg|!=bs8)u_?a$5v^dzfGXZUy8TIV&V+8V4lO|2@T_3|(
zH5(>yemuj{SEhw~EIZwbN&OaoKF++gPI6}@Y9v3!FSSI@x!RiV6KISAA{5hL{v<;U
z2CjjpauAwo0XSL~23|5u9{Uyd4xX8N&sJ%jcg5<}@c4fD-yy}YGwIkzC`zb;7z99N
z^xmn@e&kUB#ZAb$j;LQ@`UZ1{m;?kKh`(}W9Jmm6cLytswheN9fYaYZPaxkIR(@!G
zsPlfiI<4rhR*{PLZd)#iiNk-Rh>XH!GV@W;SiX9-{kUIa+LIf5D*abLug8JjOpY)?
zVP0NM(Was{g)8W(uHFbJ!P6cub8fneCq3WL3m+tQAY7e^6k^E?;t9)?7t4QMN_tRf
zTwJB^;}n;pL1wEjhE3i~PMe*c&aRjT1p8Rzet$9bXxyI%*I&9_xjG>1_~E|ktyF_c
z&mc>Kl1cG7YE)O_|EZ&`TldJ=fuR+%(#I1Y(6ntg88*ga8brsYzbt#Wu3cD<O64?<
zJ3JYm_C3dZfCylPV!ItE57Miy77}y6K>3^3TvtcP$qUQK2$P&zjJj^7!*ZUrZ^(3)
zTS>=IH+2Ws>5SZS@bRcVum7HeE7-fu667oKpG{KuNcmFKvDpe_m8{d;A+#%;>6-b|
ziNtDyeY`=#h71|BfmOn9dD^39(=1#s5$b)%lX6c{x|X`NM4EI^oVay3JY)u&N0<`2
zq_XzUdKSQw7cU51(R#Aw7gWo?o*XmI30A4q>T>{jS*x5yNl=~(m}!pw?F|cC<mt8N
zt()(dyZe0-!?S)jsDTcIO!2{rj(9m3BZ-BV`7f2a-x)<$zivxQ4qD-MPN&J7+W0(k
zVrAIs_wL@^gf^eW59bYssE!_dtMYvHkwxum`zdQ_X<-I)tE(MBPa$uY190w*-A5v3
zDmN-(>N?)gDE>+H{bIj($6?Q|y!F|8uiyKzA<5S!Ja$aCz^3^sc6BeFu_mx)MP73M
zC9el~KR<A2d#CV#Z{Hkk`cD`TnY`w#abUDg>n%V>;Djj3@VnxlKy#JRe8LhIzrEoH
z%@JDX;xD<QU~h51OLqsNl+dWBhjhsyIMB<ZI^s&4l}_3F__BwKG(Wap6gq9k{w~t#
zvkk>#qrKJ{KMS?fMo(FYI!-G!7BYLxVExa<GQ-WMozEaG=yML>R;SxBrR*m+ZVVAK
z2lgIB<z^tVvk;(Y=VxC17|rA!L%Nu962$IC0{NBmm@b7a6fX*0wB7w*9G9^CxfJ^@
zLzZu(pr5_*4NmS8->zP)M*77^ue#o95t#X>fd>{uNO((L3`4!g`Oq!8Mm2+65Ra0>
z%8#eAytX9#*{qaPn1XqA!c?-F@KdXjKS(<)T}4d6hJ54flz=&*aUn*zo7hjZUngJ-
znzuh?R6Egns^O`l=KmOe8h6zti{7wV{PFD-?}FDPEnnw;bxCiJR)Q3G37Ru*4GEOT
zD<}>--TXz1WRwc?%8|!PCXSvzN{h*UuYA;1Y=KnmON2y=##F2f6>I&t-*kE?JdEUy
z_|h@-LyH%KNRP?qTEWhUHHwKRc2gt9b*jG?cDVZcwNkq@y9ot8&ny~DPwl>9C+acM
z(*Cb~{1ljqF@Kye-u&r0kg3emrKF@N-Xs6_$Vp1&aJSNpn4~WgU_;ONh~=>0^%Who
zSr^Xg@C#;2*^`*rA$4g*w~(jlJq<i*7E&k)%4As|I<ZuR;|7}%3d0!od50yJuV0_X
zurs-;bO1qi_kDKn4&{;XzjKR<f)~c;@R|)U;p6`kKQ{+SD35o+g@K{&U%!6kd_KiO
z|ME7*R(0>KlhV8)gRH<(ErjBqg_DQZ?TfwbGKPqJC$sM+I5`_ZiMQy~=K)PEPKs8X
zv{PQi?W?$LuN$wKJ+>`jCC~?20iARI1P&ajs<QNaQzO@i`~TjP60hbv%C()<Li@?#
zYo6vE?i5Vm5@*8Q$B)}luHU|Umo@(N6b+uQ_=bmjRPBQ}HJFp8D5g+GNR*0?9fnpT
z<ZsfyS$}>;6Z!}l1w|pp3$P*~Elt;cMgmBQdHcPH8Js+`8F)D7c&qc+v18dVCTOu8
z?4#xeVCq>(fOBnCURyDsGZ2OeBbUw6{I|A-PmR~NefM@*UUFSL0U<4HdW=3j>%_2^
zW=Eedr($~4RQbW0pC0lE!U(AfL-8RBUZ_JOwVnnVgNOl=nQ@vpY(kQ=h)&%nsH~E?
zI}S4D_*N_AePescnNEEUT~L#hl+=Iz;~oTCy}Y%4t#9%%$_p+m5_=SVOgEE<A!Xxw
zSta<LFSm_e20beA#fvF(l8=oa83~1|h$oD0^&%Sjv}e6fMQ_$_{b9q!?tteHkjsJ$
zp;Q@Ww_93sckl1X4>KEA|12N5=%aP0uctej%R?EXxaianb1}=opAJFiS(WXWnR8S~
zG@0Tsvmj&-If2R%9v1^Sqwx936d~^n%j|IsA$XxT0d45|E<ANtIw4S-NF;Uz1jAT-
z)ANxf*a2yeZ?FdnK&OcC%gJbvgf@z_&45|-5I`LlxEYx|Y0|p0OiHq++<p`*@mdOn
z-k6q^A?7s>Biq{^?zg?_9>HtR&pOi@59PR*T0P6hbROrk_fK+=!QtjFNA3l|WRe>}
z8@o9^K0d(-%k3hGUSZYxzgz0!VhTZR6S&3C-ZxEmlUGU8kOOUIB`61L*WRXsEXlsL
zljkf^Js#CINc_|_u`A-ixkR^Y`Ud)CJH#pV!i9q}e2;Mayi^e^0O8}GOl3}dHUllq
z^L`X%ZHLeg9X56`Uyn7R(6Qq-5^Xt>U6pQXTad;GadC$p4bYogP~eTH!DQ3aEhbNN
zv+D0^I-pziCHX+_Zr*3xJ$aHE5_gUDa2XuA)!GKTr85%Q+na0mats^5akeU~)EK*_
zI5H#)QKL;ygKmpC3Qj^QiJSU_@o#KyPqMNkRvB?-QjxxPxee|tMA{*1OS<q9#queK
zJ%}!J{dg?)(7`c4L`F}95rhf~U0C{)e}Xn8L!&(`{1Egh&XFYMdqAho^X8r1w_Sgr
zZ$~{5QFO?R$LAuIPhdV-sqrVy{GA<Uu|oI#%AS4lyP%xR1~iL3YR8UdvLsMq6%~pG
z(Fszlbrv>|nFKJFfqlb%P{E)ieV_W;pPPmpYV#qZ=1bRypS}&$_<ECrk6FIa9H6pe
zfByW*)aK?0`>ZzZBIR;4kk0+c)LVhoavUxl1?2#5@ANb)T>@OFW_)20y&P|?)42H_
zJgG3vwm}U#-H>6!&b~5JH^kN=BB7XEiRj1yI{HNH3N)j3;9)(@RGG|)^YGeZj0LrE
zcLCq|!*;*7=i2YzadW=*-#v{x@7;8v$%{u_POxWm`!Ds<;5df>$-1`WZ`g~ASFeU5
z#D@%b-%nglKOkdhL1n1vfA8{m=i@sx_v@!TxS$DrJD1ufULF?nO4?14LfB&x7*PDd
zuf4FkB+zv02GdZw5$;Q$2wOJVfs+21h<xDX=_48ModhW@zVVY~6KQhUZpu6d_Lron
zNV+N18bt$F)P{&yH{XdTO`D7D0Ywsfut+~p>w1%xy{l*z729gi+{5=2WV11nKm#u4
zxZoqcNhws9OJg5fljoh6iWzuavCOKjEtwwCB>MJkPm^X<^V%MdQ=O&4Js0|SuPA1|
zT-M@!?}8_{ah2q83c#m2FIzTY`t*?Ldhdl!XC)tGF*7_cFQJg}0dc`2$^f;37B)Ul
z@l4p-{M^j=qm*DLrY634Vy-1GM#hS8{t1fA&K^0#y8|!z46hp_iI&}wGgB=4XaL+H
z_0HhJeh^~l4^AonaJOOYpURowJ4tGQggs3W2TnyJV_EBUG3ldM(D8o3qtK*n#vgU{
z`fci7xSkFRX3H4UIrPh(J$sm6z$t1%ZxYz&X-Jn>p;6Hvnlfmyb7E7g(-o8FtM1kc
zI@4t3&}Szn^!#(Bvd)JN3*q?@wO)pmK-6<M#iWy+^uu{>Iez>>OW*FGI?0d<0}Gf^
zG)Cw6Vd^b~hKVMFp5}i0sZ+Bf+@(I8q_dEa89>9TRRjKKR%5UFP|qTb-o0CK`qH5!
z(|=39K?;D*$S(PTgI(zuad2X}+U|638}Wi;5nXg9pHmit1(cZUb^V)^1^Q2&j(vC|
zO)!oLP2zlFlE@gKa9({rrjr0vYM$E%@>Y7d^y*7za&~=P&Z=wgM~`}`b-HXt_~gv=
zYiBj)wEycbOS}WnQ=KWh(t|>N!LIMJd-0us9iiF~H_Cqeu*!EhgrLq27vw6EVceMT
z0C5oWs4ii&74qeaCmi>c#jp0$XUe1vt3R{%8jC$t32X@o2oe%-#kaLM?-95{$X`7A
z?4}|HC27yC=UWlcJWNc7c>HDfs_su^cRq|NrlyVMEl+k_eg1sr0T)pbxDA8WL-_cA
zJ@rQTbAr;hoNEznVPd{-Bw>>N&HsO94P0yfKeGmr>UG9B7vI+nvUKz=b@@8$%+G$7
z+86hAg712LZHXj&NfaqRdLCP!@jD+tQQp_DM~ZTC*lHrp39U$6>{J9-RExPN5kA9R
zd?%ip+Mk)NAxIu5{kWSqvMoa0mZHpkpoZCjbUD!4w`(_w?hR{V!qcaUprufczD!Sw
zunGZ%F?rM3vs(OO%O{6_E-JIM$n1u+oWT7ggzkR$@L?1N7S5jupKOmz?)Ez4={W~~
z2)?t*O^~n0{QdW^XJXB9jP5qd%;b(fZnV^~t=5kjG-qne6w?{Q5-QjB-T!0HLa*PW
zZg-keu+XxAYjgO49FQ%pdi+I6;+fw~O49HvE6mBcD~9Zgvy3Ac@O^AC{mT6IB=wDZ
zQq>Xy6%zojTdTs!dT&`JtiRj@0}XwU$$L*vPm95|M@Me(4GetN_Ey%X`O=)?x0Cfo
zITLvbuKyDAYqAnBBpw{@?z*|Gsl$tJGul(v60iX%th<}R^elrrnk~xa29`A~elx{k
z-*8etO#kPOyg$u8hyEDrw<NywlOB<p(Uy$^C${kZ(|O9B^>HeDuk9-QGN~_<W%pQC
zVvFKfWmF_^!m<3dPo{+1cyoZ1F>o!cA)i6?ZHX;IwrR0Dv{j3ay;ErapuJAeu*u8_
zeC+9IPyIT2{rS;}WD;=!vs<5ld!SxIzTB4S9^RpxV^Yy*<fL2u&pRw##mTr^6*jO3
zjM+ZKSqzOP2jLvN)hhb9-3Pvkb2mVzlDiFLbe;!h%jA<Z0l1Hvw>e<cUwj`p<l3vK
z1iSoAr%$xgq=+WR&vivGVRpHxp5FOY-Wzka*PlvoDD}5()RD34R<{j}8lt(ta`lRn
z%}*?9+W*GVy92!UqWcD;5P{`Q)ch_|$YQ45j){rM`SRrfhnPb1CGTTb@8lz7QKaq6
zqI0$n;7hH92v%kHFN^-o|JWvE3?^v0tot(lt6}q{sK}h3c!S*o26g82DoXonybo3-
zeOi28gG_<bnaY7C)_uP1Wrnq|KqsJye0p=eFDcwEd@-GEM=r;{U+-GeC0B1o>;Pz-
z9M(Mje*dh|ap5QSYzQPj(d16B>6%Pao70i0!b#z_;!u_&9S5Cc<RK{R;47JY-Nji0
zOqfl{qhG_sI2sV7g3t#)J>_{(sugqWVhjRQ%FrjWC-WEwO3JK{4o}4=AUBABJ6w3<
zI-W*+v6D1@iTCg4@vJ~*DuWg)OA(+=v~W*v+osJKS`AKtcAY!>B43ysjm?Kxbxcr3
z5k5&1C}UF!8Ww`OF~8`(7=nvP5E6^8AJGr$Z@A0iE^pjt$BuD>?k@xphzAS2MrkmH
zn-d!j!wSvakCn@fGq4flD4(W};8r(%dK>2Lg6A9kn};enpPA$5Ni-ukLn1tYiE<GT
zq?E0mqT8<u9a2_gPE^!&k6PT*sJ+^DVeQz&;gf?2y4gje%8_)R7qtJ~eUeWw<?uWq
zLJ9!MEi4a+`X^%-oYJwYiV~QWAiKbR{;sDooXbfpn?Y6pYBMsLcnH7|0^m4v%CWse
zY=Hk~sI{-SQWdk_TLO`Xnnp&fPl{5_rlZP=_wvI0{jK+p@=(*#ooyMsi7I#Z{2HM)
z&M2Yb!R9W5t<>G`d6wS$3u3mr9OnH0((yvHo)m44`pwaZI@~knW8gUTgTcX<*q3x9
z39MgHZe;3)`xk_R;mDeEWbPqC@Z|EL6^uaBV)g?avplE<S~Kz(Rq(xYXOxIl_<;CN
zg|&b3y*kNAHt&qt+QG&Ts;QgYlM_hsqR9yKvu!A60k49f#`{}+@6Lo|rO7$LJ7b11
zfKMlyG3>%U_%<}-gKrfEvj`J2Gxd}HZ|<OV*)%R3n@Shp9mx(qTf!lT9jKJ!nj&9a
zQPjce&;ax3C??mFlam*8_L7NnhV*3Z$h0pWL7XoE5oM6P(kE&&KnpW#b>%j&tgI+Y
zOCViDSs@A+2iw6xOQ!jH%S5QSOL;0%M){mdgK8z=nA2&+nl;IYR1hW%tPf*^n=^1W
zS}?;gt_+w<dq5>uhz*lbDzGnj#pm+n%O=U)M`c&dj~HoWedYduk&YuwOTKmY|MGp2
zvE4LPFZZhQf|dY<D@)%U;?>i7cM<c!&z~Pzwu~T6(c5jbahb(u?bF@9=QnaaUH@RP
z{dGh04&gK};|~woP3wh>yPdHJ4k~flq3m=2$Do*dv0}U7aj-{tqY3ojg1`bJpCu-H
z4xG37sEb9?fQ{U2MIlMXF~l3D%SfUibXfOL*96^BtU-)y<xuG8D`hCtdA9%2v2x!N
zz){Kr|0pP&Cn8)T{U@*3{O1s}uz%g(ALu@~)385E8IH$8C1n!f6+NdV-Ju3f4q?Q=
zRApb^43>Hdxl`asjP*c#%2a`;iHVIU?uz&B==c0GPv>C8){XR55^WlWdxO7DBJ7lg
zrL26RmQadM8=kp**#LCt%$p#gk8s7T0l)tM>G$zjaa-)y_E<1`_C5CC^0jLxJSzo%
z_N0`|{x=M&ug?oRt~Y=aVo^7}!*j?QpzWmrp~&~2jpu;vBPuit!FHO`7mA0>bFhho
zHK6~aG>%8(#omj>JA|cW3yfeCJ_DSuSaSIfn-Sq~3m#%==;nPs(`fO<ob1ezjp`K2
z+eR<h{Y||kxm79eJ`XXZ)-bx_!qOt=xHH9v`c3p%2l$gA!-k2o)BB{3!zOH(=lWj$
znA$x5V7uj$?cdE^W2v*cC-dj3rU<dS_v~rI^PfjzHTyqxwXOe*o2RZP?AYP!J+qtk
zui%OO_3|j?(#Z(9f}$&%04&qEh4#p0V0o6J3$85*=)%o^=4Ip$IxTS&h{1dH=gCq|
z!0)(7nhUMWu2UHr#gR38!2+KP7y7_0${>uZih&LyfdtYs<TZy5O@e&zuCOMBlYtjn
zu%|tfxHL2e3H6CSQACaEfRP2&G|&aRg@#vcjby)2NTijOq!&ml;G0Ly!KbJEyRZX7
z`9J!g%X88@(oy258NYwHH3lb<09)00;#gs6OHc&7>^KfW$qYplwk}gfIpYSl1c7k|
z^Q;pJMdPNULAJm(bx?6{koRG@({#@9{mL#<Ur4WpUaEJI_%y<_PVUR;*sYs2KhhAj
zj35LTcv*`@i>jDbBKYVPq?fqnA!@;QjQmLcFe|o@BbF_tsdz_w;VQ=%S8qz642m+O
zq{3xZfZvl-FF9KnZqIi^#WvZ2DDqn_2d&7pH}k%t>*MR2`zbYR{LdHTT)if18dchN
zbP0K%U9ZM4X!L<dKZUeM1u4E~%8SR7gOkwu8|@SnnyT@&4~1LTsQ6AF*7|f}&q?dL
zSzCy_#2k){%wtH}%J3UufvW7S7JFCIv_O<4%9Po^8FA)oLa+t&C&mmqN12Z)r0DC{
zLyaqY_pJ7*Cqq8M7519Ei{dK=3>u5W7cQ}ONz%?|Day5#)L&xt6TpJiNC5~M;R~Op
zO5O=z1#L||b@T@G1=xWj>;U!OccM6`SbcM;WmMHNhGF45AHmlZTqrq;t5>|IFnE$r
z!Fny_>O2i)OZ`~Jxmk%!_)S<HCoDB45(yK**@0a?nUTMwKV*2AB1Ld{momTGvT6qQ
z70F{|&Ai07?%QN9nljS9_&pJLRZ~6xy-+Ba_b1cJ2nzgH|H4S~57dfQU52!ymy)m?
zF7h(De>RbGjY!y8AUkGNF-N7MAQFo<SPB%Jo)DpQ1pOf@-~&RJKPtoeBcc6NT$$&?
zlGxvPkGWFKA%i2dx?4Nt(np2g3YxIZPFHRekfH~KcP)8q2v@nM_TZ9zGgs@C{Hvp$
zh%Q^%`BmPF1J=>8#cR%bg{7?<zi{C=W_xb^>d93!5?G0EB?CTu0aHa(ud__Gqph~0
z)kKx3mlQRlrf&b03?nzIodxskZ2JE(fQp{W`V={srnny+;ldXe9@5(@UO2OaQfks)
z(#P>F<kFj&|CGC1*p+htph$y)gdm{99B&Qfb<E=sP>INwuzl#cJRqs88g_{5&&9tS
zg{_rT4^D{!8d4O04Lc97s?tq-g0z8qxFZfVV*g@HM_SCv?c2A{WpAK;gL`{FYqYG-
z)}2w(r&n}~SyfJ9W6jJ$ht>S%c%c(Tofv^R#4obo4fTaoltx0N_N!$WfWE(_h+Mo*
z<}jhPns*D$|GAU!b#P!+Rn<PAEFkN`zB2K>@ERqPPrfMfl|}zrsx^N{Y}9C;C}8g!
z`J7>Wi{%$}VbAsJgW-ho=%?wF#xBh(!V@U#8<)r9+Z)!iJ<3W;KR`r5!Ppcfzt2$3
z=3O`uv?B<g{zzDJrf2vLk+;e!0Y9?+0N@lB0c{{}uIuW?u*(>_+J@6q!YhL3m2LN!
zcCtbB#BVdFH<|js*JyU}-2MLyRGZi4sI@iepyN*4BuFYC?__9b5}Lg>>U+o89YcS=
zHuqDXelzurU6f83x2Un~Byf*kED#ISd*)^OAPw>b{2#yWHF9J(Mpr1Be(E!=7z|^0
zt<h`=&}VD(Q&nUDYi-QE!>Qt>g4%b7dFOqe0dg|AGH}LhT7g}#5D?uGA4>l3aeyo%
zqkB1hwG`){9ykX2W4~S#Ic}JQ(fL@vHlne1R{ci#KkGGV+*n4lnJ`CDR%4vRr@k9(
zoM_xU*NEAMhKB7scTVHIZ((3WhL8uIc#m@t3mkNNXI&DBFABJnUw-!NJYT2htUI=O
zcXnnH&)r|S6HS`*|A-D8WXUi&Sa!XK&um_rx4yr=zB9^?BnvUP5aWH@mZaQz@Lm!I
z$TE?dPuVm3`|ratAk2(Cgvmh~QEB|(@LkuxGxDgqgBdc+E?fbR({V;;-~h$)OJ90s
zl}aG<*#BCqI-@;z8MbB@<m7gO8YG;Z_myA1d7ctpUs~%+L^FtrbK%0$1WPB*U-4tg
zPNGKb;?58})TDk)2+fG|+-<LQ?nsAfJ%UTaVwDb!D?dS(2uv32$yvMV=#8!S8}HB9
z;@>Iw?7cs=Qx?_^+{)(dWoFcOAaq$ee}+qihENsJ=O2Rs6(c=tB^jDR+7AgCc5A#;
z$kx4{M^4#Gq0VGhT(m#_Q4+McF_vyYLHS_qo+i;HlHee0AbX0dR=%#<O$wMA&w30&
zB4R2Q7b<T>#8>$70ekCW2EL6N^EdrA7le35c=s^sv`LOLjED77?3>rH>&2P3X_N8h
zrqQD|HBeSoFENEB+~eohUP;$(-0E`_zbxj3aaH5`v7EH6v8Qrdz}+d>b4ku_evGua
z17xi72jDHnN8eA2^8@wG<<ptBI*c9$6lh2QnRTG9{S72n->&wa%o#<qqOepotLgVr
zLUwXY_VV_)H%v0AY5qlP5)q28rm4I{BxP!+jGgj3Qoe?-udR_ghnlzF!Gq|~rON{j
zZ#-wV3nQ-)VI#JuD_2apD4We8^NPYU!Kicg?U`0sdCRM=8!<WPmgCthIQv}C`6OdV
zt_b43N@S;WkT!P1)oQ9sHvYf&7kZwqbU7Pv_RF1R^Xf%dKKq(={aE0;X~UcU6YI{1
z*!RcU6GJvuwXo=FkbJynPpyp8(1OHfnJ+azQ~~%;MKutMj5HH8e*I@Bmlg-sWKUy`
zOwK<3E7vb{XZ7-TbbQ+XeSB1X&dR$8I*5{kvAIbs79@uA;>98A6Rg^^ckUvwxxqu&
zgb%Q<|M{tO=r{pBuzkh$!r7<KTnOjSHey>38Llkt*{Ta9(YbBM89!$_J$2nWJY)D;
zTf@JJTLsvvIqrOlZSyYw#F6)=txX`lM1HBW^Zu0MzP`Tux%viV%M_^caJPO;*56G|
z)->De!0;rVX`W<{N!i&fTA6wQJ5RVYKao|8+37LBl$YZ_E}i(LE+n%^&Kc98KJoEJ
z6tD^3Z`PBqB6=RRyt(@>-^s6PE$|fJpF9bV7&2r<187lcG%*<p*5{SYp#v3B4B?Kn
z-pyMd^;y8wP2$G-4a10UMk98?bH#e!N*K~aeo(9PzvoHoKnf_RTCPap>6C+xT5WeT
z7=7LZ@8F+bt0^Sn3IN&j2)i{mn+Lj3$CLullLs1;zv|1)r(-Nrn;ie=W=WOb=Tk?|
z)!iD_Fn&h+9kF)r9NTUf8}y^R@-M5tT*wx7R_lH1N$(~-yBaxV+IEW*V-<$l3%9}o
zAikzo;Kz6Lsg1F^@@pkS2h$S7;>d?f+Zr)snoh?n3B)|2dC(@Q9oNG+Y^OUXF<!Du
z71Z@5>43eGIm1t<*EH$i=@<+6Q#$L8+T2S^YtgrFU%oSv<ynpzkk-PdVRvO`S0sq_
z8id91>G$b7-!79&9Z_fx=I7*dH5Je6#>&Dr9M@+kn}{@7r^dF8NjwC^mFs}nU#*4p
z1PeRSPWlX}pdB$o5|Mz7Xz%f*_g<cZUxn;8!(a+kQij<|(W|L+#k@99!>pxC+uWhE
znh(km1@`V;)mM3vn8qL@pa`2`uhfBS*Q}XKg9fuEzdq#1k%HP8tcA_seR(`=576i6
z{Tme9@7v4Mqx6VvRA4v`7m`OTXg7clv#2z9dL%p2J8mwvHtz5d9fD{q?I{<!h~|dI
zW6}2dHg9hY#jD<1w;qp*I@aT9@0PE6S<DTyCv(Y_&<7bzqpA~!uSL%#Ze>0|Cg*&s
z$~hU<8v-v|sG4@IIzN0PbD~2kKkUw2*)BIXl-pCbHI2$&W~Dj6PjPhMi;}eO8LbWv
z@TZQ-m5Z=VW3crL^pimvwy(tzTe-0ut{{gKUv3V<(I*!NkPO@VddH&&4s@gh%KQtQ
zA&>D9R~sq#&T#=^HKbo_(n?wU&DBI7QiT7xY<J0Py9*vS^OgTi3zB01xk}a_zvfiw
z5Pq-4{M12&wQ!i<huy{7+W>HC_1z8CUPglXcM2P_LI3Is=Fv_cj$N%c$FZk_vO~AF
zvz9OKM|XCbBLtulNCnqQt@HQxvemDxCnhP>903`Jn2;Xxk?F|}yW*+$G%42pnpRVB
z5=7shabx)=pi>s($EZGsQ!bLpB0ll>y4u5tapK$r`{wKalP3iWB6e_@-sc4H*(H|C
zm))8rd-$})^qG~NGknJLna6M4b6@zX+kO7!wWgc#k=Cs*L^&3x3JYDxSdr}61}n>Q
z&7hM$F|$KKDFB%>Uzs+ihQLT+>f!gvwQlU><Rl1_av;kpRK+WPn;SbSg94Vyj}`AX
z0e40EwRW$#;C19t9(zCf7Gz;<tgxK?;`fz+BFIA$J<=&V9NBK$b{nO1+Yo49ePmuI
z&$gd)yuxgsEg}Ckd_Y?p1sk0y8C`m+shK=82oHI1V-2)LtIh*<0F-1Z0W+FV5y%yD
zsBtZRMA$bXY>$c5NBp+=1Y3a{Loo|*l1?pA3#7YWL8A=0n8b<|ekeOT+vjI0BSn;H
z7UBp2O=8W4v8BA2flCTX63TiZxj8{%iRXs?HIpjt-O|dpQ{O#IQXDh#k{1fC%}wp&
z$bS%WE33z6F42&GQny8>AllQ3Yc1$!5ac1+G<RsFfAo7%@7#X_MqquM&zi;C{~}Y2
z-DuOgE;%ugXr~F(7zd)G`AkA7q?Y`y{yvY^Q<yWTjXQ1ox<clPGKiL*+Htrvr+hl>
z>UVg$3I%h-)x#mV)x(nF3e@TyRQMYR%jAqQ|AKBHnSQcEg=W_G(l5o!4-I<vo93-0
z<ViZP8~Bw+%@sX@UQYU(|E~E#wOo2=(Jmqo(1b)J<zY>N$KohX2K(XDwhro@6-AvD
zIiE{W<Oa-UWlIUQLn4>U!MwfAVox=Xm>4N1FAi3gg>8hL4vTOq19Nn4LZPxlWatMz
z>C(lE6Bl~TRVjWs#bM0kUR%Rj#s}69v$nrp?Yij1S!cbWsfB|pzP&k2OC*#kraSIm
z9UD7*fP>Xs$6@%FFr34liVi@F$u1j<)k;b(`3@>27yY{6eoF*efa7?r)(F=8NB5I$
zI)tA<wuR1SGU7BpT*A4LuQbbM{Y2zq(VXH2P)e@^kb&V((kjr1rs{1fH(*~oL#v7g
zKs!+T>vLaN-;<A(QEW~y2`J%S;y{PU&5rlVppCF?wJ1#+Nrz8najo;z15K-XiD?F5
zo#@vAcN=Q=s@-?CndxN7mEUWshG(sxUttM=eZk~9IAp`Scg*QpsTS#Q8WP#@_uqg0
z?*-MI36|G1-f+wV4HLm$Yz>WRGck?;^JcTqp<P<`?Hgs+_|zQU8}Hkce+g6Bk}wi1
zi>mziZ}+|zU)C;}{3Uto)o#-%SDPER6tpf@ZrRX)P#hIqIPI)f?q;NTE(C@UyF@)x
zLK0cThO3Je;b|sYIE|$Z<8z(`)f_x@NRAcK7&9nKr9XbmL6Ip^*jT4BC*1zr$kpAc
z=CEWE9)bWU1}Kpk2+YO5gedF89^uxCt*{|;=D#b?{J)nq{Cd)&pWf(+*WR7p-zPio
zp?z+(ZBy@dt8=dRulMXy@pJAJ4P1Bi*L8iCS0~DyjK(2rnL_|bxsu9CVRJ%cGEbOW
zJZ7@vP3(>0c}2cWqYzgS*UqCm#j21h4Uf}ngC5gpGA1L)oqr)__<dtF+k*UaDG?AH
z(U_=+_+e&a`Th;U`m(eR;v%6{mCIuAH}Ia^fB!t6@EL5>gnqFn?i`w$C(;)e*nQZZ
z!x-#3q7bXlH5j!L5dv(7PbY4`%<1$Ga<B7#XGL5q^f>z`mi;z}w)il!^_?rjH<Fiy
z6Q{@BdQYD}w{|`#V1_wJ#e4Dm2l)zki%`)whKDck)q77nBdRM+nDxGGlH`QzQ$i`}
zbu|n%`}NyL6`e%JHeldTiZaQ$BS0&8Sd%2{2wcGkM@X?@LvE}&z#i_8|C0|FgRp%v
z#-O}3VE+8g2L`RbSN_=Ji<%HbEDD+A=H$UWrfPNXD{BejzXhQda;XL;x3=Ae-$8%i
zPxQKSG+*LZ;NxUJLP=67qXOD3bJeyz?;NwXncnt?F8D+kOA@M=-s@4_rM1~kle%QT
zsOx=e$|PSKyLOFR`rdM0rqlV<%XU^LefrO|e45y~!|VypUy?6`8PDGRE(|E$_%E~2
zwe9vfu3ejL<hIuHoZ_Uro=4{$n=xz6ytQ+K4Of<oC}i0m25LTm)6tzYdS;{5<5!jb
zIytb;syH#_`Jk5vivuF|*x#RC5M8RNzBSI=ZC<kvhd;$`PzoN$ZG?hp#Eu4X_uZWe
zJm(PWiD$eXox!2O%O0VZXHcFa&li3*D~tH~?seC?fWMl;D&A!x`^Ksw1<AscKD0c&
zuY|pDvDFGTt?mXRM(e2mOsREcBPU8JheL;fQ8SE8@zW$z3SO3=B#D{>LrSu@hVxl|
z?y~qlav%tO1MlU+fyE5qj9rJ_9ks_qDs}AW%F!)W`SF^O72iJ-<;Y(c<K(1@4}CV9
zHl@I|yu7@MERbFvC1;O$`ob^hti8PXU|?v2X<T#0#cCL{bai!eYrQ(w_bB~P-!-NS
zL9m<>+S=L^i|ZoCSFfeHR@czr&fyM}&wGUNr>PGi<jdp7vng;y6MMI<<GF~Y1?CX1
zp-qNZ5x{8@N&&=nnm<3RVjWL2@%{Vm;s<(r!<f(4t0t}<s058!V6UVC%EdvawI>&(
z8kofQpQ)EEb`Nl;*W4!WX+$OO5|vL<jQ~nW4-e^ydwq#N*Xn4WvOT!^PM%Z)+1Y4l
zWJgc@u|TQ8$3I%GpPdwi%|s9H>+(Fp`sItvdD-`^Lyi?E|5<n_a(eshfUWxmH~+S)
zWtG+Hcej^LaizE8L*+7n+(b!9iKwnkOd)Vm@xAJg7;#H?y;sK0DObNKT$^BQFl-Z>
z0=j5EFlx$)+<gZQBy)g^{D!qmb^=;+Kiq!0hgU|7vbJs`xwh$pzL>s=X*%~|>^_Yb
z=K^|KwQB?~h=QU<$zd4qK*q@5<BNV^4HK>qEa9Aa+8j@&AFrQ;I18q^e^1viFm6}%
z^UX4|fy?j<!*ZX<j8Y9s7ebUOhwML;%&w^+twi1=9x#2w1?M#-l=6V*a_``@>q{Tf
z90VMw%h}#thDe*WZ7YdZ2>wDtQ9vx9lhS5nP*j!4P@)q%d2<L!(Zj=ayCf9EcyZm2
z;2op^xssbN8WFI?;ga5eku`KVNr{Q3trk#b27*oX%=VDlDcLyC2=HUN4<osP=?n|w
z^qDicn8OikkEuMKZfBP`!RSvS)xYR%i~*%I)M9J@1u?5;dLC_1^!<9<fTmUhl^%^R
znSLR&XHdFOShSvb7*{1Hksg6<;GpYOVm2{*zD3)%do7ZV#I<s)bkEt4xP6IZ=Wn|j
zR7JeKXx2F6MP)^-fgk!lk*6+HcLE}XWn}Sr!!k+<FUo3)=Y*FkPJ$tLwXbg1G}_Hu
z-_vDe3O3XsTndFziq>!wDolXG&_@0G_jf}70M58#AQvIHv{Ys;CEFC1O?UmW1&tL<
z9^9Ng;LG4Eohy5M*C}sWFf0=S7Ydq5RiFA#Ioo3P8>Wy8j3HH0twGIu(Bs&Bd7q==
zle4nE$NY>jRdYhUM!aoe+)l`Lp5pl{C(O*uygB4m{ZpH@Y&p75kVtv|1~f;O#^AEc
zr-Tq@(Cg3bxRIlnHf5~EFV%$$i*}Y2&C}UP;SrGrQ)4|!|M}BlauGRg<jLtjiWs%e
zrMKk2+Yc%KN>1blns~a7hRoWn7!-w~M-SG=td?PG83f1p7cye~WS^QDBuZoKu(7fE
zM3fK8(gw}ymaSWdg0$o+NGhN!{ki_{dvm+RZNK6hsbUjz=fRfHQzk81v_QvcNieTR
z#gnm$N=hrZ{1@K<0^1i$zxcOrr%T#CdSsG9lyetHF4uy2iCj}&sTpb?*SG58!}R1~
zqwCG|{ye!|qt`>8Vd^}pI(pkhRB)Ub@h#Q|6(9Um`u)CjLG2&2()9b*eV=w`cwF)x
zXL?p^pomKJ2OKTOsTpLyJY>115E2<Mtxx;p;o+hCtY4kJo6>LV23MBl-hqkYvERFY
ze>*t#GGohNqoOCLn)0)B{hNhHL}bQ$d9fJGC})5?CCdr4N!(&u89L_Ch<A2<$LZEy
z@15Z{*U9NFnlm(R@{1Rp5Ol~I)4M&`-rioiUp9$5<rz^kZ+myoS)d@a&ogg>W9Jz2
z@_{)!45rpGxZwHc#|sOi_bg4?NcM>XH}zrX&>TEis5e&tpzE>1j~};j6TObXI8JPC
zp+zirEUFZyOi9V_;K3bGtqu-JO^egojWVluB_bk1IkiF3!X;(}?|J%Se&n>PVol1S
z)uv5o&;A5v3TR?6hSCT&+k6L~%8p&T^1;HP4ff7<b~e5LkuN}e!-1;nJOa7g$93gO
znNDZOEv(-%n|6()2_d+2!GZ-?kjn^FJmBEF!Cot)qGFXKMqzB7=~31gd#7ZZz`t^}
z*v3xXo}Eeg=d@)&cpir}K>1SQO>7j{d&<-1mfbdAp!BWf$i?5I%O176GbJbX>eDIn
z-kgd5^dhP|hm?RUcn;^ebGPANIOh3FC%&e<rNp90wJW<F9z2eN8#%R<h+M|1x*@lV
z-_on5tf?6AKv)D8D50M)VpdfUH1h@%w<`zMPH7V5{JzL<Y~rbQ#}CGd=t3XDlTG1G
z>h$g{>H*H<eke_-o6|MJ7eN4E1L?ua!=9y}sJN9w2cdf|;32fU`lxrrn$u(xZfm7t
zg8xf`g(S+LJXI?(Daj{84AHDS;eAApE-A70^c+bGM{xJW%+FKo?dMSCa#P(oz0Xa(
zbTTsoTiiEEndaP=)0Cxo0s)D_miD!m9e<o3e$r`deX}7yvvfaXIc)T;Iy7&_Q|&Hy
za9V|atm{Tk&Y9)f{DUZlR#yM^HPb$(TxWT}vPz_aS#BIkJIRfA5YQ~GA|#EHr7>#7
zo}+<*fmPQz&t(W73J`V2fbLcA#e!Bzri&mz@x7J5ns-dRrw~ACGj7LDIQscfqjI=?
z((WHpeu{W|*ct)#H|$DszxNnA^bplsiO?c^0x2vsMq67zj&Rs8@l>7JC%e<#n0==Q
zYo5>DaQARPyK>E(BdQxG{<-kRardG;%%eh>P?5$>m{16_l{;V~UqrIt?|1haPeU!!
z=MpR&V%XvP(_tR(pVaJrU}`f;&2Pu4bipm~bTSJ8r6e4>QEk;09;p+vB(yGKLxhYx
z5f=6-^u>%Lzpd3$%wyL2;Z>2jD2`9FtCr{j6zG+;HSQdgav_vx@)SymmE>a`a43F8
zB0QdM=6cz|4qPH2r+-pv!@x;d5m|n?MUxpaeh3<o@Fc8-GzMnsS6QO@FmAmW>V?7P
zHVIP}0{H?xXl}hO953bo$1}N%S1!MlmvFvfB?y)q-jXshB+igpEct%0A$=>|TU<`Z
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
Q9t9sCuf3jPcTV<y0rGdz7XSbN

literal 0
HcmV?d00001

diff --git a/random files/Diff0:1000.png b/random files/Diff0:1000.png
new file mode 100644
index 0000000000000000000000000000000000000000..b89db60f820b75abeb52eb7692bb84c345d95b8a
GIT binary patch
literal 22638
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

literal 0
HcmV?d00001

diff --git a/random files/FFT_Histogram.png b/random files/FFT_Histogram.png
new file mode 100644
index 0000000000000000000000000000000000000000..87df077759c3759f0a8264d7ceda7ad688dddf41
GIT binary patch
literal 10912
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
G)BgkEBHqXV

literal 0
HcmV?d00001

diff --git a/random files/Freq_Diff_Values.png b/random files/Freq_Diff_Values.png
new file mode 100644
index 0000000000000000000000000000000000000000..0019df17b23b220780edddd4fd9a693cc1934284
GIT binary patch
literal 10136
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
A6#xJL

literal 0
HcmV?d00001

diff --git a/random files/Freq_Values.png b/random files/Freq_Values.png
new file mode 100644
index 0000000000000000000000000000000000000000..0530030d053b6f04262a90115ecb68303d9cf36f
GIT binary patch
literal 9116
zcmc(FXH-*Z+inU)M8FJ!N|n%*A}C0aW}$_u^iEI+L?QGdHH@zk3m`#ybqFO$lirCV
z14>gOy+#;7dJqT!0-VjvoH_I3JMX*J`OaDAN0OE7XFdDLU9Ri8?|VPHW1`1#lJ6u4
z1mZyGYny>U;0oY%;RFlt%iu)`H1MGspkotY?u`lvcJXrq8M_4dczOqTqVHV@a`W>?
zdt($XU%Pxo=7L8+fRF!mIXSPt7hLxCbC(-&`OyMw!serI>kk64b05FJp!CdhAdn~<
zLi?sgNapHfSSIgW#LmX&;9%R++Ba-eyWg1oR85?*LU@_yJ$rs7Ndo=LyM%M*cnPn#
zh@XtUdiaNE6c|6mOAdJ`#(v7vofRQl+%I|m;HR^bmU$O%TA#7ewspCA=1lUzc6<Xb
zDrM3w+HoyxWPN`-eYnrTzqjYw2cM|m`PLv^Sae#NZNJ6qMlcG6+W+<V{mJhj1%;|x
zepuj&h$^Y4r{t9Y5{0tT=ag4akQQT2O-tj!LwkC9PJa47T+R;?%aS1y2Ug{m4LRkd
z!|>UO)s|#wywmF~C?Y1g(NQBo(b7!6cqwn2Bcb{(`I2K#lM%T$;+<d>+!t$mw^;$s
z$&7;5kk0O)T-;9jw+3^z;zBs;VJdCrEd~?^${2L`dex6RsYhQ>AlN&WdTte6@<oJJ
z;(!cMJl6C<x%8qF!Z~s4A(CC*k<5%wMvTdzpAh1IU&@goBFGD3rHR#6WOanQL8t+l
z1>yX0u>4i^9kK#`$gmMX{)VPSEG~2e%+cqodt%5md$CDzv;ihUWN{Xs&62%#Z>OAj
zN*3)=wh~Zz)EP{x_Rh-p5=_cCj3$)N7ktKVc{DEV#}bt1<|CZQ>D5_tc#~C(8tMSB
z<`X#js*eQq#OUt6FzF0MA1O`EGI<dWvH_i9wSp{TtFRxi?AUIx-o8O$)>B{!h%=;>
zmBHhqPAw#98KfsK9SX{G(G`%8FA#_9`4;g5f%C8!-F7IxkEIpV%w7auW5s+Qn0iEd
zMk?vs7lO5chYIF4_k$y}t7-S9Lv_f$q@Cz^P+qijv<{xdFrAGdOVxv2$&|T~Gd}K>
zy8R4CrMxL&t>pS>jg55`*;*%wI1Z@sdVDgTW)FYFwS0Jq`bjbJs_hA@g2it)K$7!I
z%Aid${VHW(qIrW9lzTEYJ-M{2w~f1AUfJ<xkeiCQF{@9P(Ad5X<t&;}QO)penW!t6
zXa>b~86Sb@5BS<3bc4b`SxNS#ypKQs@FL}!<?su!&?wUK($62ku3Uu|Xt#I5@4Y3w
z!I!<RHY0bt)~)ImtUnnm?JL(NJ0JoVgDAR{ZyT;ONG*%r)8m^?k8DlNXyfr%zj2kh
zUUm{SuFvbChJ81=^5G1{zG06al;F4;I68HiaU$d`fsGV~b%)O+IIY=x8-q2+r~0bP
zK9T-~^I+0sc7T*5Zp{wxRzdr~C>@$DQeu>c?6T76Rp^lAA)KIiuAZ6BBCiD3g#-r_
zw<%je{mm<Cxo*SvvoALij}lC_xt^^IQ825k2HGWJP1|&9*E+89$<Byz$nR~2{KLd7
z=jDOEH!$DZ4?b+eHY8ndo+S;3J*cvc0umsBL$V1zmU`XPp*d!6kc7-V?~$Z<R>e!J
z_Q;X)a8>Y%*dSrOL4Vu>S`b_ul|aZdKY-y6{e)}7WJh=INP>s+D_bV(^rCkRi(dz@
zjIO>9nucmhEw&GY`KJ<s_4zKN3kc?B$X4AT#yHJIxQCVj?RmbEK@uSu-Vmg2W=rX{
zqbS@YV^_h;Q(Q7*@vBkNvPbNQ40C=Hqwz6FI0rqjkwaM$juCCL+x2anYdDkI#5LZ+
ztRhe^2_IUUZH@RTL~?ZJ`9ea3v#y=B26fm~@SYu3m+}}*LsHBt?;k>Zn0)#*S00Z>
znrp`g%K%{0g)jeiP((C!+P)Ll@$x*kd7+7HpaOtS`ETBQ%f}U63RDZ7&E=>dnirZm
zJ3B9-Qqy>z6O!^Vx4n0HfBCmqb{%aq`s>^ae&EAwsUS7YmWy)?v$g+=iyQlbqhn|7
zkW%qmsrt1K{wk4OMP|y~Jw1&S>59xop5@V@F<pBSZAfX!szfd@5x`J>&WcRcuX^T=
zmN)Z}cPyFx3*s;Td7<@5sz2lPU5A}-ssp7qpEDQpBKE)Zl)O|WU003ly2zT6W(%hO
zZ%(>23`*RJKrD;NuHKt+7k@&yg0{oA$`bFA@8eMmOMNL@0etg2?isy3CFl0`Pp+_%
z&S$ZU8?%@|t>&IDKorOopnCYAhCux}6_^UR-Ui>qmY&ApbHIm$`3hIOd10FZ&Vj<M
zgOsQrJ`R9I#ba4bSl8lk9I$@Kgz?!o9w-#F8+^oRL>?uj<LF+6w%pN!4T}X9Lyiq;
zX&gw_Ev__i4(8SyLHiY2Lv7d<ny8-8BiAU;Ujc`<N4G-uHIRH%d&FmOA~r@m7CHn<
z^beHGuUzX2=7w48XnSc73=Iry-QEPw?;!96^a9r@I)lTd^1;kMVOaa(aA&bPq+O!&
zi~!PHyM%cSVv?vR6*#3Lo0OI|3L2W8{O%1B0-+2Z-~(K^2G>DWpjgrlHXf|q&O(tU
z-A2>>qyVY|8^PW!*fCq!+w*U4Z|7s4rrEyHe}Kb{nbqYfGsHOmFR|W#;#9LXmQ=#J
zp`9ceUAE#Zc3=Yd5R<5QRe2qbh{Y!xUe~aW)RlVpy1GJZ+!KZR?aQ<^QVZ1g-6BZY
z$4I-GE#zeVi5p}YiU8$%bx#|R+7@gMoIT7a@IpZ&3Z;bIeu&j+k03oYacjfjh7@gC
zjSObpp;~dcVbK}eT$qXoM=b0e99|37G70SM@dQb42P1_cYeuujK7C|NENSvnP~ayS
z@FMYtU=QZ9<qv_EUs=czTN@f0%B>!vP;NzHV2Q=YBwNxW7>pRgA+KufWhS*;7Oo8Q
zwbUNa)%G$rHqNOV2YlZN=8{LagL0sU>hRj%QL>P}1VtONB9euAfqGj0Hdzrd=qjke
zEBHMqBhB^^ap`lCVIx@O{5eq~TYYND@HZp{g8&7>Hu`ZPx5&n%MAtfAEg_g1IrNaX
zp1p{vRTyTv<=zBD4Ff$a*!<Yg%gbwEcsQl;JRoo2L=pG{!^ya*i-B_5fcqn6{-5fd
zfpWko`}iS*UAnZI19=jkZK9=@?}yl{CFmmJ5$Rd>sL0}@YQpZpC<=(Qr-wjRfPHie
zE1!@wU{|2^lEzTLi3At053_4DtHY_x6PX}~387HHr9OYV^f!0taKXmI=tm7dgmnuz
z&s{>R`&{=4*7n5Vcqy15E*-#gNP`W*krA9tMu#(~qhRA1Y007G?@Se6ZHK|Y+Rmk>
zWC&s#zm$=YvHze3P<>AgU`V+F`^SWwWwTvAq+i(-0m$xM41A^-R}_mIOHWVN^sY}!
zONuvR8iD7wNPY{a&>VLEO3KE;kh4DNguBGe4m1%!ah8hWLx%<eKQ=M?3O@Z~D7Vwe
z39-dnNO9_v#Q`V9C>J&YaR8l$@ry+;hg=-o_tOqoJ9iI2nU|I2Z#Xq;YHIHOFART*
zE0P7k{e$U@{C~==|DIm`d-o(6l30WtnH!&M(0G%48u3+3Heul6qAp^PxJFT&Or1BC
zwLFeG_19t~F=Hl8@PKanl^fzdoYX){B~Im}2l%ql3x^Zcgdg2z8h<3yBldSERkY1`
z<j>f!XF?`2=bhPm3}@X7(PW0X_#)}rAdoD^2#5@P2s90{N?;zA$OVs_gOw8PxaF_J
znlf1xy4jl_^s`p>0={xG2xRv?Gio`gh=j<WQpw{QYPw<8LfD(1pFeQS0(|t&Z1Pq(
zKh;xPQLjCSVnq={x;EyYkY}?=>;Q-aOlH7HdwtTexVP|Ml;95@K6tPfCJb=bzYKVg
zZ?UTQrv>YkCd}DPywG(-;5@Xha6<>3u6UFJgRxe$0QW~3YzvP3RM~fq3mRV-<iH#*
zM1M)ptz54!L%eW+zBHN30rLt`b%B(&?SCICV*dXda6dte$odFn!@Vqm8-7Y=(FYN1
z7<&CcAZf{fTql0bAk>JwVpemESGO;flUkV>>hLKLL!{!A&4~$am;yG8tVnV|>hke|
ztOe-v>1npAmk?M4AGn#hp5+3(R;OK;;z=2^ShYhs@oDkXU0j#23HT1-FMn9z(jd=>
zV(xi57b0H2(T*&S^wcgf4s`k}H79-;|B)|6X3RD`^8EF1cpTKpZFuz-2oA@NWF#5b
zT_8G{Mfm&s=Uf{C4roe*l(2a`$BCo&P?a~r-W?1f_ZlwuIzx^6WVJ3O1)lx~o!ZX=
zA-ZMo6B4!osjwsWSOiE>#VSsu=5+n()Bnk+YgTyxiQljkpP)^HhY`grR-m)5n3s(4
zmzk^}>&AiWpgtzPXjx*}G1ZH+SKva<6s_JHB03ImP-YJ%B>*(z)Oz;ezfmauop}GY
z3?&l45=1kyC_XZ|pb%jP2h>k2zSw;CuZ(m%&d4o;2xb}rX^YugCb_|U&j1BdYL^_7
zo!PD%G5gQ+%Oeu8!655GG`J9?TqrdR0V<c#<M<x1m<Eum$jm7^f}1YzCAmNk$}jrM
zHDhHk_gA_$^4g8`wo8M`fQ~3W=06#vqqgGKM(A1n;uMSNiHT;@WskpQBss+xU>r>=
z%U@QrnHUWOg=i6y3#kqWi(<0nkQmaq7!U!c6cNP`UC^>xxgxv_QU)n1EsbsQviQ)&
z+t<_>=T+)uVQuL%8MEL6sK)(@FcfNN+Q5&Q7j{;soq$U{nF(cFh4(>^lXUQ(N&0RW
zTq7AMJyca%6I+X2E%h2G9g!6UY-9Ag@$5bK99B(HV#11A*+aA4YozZMhv$(lQJ&#_
zTm8W8?p!)&Vfj9D@h}}&??4p3?AmqfPflIm_T!MYFS37^4XE3F+M6^E6+9pOm)e2V
z@3DSO5CsK=<s`GfnTv+NDwUnEKu>S4`+)paX4I(prluuHJ4eq=?D=qy+l`+<+CSv4
z)10tak^njn$^uB$tTqmZMpWXF5P(5OswBTDjj*2vlbW*cY}<U50Bq4Ga!gRb!cNok
zzr~oO>xTWSX4+tD`Y`}?!mKtXfW^uV2de}z;#T^HVE{>7{T<Xz1db}`)im?=7Im&F
z-q%$7&!5v2A`~ANSKc<W6=}V`&J}X>OfR|K60j`~tBpJCMA4ZZ0p;d_(klv87!{Hq
zAnOZjWKSUV?CUoHxp>|mJJ*w@ng0Cw0P9^UqoZ`~mN&|(061B<^N7)MTnTq)oKk({
zC#fSrpo&QI!_H06zZ7$R1vj_0#M(3TFDX=2&VstnJJjrdJ3*O$D&hPD_zUM*ZTjxs
zZ(0i+St>lXl_2mvdDy;5#v7{3QL0%H3mirWFw0t4V?(zeSk}H)aHIp+KORVJyo8~h
z%pw9|s=wzdrS)IPj!EIwF<6#!5&pb|<+lZq^t7ZjGsox}NKP!ymLx!##iPLN(P8j=
zEIy{`EUD~0`X3;a=Z78x)TKDNA|X4+Pw1)+zaQ(vKFc50KDwZ+Op0j^`Rh9Ec1SP2
zX&Ll+d6){nimGK3Z~a+%xYUu0Hq#wRG=Z>z)`&pSU)>}<R4aVQDcIA}J^W7gz-uIS
z`)z~o`-}r0XTTkIeyjuZ$s7kw2Hp36vjve?I%c{B-iHQm5yg$>%6q-#-qYuuK&5KG
zMsWinAYs6V#B(xZz?wWTxrK%Nx20umua_bt*u@47i@h;xjkk48bp@^#eF*4&JASwD
zx|~;JMENkFSR=|^!4l}xwjqvZVRZ#FXMyI>W+(Jdp@Z2#5KA88>ZRZhM1QF*C_t5u
zZ`~+t+dhf>^`l5wix3dlQTa<xE>ifAw%QDP%n%$I$(O@5ku9yIwXK^8^;}wBZv)k?
zj~x8$J@fJQb))$6n)T(%z+Lxq#j;eeiC8XBykV$fQUtjEOg)19gk(TzK~D*i(r$=W
zFxOLVT-*9K$R8YMZTUR-b9O+kk{1f4anVw)-T6JnS*}K{=EWX3yxEz5FqT&Ml|96J
z)ph5FqJlKH`1%u@GhhJ)7j0sO3kroGVnlf3u)lQ=_gA{{163z22?&vAs-)0M*ruHD
zgs|im{Xk3R;fRp9+s9NN&h9H$!|b`aY}wOe&<7r3=gDf!sD9#Heh+2!fV0BMV|i=A
zWq0_kVu|OsAHT&$eko5I1<$XOXg5KIRweGe9i<Z%ZRvt)Ki^E6VbS^?Tz;*@^9|;=
z(BPM&rkZg|r&UR`{s_~y0hdtw&@bNJn(AfFmCw~u%G}nj%sv8=j%Ll>ZM7e>TJ&Zx
z9Nlkb7tCat^ds>w?2GvgV5e`*Z<j}g#^yP7m2y=`dtZLh8=|g_Cer(%pMBTOdovmP
z*TOe5XRi-50Lj+sGd>HN$hjpid{2kHuH~S&?YMA{ERO@Qk5pE8t#0i^86(HNeu-g+
z9QIWSWw@Nua{bb`y)&4kn-I5|4JiiBU0YMz&r98-)n>KnucCz`22nZ-pyk`;p5yPE
z%IUp*i#eKm>ZUFAX>~nC-=eofs#c!#3MTLV>J{(5K(2WyWYtT)mf_(U$upucak=IG
zd9A1!=025B0rt<~vqIyQZNes5DW9FM)f~wRkRDkNZ|u>Oq@>$zz4<=xS=U|JN!<W&
zC%kUX`%(R~{p9ld_9x5xvO^-dQ{*teFP>H2{Hm9;?js;2jU4;#QZiBTM9`~$HA&Z-
z*0d=H+qvxAsdu=t!%2?`vF@yXt90C6SRMy}cAQqi>e=eldiyR&S-t*w0f&9il=$}t
z!sUQ3<R)8R*M2{=Nl#L9Geuvg4-5_IMnoJq$tnbXi`q7SNbAit*ceLFqmC@aHopps
z?be&VnpG#PfvMwKVzADLzeuk1(z|ns-qox%GHa>3Uzt&dS%~IYe&n~>t@e1v&|R=s
z{AgD@hC(bpqZhCBvNK(2o8HF{z8}N2_T{kk4mg~)l@`t@)dN#$Q7yslbf|^Z^PNGH
zdB-ZrKo!k8^@;XvL#x1szD*N#d~m+IV-V-G;krYI!m^Xgip%X(4L6IJ?Vuq?dNAi^
z27mg<R64WylkZpc`K)TGlShx90zvQVKFVgUcjf+yPh7VA&-tIdXA1TP)r21nC5k+*
z+=e!<cd>eSjc=z`w|y4uew<LQ6lQ96TYDh6QLyD3sQXeKXxW5$)O&1IIK0MO_Z@21
zYREIZblgoMR^Zppsq2r^W}o^mW_8mi$5PJwe!S2Z`jyEkvLz{JpnUBIngNR8;%|Ry
zUANQSx)Oi>+J|%3>!0U8RO<h_u+w~BlDcA8{)3)w+_ZghGVvx)Mawd~F6gP1^^dci
z#;$aVl#tE4?Dv*D>dm2|YC%jqKl_S41^8z8L}e~LkC+!iZCDE{Y4x4(0UA>_EiUYG
zZM9jL%T_zju>Pj%cs=VH>hEK5!H~xNd=KxHhx#ksevYzVEl2Z%Wo8TG%UmYshl3Bt
z+k7Xem?*ZzwUpQtr8bjZ>U#kV7p4~}<+G#n*5@p2ZvuF+zMm(WriuxP30+Uucs3{J
zIkn1*3EpokTvy?8rC%p?k=_GCg9xuX`6K<jYFfWb0=5x(EM?o`D}Dc|WfgikNX)m3
zKMvV3@=eV<ERN5vWfOWZx?NtGC%e!55Os0}egEmk+m4iwM-Qd-1h2eoOIJt&Fznsh
z+;FNA>fGnnEh)pC>Gn9KqBG5#T$0o;{`@12EwT3{1awJ#p!%&iw__NpJ)wm0njEEZ
z7sTEBnA??AXC%#}cS^V?t~Pf!$xCBx=gnhjV)31r?V7h`7BR||>m2<XUd`ruTywZ@
zj~{(+Nak$osdh$0?YfT&#ucC3NNG@G9hS5GP3v&WcMRSX8`;I*v3BZXIO$|#b6AC`
zS1>jy8<>o+RN5cT$M0Nfe|`pecpIfq_4o^GS($Vo_g)rob>%{}TiE!`qkmlhMk%8=
zrH<S+So3~mN+l?W$)*fkM7t2j@1s!pmN-!2-yIx-bjvX-Kowo$fs?S@*bbZx3^tAx
zhPtQJ8v_J*ONXrjsOKjF%>U?T6<-7oN#l9{5}*!C^8n&&Nf}^E!4eAvKzohzAH{pi
zlz#7<$nMHC+q-APNkR~me!2vaPleTHV1a*kW?b+dD(Fkd8aeoNBiljo>2mXDI4eXH
z`vkKEWI7%vxp&{5D`I2y;GG>nhxebHkjLWcq4jydWJdv*zr41`0rMn5mH)bNOTM|U
zi$e60x*{CHPf^W;l@^e*vtJd2bFz2oTO|XX?grW`2Z<L9C_wY}K!n(Ov3%e%^Pg9H
zIt$%3HCq;r_y2n?WiwnR6$tIhj5qxp9v(XX$5u{1g8vv@wE{x)c%&5wUp$5A21+|S
zn<d(oI3iJ8HhGIckQ9r!nk0OA5rZ%-%*iur5Q|U~e9;MvSxO)N*_&zjF)OZ-oxEEs
zwp|_TC-#qO15aD**fJ0n<1qOei#{BfxPIASu3J1STYCKmV+q4Qr~8izb7j;0EF#C`
zsP519L5|kJMYuX4dc{)qGw5sd14<pK#H{Wu*N(Tkyjm<5Yc>Q0J~}01G{+uYUbvwU
ztp*1BW5tOKAEeHns#I*e!KRQ=U{Z2cMpx5>t|}+V9lIQzlfRgO^(WJVquUU(!qC=?
zj?Z9>(QFmDLE&6#av!lPyRUq$_AUnMBTN0J=*01IYqx51#E2=Ine)>@M&y?TQ!SxQ
zGv(Y&7D_M4v0?EA_JzS@S>(j@cyt}KJ9>lYsa~NT>&%v!@wQF9SL<y3RqIGMDSj@-
zW$V@|r{M96b<rzc(>tI-kd~n^K@M!0^%+*V^R-1a);d3QDSWDWczKPngyx@91c{Pa
ztFI^RGoEFEYtv;?-;#Iz8$ah9@`tm(%cF5uIGRhTeJ70bbb<}B?_lqgdPBkIGCG>n
zgfx<r1Miw}jbBurX3}J>&R^^&b>KXVzwSniJrW=@jERR+LUq}-cTEbwy`(6DeTlUp
z-_y^+Aox8FDhHCMB6%g;gS24U=8NUH@ekFgLz8xB3o_O?Jw9?4-v=4e(Y{R_H!CQ{
zj*@s_z5-OK(beWG7W%HjNtFzl?~<SoSOtTzqQ{xglDuoA-zT;R7C~QLDdJ?B%U<B@
z%{N})I|_GaqXUV}O|$*xyM)VKVPm?gs%&(Bpxdn_(G*LUMG^?Kx|D?-^n$PcrXFZ{
zbbq$CHOA|8qD1Z`crsxz;}fKJ!F1k>R0Zo7fQ?7nf9ksg#7sMQsQ)(U<v?Cx`pSzz
z9dV3#4nm``44kaf-ZlrcQpdu6?v>ofl(aAy0~wy26_+ME8rW5g$wgcC3uxD!iD8JG
zVR~Y1U}RxnU`=c#?611ffaZPFjZ@*WIn^v_xf~uowzH@~j3oT<H<PPElTKCku{mZt
zqtk%kQG(AfBWnn0#P1dqMEGH~J#$ZjqGC<k0iDiRl*>Q-sceF!GTYoVVVkxaV^&uf
zzq4xk5!0g1qMrU#;nUiiX{b5}L)j;!SdQ`|Kt_o5f&cQ}=`X2I+5P5fNaX6C;F0al
zAC8zj2Udz}(DtoN6B?L&g28kyvnz(M*r6B|irJ0Q??kE+B^^x{tdC<3tioGly70yH
zQz&eYF*<k{1&K_debaN*V2e21`bv=mswZ2K|1|9>p^B}(+VTj6&`rfSWFISK$t=e2
z_zQB2O*W@=hu<Lwlj(ZmS#4Tg^3v{{@@nTiV{!LIXU-w{sr^$jufzOqMyZ@1c?(*e
z$i{_e!l%AE9%wwnt?RaP?F2rm@>>8^J?=dq-NjF(O~r5F2uI0^yf?_=_(-wEVN$%9
zaZ*4VA?7Q!lQ{JWf2c=Z#arn&T96;%g)C^T#nXn{55y+ni*FP&Ukklv+@*Y7?4p`B
z6%Sj6{ZPY?)hfnD-65CaBg<B@Y>qPD21gSL#WeJ3-{F4Chx>|=7S}o3jQ2;U4v!MY
zHd6^v25uk34y=otEXezNbIx6!TH6cWxhPhP#-G#J83J@3c}e&!a?Gb}`J+*bKwhdO
z?A^6VOn8`fvjm#O2Ri!o0_gB`h-gLhN|vRyUOQWt6VqNWsqkZVQV3898ITiP<F!Nc
z2<wn??RI6e@v?OXxzeWFVYG@Do%oiUlt5$y;fS>wuW|4#q_Qwgjzwtk-sm#cP;^EK
zaT|LQQJA1n@SUl$5G8}(;>~3_wq?SY<~^>}tI}+&se-3C6Sh3~+HzJN#VbVfCuz`Y
z(pNOBR(a=sy?2@_i0Fi<VW&S2hFv5}tBYws8So@6&gN^eZ5*jd8hf1B53e;=+p4mc
zWS4Y8z(5l(!z?VDsQ`2z8z%aTYSQ!wTKJWsK<YVI9WWz$NMtBhE}X7qoqFRM9i&Aq
z$G4i$R7&^5`j!5e`m#PQh5356UU1A}*lWw+1FrfYFtoP~8>Ub>yrY*TsC;g|C7a*7
z+qmxC@)4jIlbj+|{ch^WEwzj__$mKb9esazbi_lA5}oOqMCn(3%5K`RMC@p{r|kIK
zqaymIqetIAU}|!@bR~*wdq`KCp9-!Vu3e9Hel=;rbiwfx*puby&M#Akb`VAyp})&1
zX)`5DTDu*Uiy${wufAU#T684EjFmHq8@~?t7ck3C#?g;RZLeCc{#LT0LRvuvvQfDa
z9IoZ|>wRs|P4NTX5NJyq--8{tT&2LDL-39o7mm2;FK8wL8Uy2Ui@XcsBq*so+HKO}
z07PX&#Dm+w9XjoD0OzoZX_(L=%fFF?L0kpnm1m*Ot1oKPx36i%P969DtpD@FBYV#0
Y4p+{A8Dd(%lQJNLj)`{JE#%Mt0~i*KXaE2J

literal 0
HcmV?d00001

diff --git a/random files/Gradient_Values.png b/random files/Gradient_Values.png
new file mode 100644
index 0000000000000000000000000000000000000000..a16236956d202b260d4dccb3ec53d761a8072d0f
GIT binary patch
literal 28369
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
YQ4hG8Zn(CB@p5=i71ZFx@+PnU2OmlVssI20

literal 0
HcmV?d00001

diff --git a/random files/Hist.png b/random files/Hist.png
new file mode 100644
index 0000000000000000000000000000000000000000..80505aed9b005f27275711e8fdc1db29bdf8e287
GIT binary patch
literal 7435
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

literal 0
HcmV?d00001

diff --git a/random files/Parameter_Frequency.png b/random files/Parameter_Frequency.png
new file mode 100644
index 0000000000000000000000000000000000000000..d32539788254089c650aa9666fcc4888d2186c27
GIT binary patch
literal 12656
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
L5u)lg>i7QzI^wfL

literal 0
HcmV?d00001

diff --git a/random files/Parameter_Histogram.png b/random files/Parameter_Histogram.png
new file mode 100644
index 0000000000000000000000000000000000000000..1a8e0944b86812ba245c508434b8bf47e5a9a2e0
GIT binary patch
literal 9409
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
LMwOq!{N;ZE^h7h@

literal 0
HcmV?d00001

diff --git a/random files/Parameter_Values.png b/random files/Parameter_Values.png
new file mode 100644
index 0000000000000000000000000000000000000000..395ff86c53ab932e2d508d214f5d4ebe8ffdbcef
GIT binary patch
literal 25008
zcmb@tWmHvR+wVK+mM-b;7U>WdAPv$f-QALlZV*s9q(!<rq&uWbx~041OrH1Mdz`(`
zIb-Y(=fe`$Vy?+O@AzN!yCReor7=)nqXGbcA@c$95ddH+!51YmBKXM+BfS;)L%>y1
z%T?9E+||R#*$hxHa&@$IaJ98ErgS%RcCm7>=V9k%=VGO_bai!f5#->o`=1xEJ2+c#
z%p0Azfj2>M{Gjau0BE=`FBl*#g9reO$Ydbz)I2ke+CF>Y?S4CX7Fp5xA`V-HiiI;^
z7#PAsWCW+(O6zV++RslPYnLG}91$e4xtzK@GD4=5uzsJA`k0YELVJ;Z7Of!MG`RJ;
z!jp=8llPCE5muiR(J(YR7^?(Jf|9DZW&A1cr;bCLzPf%}aZAC)XL6B)1HYC7HMbe>
zKQ*npbmpOy$bpnwBmuT)FaJRvq(qg+f`2z42MIs{-+qo@<a~z(PsM?aK>u<bU2Z4*
zJFMVV2wn<!`IqEySX}V^IgW}Uc(H^5_5V*_?qY<7v(x2X+YVD9?}LBq%LUe?AN2uE
z?i9o|INa|&WV4zrnGo_OJv=2G^>=Lt7sNFoTy*zzfg^mc%9T_a>l{VJP@?_R%$yv_
zkPAu&_<bEn9;9?Q_Rv4$y3htN;ciXJ^szb>06!t0-zXCHU-&R<DFJ|o0=|;CQ-b;@
zWo}W#9uc-%YDGzDJ>(J<`w0%a4dpwbI2-m83ic6wE;+R|RqoQ)>tq}iA?zniYC%~@
zSood}b#r96D0MC_<PxsH7aD#{o9hdimVv}!O+qd<=SH3x6o#Fe?lK)x`%kEIcf)^3
zEl}W2l0j;bI?2PPp4p)45VfDJH<Co-XXX_yQ(SSpnhXChu%FtheR;8uILq1_!uJw~
zEd1X?kVZG(;7;zY#L^(AzD$rN)+8&S3FArF_w?WoOang<Cy>@Y)m8Ywb-o77038@o
z1V>(|GvE)qMhL0ZvigK#hz?B!W?^sfp%rjHkWRG$e`$!zNc}TLXC1%}!wDx&2=yKr
zXMg*wWVqur^7t0J4E_`jn1e}yU2_94t<Me644I%8mo64N4FD;3M@7~uqWP;ke!fpw
zlL&wx#@bsT5m-ht#Kp$Po%8`#5ge&_l7A_Gf4~(9rOZb#PZGNu-WMYx+p+=}j2LtL
z;gmNf?6INjW)Jwl;l|$w8NlDDy&W$U2R&`c3?S<KSl~+owHcjjf$=f8vlWEC0}uf7
z^i?)x(N*-dr6G49)J)67o(DSK8-F7WWbu7UPG9Zl+-<63$>xGK4P83`k8OANt1ypR
zOPW0Bk|Knmxviw)M)fBccO)zR#sMgIU3DYE0jV}AcjGBdapAHNd!p3Vbh)aW%kH=%
zjbD0U+!!FWf#I*^J=SE1W|vJ1WEgnDM(2EYo@s`5eSuQ=gx7#lihX?|C!P*b=bL1g
zA26rmvJbcba%kNyV+C9XoFg&zC~&F{Jfz&|XYcMLzXtrR2Ca^52%y9xt%RL7z%s%b
zBesa?5H)glEF&jX_MIGXVWjn8o5*=7{&#2@Aw&(`kOrC!m(n+a3kc`cDFwp;8Yz)8
z_axm?8L|3{tA%wOM%}zbG!?ib%c$K~w{Aqo-K+GU?c0E9Eu8}TT`^1NB<_o#LUfXp
zJ04CvGPv8~<dMKHOyFU^lP5-x+RINBJ`>xl<$zU2Un7EIVV41?A$YO=98mvC9IkN7
zNaEeV&(X+GowBD@9F@!kKVfYB>>ek7G@4geRsd$o37wa{5Ku~=ONp(I(k)_n#sW0p
zPJZO^c45W#jR+qKw-m+p9aBrOFw%SefU`@9%tV7KKVad9@*Td@3BUlduB=B!M1X&!
zoiv;{>>6<MU%Sqp7aspzK&DNGDyM}tz<~g#h5MnpeIrVpl^W#S`dJEq2CdU_3_uU-
z8Ig)f_u1YbW^I^rBa*K>Jo(r1+*@EZARcQ9!H@&0I}#TKvy8EsMuEtQ-?>Wf^eXTR
zchBGbDp2sSf-@kj|0hzHP|JGtB}zU^IMrf2E7OkaMgAiD`ua9Ugz1)?Z;g7GD;H`k
zOqS~H76{&h%2`2~J8L_<M(9L^`hTRSa?rk6_T`IngE#f=X1aLbz*NS=74nq$V#@Rz
z@BSg82U9aLBd-PMCg-#lQZE^UDjluU1A8I!UXB4#0vkd^gf2NT@jKNn9vqnzZ*Heg
zb*Vc}Bq}U2j<Ob3XZ51Y0)Y$`ypb9WJ0yF0PVGN;$|=Adwq}TUPzDD)91bf7y-!0`
z(F4aTAfecZ6|pBvZB3us25~KtZc&HyKx$3-w`;zzLcqZ-QymfzVI#mS!>yqLM?gK!
zB)$1RaT`s<H4ea**pG=0O$EH?+yDaFUuwWRwJ9VO2@r-iEO_5S0e8y;t?6dU2r+$`
znk|B+@15qb{NHUG(oZC*a(e-Dt_y#RB12|yWI2@Ll)x`Qh9DQTGD(972s<d)2*4vQ
zwBvHp9Ru5rCfBY%mTWkf^ZNP44$TfAAh=_7vYNFF`HbhHcS-;ip#1=b0b6I;EyJCw
zk=EeUWck#DKM0Z}I)d1!(w#t;(SH`mG+j^GP#0!|CRYHW2EQf+q?cl*Hl?RB@LbrM
zXJLGY>Es;|E*)mm#Z83+!jbU{B)dO*f(G&(%^_-Z>U*FaZA}1Zff4Q+X$iL^!`4sK
z-w*v!QQWy$awrZX!PwP!c+*0gX#h@1l&MGzIgoNk42)Zzl(|`X?>i1`^_0ij2h*Sf
zM97k-x7Y461%#j}#?fx*JP!ePMeBLI2v=|oZPbhDr6JHNpPF9`AvyL&%NdyP{smN8
zJE>m><G{Zo+73t92?|Y8Oh1Q(hVb-7{byaH!eK9dfy>WDXg#)7r5#VV`sF@8kkS;@
ziR%7)dm(I{YM=2*70=|2sHk7xCJ8L%6%E3>0aoLHJJSuVht`S>*e2Jr|N08fen_He
ztGsD!RH-o=vIIRgVJ_xt-IhwX4v|or8LUm35-qgAFEWsTyS1~UBko-m8B=_lcUasZ
zjaa^G`K_-q_Q>1?Ud|j9c!}Z6#!sT;_2X`l`N{$|mh%@cB)3!e?$7%Z<H_dTvzCS%
z6Jsl*k=^w4S7z^+!O4dCLX^U?>b<8g+>{3g<UYI6$9$82*^IVS1Sx1<>jn&h<LKx?
zwBU^badSKM8ZVb`Sp?@4I4BThz`qL5;4Be<J^2kXEf4XI*i#G}cVNiPgwzIw|Dnvi
z;AWfROB$Ez99ecuzfjk}At8M6a6-dMSvaXtVH=S;QGs2U#=&>*><o7<Qa@uupE1_5
zx!IC+t_KtX)IadP0>@Dr?}mW5_P^}+MQExLQ@RNkx{b_FvoEkP7WlI>EL@=A1lz`=
zX@~Q`kSf<N!LZJdU{8_(?U>(@J9oL+)O-~XW)1YiMis)u0fQwM;lh~dYj8LN<ltHH
z`89F_G=_z1z};d)9S-cmEis_HfU>@R=I=9bF&yU#>Cr<MW|k9iWWb47pdrMYe+Sfj
zJz~BP;UkAVJyE3Kyzl}JVGIWo=wzCR`E0GacM9L{QJ|Ypvf^VQyu)(-rWYPyhrk&Z
zzJsNL4JCoG{YZi}DQtEj2V9#<e8JFNJPl%S-?$R#KO6gZ%YwZ6G;%B-P6e*tE#?3F
zX)t;Fz>a-HolC~KVaRpd?fN}Al$x6x3oUR=hBWR?y@doi6~fEV$A`Tq=U@8+)W{Nk
ziD>K)&I=wOYx0k7N$bC;^)Dv9UHhK;GP8|GHFb<EOpyLTQQ<Y^#)f>(!~0LlmbOP-
zqc?nplz8t{-T|1)&GH*x133fZ$+e99%!mVb@KF$<2QnrwfLZUD*T2}|9f5WZ(=hO`
zfWjKi$w?GBzjF>_oQcx)frf##Qg0pHz{t|kbL+^b-3;!5MvXX`DWA08+E$~SRqY&O
zgi<rIBF`5JguBrr(_pF?qDp(;+bwClqHdw3d0Xo$%aHQ^f7RFpKN5yRc|W0d0}hY?
zCV4g%#UE{76NW?%Y?w*$6O+N)Nce$XbdG)BZSW$Wo2$hK9I6#hZ3|E!8FD-EvV8ce
zYH#_-hU8G1qSF8CYVB~;7R>C()eq|v#qH=a)Zha2yvIxFN(nTSI0`C9D+52^r<oG?
z9oC42zavi`Wm5FS5s%|8r-TRp&QZM3C7-aW6VGcbw3-dvC^RXaiANzlSO|ruPP?hW
zi*n5Ml*kd^*}t+(34D~+3rBqliVt3lW0Gezr$_GElY05OiXqdfy{;dU5s7Zg*1I7}
zXI}&cQ$gu_EQBQ3^$-8(oj_Z*UigU@!lEjCONK&UlxT}^C~1Y7hY}IMMEf)LCqt4s
zBzFBpEI{S!1VB3`+^#?SR*qo-c~)2Uf+E|Y4_wm^Y3_($@NSo>8Ssd(^<^NVklN(%
zW7pfq2goH1cAFA}16xJm?bfuF&}6zDc7l}V?46C=4n24exlmnmD{x~d9Ip0_XWR6F
zKNYniBF^Q+v^}VBRIoZlfO25sl_3kZo$(IlSMw8Ct*((a$Yl}mj}J-``bkH~H)!29
z>dTuF0?qX*J0wmbb38;8@Qs;nKDOlBz^jjy{57`Ae_{hFxu!{wdEVMP+&r}mJywi-
z`JYOF0EF*R0W2^Od?KEX(pm@L^hzEXhn6w}%EY}#gSdmAIAGqI3kor2xwdHT23-@u
zGx4#ZZ@ER|_Tot*qt{9%<luC`Su~XjJjwC^($^z*Ku%=QpQLj~9y#F$iJkn!65Jv0
z!B7Zxswz@?MP{_0$Q&ph<$nTNh2qo(XV4q;8dp`fn|swgYpX=8*A0@PbH>_7w0Q8y
zK}J%X;>Kh}5uo*Jr^>B>(}G>YNgkgAwBUf5nHiK5vB~@{F3CR^ovl*(P5jiuyNXh6
zS#UwvrM^E=uy>4v;(XK}yCp#v<Q{1>Kj+tS<0@{!%cJ=9+pp7~x73_7<cH~f*x*Mt
zOsdv5YqtmrXGc1H56p48bo>(lKp`?W=o*nL1Z{F9WdOX*#jDUZ22pQ>a~CJ6_H0_H
z8r)<ms%gm_4;CdPB~j7*gPPRfzbGY1E0x;KSVL1*#Poraf1trcPdkhF#o1#1B%3R3
zycLL0kKZXwod);bX$9G^ZV`+r0Y?fbOX{6vAw0^L$+Np{*NnvodoC24=_DKb^2p!R
z@ZmsZ-baN#303JIKtlEDW3=;(jlPObu$$6Jq>TA#O}6Py|8_2Krj6^>D@yUuWE$~4
zclv>Ry3$pWxjD_de=Ao81^b44po-ZZT`a&QuvM3LrU*bFs|cs0P)g`0o(pzr9V9~%
z9tYS{9$*s?mW2QleIs-Ex=G4`q7X3@3NQIC+1|S9XL7w7VFvr(pxrO^_9E=U?w0Pj
zJ`e;tF|+1T0@t6FYV&5tukPt;aE|wIKmVAq5$ULA?VH)O5SxAEH?;KA6DEE#f8MT1
z=TcvoN~PMTmn+1F`Z<su?%((-zHH<8GCR(W*i57rr;8_yx5Q?YU-`8)4S~*)alli`
z+oA0I{@jR=`TbsT<Dp*%noWl-W0b3heT1vvY<D-1Laacx(rBZqsx~W4vg9<Ee28-p
zeCZ;xI29N8{p`tb;uAyC-}hyhq>sl8sdr9()z6_N=Q8wPO$G7ZH*?drnGV*%^3URu
zG=130fDHh!xZb2BMss6OJAtNoo5d*s3#P}N(JSSs?b?31_MaUTImhu{DmKDh@V@)K
z__PHk5vH!@3G@W1zN!xG#ImaB_zz5{^W?qj4E=-h;oQoJp9WibSGVpGRxD9R#p<2Y
zS@m;5)nA<6eLkd*6h!+d+#Nn=G(IQiE{PwFi?eEy6NYMG9bYfsiWGsCAoy#F0M*-T
z{ZFa^b((WVE>l#cTKxK@92B5u9AHdgbvd{CpfP>&ymyoxS-7E-No>f3ib&&2(+`o(
zyGJGl$XDDct>0;5re`C~9()+Lo_TtBj~z_i_c@g2@1bxaaZ?MEgV=+W=rUYMHi~q#
z9c4RCxWyg1^fvAj-)du<$WMM%Vj}HGBSX$WWGLSadH?JaLp4s`*~gEm8i49>q)0>C
z4@S0XGl5S|f8H#+4+?OxPqg?s^w>A}_`qJU3<LSAJUj_6;@jqw^yzLAS16CqE;#0B
zbhU*D)6aq!RHuHEm?Pvc8e~LdN(ugqtoY4PHakzhIU_9W@P&pJMNLIegkrrvt%T(j
zjctUYmH3K@Ye@gZLB~p(Q<S)f&kB|vh=^TY`Py(`U44x<|7{#}9qN5WTI(=IrM-l|
zK@+=dMVEuZ8tRR7?ucH7SWoof9c+?5HNW=czGE@?a8EW56N?KrTE^Oulb#rmQvPFc
z#=x=%41_O=chjE@e^E-t6%Vh`E)9=fFY^q0sZN$%J{YWo&0Uiw=D)&(1ekq+({GDi
z(y(ZD?7OvO@YsJWwmjHVv~=&lC8@7nM^gG*+p)h<eu2yJx$ce;u{(MtEX~IQ*;-l_
zo)dW_dbPDpEH5>A_D=09fg~Fub!4HfZe*eV1ksyP-6kw>5^aZeleTNl?z1*0eHB?K
zg200!@(o(fdE)CvVQ{+^erLsJU@sc^>^3R^4-2DAYuqF8+cE2&*R?vA&)z|4;mKMX
z@!&gc*MeM#2gyXwg<$?`ic&BVXb|NkQ99-iHz`6oT@$jKe_3y>*5zwyrOdh`8;gfQ
zqU|EF0%^s}Z~3wO;jqJ$E=AGZvDfxX^^ztw$qBTRF=B5hBs-&niZLZ~_XyzE{({d)
z({eK7%T>1uy=BLk`8Fj+)HnO2uX1Clc>)|a+S*I(ZcXP1DkvzA?+!J~+Im&Mts|SP
zOts`{M<nU;;2FKBIG>*7cr+^uQ_m6M+{S`_n3I`4UHOla9vko2&&)8s_W^&jF+zz!
zADjyBZGvgn`j$|hXNT^^de#q|Pi?h=RyQR-w>;cj`?aQnM+&+g;wSermY1VmmSVlk
z?sjd0DVSzZ$$qu60OO{8*4SIA4$?+%v+8KX`^SdjwHCR+3`Jr{qhp`vQhVZ+Rx~{%
zpg>$@V#$D+g~@fr-g3W|PA0hPz02i;>JPO_<8{|`gmpaD`dA0Io!PU}o3eV2BT?gr
zv9m0{PZ3mLq^#9aJSbd5_1MgP<-1Rp%gPte9JKiP5>x7QIyQDMd{$6w#TYsLjDJSw
zaG#{d;m@DA0A=`&&)#C-BVVe)+D~ClkNxEQpjG84Sbr=Q?`*MUX7*#Y!40$2;9&L2
z=IE39x&MtC?pUTEdm$N(6B;WSae@Kr@?hKER{S1CG_6`VA!qrKQq~>i&J!}+2^nW8
zQ^nw-U8aTYs!OEDq09D=EUHU$y%{?tDl5YBbn?}A#n(3eoexOeDh&Z%HM$Sg^~B;z
ztA-!B%M7f)PAo3FBD+lut7v@O^Sn3__>Jp3x^vy}XrxqYqE**8MBw@gi?g6~K3Q(F
zUGt`wkpsBR`+0^U7VH()*0ld65B=cERW=3GjL0gYK$tw#=Pu&Syn-UXD=#@$zwEka
zA@=k`<_5thN>Z*uipMRMT{yt+NeWFo*umH9l?F#yY-)NEa<lie4EDk74S3QgAKrl{
z@htP}<F7>DSi5w=X0la}L@_d#+Kna@x0~EV=|C9a+4)%Ys1l#SwY?-w&woKQp4)jQ
zjhA}fSK0bQSD)SI)>BUQ6aQjn{eAzA(=aNeh{nZ*mIj=S3~IT9px2buOoe3+G2^T^
zX+!fHl!`Z)Y~$636HIfPeTU)Tkopb^W<Xaz(mWUDIzOby-F3b_uSJX~blb2AD+1Y#
zr%zgF+z>k9RL#*BhY7ItALS{atzc{;t*~vG5B9iN93AXQW$xrQUGcc&&Zet-$%gpg
z>Fa9<4KnKEo9p)TcT}U>F?ewinJ?E_G5V#vYFK9*wlJB?QRPZ?Z@y|XUccPCDa+6C
zROQY1`f(uzHpBUcVB&|?xB4!%Ni&M)8FHRCJS}<0t3nkzSS|{z5-5#MnP0z;ff|=&
zQe<~h+@N~Z^YQNqX=KEBmRh9$<6`a)x#hG|3QEKEkuwxJg&1@21ayk0IDxT{T_nU;
z`B$_!6zi?G)NtEX9)m}pYtqkiSach^?xgyZU?edb?UHUU)1`nPbeEPU-md4i@8v9_
z&)L|K7ndo}ETa3*?w&mV$V(wh6IHyS=!I)|Wu|=a&Ngas(4^{S&uVWZRd{waM14Xv
zFOxMD^f><VJN|YN>-W01qcH~d_W1<O<YaVEm#H^uxY1aSN>c{Bkre6M+`q<(VjlkE
z6O{@Upr2B#YcI2@Gm<0ucRZL`|C7rA6{0B%1IwNvf{j!MgK4OzS_Bh~dxobZtcEsi
z$G*NY{x`PoN9nVNK^*{%SFonr1S05i8kyc@Mpj8OawD<bzxG~9lQ#2_F}iFn#{JiA
zJAz>+TFr8#{gnnAj5yBY#`%_#PL%b9e*sjb!lp^QI~K1_gdSQ>$NsUyBXd<{d8TS;
zU>S&vKzHn?Qk8YW>v7-b^%ch2%g^pKwO+2Pyx64_fgJdp$`<tGvFz9CKFmrT{>ZCZ
zqCz=gzu9<o)c5$Feo~dYdHnt*p~}Ld*U*UC?|px^aZFRM$ey+F*~i;kUZzS!+RJz&
ztk^Vpu}07Y4Zq}kw1V|LsJuIxNjX(@EK;9g{#1Q%%QEH^zdaiYxxGrK5UTfmIS_W^
zT&u^OA9@-YXv}$0JGi)3O0d^+nu19h8l-P>TK2P6+=yOg2ed}Y1|NxdETeZ})wdr8
zHOD+!lbBEHJT`T+vo<Zs4sUh`|4@bOxH|AFs1EFYG)<Mj(~9J0TQy>;xp|dQ>$cUL
zuH28hCU~^koVuw_qHMw~n6%;S<=CH$x7dDhIt%wQu(zqy=5I}eiCyLTsqti%aUzN;
zXPS5nE`@4S^)yILCJ)N9+GI<Wi$ISH(?JO9!VlbH^3s}oCaovE3h9_PkTS;M#oFai
zP^X-p(<x|hc8Caz{MbQPQ^2E<oaV=UTI8OvWMB?fn+Ew!%bTITqoYYdXb!UDNy)=$
z^SFSbq5(!={F{q`dN|~Cf^qd-rG_VW%~^G?SB|klUqh=Mhx#&j%rf#Ueo^B&H^fGv
z{#9krQM%kXws7AZD<Sx9-{)ykSt9({96~gH!L9Qxov{)RB>|hFntKruG3;aSRcA%=
zIdx-&bfLu?{f0(n9Yf6y?UiMtPUVb&{a-WR(!PE9e(k2g9Xx0H5#T?V<f6q9ZW!y2
z<Pzx3Z;dUeZgo!>O<?5I7j6y|E@<*n%y5b;6KQW-;nFVfGG>a+Ca=T~vp?92)zF@>
zp;}}^hX~!z-H<l8*}}m7`Qzd90Xvv@G|ZcHWiDukk{;Onr{a{Zkz@W{2QDaPY3Xb*
zb<?SGSRlUp<TvBJxM4$T+6e=FA!bT>X-Q8k9D~Y7q8|I2k3*m!n0Nm3(O1#j7wDYa
zEIi;<HtEVi-aN@#j`$h*aomMA+05s)jv$xCxmN3(y?-Ao-!5p~98?VmS_GT(xZN`T
zk~q`Y%-OurtRh56qUJMDi>clS+#4kdh=1q#l6P4;X<LqrOxB!CbIFTCJv8qzztSEu
z+q}NER1iZe$xGc(hTZKU_U>2U6eQ!L+xzxq;wWA@evkCWPPd2(U5>|mQih+UfFJ#9
z3jkWdmTE>qrfYTiZL@zZc;inhe?9U|Yb#$`?+<3%hSk4|Xg@hkBv7){Hl&0WoAqp{
z{@fh2TOKt3iQCU}esbZRa?~#Komo{c)K&A?71XvjC_#*l%lp2}YLD+rX{hk2@@uf>
zY?+|p!9GcJYLwZTy>7DI!|`YfmxE5~p<fGLYDS?AyrpGt1Sg3`B4PGJk6LT_2yrQB
z2al&l_k3S$P=XDC!(V~eum*DR;Duw9$x<G-wS*D803Uing4z)qb9u&h+A>D2T=KA|
zC48d)Ngk-4^dh#eoF0V3nTMH-PF6{U*koHf>)+b%1mpPp!=18yX!shJ6|>v3<s=zv
z&nK2=$5BEz3AC$PH%5{dxx9~)5t(ykOoLWlA2jb#r%+fWb+sTVZdi=-Zh~HG&v@2<
z@)NNJF1{PZlB&{t23Dfx-VUo=-sXj70`~L2%~d%g`i4s7yK~6C96c9Y6!rNqlxoLl
z;J|cOnu-ek4g#=YgDqv4IUe(y_t<OC=t3IJ?rdr3`$BoEjpWh~Zw_sk9sA8(&K_=7
zvWrDWVTBxX=UlJ^oJwnOUWy0PlQ9CS#=9M#ogV0RU&;gP51&%vknHtC!BoPY=t}t{
zyj}SZ*~18fVCqoGBGE{g`7-HYIT)h;&z?3*KeVw_LG=OM>IF@>!W@)pl+u_8D{`{4
zjRTa}LBb@K50d(H*O(Nq+@g~nFi$n#<@}(8p1s0M&YpBH>kp!cC7KOeMUp@HuF0Aa
z`;udfd7cjhe}dU<{EZO?zSxo{f=mlUr@Z25cQ;odcRXktwU}YWhu<?oYx7MVON$|i
zX_7e{U#;;2XYkK!ou3hm-M|BpSN?uD<Z7#>ishLby<}WMEDSVr!PMx~CdT!uu+ft7
zNp`zZIU2WKlz0)T%o_~)Z6$Nhj{`16-+D(C>nck%19KiIY;5~Q<2;jbJG{O9)h2bu
zZCW9-_52!{vJ+n`I-`YjOZfOGj;k<ayUe4V-cYjl;4REd#>~i-I1QgKgbEo_Mt95V
z6;_uLF?b=_9<wmK^6qg~>&+WuK@;o=Ze3P+G0mV`Ga05HGx-${exm5|k1w3j8@HY@
z$&0*1xv0SM>=2qxINe2Ct0#lK;&s4whMql5Ki<{s<`?IS=eJ&fX~IL_Rw?*sR+p%(
zM-=V^L*{hL){h6zNkm?a#mb_kG%4z#L;NcHoNx{<da~Xv#_Jx@F0tu`bpO}v(-<6r
z+t_cnsFG7qgNe|2J~*j|&_wH#t;8nr8;+RixSR>JFRKsRFf160v-OV~_66hUlK5_P
zMB<|{qaseA?P^u~QT!Ehf4wVDY$5kod2*b^_?V_koc3=9@^&wePz<XsOKhQ7#TfU4
zm~0Ozku){-8;awIJ~cR)$b~3_G28qET(Fq*f6we0Q!gq)sHpF)-<rAxajDVR`CB+d
zQw#o{qR{-@yBUHR`yDh#F9o8BH++HcVCXh6`+4t}F_UIT;U#=m$~4jRv8W5XgPeTN
zW2tOy1VH(jn+iPVIjGwZk2pW%`+FAWaqZDdw(WKHPP&0jaWCvpJ}M7PT{W;~V~h&z
zSSn=CF6&mL%nWLRPG|20z4WTTP4-G|Y=8W5PV7N1<`Mq*rzMx=I`51hOlYxVWz`KP
zL__@%vttI!b%QH0W!3s%o{ESIE?<#wuI8J}?Zs}I$&P9<o|T3{|6onlkve9#6de^q
zSHx!}R>ZF8bU!msG5huo7_hX&$o@u{$6hh;H}&(|V7iZtu#fknad!BIuFHNk@lvyF
z|6P#42Nq#$>2eiDN(snq;2hDQ9k2aR+L$=lJMZU~N3W*U<|ah_E_)R9lufiq;AxUf
z%Lq-e#}R7u(3Tl!c6}@Ah!*VNGaNL~m51?Rs??E|CpHxn_pY8=jS&YO->MuTtcB=@
z<+)vF;Go_kc5~4<w7suI{7;b0+Y5_E_ajCL6TR2-()C6hC@1KI?<FfMY&^6ZjzY`D
zZFeh8NzKlOVbDw!6_1SAO}))z{$-k+wXXjp+4lTL;r#Q23a;BUf?+n8I~D0SW|`hQ
z`_SR3U<Y88Z3_HO6mb3p+k)I_U~X@;0|Q{fXcfOT+<6*#6gB1vtQmW9@cFx-UBn%r
zZg#UyZae=w^c~MU`N!X`YzKwO-p89?7qIQ-e-k7+|0O(himK#tx&ZYx8l~OC^}*%S
zZG?qz>rDHJC#HRFhAd^F@!3{v5MXRpGrzh(;!$UBb9wSsW}f2!6=}Qo`fP8$3wAE{
z_USrta&^?EeCcHMBz!6Lp{alTY5=kJItO!r_0j#T=;3c<5~u69kcuAX)`95nM1$n?
zZ%mfGJ+GP?FPjreKkJD9(bQ*~5J><_m~U~Rf+V#oJ{%m%K^F)xUAaHcRFXdesoI|j
ziDc(ACs*DGYDgEftbg3jHn6O>^DdYy!9(2e@NGt8B$YWKq9?wwzk-;EDpwr~sfAl`
zLf8^aebiC=6)~GiujD)aeQBu{^Z6+zc<UJD1k?E|(ZU2TFE(w)nvP(P;GccmVixo)
zqp|6$CR@3L%9jmh*{7mMh#4`WFrsi<<dtBVt$aos!x+n`bl#lFMDK43)h$0vh1ZA2
zcKp*v!W`og3X87?w*q11NFcSL;q};)^(OtXz0VS9D3U}%i($shsc#AWuloAyW4lUZ
z0jQ<=nJC3^3S@%kc)n<%*rQR=HLJcKZ>qE-VZ%X#^}}b1D02nC5YJvAM3gQ766f7h
z;{~i`CEu)pxhIh&+i2X9TJG0ib-}UwzTvE9H_a)Cdj&Yn(lJ^u90JYR=~~+MZ3)L%
ze{e!iE_oYyR%lIRU`5)Vh>QSneFKJm+`lgu3+i7RS%@ocGqVFUsY?*HSil<EE7+6*
zTg}uHI&_{2iygX=R@0%cOlKWm5HlnQQmdO?yRhqHbXfYm<EZ6OF_LBYBO2ofH*3W&
zwc{dbnEfvGlxu#69xi&F1!}vDmmRcIl*<0Q{|Q9o(nI&oZ=JTUF{C)btZW+T7G&4T
zVcVqaO*wlWE;o-b+apo4{lx*Wmi_4w`T0CdWbgRm6Y2LWh{MPw!ndj+-*k4(4%rj&
z`Kpgmkp_2?1wQgd@`1|Ko=u_BsNlHkVN*a@C;SI;XAJPxOuMl49b3U09>wDHVL~F@
zbR`C5svb;S*`xAUgKVdt<`kIo{G-0#N?|Y7%PwQo-^|+hsR>_`3&ntrr>e#P*^rLD
z?)8!h`H}t^t`)%;BcC;2Gi@AJ?+vY%;6^yXu1W)%&m&-ef%|+bR=-v!(w~=j`-Btg
zIP#R2Yc4|m!B8~mWb=WD(d#o6^$0S2bi~%+a{Ea`6he|yiU9mt3y=j@NzzF((i#;$
zi#^E;h(icLY6^M?vn&m1sb+Ap&-pWdW~?+DIWaXnb$Bu-9nTc%X1nJSl0f%O&6|t`
zm;2iVDY~SOo9x-5kEf?4)<lVRyFFc`TB%mV(v?x{s*Khhd^5|(mDtQ;yeQp~otU<>
zWNxRxRHx-`FExhZ6QQK}d^53Irwa^E#wJyZ_mgUOruMuQ^E)4?4pGrxity&5$*JQ;
zJN}%jy2B&sBXhc`O_8bn+!wUw<-_GYO+kXr!bJUMwY?*<&gl+`tW$47_HK+WoKLiR
zq7KdASayoW3uJ?*p4Rt#s@0S$jJQ?NK?&O2-pR|d+i(lg;2wJ%s{S#|M?|Tsk%Os!
zz$~2+ETma_uH_fLdmx7>rtxeQ79zp+k<4{Futj8QD;O3xL0bPfbAvIMjUpTPVqgRR
zp*<)fTQf;(|NDBEZ0Cnwd^uBE2E5+lApDb}*J@G=*;zsh*QwdrW~*mBo;TvwZWpX_
zn_xjrMKhl~`-)~5i9I#4E)nMwGOvm&pQqsIMMi<n79}}N8+|TgrLeTZcI++~V0@1F
z{V+jGB6gaHlO2^eU>S0O7tBJT3Nk6>UxhfYmK?0h-->zrxr|rk?{o=}S;P@csWm)l
z(OBq}V!M4wVp23W{Qec~=J-QJM9P&csf0B=E~kHKQXAa<RSd(S-`S>yv(6UJlGeou
z;>UsgY-OFVYD{coAN~9*YHj$ukZ7#r9PhM-1HpSPQ~Sb=p_Y!1$0ShG@anwzZ9^T2
zkhJ^btklzLr8neQ(p{Bm;j@|F&w<@E5OW9{K_x97aIY;AW214cQ~St$4v!_IPNl+1
z_S3>lXUSkV|3~9Wwty$v7KS2=Y&0z-U|YZ%Yn5da6`)V^^Q#aLlkid0E-zQB#_GoY
zH2kIKJwDZ>U?jAPyG~OQTTGtB0*_-B)4{Ig+w$)!<ERD0d{Jz_gP0wj+|F}So5v#t
zE$`F(b;Ug;7m;745xW{gGeE6bWxg@--l2(E6f)1)ZHDJ@pZJ@4YfZS>`fQ0-sITIZ
zBhSaORxaZ6<}K8wGdvU-6Jo=&p(o&4qP0oU#D>sb@7cY+*O8X&V!3O5nX&$LZ2q6m
z+2Qo!d*0mjNWOm@!+Z$>2p%^rz+)kWH;-(T-z0wQ?e=NJdZ0-{u;&2NWyCmtfihE5
zi?3D!+k|q%gFSl{l|9h^V_mrmnTjDzFoeF>T$V%YTf@{Z7AN|-SolY+QNKZT4;yx^
z)U$yZo8(ss5m7t12~uJbr!9^vH{@P?H2n@>A@%B}{adBCb9d5PTYJG^e6%8I!an)_
z#~(hO4(?eL&gv?()%ntI?-xNQd)aYSx7**4iY*+LgzA<|QZ&{0%7w4}DcvLC06IOB
z1Y>yh`yk^e+9j1uz-!c51knXd2yB$E&~LHlc1j_Ot+Wc2^oyl-aueD=t|SVbjrC_X
zS}I<fyuXvG|JI()TdcV|!24$*J3aE#DUy?*T-Yv_ToUWL-BLZ>W#)p%Kh4m5?BI9>
zL6*XibZ!EU$L)f1;lhX~4}YedYsmD#h#WVqqE0+5$ZdS2&pay;=^qO}$MK>1Z<6(Y
zM@6C{_KYqr*dT9&(2QSzE&<3a{(tdLh6vCLU>O1`{b)PJ_o&oe*jof>_N$7o;8hak
z|4$-h)|?KynpQypcl!A^TEz=&n->X|U;m2)8NDH0;&ee4=K}`o2tcBz_kXvwX1b&x
z$wCzbelGOiMb+K;&~Q{B8VQRBE<SaR=K{yvfZJ^7D|!SA2moxs{_keP%I+=9ZQ<R0
z3GlCz#tjjy@&~R(l_n<`?_gp35_Y-(fq>uWe=sJf-AF4+r$2B@hJA$K2pgL4Lc~aM
z{cqJmR_I}vF8j-%JO&X6bHUqD(nkM((Zln|Ym1UR)oc<vOf0X=b%R@}C$F-cQ@KK5
z^n@L_uUDT6_OdA(<8igaC9EIM`_PoNMG?WeL4uviZ;2Ce{w3-yGI+{#T$&Yv+Sboj
zyyRe_U?Bq2zm+=XBMJ>!6}WGdjwhm$(K#d$_FKM<WebSfJq+RPSEBDIk|iU`pu=kW
zCCvHM&z?OU5@=E-m)IAb)#Fz~AAM+o4<ZWM7x58L0?;oRU#ew&`8j-y=&(wDH$06`
z#=Eb$l0RIz`ZpgW?qkD?Ydg7TGJ!d|&a)>FnbULnQ)`seC&s6zm1&0^jE9BrR-*Ab
zkonUQSj=5+sJ@Uh)8+z65682n;<@ZrLk$FAEwWh_55eX0-&YXoV&4uB=@SVA!2Ny9
zJ_cs=!3S-0UfE!dW+H7`F{DQ<Y3dnx+Lj^)BgLzkaxhBSRb-JntZI2cgaHz#CRCnA
zQB7!9Cw@nKQB|f3`=H|gl7M7$20HDMGZO243(^k>9!T^QSlLD@X{-JlOu=|?3PS^F
zX#>ZtY3)_JRR^)uS(BTP=yD$r%nB|oggx57@A^EIt1$?|V^%RGW`SxCp`hn5MU7<W
z+M|x!mv84EVfeIle^pukq?5Ky*Im&Gz0~PylKN>7sK?OYjr@x*;`Ti5>e2!d3Qm%6
zqj}TGH4Jxx7;>NgOyodVyc6^NH)Q^-omHdzV4S7;)hdWgBpiZ`-KE44^xj=KHru_O
zyu0e!E7rRtu}~OI<H(U3m36!-It2`^RY-T4YDLL46aGN`BXHh>tljB~6W4#roc|7@
zF3#3Gl6s?qaThe-A{THrV<_L7yua_H-J9}%!_%Ac!;K6z==vD48r#2NZ6WueVVdXH
z2mOrwKDwF>z9Ewr8&Sg?Dww??ae~sh*+&$4SnX0&s2*Bn@)z|?Zdd8%sx6@l_GKPH
zj;OiWDbi&=CMD8L84LL~7UQm9(=^-8oAYmlX8R-VpPTosQ?-7%zbf_fN|yZSi#W>M
z6d@6}(IE#WnNj8s9vHD|N=wE6l<Or27@L-aklT@26puYKed7hF|J~lE)(&w>kyt&0
zM}gB}Xuff^B$Kp5K_xKncD=KjpCOh_){ElXwuv$r^A4R)msX<4E;IhHQWLv(({sWy
zW9rLdmW?^YnjIl>^S%>E^gWU8uW)*!Nb(`ZV<8(?Kv+>W!nLK?C8qSBE#ysnxB+FZ
z$c}$M6)v`j9E2faZ+|_BYfhl#wn{dtRX@nrJS56$dmrPPBgH7&(+8|`RPAc{&^3*R
zQD=S)Oc=ns7-dxyL!FP2sOcAWds~Nn-ZT|T|32B$<=3NDI06hej(OnL&(jSitiubZ
z#j}|sI0i3~n|DC77ZRyh`oYx9Vv)Mz-JWBd1wq#09X@`3hmSV9JY0mw%0;GaoX|1+
zDGtv#+-XA7QO`KwV=|vVL^G}C((tO&xYKoCPf%=>y@&dt`x(q(w71U*VRc-Hy7xU~
zRKL53CkHxP@d{}&j!7UUHkw0bHHs|kxfL@@`U!r5|168L1I1het@cNz6Fy8Iwe>4{
zALmt4Le1FOd$dJOT;bA&Yx6+RD)rF*uGs$l6S*RipMIl#v|Nz9bPwz>BMZ#qtk07!
zFek`syps%Eq9@9K?j<gOi%NDE?f$E5a4ldl!hyk-S%35~8`EGy`YBItic{eAhZ7&7
zVRcPDn!5x|FfU|WuFFk&Or9p{w5yKh_|RLIB2tXk@JTP~qJ+NZNfcoq#f31IR$p#1
zGRMtkHouuHaw_#%WyW)k-%`5anTeV?9yxEc2!Wdc!DcZ=?WAeS>IaG-TNp!pQIIW5
zrPYYffR8Vc`0;GUpvrXR`*#^Ct`VtQPHzGPO#TH|Iv703_|KdrkERkeD43-!XVS6D
z@}^Rwn~eDO)_At1DC_K5JJAM;dK`eNrPpCf@KP-;_!5Z*3)U8$S$k}_%rY8C8hTw3
zZo>YOl{b?)IL^#3ZVOhm&?-77g!tVc!3AHJi}u$G+GXy0)NM<^CXf@7TA4ng;!Z|E
zrngQTKHBw<MB|}Z<4(S&UX+3?#gYjnB`n`{&2zoS^tf4gH(q~ao}|-!*nweLL-*8E
z58RaUe3O1X#k0`h&*}a~sGdJuW)p`ZM~9apc}CGWn&eLAQ^#>2Gk8X6zcTIicuEHF
z{uhh3whQK4K_=~1c7sw`Pts?0eX;oO!5$)jXM@6baGmXAUB4?zjV^r5T_vQg`5G?e
zZ;sE*6Ztr_q?zN}X9BPX2+4GSmRQqp#7BUK!}Zo1wG*2<?G>=|{MAQyq%|uwne!rn
zN%i-p*AQJsV3(W)CR0GM*`HZdiyv>MmYJ@99{8~dH<a?=>l5B)F6HC8d&Z7mh9xqW
zm^B%L5iRFb&VBFhW_|&jc-;QI0$nWPy#A*+2Zw&~0Y`*a!PJ(bq^pPIl;4ZSz1QA5
zv3eg)opZU{D6h2VmUEZ0+Itk?yF`ci+4Q7`75>55CazQ)=-<@HTCY2i@~YafU204R
ze5QP!6aXbNm81-5%#U!_!O<=(Z9?z4vrj?XRCr1ImT4Og9eswQ_Vi)mws`f2#l5;!
z1gxKvQ1UT<W&<uRUT=wJ2aus3bw6(sx4`rXERG>CnU=UQCk6R=kY00rX}n!#ns?j#
zYLPBkL+|NlZ<h1Q8jjXY$e^`?@q^YjH-}=j#a^grqc(pYskBG}(R5EtgpAh4*^ewd
zu{%@iG@d{=4Gw&SB$;DGM+EF67{{h23~C(-$c=7H_?{aO2YV}wU57hKSVL|1D%U+}
z#Yyj7HYfgaWXKuAYeEDR58o#CohPQvNM$U_7thcCsrSxvt6r%We)T1lr_}B&8j02_
zWG;3^vTIE+RJ5zmR~KbYs~6^2EZ53Lj8M2?D(QaJcU&WX7_5{MSp-_!s7*#>j%h1I
zw7PtpYZU`yTc>x+4>_RB?_RZ!kV4cg&7!95I9ND{D3?JjWR5nr;$F{cy>)-P{-}2b
zKT9J;2Zat-h7?42xC%L;lmZ^LCa7>fGB?`kGfL&jvrCyd&5uoY#(6G;r)E66eEdmx
zR)5w$u<|Gw?ckV~8}IB^Gt^~L7BH;vYL~v6W<j=BaY#DQZmWH*I{cTcqTCjd=C37H
zCO;3<F?iA|mk`X0Hn|IyBx`JzT>UY#eblnn2rvxHQ3F$Rr(3bH!9fKNq`w=Z&|v4Y
zA*Z4SGfxsod_{lab;vZq;G_OnshzpaIzYSX2h~Q&U7pC37KnMIwRs-p&ckQ4|EfH^
zdSz&d<t9~f|J}ah$S8oT#)5QAi8li1Rc!Kfy1||cKr^IhUG^Ikm>eA0m({Wp@IwS~
zT=doFE}zoL*@kqm7z8F+j|2*O57W>Po!LIpj&!EJ$#0>TOI)zxt#$P>Pk`xz!vJ0w
z63e(JBMRh&4tYR_RPc$D1anqArRw;mMfh8xZrWY&Z;53;r!tP4P<6`NigtdA7kY_M
zOrBld>-R6_G*MBf8w?l~P4Kaj^AbFmWrvBJoe<#g*z{VRyjzO6V+qeoR7+p2=)WE7
zN6s?L=zrls>T%mV@1L}8oL8dHVlxF{7@0}aI^4A6JTx2H^vobzsqsy7(&(&RoiYjm
znPlh>^_4GWl|u`3x_0MD^!z+vglT)e!p~HRS;)y80Daeu11S!$apN4}I{&XB6pMBf
zd}tb>e&>|a11R%wlnUtK3N2nuI(b#f_Og~_26s^k^bN9>+Hw~WrTi;1gl_b8{;@fE
z;b6g<j0xHq>@iols&CNk=+c9eq<%p~0W0WPhAz@+yVcb)hW}HZ*MMrqE!+mcv{oK+
zg1-WrLiYK!XR4YJiD$jwuRXO|C&Bg|^+QN@<6jSfwEsasV@;MjK%?vW(lBqntEZ}}
zYimS1fLb_;nyn#<$nZ5FQ0Hv>T5jwY8U?A7u-{BD&iKPx@HqM}l!B1@Ut591n`iOT
z)KP++i~mLXzye@CHEJPI7Po#Z;%@^39N5DWx>x6B?5+D3a6F!Nx}7cB1tUOfwWPRT
zH7&0;hd|4sq8R}W=VcPqpZ{q{RL7`6z7@e#M0tYYy~z+7k+a3joLWy=rHZ+E$X!Ih
zj67>^SeP+|pNO(3Cy^7zL_=f#lr-1~)8s#n=Bsv)EIEVEMPO7t94_2)$O+uMx%Ug3
z-sbuRNMIwvAxran9XHEI{cL5BKI~VuS@}<GxUGZpL!<ko{0VM=)3cUM1p?FThLC?D
zRh%f5=i)6Fmt+dZ#Mdv)V2xpYFAE-;#Xlvs)7TRM3y;Tmyv<>Afyt3B#%pe$7Ad%H
zKr#K9siK<eSIQv-*s*r1{jA#mnVF+gVAOYYa!Tu_c6~*8_o_Ig;;B(U`u(ox>oKm)
z$0xAH-<HGO_M`GOm~u=PFmJ9erHx9(?K9k%r|xh1Ac+9ekGjIA$B(9&!IuxAc2o-U
zh(wSSyI>^Cf9VSGHuw_-=4|rO#{Yl^P^+Bm<Q!qDQha#%ax=5(w>(M(NTOY$?v{Rd
z8X+7Z0-4RKYi&+`*JJ%QxXCe2@jtVVe`N|9l^@D3>9jxGm1MnnTh3D2Acm*!ee_Zc
z<jt<@x3+Jrd=2_DT+VD2nRrhMtRQk3*%yxr8$QVVxE({db{%D7l7QQMk5~m(9ZRCE
zeV9LlI@1FPzkpf&8qNcQSrao5BF(y)w~5ppw^1(o)O}`ReDV&la(ABiMX*6_Z1ntN
z`gpr|kp~A?L}wHjFn_K)+m47x15$G<Z!47AX8j_?AJ~3<8xKe0l0=2=d>rD2haGc?
z*@%xWk&wjjJJhxm{K=j9Njr3m2M$EbE8Ey+B`*Skt`LaG{wUf>?iQwO!NBnmYTTv3
zE;ktmaNHPyj^Q+hsv1@}a~!0yIhMRE=x`s?$VmagoyESeI)Pd#Sse`Gj$5rQ7duDJ
zOdKb27P~D#+W~TN(hcLO!UP=tp77|Dx$=+orP;rf;X@E$#t$&cGTZj}7s3GI4l_>i
zdOB^^WcqH#mCMuF`o^0rIdl0*=c%`#U-FMn2P+bNWeFP3<>Af=%RPR?=Wr7DkNzi`
z02VTo8XI13D0t=b4D2%a(z~xo&btxesk|<xAE{t<X=MNp`RS=$wgiY_3o2f(|MFNw
zmwQY4?!O>Fc3=&x5H7TPv=*(pjPlOtTlbpq@sUaBT2zec3zjzmE57e<#x7Cl`2Ea*
zpq&h%tEOuDvyPf)c;J7uh=C=km;NPV)^crJIlG%rYHx|E#7dq(rs;*u6iefUd8x$B
zbywF~3QfLjKkT-RS}j8+?n27&{)PsIf>z|>Z<SP?Z@Z#3Rn|8?zYkHEX_Tg}76aRO
z!ju*g5tje5Hn4Vs30f6G8DTX6Bnj*n5UHaw$p>DV1?;_8nO4u)?bAlwaoJtaPw`6Y
z2+`@_5SJpzn(+vsmO4iS(yuN$%ZBxCECz*$b}Yk)V=L{dok2?cl9c9DbBM9D33=L-
z(%hs4wB<Gx<?r7?#o=4)DsZ2Ib{ujWzkt19d6`}V-IA?Fa=Ihm*}DD?7w8pfSA);3
zBBy*KF3--=Cryq*nOGO`{9;u-Rt;XOFA|vPe0u`x#Op7W^3bTCc`Uf-nPF#h4hDq7
zM|@!VpWcrowox;Rp{F_b)BP#qzq32@WgmYy#q5}hPNL%(1u0bHfPxQ{;wVL~N{mcB
zgYEBVKMEa!>5)_UDJtFi@Bdc7YAz?}F#P+491f-9#rKq!nbar|ebL9j?_B4YX->Fp
zYt|EC>e^~+?VOu0hhT6(Z@S9Z@JuSqI<p;_B++_iEKXjajd=%;k-eqAo~+X_Ma5Dv
zqYRXRpjB-GjM$FK!^)$yVtB?`HVuQnkI2Qu83@0isS}*0#Xn_Nlk#C9Yz#DgxZ;d>
z@8I8`G1XBlFS{~Yi)bAWAd}dES%~iIdiHS})x4%u*C=H-H>r8$tPxw)uSsayn%@=6
zx4}GMslVN)kq1d~cC#5&4rJx&I<g2zrMoI_*UrgZnbLTbufuxu*}U6?$iG%csiw_`
z<{9@t(P#W#UX)%6r4LVF*M(kUA<=b{!%GbHjfQm@F%!L8q2*zM32bw6<Vc_M=fr#G
zWHd1+i%1Oi1c3QXChiv`-i^=WfPY$%JZiVDv?P}@$K1HMqOMvEIrO|(bUvnS(L<fi
zFlMK0tntn<u8b#kUwI^p6Id&^A=m)Z_qX5kNa!RH{$r%T_Mzh!_;=BlcG2o5X3ui*
z=INArwyU}X2y6*~itdkITH*nilJglFge`HD_k!ju4@85A-k(KL2v<!xQA~~Y(!i{N
z&=&6K!N-d9tNUaQzb)qBJDwx_DGZOLey*cS$9@X+n0^rISUg5*U_u0mq1>QQWD<n9
zCB;kQ$x@UQzA|+0*vqv+GP3s%D!=#KwrfBz;)Ql^UOnmZW{-f}!`nQOSC46~@L^Ng
z(&xil{=l8BQT${jYMst(#FSeT<Q{V$a#6TmFE{4Y7N^FtJaliW6+~d-O*!J(QZVIS
z0d_XLl-<q@S}uGiw{n*+S9gBjsX8su?ar4Eradp4s~XHImH#<DSmrytzrtKB`S+>C
zlHTuWr=KhG3-I+D-o`K9;XL+%I;A5>Fg97nPj+j*<)7)%cp%X@pvnFtG6H54<PDv+
zc(BZ+xACDj2|K^Ob14<()(*_d5F(oFj{nGX3OX0Z{hQYY%7*kN-8yn!aUMy<i2y;2
zjn-K>7*4G9V#Y#lj0SbEphf4f%eyCPNranO>4&~|J7C-=;k2$?qz86wd}_VLmN1Id
zG1e6o4R8@=W~$BFi=ju+D*g>RWPxBCn8{9VnHE1;MT;wXvs`UX0Z$)-G$7hx_}bv#
z>4$0O<>n4F@bq(KmdJuGF^G|zwWh9H8o7OZ5b{1ttjLJ_IJ%*VOPKLh3H)_oQrtUE
zM`kGvfZvn*tzVID@O?XrY*gj(zCM>mnt`_DYCT@OTc$PrH{;RX-JVR$AIu=43Qz}k
zSDh7Y1d30;#)J=DK18r5XqJnS_MMoX5i)F{2VrJUs|H_3!Ln8&a47YjNrE>DZGIxY
zL11i!rvXATFIg}VD^|bDEyblK&S;n-w`Gu*v1Q-GeC3_|3>zJs98dZT3r>EtTTRL1
zdUsy<t-P3?vUX^0AoLKKSlsm!C}w$O7wB2bPFORza%X%_I8<uMu~*_iAKdL;J>2AY
zpt=07*W1_W#L8E^_*@T-M;kieI(uoXS31fvAVI~RADh}KSld+FUoiCYu>fUSd+HGp
zj*|$crM%`<HC8^ocV8S2i+1M)N$};Gbn>iWK{}=LC^;ht>@QgKo1y{##j6rLRn|8(
zz)gNJOLaTvQ|X6fM;M2zu?7_YjN~t<9lnFu{=DKt{g!r>qt~U#%Hkw`yFFET(=92u
zWqTCfIG(e<R3kP;p5BH`y1X?#+yb%0lyarrCxdc){Xd{X3gYWI_Fheg4hZ~&82n(f
z3a$lWuKi6QG+t!i?THlxiu(U5Q8*r0{S)y$D@nZ752eq>1~EBs;<Yq{P~zU!n{eWB
z85_$+cgkA19}ES-&>;A4Ub{OW^u7P3#qw~NABPI3NF&pE9LE5BDy!&vfoXp1PgwwQ
zy!9qvJ~gFL7R1Tk9I}wR(8t9HaCG4Ft4$-VmiZaW7y-UR)fBUzbuTfbl=<40&Gl!j
z>MmZ|YOjk6b5eAJLHav<)z`bYMDM3MNIPMv|GjT|aX4%`^awZ8;Qq36bJ}Xuc)emF
zQ0xcGjeBhxd)WT)(cV((*Vv&7pJCpIc;bTjV6?;ktFbeWhw6R*{~3EI#unMfzB9-Y
zLz<*4l_()g4I=xJT|<_!OST~tMfR=8J|XK!N+jEqJqeK|%lz(nf8LMZ=lA>P`}qEK
z{xD};bD#U%_jO(8^?IJX)5sq{)ee6>`q>C25w(VSr{RFqeCBx3a^_QdmHTIRFo<in
z!rWCx4KWR0%vSt>$oQrIEHHW|`aZ}E&sO#1;ZA@s0pAlblHH43MxEnttBq@VI!j2^
znk1Ur+SH&E>55M^F%!SJtC<gcD2R;Ux0h&^mU&fX5eX5{H{e?GEYiWmTUj^XrCTtT
ziAV8;WwhGet$_qDvVyS&wiLLdRm!B)byLvLT*)MMM9ZC%>c8%^!ZEUQt~etJ<=<~%
z#TbN?1(|0d2NPAdHG(tr!{O_{(qLMCO?!wcHu674M`XK@5j<3)?89rmvN#>+NO)Zl
zlo<ZZBm-ux(oFR(>THhQmB%J6VdMZ5Bq8&bX+_ib$xokF7SJBp=6h-}MiC&0`zlzy
z90GTOS%g94RbZe8Jp%n(U07tp05j>wdFzpjq^77kAWWy2i3;(LN?kJ$({Eb&DLUc)
z3q7nScz+Gv$WBIZIJ)lbMy|Yq_*)|w6;()PYpwYq^9M^LQu;!n7iU)92$GF5)2_$3
zPrX!|nE@qyA!j|MQK5EpCw}z|ki4xMeu|@*7=Zv^snE^O_vTAk)o(ZO79!?`8NjF1
zC?0IFM(M(U-DqNaZFH37@5>t1<C~^tVl>=7sla3T9hMwh%_KeG30jLEK#`!Ayi%N0
zP7Uj5N@p4lc|%WeG<3l4u&$H*TjXe&roL`wOP1NpQY6G;!NlC_(Ugd@w!<*MbHK>b
z{>jnsxiI(6r$2^{-!y$l-|4m4Q;34$RMURUx!ZSc+VwFfY{5PQ=eui$$Dijlr<vBl
zc<ReMU3%%f^S9L!O!3p?4}E&CMr~ynSlwG*o&tLF!uBbUPWBk9g=ke;Sx3dx3*b)V
zQDL+eDXTEj;^D)Y*47!H{4x1#rSF-hFm(91r{UiHJ9-zx3uSQjRn@BtO|_b|+RDec
ze?0xeEZ5%OWy}>H5FX@54m)F%3s%aFx#rbjquwi7g*C4+SMPXZzb%d}E-%SmPd;f}
zoN)N;&n7)~Wi3?31s>>k>4yOi^y@*PSW)81()gd?Le-m*F(n{pO0LqL@r^$bNW*s3
znkz{Bsox(x`#bWM$j2Z3=4W@FwB*62s7Baz5xOd?Hm&td`*mghgim^}h6*vntSjID
zGWT@$YVo^-?nO8cmtRoh`98Qeq78{~0{?JqM(C-s^fWJ@hLTF@&wekYdDLtsLq#nc
z`PQq9QvD9a%F3Sr-$Sjj*7ZC0`UK7;uD}SO6pwAbRQI|(hI79TsgOH){l^}8JvLWq
zC-RfW3x6VzV86q(Hi{)IQ65!*%%)q^AfQpH6&RVLt8S??(TKiyBRjHxv0WTI;NJ9e
z4~i+jK5P(){&ls1hP9YGz4YL;tMfU6it<#s-{IcJbFdBRSqmVZ`lYSz{lnGlbc2(H
zf98*uD_w~g;As}sT=poc=Zjh7%N9C+;d78|e;-v{HJduyazOcec|6=*(<{5h`Q51L
zvcYGfjv-Ir#z-*#Zujr;V={i)Z%jP%ZWQ_x6TXbN>CmRZW*eICU1JCCEjhW|;ZoL(
z$(!!`rtORA>)&FA-sePs-Q%_pM~ws7c(bw8Q+i_r!>LYs0u_kotMd;G9#;Ok_F(i+
z>B*XvI*t4RGq=>{^sqGtw`ov4b<R&tuYU2@Iy@2%xwGebv2aKftpX=>LXOm5SV;GX
zlP_N1q#@0~(x@4zcj+C&0xW2ap|N3mmAkt2_16`5AGy)r{@5wUcC|dHc)p=-faZFP
zs-n8tMZ|ED;e}R5u-uFAofaR}G}oxEzJ!?a8lQ~(9vI|#7`IvU&bZ@>1nbQH4-}ua
zAD5c-Qtp?hwO+x&zNRbKW$#>#XQK0wG3d5pN*$jw+RmRY!_8g#(Ues*Cx#G@nJrmv
zDn7JH4*2E&CuC%8-%D6CcYv~!X6k6MRp<mZvm_4yYsI$pe8*s?;>X^4+WQjN%&a|k
zMAN6qBi;&Q1+0$af;L)(T2}<F-9wa!xjD-HL_Az`nDW?AW5cvTx12W(>On^q(98-g
z|9JKBY-r-ub3@ryv;Id}`G=!pW)xz>-G$=JGqlwb6T8|+V3Tu|T5;!pZPjy7rel*z
zxXH8h{)*o3jQEKiw%3jzZE{OTbimKy6_88=;=hB%XA4aJ<XvaK5ZzzgXxoFS+9`c!
zuJoe+;K=}g=3pY1%yzK0ptBZfFHrIATy}`q1f#1M)^KpFopzm3g|?e0C{=X^w<L*`
zf=o`tM+)%$K&{A>y&t0XngVe#HlIgu%CKpSdOmCJq<Cm6`pt~{w!edVDpk`x)Htdt
z?T^`{mF5^onME#1+<jM(T4VjBEi*xN*6fp~%S|uSjWUeE=RZqk7l!ZIoBe4rPvg=k
z`q&&gBz^eY#=~!7)q0Ynd7{<a)C_v!mB)06qB`~Lva;3P=KP}KSTAnJM@MS36o%iT
zdCH*cs`^2e)qeNX@xQBB&`L?#-r9e^ere01GyL%xS@z%mlyKOoL<7bCeXtigUh*0G
zev{dTQTXON{r-Ggjf4LD1l7Xk4_gk_NMq@pS62M*0_0Dx9HP@(gIcG49dBR!?&mS(
zwQN21HUH$OSwb8~kR3NL$G0*NoZ-cSrMyHUdQMXoQLqe!(UWqBKP?JzxY7T(x;r<i
zo8%T=vR6^N++9xK;n4pQockP;tZJ>^*oiz#Ax~6Tb6>mcKK%-5{iy4&eJrVnH8pW!
zw=d0zrkx85y32{?Cr0+XIzu0bxjeIY^ZDwQ&#$ob)*NQ{nVtQRApRNCD_}k8+_yx;
zjHPOcBqqoxI<`%&DkC)Y(4X*oDJ4&nnqJA!uiHXly~N`JJ(etX+K}wcT2bIN&+6+6
z!>I{&DuDkoZ@fjjR_>RYy0PapLFMBe^Mbl~vrb^?^}_Qzbn6S#vtOFX=#H}wiVvG_
zT~oapg)5-W#>}2x_JtL@z%1rc&8xmUr9ADnuQ0U^8|obL_@>$*_jv|6y;Jdu3=-vn
zhYfawr5^pidKp~f_l4c5){P<m9CH3gUJCU>0y>aT*2%bN&t`4|)4Rl<kn~!wT<MC6
zi*!)M<2kgvgD}<mU)5&on(bh7Q39?pim|w*aVNl(5)hDs$C}WMCOiA3j4rO^O-Jpe
zJ4g+78fMlSe5U#^U%Or6&T`U(nnC9wjkezrXdvt*P3`T;nel)gm(tEf>Gl`-vugGC
zpMmNp91>=8j1<vFekn{`Z7b`ZQy#x==T99Fi34gAPQn<3#brQma`7Ijz~xI2MKrxT
zn3f~9+}VBi`kFPX!Nl<bE}KNf^(fkFg#$4XtD8gKT(_I1>_<^k?}vWOQR;|_{mY`N
zzd!G^dj+2n7!MLUWy|aNrs&7*WEaPqwYfK%tO=d=gU9LJd$xVTN>D5tVNB+92=5ja
z(?%1Uo}JRU#|BbmA>w6#gL4KJGX3q)4RTktCEG$|fAu-MnI-Q1^sf1|+(JP4*>uUj
z$JI6ZWUH+E^@x$OHYMLmGNin}>cEm{!w!4XRxRc{Eqpq|GsSq;4v>dhOFZ!=E6*L`
z0@6d+lAg^8kJl5t<Lc~tCRuN^wYlE^n$!wPV1e<kT)D(7*W+64xuc$4eMtBjuL&p3
z0gmNAtiX`FV`SI+nH!#xGit4w%)fRJJ=<{A!9cV-L;8oG{TIV;w9a!?-ONyzz^3qT
zyqICedcE5O+u!$3+7A_~mW7o<zO^`8<ac4rB`AE7PgSQ1Se(TV#~QgL4C(PLVU4LA
zkKJkm`RCL;i-6*yDE0Dx%w89ZKeAsHQ7$gNGoW}oT#CkSr1W?E#P_&9l6i&5)ST%P
z*@^(O?8{NE%~U>7t~T_0$De@oLie0uu^a7flyZNes>%gTfaXgv<mf7KseJsNJ8S*~
zgXxbyR6ffV6yAc9FFqOMGUMJ6iXUt8oXV7E0;_o`=_6>k46P;7bWvTCl#<qckWUs(
z@~v!Ce&Us8oir{Q-(+Gzb0m?)R2ctgDehI?qFGV$oDATLFg}dEX&08+yWZ)kV<9pq
z_UZE(EW{K36MEqh(WvOn9b01?4>TPAIOp?FsZ}_tYfJo|$ykkw(I@gcn+9Rk(ec*V
zC?O0>RX7Qkc$l4l9=fCjvVyIc$xlnU89A43czu0zWOtmtaN`^2&n{kuq^+~>4SbWk
z0kK3+5wx#vUp*_N|Mo?h)<=T})n>@Olth(=mnqyEbP*zfDaw|u>LALZWWk4rxvffT
z^v5h}s@X38TEexR6nb8vz6t^``}ij%vHMXGtDp|`+eezcJQX&4AhCMro~|x=8g+k<
zYH@!4vBPteh4gYjul|a`HQdl$9tO>;pj`m*tT-q5DkQ~8D$<5ZvB!JTe5sv5RT<Py
zvPtk)ejL{P$Z?=_iY`L)`nyBVNH{Yqfb*!iREA3`Miq2CU2&p*cz=GO=qHW;M<qQ0
z;|;yD>klnQGVvEalPm#`B@h_ns>_Bp>X@7^Q*6~28a&>3`pS;yx|{L~Cp)S=5>i*n
zruPHCPd-P7Qz68&YoqRahfoA8E_=D~#i)fm^3)VMg4BIiV8p>30F2N8W0-Z^P6u11
z<dZpCMAschgh5fzQ51e{FjC7!l|FZhe`?t8SqEHzGydJNh!nwu(X+Se<M*bIk;EMH
z=t*KeR*S6Id14C#!4&dm8%{7{r~|ApMk<<!N8(i-m<O{Kmmi3u0o{r<B-M?!o{iu^
z*@QhSrm=YXtnrUr?|Q3=&lqyvUb%By*>1$(iAI=_I15E>CTdVm*$h#bHWag6_B9bi
z_IdOgwK_y9CQg1Ekv9)(3iKZd?S&9<y0<UiD4i{HM>UqKvs2JD45+>U<^-G#&6VZ#
zVV2Lw9UT$g<+EKxdMM<hFFy*f6qS68>S^H>uxdJ}w2Xa-&Gn3ZRfqjCc1C6KOwK|{
z1K?a?e5fLwu>yp1y$;AqLe`#l!w_zX0dDNHa1O1)PZ(C;{~=T$4&~FXXLT;Fz{=^d
z;FcF{kp+5*e$QPqS63M-JJ5}^2pA0bSKpZ2k1YW@KKVzhDu0ckwqqpsP4cxMYD6j3
zhdyE`+6+cghQb~lvv0b^RmaRq@lf@gno#17vm5A<02*+kG{DQ$<LbN5{L>u*tVRJS
zGiO4mKn(5MKJEy^%AvOeus2`_Pw@VZdRfl%+vwvmN9L?Td~3_e@9zu#Lj&73!cjDJ
zyP{=W+{*q`yDgpj6VRkfTNsQW5pynYLSBPjAvA#F8-s}M!f$DNx>q0<kVH|aotPL`
zD?5z~Dbcc3)p%3E6Bi0D^3gmsNL2?Hw$`Nnj-3XD+(OqG{V^_UlhA9O2NFE#a!YGf
z>4Dea^f?5WlG2yr3o6gjfd`xmPs^WwD5^$#ff;3(us~~bK3wYMYgTF+O6L#gp!9VF
z2i4+)7#e%-+LFvUvLeQ6X$lYZ;WWZK+^bA2m)K(T{>55d9?a#dD=qny2(EjIars&Q
z6vZE-RMcHmb@p<D+N^PQD`ESXd5V>ZRi(Vn&U0%@5=0|V7$~Qx%aN5Bun-{1rWAjm
zUn}t(j7-PfTTINXCku`%_=JF#Or%jOXB_tgMSQu<%4GC*fN$)cSJ&tQWj05%U$r~s
zzOegGcjhLs0jPXdp0mY(k6wq<E<C1))OK@+d1X1l1X4wZixKXg$e<wVPNjA|8~*Rp
zHP?8`gbfhl%8D?X0N>jySnEQ$FA+iExa}<Rt=F{hbao0J^j^{2BNtu}%HFy9TR49T
zsBjS$&^LL1wg&>rWW~Z(S-^DDLp^dk`TY`<nO*gOiNpy#C{#lf1VNu5Ehf8*MUgzK
z4mUyUzhnQa<B3kKJ&T4xWCqd-BtP^@H`Q4ZjHDpO8blEfN%N!rK5KeQG(!LU@M{Rt
z>LjkBr~fGYmlO7cKp7pI6fcldS6*j_^9vU&6GL#gB5L&?A6zxCLu|wOFmC#%IGl;H
zk5NkkevI0J1p?w)FVkpnW(R}tgnZZkb2B)$jRzT{8z77C&s#vGk;CWf>sZ(R5pRUU
zXPS5++}&gFseJQ3${(LZXI&^Nb_4LS79iDijTZ)y-(UrsrIYN$nOw}oKVaF&=iD{G
z5ynsbA$x92f?7RK-z%E>QD6WoK879~JX0H^@x_>PS!kXbMp;hWU8}aN4_t`Nbs;1R
z3pk`CBg=3U0O9|~vvnGEvcih~`xW326OyJ8*Yz*g_Fo1hj~`<Ku2QtX5%JX!tt3{0
zdzpn3IIT0IhptN>IvNdW$K%?v&LJP<<4{5cJF!b*h|;SlCidYIn;zFr^o20N`LAJ`
z&G&xhEFg-5aZ5QGqMHgFfjWo+KyU2~%Z*(cL;I%TvaL}Ph`;2)O`z)LlF4^iIo0!c
z&+*!5E_#a#e)#D3c-ZD4KU&4roDs;jq~Lxs?PSY&<)L8dcqI8X!sBru*+fNWpx@7g
z(NRG40TAqN!(P%}p&@BQi_UIG%!Jm36<(N@Ya43F)t1>VsWIO!sW*fNYr6R--x8TK
zQS7s&IYULV<!?I!*Nxw6?+Cf|hzWUbmCTE^b=uPerzl~?Gl#0Es(B!o1)ZJY>8hH`
zcpZm6D!VALy2e&P!W>`A`%J0;&CkIu>JFn{!*~dSwV}C>_juj7zMO})kv>eyEKmSL
zcR{wajJ<5-F(?_ftHrbOrkrM-Re48wvj^JF-XCZp5)Y8dJJ~tMq0;EH@(KsmPHJro
zBw9z*TjDLq2J&=>o-?~>wvYp9sWW>wb`Yyz>feSjVpuZfAsxg{G#9M(OPuW|5<T!p
zSfiK1e&c)h=fC-$qa%<`hc+e|!$toWEU8g%zrc!hhaQK7sj-U&O?q^4`&lIj7r3EE
zbkSpux+sZ*{+52<liK>|I<^D%rj1bRPv_6j69m&5>b!Dizuh+(Z|aUMm;uedK!l6v
zoz-^h+ZyoJ3+SBKm+wOq7ORxu=^flHu4dEk=T}@sCI(6voI!?u!tNN>Fs%WwWrg6M
zsdlO1tC)q*@kbxJ*I-(`#6z?%FLT+B&&`ZJ1vRRG1bk<IaAQ#JCL5xOIhtxe;rF%^
z@tzhZfeF3!%-I=}v#J<I1|VcktOSfWP-)P%hs3JkZ@wP&{-fEW_*J(0A>=4EVZIQY
z<c50*5dxrGRC~^`5dKV@d`wOMA64R{N9z!gevm8&*}y!{ibtu&$|x)QOM6eVJe^+i
zS4JaxTH)CPVuoWH0`7}x759EJA^wUc1m6}@_P1P<8QYb_N+@c{AG}fAlyXG5wT02?
z3d4={lWd*XtAaI(E9*qYPjnn#6l9LCqmAD0VJsbWcKe0Zj-7>X`tkp~$S230Cwf8$
zX$y&1Xk89&r_!z23qoSGxub<@FXM}4s@kcZz75fa6MBk%axSdIHVV~^|6*5+m`qz;
zaTV}5J^7fajV73_=gfFZH_D+h8g6@(wtZv)IrOhIK-PE><PFOm>V)@ggDnefze-$t
zUBgfU`cGV4E3FsNWc_reNBDE-ty|F0+g{ecs>%Sv><85=ZHhx=7|9>~>ST9vaN*w6
zE%X)xmIaE0Cg0vaX?oh>hzIKh38?-yrm(so3y6e5#1X3N*BlpEywM9f5(W3{tOwW?
zYuVlsC2&hUP<?i@RnPq${nHL~3H#rKPv?6+F1L0<1hMMVO=1u(^y@k>j_gGr1+0@D
z2Jwsb0~6^oaj4ciF|@yhOP{zmLk!mF(ytkJhVm3=WT5JBeEuLD-_A(794krll!cJE
zaQH3Y@;r`+Rq_nU!w*T?4u17Bp)2VEt0;hU7s}C5_WcCb{|Vx)4{b2+YQ7?$;yF+7
zhYv>^4P+hzpATd?ZXV%*D7Y~ATYWrZ*%a~DEN(yREIL_iH`fZcWIH$ph`xfwh=(aR
z4(L$#EZK&&Ah2D1B3jdvg7NG!J^%@>PZdgR!QoF*aYLTX`3m^->&SO66s61d^)qAe
zXR`Ln`WOks9pvT%@%>QYcDop=Hni^vxc0qK)sS2q%06t1AKIzDsg6%9<qeFHRJ4D-
zp^0roZ#f`GeS$M_HlhX2z(WRNUc)UJbF+^+<*;nu-(0)q*lZZPWR3`m!&%~%+>xWD
zK|R(o%Y1cH9Eh(5Xsf~Y%a3cKCs(1PW@nzT(URQ9T0dg5YE|)79>N7ZgYWOMzz;oM
zOy#H4pvKQYsEU>cC*g<bdqI_f{L{)qpHj(H#(~ok1!RXdwG7<Rfa?Srt%jM)WQ%_I
z2Rh<a9;4osfyj<+59F~vu}j8C#w#oXE;P%IX6D~n^-mYk)=?4aplPT&0gq33ha}Tu
z+f{P%=nL(f^OxOQBJe}m?&<XQ9B4YMPQ+D*S(=1YU9do&M{k`}9HrhDz&@Z`XL1aC
zh%1F@^$?kGOE%p1A`d6i+#XK9pKLJBQ!jqQpg&$61`VRO6cnZL2MXM;MVnzQ%%oc}
zYbdBtua_OILZ^$xwLyhTKhG;(5_Cfp#KVkWAKnsekq&}_7vzQMg$ukCTcGPv0tCq@
zdhSrN7I$8RG*ks2-Xn&1XT385Q1uRjr;)h(Syi?%S5LU2urYlW<WdIxR-Jg`xLQe?
z^(yo$23_v%-jUlf%7Ro7;wwEVaPu%%kqb_X9e_P4_GO)S?0Gi(+5IugJT0W4<kKKE
zL=U;xjo5@l;gj)eI_0_4xR=ZXBgZf*;L9uDJ30x4z|Jvx@Fke6`axs^v`$pbmDv>(
zhTS_E!agRp^nR<m&mA9if@(Jlhl<#k@bJ5vQ}>@a`1hQPr3AT)n1fpa^^KHZ+3T63
zGguMD@(KuB*Y9-Lzk;jffBT`19c#Z_GV`$DC8=<Vr?rNuRLlPP(E%Hl3<8SZ!`@X&
z(2RQk=#omCO&rO<DoP9ikazKd75v^+q<j5k<Yus9Mo8l^0$I4w`>0W|g*h;)ixBy!
zKY&^8*2bXv>Io$u8iJY~$1UT?Mf*446#zwI^pG~xAM(mDT@I2LF1Uy`V;}{!!jyNQ
zyAnRnj1khOZxs*0b~7A~u?-s`vM-^Pp)KSlIqIrpkXJT_6Uo3s8!|(un2-A!yEFm0
z)2+K9f>;Rh%oPlWd{~oDsSkJvwsp0>#%&-sRWxm6ie77H>hACJvHp6<i%rBl&(UEb
zkEXoKrw07k>6i_zRyvXJ*&Rqgq##|9Bh#um%?=bwz9$osRz$J<^2Y73!rMoh&_k%w
zX<;$;E)3gXY`Crhxbay`Bqxm7m>|u1aY?@vM!>PHZ@w^#=6Idu(avCd%lXn_CXgrw
m#=fEOWdFBs4d^3N&;I^)@A>9;De(3L=;C=3bfunM#Qy;|*;>K?

literal 0
HcmV?d00001

diff --git a/random files/Parameters.png b/random files/Parameters.png
new file mode 100644
index 0000000000000000000000000000000000000000..6e062d0496d180109da09ff68cee1bc248010e69
GIT binary patch
literal 37971
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

literal 0
HcmV?d00001

diff --git a/random files/ParametersWaveletHaar.png b/random files/ParametersWaveletHaar.png
new file mode 100644
index 0000000000000000000000000000000000000000..b89db60f820b75abeb52eb7692bb84c345d95b8a
GIT binary patch
literal 22638
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

literal 0
HcmV?d00001

diff --git a/random files/ParametersWaveletHaar.svg b/random files/ParametersWaveletHaar.svg
new file mode 100644
index 0000000..f65da72
--- /dev/null
+++ b/random files/ParametersWaveletHaar.svg	
@@ -0,0 +1,2332 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns:xlink="http://www.w3.org/1999/xlink" width="432pt" height="288pt" viewBox="0 0 432 288" xmlns="http://www.w3.org/2000/svg" version="1.1">
+ <metadata>
+  <rdf:RDF xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+   <cc:Work>
+    <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+    <dc:date>2022-03-23T20:37:51.057299</dc:date>
+    <dc:format>image/svg+xml</dc:format>
+    <dc:creator>
+     <cc:Agent>
+      <dc:title>Matplotlib v3.5.1, https://matplotlib.org/</dc:title>
+     </cc:Agent>
+    </dc:creator>
+   </cc:Work>
+  </rdf:RDF>
+ </metadata>
+ <defs>
+  <style type="text/css">*{stroke-linejoin: round; stroke-linecap: butt}</style>
+ </defs>
+ <g id="figure_1">
+  <g id="patch_1">
+   <path d="M 0 288 
+L 432 288 
+L 432 0 
+L 0 0 
+L 0 288 
+z
+" style="fill: none"/>
+  </g>
+  <g id="axes_1">
+   <g id="patch_2">
+    <path d="M 54 252 
+L 388.8 252 
+L 388.8 34.56 
+L 54 34.56 
+z
+" style="fill: #ffffff"/>
+   </g>
+   <g id="matplotlib.axis_1">
+    <g id="xtick_1">
+     <g id="line2d_1">
+      <defs>
+       <path id="m20d77cf94f" d="M 0 0 
+L 0 3.5 
+" style="stroke: #000000; stroke-width: 0.8"/>
+      </defs>
+      <g>
+       <use xlink:href="#m20d77cf94f" x="69.218182" y="252" style="stroke: #000000; stroke-width: 0.8"/>
+      </g>
+     </g>
+     <g id="text_1">
+      <!-- 40000 -->
+      <g transform="translate(53.311932 266.598437)scale(0.1 -0.1)">
+       <defs>
+        <path id="DejaVuSans-34" d="M 2419 4116 
+L 825 1625 
+L 2419 1625 
+L 2419 4116 
+z
+M 2253 4666 
+L 3047 4666 
+L 3047 1625 
+L 3713 1625 
+L 3713 1100 
+L 3047 1100 
+L 3047 0 
+L 2419 0 
+L 2419 1100 
+L 313 1100 
+L 313 1709 
+L 2253 4666 
+z
+" transform="scale(0.015625)"/>
+        <path id="DejaVuSans-30" d="M 2034 4250 
+Q 1547 4250 1301 3770 
+Q 1056 3291 1056 2328 
+Q 1056 1369 1301 889 
+Q 1547 409 2034 409 
+Q 2525 409 2770 889 
+Q 3016 1369 3016 2328 
+Q 3016 3291 2770 3770 
+Q 2525 4250 2034 4250 
+z
+M 2034 4750 
+Q 2819 4750 3233 4129 
+Q 3647 3509 3647 2328 
+Q 3647 1150 3233 529 
+Q 2819 -91 2034 -91 
+Q 1250 -91 836 529 
+Q 422 1150 422 2328 
+Q 422 3509 836 4129 
+Q 1250 4750 2034 4750 
+z
+" transform="scale(0.015625)"/>
+       </defs>
+       <use xlink:href="#DejaVuSans-34"/>
+       <use xlink:href="#DejaVuSans-30" x="63.623047"/>
+       <use xlink:href="#DejaVuSans-30" x="127.246094"/>
+       <use xlink:href="#DejaVuSans-30" x="190.869141"/>
+       <use xlink:href="#DejaVuSans-30" x="254.492188"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_2">
+     <g id="line2d_2">
+      <g>
+       <use xlink:href="#m20d77cf94f" x="130.151843" y="252" style="stroke: #000000; stroke-width: 0.8"/>
+      </g>
+     </g>
+     <g id="text_2">
+      <!-- 40200 -->
+      <g transform="translate(114.245593 266.598437)scale(0.1 -0.1)">
+       <defs>
+        <path id="DejaVuSans-32" d="M 1228 531 
+L 3431 531 
+L 3431 0 
+L 469 0 
+L 469 531 
+Q 828 903 1448 1529 
+Q 2069 2156 2228 2338 
+Q 2531 2678 2651 2914 
+Q 2772 3150 2772 3378 
+Q 2772 3750 2511 3984 
+Q 2250 4219 1831 4219 
+Q 1534 4219 1204 4116 
+Q 875 4013 500 3803 
+L 500 4441 
+Q 881 4594 1212 4672 
+Q 1544 4750 1819 4750 
+Q 2544 4750 2975 4387 
+Q 3406 4025 3406 3419 
+Q 3406 3131 3298 2873 
+Q 3191 2616 2906 2266 
+Q 2828 2175 2409 1742 
+Q 1991 1309 1228 531 
+z
+" transform="scale(0.015625)"/>
+       </defs>
+       <use xlink:href="#DejaVuSans-34"/>
+       <use xlink:href="#DejaVuSans-30" x="63.623047"/>
+       <use xlink:href="#DejaVuSans-32" x="127.246094"/>
+       <use xlink:href="#DejaVuSans-30" x="190.869141"/>
+       <use xlink:href="#DejaVuSans-30" x="254.492188"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_3">
+     <g id="line2d_3">
+      <g>
+       <use xlink:href="#m20d77cf94f" x="191.085504" y="252" style="stroke: #000000; stroke-width: 0.8"/>
+      </g>
+     </g>
+     <g id="text_3">
+      <!-- 40400 -->
+      <g transform="translate(175.179254 266.598437)scale(0.1 -0.1)">
+       <use xlink:href="#DejaVuSans-34"/>
+       <use xlink:href="#DejaVuSans-30" x="63.623047"/>
+       <use xlink:href="#DejaVuSans-34" x="127.246094"/>
+       <use xlink:href="#DejaVuSans-30" x="190.869141"/>
+       <use xlink:href="#DejaVuSans-30" x="254.492188"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_4">
+     <g id="line2d_4">
+      <g>
+       <use xlink:href="#m20d77cf94f" x="252.019165" y="252" style="stroke: #000000; stroke-width: 0.8"/>
+      </g>
+     </g>
+     <g id="text_4">
+      <!-- 40600 -->
+      <g transform="translate(236.112915 266.598437)scale(0.1 -0.1)">
+       <defs>
+        <path id="DejaVuSans-36" d="M 2113 2584 
+Q 1688 2584 1439 2293 
+Q 1191 2003 1191 1497 
+Q 1191 994 1439 701 
+Q 1688 409 2113 409 
+Q 2538 409 2786 701 
+Q 3034 994 3034 1497 
+Q 3034 2003 2786 2293 
+Q 2538 2584 2113 2584 
+z
+M 3366 4563 
+L 3366 3988 
+Q 3128 4100 2886 4159 
+Q 2644 4219 2406 4219 
+Q 1781 4219 1451 3797 
+Q 1122 3375 1075 2522 
+Q 1259 2794 1537 2939 
+Q 1816 3084 2150 3084 
+Q 2853 3084 3261 2657 
+Q 3669 2231 3669 1497 
+Q 3669 778 3244 343 
+Q 2819 -91 2113 -91 
+Q 1303 -91 875 529 
+Q 447 1150 447 2328 
+Q 447 3434 972 4092 
+Q 1497 4750 2381 4750 
+Q 2619 4750 2861 4703 
+Q 3103 4656 3366 4563 
+z
+" transform="scale(0.015625)"/>
+       </defs>
+       <use xlink:href="#DejaVuSans-34"/>
+       <use xlink:href="#DejaVuSans-30" x="63.623047"/>
+       <use xlink:href="#DejaVuSans-36" x="127.246094"/>
+       <use xlink:href="#DejaVuSans-30" x="190.869141"/>
+       <use xlink:href="#DejaVuSans-30" x="254.492188"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_5">
+     <g id="line2d_5">
+      <g>
+       <use xlink:href="#m20d77cf94f" x="312.952826" y="252" style="stroke: #000000; stroke-width: 0.8"/>
+      </g>
+     </g>
+     <g id="text_5">
+      <!-- 40800 -->
+      <g transform="translate(297.046576 266.598437)scale(0.1 -0.1)">
+       <defs>
+        <path id="DejaVuSans-38" d="M 2034 2216 
+Q 1584 2216 1326 1975 
+Q 1069 1734 1069 1313 
+Q 1069 891 1326 650 
+Q 1584 409 2034 409 
+Q 2484 409 2743 651 
+Q 3003 894 3003 1313 
+Q 3003 1734 2745 1975 
+Q 2488 2216 2034 2216 
+z
+M 1403 2484 
+Q 997 2584 770 2862 
+Q 544 3141 544 3541 
+Q 544 4100 942 4425 
+Q 1341 4750 2034 4750 
+Q 2731 4750 3128 4425 
+Q 3525 4100 3525 3541 
+Q 3525 3141 3298 2862 
+Q 3072 2584 2669 2484 
+Q 3125 2378 3379 2068 
+Q 3634 1759 3634 1313 
+Q 3634 634 3220 271 
+Q 2806 -91 2034 -91 
+Q 1263 -91 848 271 
+Q 434 634 434 1313 
+Q 434 1759 690 2068 
+Q 947 2378 1403 2484 
+z
+M 1172 3481 
+Q 1172 3119 1398 2916 
+Q 1625 2713 2034 2713 
+Q 2441 2713 2670 2916 
+Q 2900 3119 2900 3481 
+Q 2900 3844 2670 4047 
+Q 2441 4250 2034 4250 
+Q 1625 4250 1398 4047 
+Q 1172 3844 1172 3481 
+z
+" transform="scale(0.015625)"/>
+       </defs>
+       <use xlink:href="#DejaVuSans-34"/>
+       <use xlink:href="#DejaVuSans-30" x="63.623047"/>
+       <use xlink:href="#DejaVuSans-38" x="127.246094"/>
+       <use xlink:href="#DejaVuSans-30" x="190.869141"/>
+       <use xlink:href="#DejaVuSans-30" x="254.492188"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_6">
+     <g id="line2d_6">
+      <g>
+       <use xlink:href="#m20d77cf94f" x="373.886486" y="252" style="stroke: #000000; stroke-width: 0.8"/>
+      </g>
+     </g>
+     <g id="text_6">
+      <!-- 41000 -->
+      <g transform="translate(357.980236 266.598437)scale(0.1 -0.1)">
+       <defs>
+        <path id="DejaVuSans-31" d="M 794 531 
+L 1825 531 
+L 1825 4091 
+L 703 3866 
+L 703 4441 
+L 1819 4666 
+L 2450 4666 
+L 2450 531 
+L 3481 531 
+L 3481 0 
+L 794 0 
+L 794 531 
+z
+" transform="scale(0.015625)"/>
+       </defs>
+       <use xlink:href="#DejaVuSans-34"/>
+       <use xlink:href="#DejaVuSans-31" x="63.623047"/>
+       <use xlink:href="#DejaVuSans-30" x="127.246094"/>
+       <use xlink:href="#DejaVuSans-30" x="190.869141"/>
+       <use xlink:href="#DejaVuSans-30" x="254.492188"/>
+      </g>
+     </g>
+    </g>
+    <g id="text_7">
+     <!-- Parameter indices -->
+     <g transform="translate(176.246875 280.276563)scale(0.1 -0.1)">
+      <defs>
+       <path id="DejaVuSans-50" d="M 1259 4147 
+L 1259 2394 
+L 2053 2394 
+Q 2494 2394 2734 2622 
+Q 2975 2850 2975 3272 
+Q 2975 3691 2734 3919 
+Q 2494 4147 2053 4147 
+L 1259 4147 
+z
+M 628 4666 
+L 2053 4666 
+Q 2838 4666 3239 4311 
+Q 3641 3956 3641 3272 
+Q 3641 2581 3239 2228 
+Q 2838 1875 2053 1875 
+L 1259 1875 
+L 1259 0 
+L 628 0 
+L 628 4666 
+z
+" transform="scale(0.015625)"/>
+       <path id="DejaVuSans-61" d="M 2194 1759 
+Q 1497 1759 1228 1600 
+Q 959 1441 959 1056 
+Q 959 750 1161 570 
+Q 1363 391 1709 391 
+Q 2188 391 2477 730 
+Q 2766 1069 2766 1631 
+L 2766 1759 
+L 2194 1759 
+z
+M 3341 1997 
+L 3341 0 
+L 2766 0 
+L 2766 531 
+Q 2569 213 2275 61 
+Q 1981 -91 1556 -91 
+Q 1019 -91 701 211 
+Q 384 513 384 1019 
+Q 384 1609 779 1909 
+Q 1175 2209 1959 2209 
+L 2766 2209 
+L 2766 2266 
+Q 2766 2663 2505 2880 
+Q 2244 3097 1772 3097 
+Q 1472 3097 1187 3025 
+Q 903 2953 641 2809 
+L 641 3341 
+Q 956 3463 1253 3523 
+Q 1550 3584 1831 3584 
+Q 2591 3584 2966 3190 
+Q 3341 2797 3341 1997 
+z
+" transform="scale(0.015625)"/>
+       <path id="DejaVuSans-72" d="M 2631 2963 
+Q 2534 3019 2420 3045 
+Q 2306 3072 2169 3072 
+Q 1681 3072 1420 2755 
+Q 1159 2438 1159 1844 
+L 1159 0 
+L 581 0 
+L 581 3500 
+L 1159 3500 
+L 1159 2956 
+Q 1341 3275 1631 3429 
+Q 1922 3584 2338 3584 
+Q 2397 3584 2469 3576 
+Q 2541 3569 2628 3553 
+L 2631 2963 
+z
+" transform="scale(0.015625)"/>
+       <path id="DejaVuSans-6d" d="M 3328 2828 
+Q 3544 3216 3844 3400 
+Q 4144 3584 4550 3584 
+Q 5097 3584 5394 3201 
+Q 5691 2819 5691 2113 
+L 5691 0 
+L 5113 0 
+L 5113 2094 
+Q 5113 2597 4934 2840 
+Q 4756 3084 4391 3084 
+Q 3944 3084 3684 2787 
+Q 3425 2491 3425 1978 
+L 3425 0 
+L 2847 0 
+L 2847 2094 
+Q 2847 2600 2669 2842 
+Q 2491 3084 2119 3084 
+Q 1678 3084 1418 2786 
+Q 1159 2488 1159 1978 
+L 1159 0 
+L 581 0 
+L 581 3500 
+L 1159 3500 
+L 1159 2956 
+Q 1356 3278 1631 3431 
+Q 1906 3584 2284 3584 
+Q 2666 3584 2933 3390 
+Q 3200 3197 3328 2828 
+z
+" transform="scale(0.015625)"/>
+       <path id="DejaVuSans-65" d="M 3597 1894 
+L 3597 1613 
+L 953 1613 
+Q 991 1019 1311 708 
+Q 1631 397 2203 397 
+Q 2534 397 2845 478 
+Q 3156 559 3463 722 
+L 3463 178 
+Q 3153 47 2828 -22 
+Q 2503 -91 2169 -91 
+Q 1331 -91 842 396 
+Q 353 884 353 1716 
+Q 353 2575 817 3079 
+Q 1281 3584 2069 3584 
+Q 2775 3584 3186 3129 
+Q 3597 2675 3597 1894 
+z
+M 3022 2063 
+Q 3016 2534 2758 2815 
+Q 2500 3097 2075 3097 
+Q 1594 3097 1305 2825 
+Q 1016 2553 972 2059 
+L 3022 2063 
+z
+" transform="scale(0.015625)"/>
+       <path id="DejaVuSans-74" d="M 1172 4494 
+L 1172 3500 
+L 2356 3500 
+L 2356 3053 
+L 1172 3053 
+L 1172 1153 
+Q 1172 725 1289 603 
+Q 1406 481 1766 481 
+L 2356 481 
+L 2356 0 
+L 1766 0 
+Q 1100 0 847 248 
+Q 594 497 594 1153 
+L 594 3053 
+L 172 3053 
+L 172 3500 
+L 594 3500 
+L 594 4494 
+L 1172 4494 
+z
+" transform="scale(0.015625)"/>
+       <path id="DejaVuSans-20" transform="scale(0.015625)"/>
+       <path id="DejaVuSans-69" d="M 603 3500 
+L 1178 3500 
+L 1178 0 
+L 603 0 
+L 603 3500 
+z
+M 603 4863 
+L 1178 4863 
+L 1178 4134 
+L 603 4134 
+L 603 4863 
+z
+" transform="scale(0.015625)"/>
+       <path id="DejaVuSans-6e" d="M 3513 2113 
+L 3513 0 
+L 2938 0 
+L 2938 2094 
+Q 2938 2591 2744 2837 
+Q 2550 3084 2163 3084 
+Q 1697 3084 1428 2787 
+Q 1159 2491 1159 1978 
+L 1159 0 
+L 581 0 
+L 581 3500 
+L 1159 3500 
+L 1159 2956 
+Q 1366 3272 1645 3428 
+Q 1925 3584 2291 3584 
+Q 2894 3584 3203 3211 
+Q 3513 2838 3513 2113 
+z
+" transform="scale(0.015625)"/>
+       <path id="DejaVuSans-64" d="M 2906 2969 
+L 2906 4863 
+L 3481 4863 
+L 3481 0 
+L 2906 0 
+L 2906 525 
+Q 2725 213 2448 61 
+Q 2172 -91 1784 -91 
+Q 1150 -91 751 415 
+Q 353 922 353 1747 
+Q 353 2572 751 3078 
+Q 1150 3584 1784 3584 
+Q 2172 3584 2448 3432 
+Q 2725 3281 2906 2969 
+z
+M 947 1747 
+Q 947 1113 1208 752 
+Q 1469 391 1925 391 
+Q 2381 391 2643 752 
+Q 2906 1113 2906 1747 
+Q 2906 2381 2643 2742 
+Q 2381 3103 1925 3103 
+Q 1469 3103 1208 2742 
+Q 947 2381 947 1747 
+z
+" transform="scale(0.015625)"/>
+       <path id="DejaVuSans-63" d="M 3122 3366 
+L 3122 2828 
+Q 2878 2963 2633 3030 
+Q 2388 3097 2138 3097 
+Q 1578 3097 1268 2742 
+Q 959 2388 959 1747 
+Q 959 1106 1268 751 
+Q 1578 397 2138 397 
+Q 2388 397 2633 464 
+Q 2878 531 3122 666 
+L 3122 134 
+Q 2881 22 2623 -34 
+Q 2366 -91 2075 -91 
+Q 1284 -91 818 406 
+Q 353 903 353 1747 
+Q 353 2603 823 3093 
+Q 1294 3584 2113 3584 
+Q 2378 3584 2631 3529 
+Q 2884 3475 3122 3366 
+z
+" transform="scale(0.015625)"/>
+       <path id="DejaVuSans-73" d="M 2834 3397 
+L 2834 2853 
+Q 2591 2978 2328 3040 
+Q 2066 3103 1784 3103 
+Q 1356 3103 1142 2972 
+Q 928 2841 928 2578 
+Q 928 2378 1081 2264 
+Q 1234 2150 1697 2047 
+L 1894 2003 
+Q 2506 1872 2764 1633 
+Q 3022 1394 3022 966 
+Q 3022 478 2636 193 
+Q 2250 -91 1575 -91 
+Q 1294 -91 989 -36 
+Q 684 19 347 128 
+L 347 722 
+Q 666 556 975 473 
+Q 1284 391 1588 391 
+Q 1994 391 2212 530 
+Q 2431 669 2431 922 
+Q 2431 1156 2273 1281 
+Q 2116 1406 1581 1522 
+L 1381 1569 
+Q 847 1681 609 1914 
+Q 372 2147 372 2553 
+Q 372 3047 722 3315 
+Q 1072 3584 1716 3584 
+Q 2034 3584 2315 3537 
+Q 2597 3491 2834 3397 
+z
+" transform="scale(0.015625)"/>
+      </defs>
+      <use xlink:href="#DejaVuSans-50"/>
+      <use xlink:href="#DejaVuSans-61" x="55.802734"/>
+      <use xlink:href="#DejaVuSans-72" x="117.082031"/>
+      <use xlink:href="#DejaVuSans-61" x="158.195312"/>
+      <use xlink:href="#DejaVuSans-6d" x="219.474609"/>
+      <use xlink:href="#DejaVuSans-65" x="316.886719"/>
+      <use xlink:href="#DejaVuSans-74" x="378.410156"/>
+      <use xlink:href="#DejaVuSans-65" x="417.619141"/>
+      <use xlink:href="#DejaVuSans-72" x="479.142578"/>
+      <use xlink:href="#DejaVuSans-20" x="520.255859"/>
+      <use xlink:href="#DejaVuSans-69" x="552.042969"/>
+      <use xlink:href="#DejaVuSans-6e" x="579.826172"/>
+      <use xlink:href="#DejaVuSans-64" x="643.205078"/>
+      <use xlink:href="#DejaVuSans-69" x="706.681641"/>
+      <use xlink:href="#DejaVuSans-63" x="734.464844"/>
+      <use xlink:href="#DejaVuSans-65" x="789.445312"/>
+      <use xlink:href="#DejaVuSans-73" x="850.96875"/>
+     </g>
+    </g>
+   </g>
+   <g id="matplotlib.axis_2">
+    <g id="ytick_1">
+     <g id="line2d_7">
+      <defs>
+       <path id="mcae92e3e51" d="M 0 0 
+L -3.5 0 
+" style="stroke: #000000; stroke-width: 0.8"/>
+      </defs>
+      <g>
+       <use xlink:href="#mcae92e3e51" x="54" y="242.910438" style="stroke: #000000; stroke-width: 0.8"/>
+      </g>
+     </g>
+     <g id="text_8">
+      <!-- 0 -->
+      <g transform="translate(40.6375 246.709657)scale(0.1 -0.1)">
+       <use xlink:href="#DejaVuSans-30"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_2">
+     <g id="line2d_8">
+      <g>
+       <use xlink:href="#mcae92e3e51" x="54" y="208.385466" style="stroke: #000000; stroke-width: 0.8"/>
+      </g>
+     </g>
+     <g id="text_9">
+      <!-- 2000 -->
+      <g transform="translate(21.55 212.184685)scale(0.1 -0.1)">
+       <use xlink:href="#DejaVuSans-32"/>
+       <use xlink:href="#DejaVuSans-30" x="63.623047"/>
+       <use xlink:href="#DejaVuSans-30" x="127.246094"/>
+       <use xlink:href="#DejaVuSans-30" x="190.869141"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_3">
+     <g id="line2d_9">
+      <g>
+       <use xlink:href="#mcae92e3e51" x="54" y="173.860494" style="stroke: #000000; stroke-width: 0.8"/>
+      </g>
+     </g>
+     <g id="text_10">
+      <!-- 4000 -->
+      <g transform="translate(21.55 177.659713)scale(0.1 -0.1)">
+       <use xlink:href="#DejaVuSans-34"/>
+       <use xlink:href="#DejaVuSans-30" x="63.623047"/>
+       <use xlink:href="#DejaVuSans-30" x="127.246094"/>
+       <use xlink:href="#DejaVuSans-30" x="190.869141"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_4">
+     <g id="line2d_10">
+      <g>
+       <use xlink:href="#mcae92e3e51" x="54" y="139.335522" style="stroke: #000000; stroke-width: 0.8"/>
+      </g>
+     </g>
+     <g id="text_11">
+      <!-- 6000 -->
+      <g transform="translate(21.55 143.134741)scale(0.1 -0.1)">
+       <use xlink:href="#DejaVuSans-36"/>
+       <use xlink:href="#DejaVuSans-30" x="63.623047"/>
+       <use xlink:href="#DejaVuSans-30" x="127.246094"/>
+       <use xlink:href="#DejaVuSans-30" x="190.869141"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_5">
+     <g id="line2d_11">
+      <g>
+       <use xlink:href="#mcae92e3e51" x="54" y="104.81055" style="stroke: #000000; stroke-width: 0.8"/>
+      </g>
+     </g>
+     <g id="text_12">
+      <!-- 8000 -->
+      <g transform="translate(21.55 108.609769)scale(0.1 -0.1)">
+       <use xlink:href="#DejaVuSans-38"/>
+       <use xlink:href="#DejaVuSans-30" x="63.623047"/>
+       <use xlink:href="#DejaVuSans-30" x="127.246094"/>
+       <use xlink:href="#DejaVuSans-30" x="190.869141"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_6">
+     <g id="line2d_12">
+      <g>
+       <use xlink:href="#mcae92e3e51" x="54" y="70.285578" style="stroke: #000000; stroke-width: 0.8"/>
+      </g>
+     </g>
+     <g id="text_13">
+      <!-- 10000 -->
+      <g transform="translate(15.1875 74.084797)scale(0.1 -0.1)">
+       <use xlink:href="#DejaVuSans-31"/>
+       <use xlink:href="#DejaVuSans-30" x="63.623047"/>
+       <use xlink:href="#DejaVuSans-30" x="127.246094"/>
+       <use xlink:href="#DejaVuSans-30" x="190.869141"/>
+       <use xlink:href="#DejaVuSans-30" x="254.492188"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_7">
+     <g id="line2d_13">
+      <g>
+       <use xlink:href="#mcae92e3e51" x="54" y="35.760606" style="stroke: #000000; stroke-width: 0.8"/>
+      </g>
+     </g>
+     <g id="text_14">
+      <!-- 12000 -->
+      <g transform="translate(15.1875 39.559825)scale(0.1 -0.1)">
+       <use xlink:href="#DejaVuSans-31"/>
+       <use xlink:href="#DejaVuSans-32" x="63.623047"/>
+       <use xlink:href="#DejaVuSans-30" x="127.246094"/>
+       <use xlink:href="#DejaVuSans-30" x="190.869141"/>
+       <use xlink:href="#DejaVuSans-30" x="254.492188"/>
+      </g>
+     </g>
+    </g>
+   </g>
+   <g id="line2d_14">
+    <path d="M 69.218182 241.719326 
+L 69.827518 241.788376 
+L 70.132187 241.719326 
+L 71.046192 241.805639 
+L 71.35086 241.408602 
+L 71.655528 241.477652 
+L 71.960197 241.788376 
+L 72.569533 241.702064 
+L 72.874201 241.391339 
+L 73.17887 241.374077 
+L 73.483538 241.719326 
+L 74.397543 241.736589 
+L 75.00688 241.512177 
+L 75.920885 241.719326 
+L 76.225553 241.546702 
+L 77.444226 241.719326 
+L 77.748894 241.529439 
+L 78.358231 241.563964 
+L 78.662899 241.581227 
+L 79.272236 241.218714 
+L 79.881572 241.391339 
+L 80.186241 241.339552 
+L 80.490909 241.667539 
+L 80.795577 241.598489 
+L 81.404914 241.650277 
+L 81.709582 241.667539 
+L 82.014251 241.995526 
+L 82.318919 241.943739 
+L 82.928256 241.995526 
+L 83.232924 240.76989 
+L 83.537592 242.030051 
+L 84.146929 241.926476 
+L 84.451597 241.719326 
+L 84.756265 241.028827 
+L 85.060934 242.012789 
+L 85.365602 241.270502 
+L 85.67027 241.477652 
+L 85.974939 240.70084 
+L 86.279607 241.166927 
+L 86.584275 241.391339 
+L 87.193612 241.374077 
+L 87.49828 241.305027 
+L 87.802948 241.425864 
+L 88.107617 241.736589 
+L 88.716953 241.736589 
+L 89.021622 241.719326 
+L 89.32629 240.528215 
+L 89.630958 241.961001 
+L 90.240295 241.719326 
+L 90.544963 241.04609 
+L 90.849631 240.683577 
+L 91.1543 241.822901 
+L 91.458968 241.961001 
+L 91.763636 241.028827 
+L 92.068305 241.115139 
+L 92.372973 240.735365 
+L 92.677641 241.857426 
+L 92.98231 241.961001 
+L 93.591646 240.476427 
+L 93.896314 240.718102 
+L 94.200983 242.047314 
+L 96.638329 241.995526 
+L 96.942998 241.080614 
+L 97.247666 241.667539 
+L 97.552334 241.460389 
+L 97.857002 241.477652 
+L 98.161671 240.56274 
+L 98.466339 240.666315 
+L 98.771007 242.047314 
+L 99.075676 241.529439 
+L 99.380344 240.528215 
+L 99.989681 240.56274 
+L 100.294349 242.099101 
+L 100.903686 240.49369 
+L 101.208354 240.787152 
+L 101.513022 240.580002 
+L 101.81769 241.218714 
+L 102.122359 241.115139 
+L 102.427027 241.253239 
+L 103.036364 241.184189 
+L 103.341032 241.529439 
+L 104.559705 241.529439 
+L 104.864373 241.04609 
+L 105.169042 240.856202 
+L 105.778378 240.90799 
+L 106.083047 240.718102 
+L 106.387715 241.563964 
+L 106.997052 241.512177 
+L 107.606388 241.063352 
+L 107.911057 241.529439 
+L 108.215725 241.149664 
+L 108.520393 241.305027 
+L 108.825061 241.201452 
+L 109.12973 241.305027 
+L 109.434398 240.890727 
+L 109.739066 241.028827 
+L 110.348403 240.994302 
+L 110.653071 240.890727 
+L 110.95774 241.166927 
+L 111.262408 241.253239 
+L 111.871744 241.149664 
+L 112.176413 241.166927 
+L 112.481081 241.529439 
+L 112.785749 241.408602 
+L 113.090418 241.494914 
+L 113.395086 241.443127 
+L 113.699754 241.563964 
+L 114.004423 241.460389 
+L 114.309091 241.512177 
+L 114.613759 241.149664 
+L 115.223096 241.253239 
+L 115.527764 241.494914 
+L 116.137101 240.597265 
+L 116.441769 240.597265 
+L 116.746437 240.390115 
+L 117.051106 241.339552 
+L 117.965111 241.235977 
+L 118.269779 241.391339 
+L 118.574447 241.874689 
+L 118.879115 241.961001 
+L 119.183784 241.891951 
+L 119.488452 242.030051 
+L 119.79312 240.683577 
+L 120.097789 241.477652 
+L 120.707125 241.581227 
+L 121.316462 240.21749 
+L 121.62113 242.099101 
+L 121.925799 242.099101 
+L 122.230467 240.873465 
+L 122.535135 240.70084 
+L 122.839803 240.942515 
+L 123.144472 241.943739 
+L 123.44914 241.667539 
+L 123.753808 240.90799 
+L 124.058477 240.614527 
+L 124.363145 240.56274 
+L 124.667813 241.080614 
+L 125.27715 240.90799 
+L 125.886486 240.90799 
+L 126.191155 241.253239 
+L 126.800491 241.287764 
+L 127.10516 240.942515 
+L 127.409828 240.234753 
+L 127.714496 241.494914 
+L 128.323833 240.821677 
+L 128.628501 240.63179 
+L 128.93317 241.115139 
+L 129.542506 240.890727 
+L 129.847174 240.390115 
+L 130.151843 240.597265 
+L 130.456511 240.597265 
+L 130.761179 240.856202 
+L 131.370516 240.131178 
+L 131.675184 240.787152 
+L 131.979853 240.76989 
+L 132.284521 240.165703 
+L 132.589189 240.269278 
+L 132.893857 240.165703 
+L 134.112531 240.303803 
+L 134.417199 240.165703 
+L 134.721867 240.390115 
+L 135.026536 240.14844 
+L 135.331204 240.321065 
+L 135.940541 240.35559 
+L 136.549877 240.42464 
+L 136.854545 240.649052 
+L 137.463882 240.545477 
+L 137.76855 241.063352 
+L 138.073219 240.83894 
+L 138.377887 240.441902 
+L 138.987224 240.735365 
+L 139.291892 240.752627 
+L 139.901229 241.115139 
+L 140.815233 241.04609 
+L 141.119902 240.925252 
+L 141.42457 241.080614 
+L 142.338575 241.028827 
+L 142.643243 240.49369 
+L 142.947912 240.994302 
+L 143.557248 240.994302 
+L 143.861916 240.459165 
+L 144.166585 240.28654 
+L 144.471253 241.356814 
+L 144.775921 240.70084 
+L 145.385258 240.21749 
+L 145.689926 240.76989 
+L 145.994595 240.76989 
+L 146.299263 240.649052 
+L 146.603931 240.252015 
+L 146.9086 240.407378 
+L 147.213268 240.131178 
+L 147.517936 241.132402 
+L 148.127273 241.080614 
+L 148.736609 241.115139 
+L 149.041278 241.684801 
+L 151.173956 241.374077 
+L 151.478624 240.890727 
+L 151.783292 240.890727 
+L 152.087961 241.788376 
+L 152.392629 241.753851 
+L 152.697297 241.494914 
+L 153.001966 240.303803 
+L 153.306634 240.338328 
+L 153.611302 241.667539 
+L 153.915971 240.752627 
+L 154.220639 240.372853 
+L 154.525307 240.994302 
+L 154.829975 240.942515 
+L 155.134644 241.322289 
+L 157.267322 241.287764 
+L 157.57199 240.994302 
+L 157.876658 241.028827 
+L 158.181327 241.633014 
+L 158.485995 241.598489 
+L 159.095332 240.959777 
+L 159.4 241.650277 
+L 160.009337 241.460389 
+L 160.314005 240.735365 
+L 160.923342 240.666315 
+L 161.22801 241.132402 
+L 161.532678 240.441902 
+L 162.446683 240.390115 
+L 162.751351 241.011565 
+L 163.970025 240.97704 
+L 164.884029 240.994302 
+L 165.188698 240.83894 
+L 165.493366 240.942515 
+L 165.798034 241.339552 
+L 166.712039 241.287764 
+L 167.016708 241.581227 
+L 167.626044 241.080614 
+L 167.930713 241.356814 
+L 168.235381 241.356814 
+L 168.844717 241.218714 
+L 169.149386 241.270502 
+L 169.454054 241.080614 
+L 170.063391 240.97704 
+L 170.368059 241.615752 
+L 172.805405 241.650277 
+L 174.024079 241.408602 
+L 174.633415 240.372853 
+L 174.938084 241.874689 
+L 175.54742 241.201452 
+L 175.852088 240.131178 
+L 176.156757 240.321065 
+L 176.461425 241.253239 
+L 177.070762 240.407378 
+L 177.680098 240.407378 
+L 177.984767 240.90799 
+L 178.594103 240.856202 
+L 178.898771 240.580002 
+L 179.20344 240.925252 
+L 179.508108 240.925252 
+L 179.812776 241.04609 
+L 180.422113 240.959777 
+L 180.726781 241.253239 
+L 181.640786 240.97704 
+L 181.945455 240.718102 
+L 182.250123 240.735365 
+L 182.554791 241.305027 
+L 182.859459 241.235977 
+L 183.468796 240.459165 
+L 183.773464 241.218714 
+L 184.078133 241.235977 
+L 184.687469 240.252015 
+L 185.296806 240.890727 
+L 185.601474 240.528215 
+L 187.124816 240.597265 
+L 187.734152 240.63179 
+L 188.038821 240.510952 
+L 188.648157 240.76989 
+L 188.952826 240.735365 
+L 189.257494 240.873465 
+L 189.562162 240.649052 
+L 189.86683 239.87224 
+L 190.171499 240.804415 
+L 190.476167 240.942515 
+L 190.780835 240.83894 
+L 191.390172 240.269278 
+L 191.69484 240.890727 
+L 191.999509 240.873465 
+L 192.304177 240.321065 
+L 192.608845 240.234753 
+L 192.913514 240.269278 
+L 193.218182 241.149664 
+L 193.52285 240.959777 
+L 193.827518 241.04609 
+L 194.132187 240.90799 
+L 194.436855 240.942515 
+L 194.741523 241.201452 
+L 195.655528 241.149664 
+L 195.960197 240.787152 
+L 196.874201 240.90799 
+L 197.17887 240.666315 
+L 197.483538 240.027603 
+L 197.788206 241.305027 
+L 198.092875 241.115139 
+L 198.702211 240.476427 
+L 199.00688 240.49369 
+L 199.311548 241.063352 
+L 199.616216 241.080614 
+L 199.920885 241.581227 
+L 200.225553 240.372853 
+L 200.530221 240.269278 
+L 200.834889 240.959777 
+L 201.139558 241.080614 
+L 201.748894 241.063352 
+L 202.053563 241.115139 
+L 202.358231 240.83894 
+L 202.662899 241.132402 
+L 202.967568 240.76989 
+L 203.272236 241.080614 
+L 203.576904 241.011565 
+L 203.881572 241.097877 
+L 204.490909 240.821677 
+L 204.795577 240.269278 
+L 205.100246 240.14844 
+L 205.404914 241.425864 
+L 205.709582 241.374077 
+L 206.014251 240.476427 
+L 206.623587 240.787152 
+L 206.928256 241.356814 
+L 207.232924 240.76989 
+L 207.537592 239.889503 
+L 208.146929 240.113915 
+L 208.451597 241.097877 
+L 208.756265 241.253239 
+L 209.67027 241.115139 
+L 209.974939 241.719326 
+L 210.584275 241.771114 
+L 210.888943 241.494914 
+L 211.193612 241.771114 
+L 212.107617 241.788376 
+L 212.412285 240.890727 
+L 212.716953 240.372853 
+L 213.021622 241.771114 
+L 213.32629 240.873465 
+L 213.630958 240.90799 
+L 213.935627 240.597265 
+L 214.240295 240.545477 
+L 214.544963 241.443127 
+L 214.849631 240.63179 
+L 215.1543 240.252015 
+L 215.763636 240.044865 
+L 216.068305 241.149664 
+L 216.372973 241.080614 
+L 216.677641 240.804415 
+L 216.98231 241.132402 
+L 217.286978 241.132402 
+L 217.591646 241.391339 
+L 218.200983 241.391339 
+L 218.505651 241.097877 
+L 218.810319 240.338328 
+L 219.114988 241.771114 
+L 219.419656 241.719326 
+L 219.724324 241.374077 
+L 220.028993 240.476427 
+L 220.333661 240.42464 
+L 220.638329 241.771114 
+L 221.247666 240.027603 
+L 221.552334 240.545477 
+L 221.857002 240.459165 
+L 222.161671 241.477652 
+L 222.466339 240.113915 
+L 222.771007 239.94129 
+L 223.075676 240.234753 
+L 223.380344 240.269278 
+L 223.685012 240.925252 
+L 224.903686 240.856202 
+L 225.208354 241.253239 
+L 225.513022 241.201452 
+L 226.122359 241.322289 
+L 226.427027 241.287764 
+L 226.731695 241.615752 
+L 227.036364 241.546702 
+L 227.950369 241.719326 
+L 228.864373 241.529439 
+L 229.169042 241.546702 
+L 229.47371 241.235977 
+L 229.778378 241.512177 
+L 230.083047 240.994302 
+L 230.997052 240.321065 
+L 231.30172 241.201452 
+L 232.520393 241.132402 
+L 232.825061 241.477652 
+L 233.12973 241.512177 
+L 233.434398 241.425864 
+L 233.739066 241.563964 
+L 234.043735 241.546702 
+L 234.348403 241.736589 
+L 234.653071 241.598489 
+L 235.262408 241.581227 
+L 235.567076 240.76989 
+L 235.871744 241.857426 
+L 236.176413 241.822901 
+L 236.481081 241.322289 
+L 236.785749 241.235977 
+L 237.090418 240.994302 
+L 237.395086 241.719326 
+L 238.004423 241.149664 
+L 238.309091 240.372853 
+L 238.613759 240.113915 
+L 238.918428 240.649052 
+L 239.223096 240.70084 
+L 239.527764 240.614527 
+L 239.832432 240.683577 
+L 240.441769 240.56274 
+L 240.746437 240.735365 
+L 241.051106 240.666315 
+L 241.660442 240.252015 
+L 241.965111 240.614527 
+L 242.574447 240.338328 
+L 242.879115 240.459165 
+L 243.183784 240.28654 
+L 243.488452 240.683577 
+L 243.79312 240.735365 
+L 244.097789 240.269278 
+L 244.402457 240.338328 
+L 244.707125 240.14844 
+L 245.316462 240.994302 
+L 245.62113 240.873465 
+L 245.925799 240.303803 
+L 246.230467 240.165703 
+L 246.535135 240.407378 
+L 247.753808 240.372853 
+L 248.058477 240.735365 
+L 249.581818 240.683577 
+L 250.191155 240.49369 
+L 250.495823 240.597265 
+L 250.800491 240.165703 
+L 251.10516 241.080614 
+L 251.409828 240.959777 
+L 251.714496 240.580002 
+L 252.019165 240.614527 
+L 252.323833 240.407378 
+L 252.628501 241.04609 
+L 252.93317 240.70084 
+L 253.237838 240.044865 
+L 253.542506 240.459165 
+L 253.847174 240.597265 
+L 254.151843 241.391339 
+L 254.456511 241.581227 
+L 255.065848 241.408602 
+L 255.370516 241.425864 
+L 255.675184 241.598489 
+L 257.807862 241.615752 
+L 258.112531 241.425864 
+L 258.417199 241.097877 
+L 258.721867 241.719326 
+L 259.026536 241.460389 
+L 259.331204 241.529439 
+L 259.635872 240.56274 
+L 259.940541 240.614527 
+L 260.245209 241.633014 
+L 261.159214 240.90799 
+L 261.463882 240.683577 
+L 261.76855 241.080614 
+L 262.073219 240.994302 
+L 262.377887 241.080614 
+L 262.682555 241.011565 
+L 262.987224 241.184189 
+L 263.291892 241.063352 
+L 263.901229 241.115139 
+L 264.205897 240.752627 
+L 264.510565 240.890727 
+L 264.815233 241.339552 
+L 265.42457 241.253239 
+L 266.033907 240.07939 
+L 266.338575 241.512177 
+L 266.643243 240.873465 
+L 266.947912 241.063352 
+L 267.25258 240.63179 
+L 267.557248 240.459165 
+L 267.861916 241.322289 
+L 268.166585 240.76989 
+L 268.471253 239.958553 
+L 268.775921 240.200228 
+L 269.08059 240.200228 
+L 269.385258 241.650277 
+L 271.213268 241.633014 
+L 271.822604 241.598489 
+L 272.127273 240.252015 
+L 272.431941 241.356814 
+L 273.041278 240.959777 
+L 273.650614 239.87224 
+L 273.955283 241.822901 
+L 274.564619 240.407378 
+L 275.173956 240.42464 
+L 275.478624 241.650277 
+L 276.087961 240.56274 
+L 276.697297 240.182965 
+L 277.001966 241.494914 
+L 277.306634 241.546702 
+L 277.611302 241.408602 
+L 277.915971 241.667539 
+L 278.220639 241.477652 
+L 279.134644 241.374077 
+L 279.439312 241.581227 
+L 279.74398 240.372853 
+L 280.048649 241.408602 
+L 280.353317 241.408602 
+L 280.657985 241.080614 
+L 280.962654 240.062128 
+L 281.267322 239.958553 
+L 281.57199 241.909214 
+L 281.876658 241.563964 
+L 282.181327 240.856202 
+L 282.485995 240.70084 
+L 282.790663 240.735365 
+L 283.095332 241.719326 
+L 283.4 241.04609 
+L 283.704668 240.07939 
+L 284.009337 240.28654 
+L 284.314005 240.131178 
+L 284.618673 241.322289 
+L 285.837346 241.339552 
+L 286.142015 241.891951 
+L 286.446683 241.978264 
+L 287.05602 241.961001 
+L 287.360688 240.925252 
+L 287.665356 241.667539 
+L 287.970025 241.598489 
+L 288.274693 241.287764 
+L 288.579361 240.35559 
+L 288.884029 240.821677 
+L 289.188698 242.012789 
+L 289.798034 241.011565 
+L 290.102703 240.804415 
+L 290.407371 240.459165 
+L 290.712039 241.667539 
+L 291.016708 241.391339 
+L 291.321376 240.56274 
+L 291.626044 240.735365 
+L 291.930713 240.70084 
+L 292.235381 241.374077 
+L 292.540049 241.443127 
+L 293.149386 241.339552 
+L 293.454054 241.408602 
+L 293.758722 241.753851 
+L 294.368059 241.667539 
+L 294.977396 241.736589 
+L 295.8914 241.736589 
+L 296.500737 240.804415 
+L 296.805405 242.047314 
+L 297.110074 242.030051 
+L 297.414742 241.753851 
+L 298.024079 240.56274 
+L 298.328747 242.064576 
+L 298.938084 240.735365 
+L 299.242752 240.528215 
+L 299.54742 241.218714 
+L 299.852088 241.270502 
+L 300.156757 241.149664 
+L 300.461425 241.322289 
+L 301.070762 241.080614 
+L 301.37543 241.546702 
+L 302.289435 241.477652 
+L 302.594103 241.097877 
+L 302.898771 241.736589 
+L 303.20344 241.753851 
+L 303.508108 241.425864 
+L 303.812776 240.459165 
+L 304.422113 241.805639 
+L 304.726781 241.891951 
+L 305.03145 240.83894 
+L 305.336118 240.83894 
+L 305.640786 241.719326 
+L 305.945455 241.684801 
+L 306.250123 241.788376 
+L 306.859459 240.407378 
+L 307.164128 240.752627 
+L 307.468796 242.047314 
+L 307.773464 241.736589 
+L 308.687469 241.702064 
+L 308.992138 242.030051 
+L 309.906143 242.047314 
+L 310.210811 241.04609 
+L 310.515479 242.064576 
+L 311.124816 242.064576 
+L 311.429484 241.149664 
+L 311.734152 240.649052 
+L 312.038821 241.995526 
+L 312.343489 241.771114 
+L 312.952826 241.080614 
+L 313.257494 240.890727 
+L 313.562162 241.978264 
+L 313.86683 241.408602 
+L 314.171499 240.476427 
+L 314.780835 240.580002 
+L 315.085504 241.097877 
+L 315.999509 241.149664 
+L 316.304177 241.166927 
+L 316.608845 241.494914 
+L 317.218182 241.529439 
+L 319.046192 241.615752 
+L 319.35086 241.063352 
+L 319.655528 241.926476 
+L 320.264865 241.978264 
+L 320.569533 242.116364 
+L 320.874201 240.90799 
+L 321.17887 241.840164 
+L 321.483538 241.857426 
+L 321.788206 241.546702 
+L 322.702211 241.270502 
+L 323.00688 241.512177 
+L 323.311548 241.477652 
+L 323.616216 241.581227 
+L 323.920885 241.374077 
+L 324.225553 240.97704 
+L 324.530221 241.563964 
+L 324.834889 241.391339 
+L 325.444226 241.339552 
+L 325.748894 241.270502 
+L 326.053563 241.581227 
+L 326.358231 241.339552 
+L 326.967568 241.339552 
+L 327.272236 241.235977 
+L 327.576904 241.650277 
+L 328.186241 241.287764 
+L 328.795577 241.305027 
+L 329.100246 241.857426 
+L 329.404914 241.356814 
+L 330.014251 241.805639 
+L 330.318919 241.115139 
+L 330.623587 241.805639 
+L 330.928256 241.270502 
+L 331.537592 241.270502 
+L 331.84226 241.080614 
+L 332.146929 241.563964 
+L 332.451597 241.425864 
+L 332.756265 241.563964 
+L 333.365602 241.115139 
+L 333.67027 241.529439 
+L 333.974939 241.287764 
+L 334.279607 241.391339 
+L 334.888943 241.166927 
+L 335.193612 241.667539 
+L 335.49828 241.253239 
+L 336.107617 241.235977 
+L 336.412285 241.063352 
+L 336.716953 241.736589 
+L 337.021622 241.322289 
+L 337.32629 241.529439 
+L 337.630958 241.563964 
+L 337.935627 241.166927 
+L 338.240295 241.477652 
+L 338.544963 241.149664 
+L 338.849631 241.512177 
+L 339.458968 241.149664 
+L 339.763636 241.615752 
+L 340.068305 240.890727 
+L 340.372973 241.529439 
+L 340.677641 241.650277 
+L 340.98231 241.460389 
+L 341.286978 241.512177 
+L 341.591646 241.166927 
+L 341.896314 241.529439 
+L 342.200983 241.633014 
+L 342.505651 241.581227 
+L 342.810319 241.840164 
+L 343.114988 241.563964 
+L 343.419656 241.805639 
+L 343.724324 241.840164 
+L 344.028993 241.287764 
+L 344.333661 241.529439 
+L 344.638329 241.270502 
+L 344.942998 241.460389 
+L 345.247666 241.097877 
+L 345.857002 241.719326 
+L 346.466339 241.408602 
+L 346.771007 241.633014 
+L 347.075676 241.719326 
+L 347.380344 241.477652 
+L 347.685012 241.753851 
+L 347.989681 241.460389 
+L 348.599017 241.581227 
+L 348.903686 241.425864 
+L 349.208354 241.633014 
+L 349.513022 241.460389 
+L 349.81769 241.460389 
+L 350.122359 241.650277 
+L 350.731695 241.615752 
+L 351.341032 241.408602 
+L 351.6457 241.909214 
+L 351.950369 241.633014 
+L 352.255037 241.753851 
+L 352.559705 241.287764 
+L 352.864373 241.097877 
+L 353.169042 241.615752 
+L 353.778378 241.512177 
+L 354.083047 241.253239 
+L 354.387715 241.356814 
+L 354.692383 241.650277 
+L 354.997052 241.391339 
+L 355.606388 241.356814 
+L 355.911057 241.270502 
+L 356.215725 241.788376 
+L 356.520393 241.201452 
+L 357.12973 240.925252 
+L 357.434398 241.166927 
+L 357.739066 241.753851 
+L 358.348403 241.235977 
+L 358.653071 241.322289 
+L 358.95774 241.028827 
+L 359.262408 241.909214 
+L 359.567076 241.529439 
+L 359.871744 241.477652 
+L 360.176413 241.598489 
+L 360.481081 241.374077 
+L 360.785749 241.633014 
+L 361.090418 241.512177 
+L 361.395086 241.581227 
+L 361.699754 241.529439 
+L 362.004423 241.753851 
+L 362.309091 241.546702 
+L 362.613759 241.702064 
+L 362.918428 241.494914 
+L 363.223096 241.443127 
+L 363.527764 241.633014 
+L 363.832432 241.598489 
+L 364.137101 241.391339 
+L 365.051106 241.633014 
+L 365.965111 241.339552 
+L 366.269779 241.650277 
+L 366.574447 241.477652 
+L 367.183784 241.512177 
+L 367.79312 241.305027 
+L 368.097789 241.408602 
+L 368.402457 241.201452 
+L 369.62113 241.063352 
+L 369.925799 241.460389 
+L 370.535135 241.132402 
+L 370.839803 241.218714 
+L 371.144472 240.873465 
+L 371.44914 241.287764 
+L 371.753808 241.270502 
+L 372.058477 241.011565 
+L 372.363145 241.063352 
+L 372.667813 240.942515 
+L 372.972482 241.235977 
+L 373.27715 241.201452 
+L 373.581818 241.028827 
+L 373.581818 241.028827 
+" clip-path="url(#pdceb6906fc)" style="fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square"/>
+   </g>
+   <g id="line2d_15">
+    <path d="M 69.218182 236.972143 
+L 69.52285 236.903093 
+L 69.827518 235.522094 
+L 70.132187 235.901869 
+L 70.741523 234.969694 
+L 71.046192 235.677456 
+L 71.35086 235.625669 
+L 71.655528 238.629341 
+L 71.960197 44.495424 
+L 72.569533 44.478161 
+L 73.17887 44.478161 
+L 73.483538 236.298906 
+L 73.788206 237.990629 
+L 74.092875 238.007892 
+L 74.397543 233.260708 
+L 74.702211 233.571433 
+L 75.00688 221.159706 
+L 75.920885 229.152237 
+L 76.225553 44.598999 
+L 76.530221 44.443636 
+L 78.662899 44.495424 
+L 79.272236 44.443636 
+L 79.576904 230.291561 
+L 79.881572 44.478161 
+L 80.795577 44.478161 
+L 81.100246 44.460899 
+L 81.404914 216.101797 
+L 81.709582 218.328658 
+L 82.014251 235.228632 
+L 82.318919 44.478161 
+L 83.232924 44.512686 
+L 83.537592 241.166927 
+L 83.84226 241.184189 
+L 84.146929 241.425864 
+L 84.756265 241.529439 
+L 85.974939 241.408602 
+L 86.584275 241.391339 
+L 86.888943 241.132402 
+L 88.107617 241.063352 
+L 88.412285 241.512177 
+L 88.716953 241.529439 
+L 89.32629 241.408602 
+L 90.849631 241.512177 
+L 91.1543 241.080614 
+L 91.458968 241.011565 
+L 91.763636 241.115139 
+L 92.068305 241.028827 
+L 92.372973 241.149664 
+L 93.591646 241.115139 
+L 94.200983 241.04609 
+L 94.505651 241.391339 
+L 94.810319 241.063352 
+L 95.724324 241.149664 
+L 96.028993 241.04609 
+L 96.333661 241.374077 
+L 96.942998 241.529439 
+L 97.247666 241.011565 
+L 97.552334 241.132402 
+L 97.857002 241.011565 
+L 98.161671 241.028827 
+L 98.466339 241.408602 
+L 98.771007 241.425864 
+L 99.075676 241.581227 
+L 99.685012 241.443127 
+L 101.81769 241.460389 
+L 103.6457 241.460389 
+L 105.47371 241.546702 
+L 105.778378 241.425864 
+L 107.30172 241.443127 
+L 108.520393 241.391339 
+L 109.12973 241.443127 
+L 109.434398 241.581227 
+L 110.043735 241.425864 
+L 111.262408 241.425864 
+L 111.567076 241.546702 
+L 111.871744 241.546702 
+L 112.481081 241.391339 
+L 112.785749 44.926986 
+L 113.090418 44.443636 
+L 113.699754 44.478161 
+L 114.004423 237.006668 
+L 114.309091 236.644156 
+L 114.613759 235.832819 
+L 114.918428 236.782255 
+L 115.527764 236.057231 
+L 115.832432 236.81678 
+L 116.137101 236.95488 
+L 116.441769 239.043641 
+L 116.746437 44.512686 
+L 117.965111 44.478161 
+L 118.269779 237.09298 
+L 118.574447 238.076942 
+L 118.879115 238.094204 
+L 119.183784 233.864895 
+L 119.488452 234.31372 
+L 119.79312 222.040092 
+L 120.097789 224.991978 
+L 120.402457 225.924152 
+L 120.707125 229.980836 
+L 121.011794 44.581736 
+L 121.316462 44.443636 
+L 124.058477 44.495424 
+L 124.363145 233.381546 
+L 124.667813 44.460899 
+L 125.886486 44.460899 
+L 126.191155 216.18811 
+L 126.495823 217.810783 
+L 126.800491 235.901869 
+L 127.10516 44.547211 
+L 127.714496 44.460899 
+L 128.019165 44.495424 
+L 128.323833 238.991854 
+L 128.628501 239.060904 
+L 128.93317 241.477652 
+L 129.237838 241.563964 
+L 130.151843 241.494914 
+L 131.370516 241.443127 
+L 131.675184 239.147216 
+L 131.979853 238.871016 
+L 132.893857 238.991854 
+L 133.198526 241.546702 
+L 133.503194 241.581227 
+L 133.807862 241.425864 
+L 135.635872 241.563964 
+L 135.940541 239.078166 
+L 136.245209 238.940066 
+L 136.549877 239.112691 
+L 138.682555 239.043641 
+L 138.987224 238.991854 
+L 139.291892 241.529439 
+L 139.59656 239.147216 
+L 139.901229 238.940066 
+L 140.205897 239.009116 
+L 140.815233 239.268053 
+L 141.119902 241.477652 
+L 141.729238 241.598489 
+L 142.033907 239.199004 
+L 142.338575 239.216266 
+L 142.643243 238.801966 
+L 142.947912 239.526991 
+L 143.25258 241.011565 
+L 143.557248 241.080614 
+L 143.861916 241.529439 
+L 145.385258 241.460389 
+L 145.994595 241.494914 
+L 146.299263 241.563964 
+L 146.603931 241.028827 
+L 146.9086 240.90799 
+L 147.517936 240.994302 
+L 147.822604 241.028827 
+L 148.127273 241.425864 
+L 148.736609 241.581227 
+L 150.564619 241.356814 
+L 150.869287 240.942515 
+L 151.173956 240.873465 
+L 152.087961 240.97704 
+L 153.915971 240.959777 
+L 154.220639 241.563964 
+L 154.525307 241.04609 
+L 155.134644 240.90799 
+L 155.74398 241.028827 
+L 156.048649 241.443127 
+L 156.657985 241.546702 
+L 156.962654 241.011565 
+L 157.267322 240.925252 
+L 157.876658 240.372853 
+L 158.181327 240.925252 
+L 158.485995 241.028827 
+L 158.790663 241.305027 
+L 159.095332 241.270502 
+L 159.4 241.408602 
+L 159.704668 241.305027 
+L 161.22801 241.477652 
+L 161.532678 241.04609 
+L 161.837346 241.028827 
+L 162.142015 241.132402 
+L 162.446683 241.115139 
+L 162.751351 240.90799 
+L 163.360688 241.460389 
+L 163.970025 241.287764 
+L 165.188698 241.460389 
+L 165.493366 241.356814 
+L 165.798034 240.97704 
+L 166.102703 240.942515 
+L 166.407371 241.115139 
+L 167.016708 240.90799 
+L 167.321376 240.97704 
+L 167.930713 240.90799 
+L 168.235381 241.063352 
+L 168.844717 240.925252 
+L 169.149386 241.443127 
+L 169.454054 240.90799 
+L 170.063391 241.063352 
+L 170.368059 241.080614 
+L 170.672727 240.97704 
+L 170.977396 241.253239 
+L 171.586732 241.477652 
+L 171.8914 241.04609 
+L 172.196069 241.097877 
+L 172.500737 240.873465 
+L 173.110074 241.253239 
+L 176.461425 241.374077 
+L 176.766093 241.235977 
+L 178.898771 241.443127 
+L 179.508108 241.322289 
+L 180.726781 241.374077 
+L 181.03145 241.218714 
+L 181.640786 241.287764 
+L 182.554791 241.218714 
+L 183.773464 241.235977 
+L 184.078133 241.443127 
+L 184.687469 241.201452 
+L 185.296806 241.201452 
+L 185.906143 241.287764 
+L 186.210811 241.425864 
+L 186.515479 241.425864 
+L 187.124816 241.253239 
+L 187.429484 45.237711 
+L 187.734152 44.668049 
+L 188.343489 44.771624 
+L 188.648157 236.488793 
+L 188.952826 236.367956 
+L 189.257494 235.660194 
+L 189.562162 236.695943 
+L 189.86683 236.730468 
+L 190.171499 236.229856 
+L 190.476167 236.799518 
+L 190.780835 236.402481 
+L 191.085504 237.679905 
+L 191.390172 44.857936 
+L 191.69484 44.737099 
+L 191.999509 44.840674 
+L 192.304177 44.788886 
+L 192.608845 44.961511 
+L 192.913514 237.524542 
+L 193.218182 239.233528 
+L 193.52285 239.129954 
+L 193.827518 232.691046 
+L 194.132187 233.329758 
+L 194.436855 222.350817 
+L 194.741523 225.371752 
+L 195.046192 226.683701 
+L 195.35086 230.136198 
+L 195.655528 44.996036 
+L 195.960197 44.668049 
+L 196.264865 44.806149 
+L 196.569533 44.685311 
+L 197.788206 44.702574 
+L 198.092875 44.909723 
+L 198.397543 44.719836 
+L 198.702211 44.754361 
+L 199.00688 232.328534 
+L 199.311548 44.771624 
+L 199.616216 44.633524 
+L 199.920885 44.633524 
+L 200.530221 44.823411 
+L 200.834889 215.463085 
+L 201.139558 216.619672 
+L 201.444226 234.917907 
+L 201.748894 44.771624 
+L 202.358231 44.737099 
+L 202.662899 44.771624 
+L 202.967568 241.201452 
+L 204.490909 241.322289 
+L 204.795577 241.218714 
+L 205.404914 241.322289 
+L 206.318919 241.356814 
+L 206.623587 241.218714 
+L 207.537592 241.356814 
+L 210.584275 241.305027 
+L 210.888943 241.184189 
+L 211.802948 241.201452 
+L 213.630958 241.218714 
+L 213.935627 241.391339 
+L 214.544963 241.201452 
+L 215.458968 241.253239 
+L 216.372973 241.443127 
+L 216.98231 241.235977 
+L 217.286978 240.90799 
+L 217.896314 240.890727 
+L 218.200983 241.04609 
+L 218.505651 241.391339 
+L 219.114988 241.322289 
+L 219.419656 241.374077 
+L 219.724324 241.235977 
+L 220.333661 241.408602 
+L 220.638329 241.270502 
+L 220.942998 241.287764 
+L 221.247666 240.942515 
+L 221.552334 240.890727 
+L 221.857002 241.011565 
+L 222.466339 240.97704 
+L 222.771007 241.408602 
+L 223.075676 241.391339 
+L 223.685012 241.184189 
+L 224.294349 241.356814 
+L 224.903686 241.253239 
+L 225.208354 241.339552 
+L 225.513022 240.994302 
+L 225.81769 240.873465 
+L 227.950369 240.90799 
+L 228.559705 240.821677 
+L 228.864373 241.201452 
+L 229.169042 240.804415 
+L 230.083047 240.873465 
+L 230.387715 240.735365 
+L 230.692383 241.115139 
+L 230.997052 241.287764 
+L 231.30172 241.305027 
+L 231.606388 240.752627 
+L 231.911057 240.856202 
+L 232.520393 240.70084 
+L 232.825061 241.028827 
+L 233.434398 241.201452 
+L 233.739066 241.115139 
+L 234.348403 241.235977 
+L 234.653071 241.132402 
+L 234.95774 241.253239 
+L 235.262408 241.166927 
+L 235.871744 241.287764 
+L 236.481081 241.080614 
+L 238.613759 241.270502 
+L 239.223096 241.132402 
+L 239.832432 241.184189 
+L 240.137101 241.132402 
+L 240.441769 241.218714 
+L 240.746437 241.028827 
+L 241.355774 241.097877 
+L 243.488452 241.028827 
+L 243.79312 241.218714 
+L 244.402457 240.994302 
+L 245.316462 241.04609 
+L 246.230467 241.184189 
+L 246.839803 240.97704 
+L 247.144472 240.614527 
+L 247.44914 240.545477 
+L 248.667813 241.184189 
+L 249.581818 241.080614 
+L 249.886486 241.149664 
+L 250.495823 241.080614 
+L 250.800491 241.080614 
+L 251.10516 240.787152 
+L 251.714496 240.718102 
+L 252.019165 240.787152 
+L 252.323833 240.718102 
+L 252.628501 241.115139 
+L 252.93317 241.201452 
+L 253.237838 241.063352 
+L 255.065848 241.201452 
+L 255.370516 240.821677 
+L 255.675184 240.735365 
+L 255.979853 240.83894 
+L 256.589189 240.718102 
+L 257.807862 240.890727 
+L 258.417199 240.76989 
+L 258.721867 241.149664 
+L 259.026536 240.821677 
+L 259.331204 240.752627 
+L 259.940541 240.873465 
+L 260.245209 240.787152 
+L 260.549877 241.063352 
+L 261.159214 241.218714 
+L 261.463882 240.76989 
+L 261.76855 240.873465 
+L 262.073219 44.978773 
+L 262.377887 44.443636 
+L 262.987224 44.460899 
+L 263.291892 236.972143 
+L 263.901229 235.763769 
+L 264.205897 235.539356 
+L 264.510565 235.746506 
+L 264.815233 235.090532 
+L 265.119902 236.039969 
+L 265.42457 235.988181 
+L 265.729238 237.973367 
+L 266.033907 44.460899 
+L 267.25258 44.478161 
+L 267.557248 236.523318 
+L 267.861916 237.904317 
+L 268.166585 238.076942 
+L 268.471253 234.676232 
+L 268.775921 234.917907 
+L 269.08059 223.058579 
+L 269.385258 225.613427 
+L 269.689926 226.735489 
+L 269.994595 229.652849 
+L 270.299263 44.581736 
+L 270.603931 44.443636 
+L 273.345946 44.443636 
+L 273.650614 229.549274 
+L 273.955283 44.512686 
+L 275.173956 44.443636 
+L 275.478624 216.015485 
+L 275.783292 217.137546 
+L 276.087961 234.900644 
+L 276.392629 44.512686 
+L 277.001966 44.460899 
+L 277.306634 44.547211 
+L 277.611302 241.011565 
+L 277.915971 241.028827 
+L 278.220639 241.322289 
+L 280.657985 241.270502 
+L 280.962654 240.994302 
+L 281.876658 240.959777 
+L 282.181327 241.028827 
+L 282.485995 241.322289 
+L 284.923342 241.270502 
+L 285.532678 240.959777 
+L 286.446683 240.97704 
+L 288.274693 240.97704 
+L 288.579361 241.287764 
+L 289.493366 240.942515 
+L 290.407371 241.115139 
+L 290.712039 241.270502 
+L 291.016708 241.287764 
+L 291.321376 241.011565 
+L 291.626044 240.97704 
+L 291.930713 240.56274 
+L 292.235381 240.441902 
+L 292.540049 240.718102 
+L 292.844717 240.735365 
+L 293.149386 241.270502 
+L 293.758722 241.097877 
+L 295.586732 241.218714 
+L 295.8914 240.752627 
+L 296.500737 240.666315 
+L 297.110074 240.70084 
+L 297.414742 241.063352 
+L 298.024079 241.115139 
+L 298.328747 241.235977 
+L 298.938084 241.080614 
+L 299.242752 241.097877 
+L 299.54742 241.235977 
+L 300.461425 240.70084 
+L 303.20344 240.718102 
+L 303.508108 241.253239 
+L 303.812776 240.752627 
+L 304.422113 240.683577 
+L 305.03145 240.752627 
+L 305.336118 241.115139 
+L 305.640786 241.270502 
+L 305.945455 241.270502 
+L 306.250123 240.76989 
+L 306.554791 240.752627 
+L 306.859459 44.926986 
+L 307.164128 44.495424 
+L 307.773464 44.495424 
+L 308.078133 235.591144 
+L 308.687469 234.17562 
+L 308.992138 234.883382 
+L 309.296806 234.900644 
+L 309.601474 234.38277 
+L 309.906143 235.245894 
+L 310.210811 235.038744 
+L 310.515479 237.16203 
+L 310.820147 44.529949 
+L 311.429484 44.529949 
+L 312.038821 44.547211 
+L 312.343489 235.936394 
+L 312.648157 237.43823 
+L 312.952826 237.835267 
+L 313.257494 232.345797 
+L 313.562162 232.760096 
+L 313.86683 220.572781 
+L 314.780835 226.942638 
+L 315.085504 44.616261 
+L 315.390172 44.495424 
+L 318.132187 44.478161 
+L 318.436855 230.947535 
+L 318.741523 44.512686 
+L 319.655528 44.495424 
+L 319.960197 44.512686 
+L 320.264865 215.91191 
+L 320.569533 217.914358 
+L 320.874201 234.330982 
+L 321.17887 44.581736 
+L 321.788206 44.512686 
+L 322.092875 44.529949 
+L 322.397543 241.097877 
+L 323.311548 241.235977 
+L 323.920885 241.235977 
+L 324.834889 241.218714 
+L 325.444226 241.322289 
+L 326.053563 241.201452 
+L 327.272236 241.218714 
+L 327.881572 241.322289 
+L 328.490909 241.253239 
+L 329.100246 241.235977 
+L 330.928256 241.166927 
+L 331.537592 241.097877 
+L 333.67027 241.132402 
+L 334.888943 241.149664 
+L 335.802948 241.270502 
+L 336.412285 241.115139 
+L 336.716953 237.78348 
+L 337.021622 237.30013 
+L 337.630958 237.541805 
+L 337.935627 241.132402 
+L 339.1543 241.166927 
+L 340.068305 241.218714 
+L 340.372973 241.132402 
+L 340.677641 237.593592 
+L 340.98231 237.455492 
+L 341.591646 237.490017 
+L 341.896314 237.731692 
+L 342.200983 241.097877 
+L 342.505651 241.305027 
+L 343.114988 241.097877 
+L 344.028993 241.235977 
+L 344.333661 241.374077 
+L 344.638329 241.235977 
+L 344.942998 237.731692 
+L 345.247666 237.541805 
+L 345.552334 237.662642 
+L 345.857002 237.403705 
+L 347.380344 237.593592 
+L 347.685012 237.628117 
+L 347.989681 237.50728 
+L 348.294349 241.322289 
+L 348.599017 237.64538 
+L 349.208354 237.43823 
+L 349.513022 237.541805 
+L 349.81769 237.800742 
+L 350.122359 241.184189 
+L 350.731695 241.391339 
+L 351.036364 237.904317 
+L 351.341032 237.766217 
+L 351.6457 237.351917 
+L 351.950369 238.059679 
+L 352.255037 241.04609 
+L 352.559705 241.04609 
+L 352.864373 241.305027 
+L 353.47371 241.391339 
+L 354.083047 241.322289 
+L 355.30172 241.287764 
+L 355.606388 241.011565 
+L 356.215725 240.97704 
+L 356.520393 241.011565 
+L 356.825061 240.90799 
+L 357.12973 241.356814 
+L 357.434398 241.374077 
+L 357.739066 241.253239 
+L 359.262408 241.356814 
+L 359.567076 241.408602 
+L 359.871744 240.994302 
+L 360.176413 240.925252 
+L 360.481081 241.04609 
+L 360.785749 240.890727 
+L 361.395086 240.925252 
+L 361.699754 240.873465 
+L 362.309091 240.942515 
+L 362.918428 240.856202 
+L 363.223096 241.201452 
+L 363.527764 240.890727 
+L 364.746437 240.873465 
+L 365.051106 241.132402 
+L 365.660442 241.287764 
+L 365.965111 240.856202 
+L 366.269779 240.97704 
+L 366.574447 240.545477 
+L 366.879115 240.649052 
+L 367.183784 240.614527 
+L 368.402457 241.218714 
+L 368.707125 241.132402 
+L 369.316462 241.287764 
+L 369.62113 241.149664 
+L 369.925799 241.201452 
+L 370.230467 241.132402 
+L 370.535135 240.683577 
+L 370.839803 240.597265 
+L 371.144472 240.735365 
+L 371.753808 240.597265 
+L 372.058477 241.028827 
+L 372.363145 241.201452 
+L 372.667813 241.063352 
+L 373.27715 241.097877 
+L 373.581818 241.184189 
+L 373.581818 241.184189 
+" clip-path="url(#pdceb6906fc)" style="fill: none; stroke: #ff7f0e; stroke-width: 1.5; stroke-linecap: square"/>
+   </g>
+   <g id="patch_3">
+    <path d="M 54 252 
+L 54 34.56 
+" style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/>
+   </g>
+   <g id="patch_4">
+    <path d="M 388.8 252 
+L 388.8 34.56 
+" style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/>
+   </g>
+   <g id="patch_5">
+    <path d="M 54 252 
+L 388.8 252 
+" style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/>
+   </g>
+   <g id="patch_6">
+    <path d="M 54 34.56 
+L 388.8 34.56 
+" style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/>
+   </g>
+   <g id="text_15">
+    <!-- Parameter Values -->
+    <g transform="translate(168.675 28.56)scale(0.12 -0.12)">
+     <defs>
+      <path id="DejaVuSans-56" d="M 1831 0 
+L 50 4666 
+L 709 4666 
+L 2188 738 
+L 3669 4666 
+L 4325 4666 
+L 2547 0 
+L 1831 0 
+z
+" transform="scale(0.015625)"/>
+      <path id="DejaVuSans-6c" d="M 603 4863 
+L 1178 4863 
+L 1178 0 
+L 603 0 
+L 603 4863 
+z
+" transform="scale(0.015625)"/>
+      <path id="DejaVuSans-75" d="M 544 1381 
+L 544 3500 
+L 1119 3500 
+L 1119 1403 
+Q 1119 906 1312 657 
+Q 1506 409 1894 409 
+Q 2359 409 2629 706 
+Q 2900 1003 2900 1516 
+L 2900 3500 
+L 3475 3500 
+L 3475 0 
+L 2900 0 
+L 2900 538 
+Q 2691 219 2414 64 
+Q 2138 -91 1772 -91 
+Q 1169 -91 856 284 
+Q 544 659 544 1381 
+z
+M 1991 3584 
+L 1991 3584 
+z
+" transform="scale(0.015625)"/>
+     </defs>
+     <use xlink:href="#DejaVuSans-50"/>
+     <use xlink:href="#DejaVuSans-61" x="55.802734"/>
+     <use xlink:href="#DejaVuSans-72" x="117.082031"/>
+     <use xlink:href="#DejaVuSans-61" x="158.195312"/>
+     <use xlink:href="#DejaVuSans-6d" x="219.474609"/>
+     <use xlink:href="#DejaVuSans-65" x="316.886719"/>
+     <use xlink:href="#DejaVuSans-74" x="378.410156"/>
+     <use xlink:href="#DejaVuSans-65" x="417.619141"/>
+     <use xlink:href="#DejaVuSans-72" x="479.142578"/>
+     <use xlink:href="#DejaVuSans-20" x="520.255859"/>
+     <use xlink:href="#DejaVuSans-56" x="552.042969"/>
+     <use xlink:href="#DejaVuSans-61" x="612.701172"/>
+     <use xlink:href="#DejaVuSans-6c" x="673.980469"/>
+     <use xlink:href="#DejaVuSans-75" x="701.763672"/>
+     <use xlink:href="#DejaVuSans-65" x="765.142578"/>
+     <use xlink:href="#DejaVuSans-73" x="826.666016"/>
+    </g>
+   </g>
+   <g id="legend_1">
+    <g id="patch_7">
+     <path d="M 276.029688 159.458125 
+L 381.8 159.458125 
+Q 383.8 159.458125 383.8 157.458125 
+L 383.8 129.101875 
+Q 383.8 127.101875 381.8 127.101875 
+L 276.029688 127.101875 
+Q 274.029688 127.101875 274.029688 129.101875 
+L 274.029688 157.458125 
+Q 274.029688 159.458125 276.029688 159.458125 
+z
+" style="fill: #ffffff; opacity: 0.8; stroke: #cccccc; stroke-linejoin: miter"/>
+    </g>
+    <g id="line2d_16">
+     <path d="M 278.029688 135.200312 
+L 288.029688 135.200312 
+L 298.029688 135.200312 
+" style="fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square"/>
+    </g>
+    <g id="text_16">
+     <!-- top-10% -->
+     <g transform="translate(306.029688 138.700312)scale(0.1 -0.1)">
+      <defs>
+       <path id="DejaVuSans-6f" d="M 1959 3097 
+Q 1497 3097 1228 2736 
+Q 959 2375 959 1747 
+Q 959 1119 1226 758 
+Q 1494 397 1959 397 
+Q 2419 397 2687 759 
+Q 2956 1122 2956 1747 
+Q 2956 2369 2687 2733 
+Q 2419 3097 1959 3097 
+z
+M 1959 3584 
+Q 2709 3584 3137 3096 
+Q 3566 2609 3566 1747 
+Q 3566 888 3137 398 
+Q 2709 -91 1959 -91 
+Q 1206 -91 779 398 
+Q 353 888 353 1747 
+Q 353 2609 779 3096 
+Q 1206 3584 1959 3584 
+z
+" transform="scale(0.015625)"/>
+       <path id="DejaVuSans-70" d="M 1159 525 
+L 1159 -1331 
+L 581 -1331 
+L 581 3500 
+L 1159 3500 
+L 1159 2969 
+Q 1341 3281 1617 3432 
+Q 1894 3584 2278 3584 
+Q 2916 3584 3314 3078 
+Q 3713 2572 3713 1747 
+Q 3713 922 3314 415 
+Q 2916 -91 2278 -91 
+Q 1894 -91 1617 61 
+Q 1341 213 1159 525 
+z
+M 3116 1747 
+Q 3116 2381 2855 2742 
+Q 2594 3103 2138 3103 
+Q 1681 3103 1420 2742 
+Q 1159 2381 1159 1747 
+Q 1159 1113 1420 752 
+Q 1681 391 2138 391 
+Q 2594 391 2855 752 
+Q 3116 1113 3116 1747 
+z
+" transform="scale(0.015625)"/>
+       <path id="DejaVuSans-2d" d="M 313 2009 
+L 1997 2009 
+L 1997 1497 
+L 313 1497 
+L 313 2009 
+z
+" transform="scale(0.015625)"/>
+       <path id="DejaVuSans-25" d="M 4653 2053 
+Q 4381 2053 4226 1822 
+Q 4072 1591 4072 1178 
+Q 4072 772 4226 539 
+Q 4381 306 4653 306 
+Q 4919 306 5073 539 
+Q 5228 772 5228 1178 
+Q 5228 1588 5073 1820 
+Q 4919 2053 4653 2053 
+z
+M 4653 2450 
+Q 5147 2450 5437 2106 
+Q 5728 1763 5728 1178 
+Q 5728 594 5436 251 
+Q 5144 -91 4653 -91 
+Q 4153 -91 3862 251 
+Q 3572 594 3572 1178 
+Q 3572 1766 3864 2108 
+Q 4156 2450 4653 2450 
+z
+M 1428 4353 
+Q 1159 4353 1004 4120 
+Q 850 3888 850 3481 
+Q 850 3069 1003 2837 
+Q 1156 2606 1428 2606 
+Q 1700 2606 1854 2837 
+Q 2009 3069 2009 3481 
+Q 2009 3884 1853 4118 
+Q 1697 4353 1428 4353 
+z
+M 4250 4750 
+L 4750 4750 
+L 1831 -91 
+L 1331 -91 
+L 4250 4750 
+z
+M 1428 4750 
+Q 1922 4750 2215 4408 
+Q 2509 4066 2509 3481 
+Q 2509 2891 2217 2550 
+Q 1925 2209 1428 2209 
+Q 931 2209 642 2551 
+Q 353 2894 353 3481 
+Q 353 4063 643 4406 
+Q 934 4750 1428 4750 
+z
+" transform="scale(0.015625)"/>
+      </defs>
+      <use xlink:href="#DejaVuSans-74"/>
+      <use xlink:href="#DejaVuSans-6f" x="39.208984"/>
+      <use xlink:href="#DejaVuSans-70" x="100.390625"/>
+      <use xlink:href="#DejaVuSans-2d" x="163.867188"/>
+      <use xlink:href="#DejaVuSans-31" x="199.951172"/>
+      <use xlink:href="#DejaVuSans-30" x="263.574219"/>
+      <use xlink:href="#DejaVuSans-25" x="327.197266"/>
+     </g>
+    </g>
+    <g id="line2d_17">
+     <path d="M 278.029688 149.878437 
+L 288.029688 149.878437 
+L 298.029688 149.878437 
+" style="fill: none; stroke: #ff7f0e; stroke-width: 1.5; stroke-linecap: square"/>
+    </g>
+    <g id="text_17">
+     <!-- Sym2 top-10% -->
+     <g transform="translate(306.029688 153.378437)scale(0.1 -0.1)">
+      <defs>
+       <path id="DejaVuSans-53" d="M 3425 4513 
+L 3425 3897 
+Q 3066 4069 2747 4153 
+Q 2428 4238 2131 4238 
+Q 1616 4238 1336 4038 
+Q 1056 3838 1056 3469 
+Q 1056 3159 1242 3001 
+Q 1428 2844 1947 2747 
+L 2328 2669 
+Q 3034 2534 3370 2195 
+Q 3706 1856 3706 1288 
+Q 3706 609 3251 259 
+Q 2797 -91 1919 -91 
+Q 1588 -91 1214 -16 
+Q 841 59 441 206 
+L 441 856 
+Q 825 641 1194 531 
+Q 1563 422 1919 422 
+Q 2459 422 2753 634 
+Q 3047 847 3047 1241 
+Q 3047 1584 2836 1778 
+Q 2625 1972 2144 2069 
+L 1759 2144 
+Q 1053 2284 737 2584 
+Q 422 2884 422 3419 
+Q 422 4038 858 4394 
+Q 1294 4750 2059 4750 
+Q 2388 4750 2728 4690 
+Q 3069 4631 3425 4513 
+z
+" transform="scale(0.015625)"/>
+       <path id="DejaVuSans-79" d="M 2059 -325 
+Q 1816 -950 1584 -1140 
+Q 1353 -1331 966 -1331 
+L 506 -1331 
+L 506 -850 
+L 844 -850 
+Q 1081 -850 1212 -737 
+Q 1344 -625 1503 -206 
+L 1606 56 
+L 191 3500 
+L 800 3500 
+L 1894 763 
+L 2988 3500 
+L 3597 3500 
+L 2059 -325 
+z
+" transform="scale(0.015625)"/>
+      </defs>
+      <use xlink:href="#DejaVuSans-53"/>
+      <use xlink:href="#DejaVuSans-79" x="63.476562"/>
+      <use xlink:href="#DejaVuSans-6d" x="122.65625"/>
+      <use xlink:href="#DejaVuSans-32" x="220.068359"/>
+      <use xlink:href="#DejaVuSans-20" x="283.691406"/>
+      <use xlink:href="#DejaVuSans-74" x="315.478516"/>
+      <use xlink:href="#DejaVuSans-6f" x="354.6875"/>
+      <use xlink:href="#DejaVuSans-70" x="415.869141"/>
+      <use xlink:href="#DejaVuSans-2d" x="479.345703"/>
+      <use xlink:href="#DejaVuSans-31" x="515.429688"/>
+      <use xlink:href="#DejaVuSans-30" x="579.052734"/>
+      <use xlink:href="#DejaVuSans-25" x="642.675781"/>
+     </g>
+    </g>
+   </g>
+  </g>
+ </g>
+ <defs>
+  <clipPath id="pdceb6906fc">
+   <rect x="54" y="34.56" width="334.8" height="217.44"/>
+  </clipPath>
+ </defs>
+</svg>
diff --git a/random files/ParametersWaveletHaarAcc.png b/random files/ParametersWaveletHaarAcc.png
new file mode 100644
index 0000000000000000000000000000000000000000..08c1ba7cc2068fbe3dca1317f50aab8ec4ad0483
GIT binary patch
literal 21988
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
CfUP6|

literal 0
HcmV?d00001

diff --git a/random files/PartialModel.py b/random files/PartialModel.py
new file mode 100644
index 0000000..5fccc99
--- /dev/null
+++ b/random files/PartialModel.py	
@@ -0,0 +1,381 @@
+import json
+import logging
+import os
+from pathlib import Path
+
+import numpy as np
+import torch
+
+from decentralizepy.sharing.Sharing import Sharing
+from decentralizepy.utils import conditional_value, identity
+
+
+class PartialModel(Sharing):
+    """
+    This class implements the vanilla version of partial model sharing.
+
+    """
+
+    def __init__(
+        self,
+        rank,
+        machine_id,
+        communication,
+        mapping,
+        graph,
+        model,
+        dataset,
+        log_dir,
+        alpha=1.0,
+        dict_ordered=True,
+        save_shared=False,
+        metadata_cap=1.0,
+        accumulation=False,
+        save_accumulated="",
+        change_transformer=identity,
+        accumulate_averaging_changes=False,
+    ):
+        """
+        Constructor
+
+        Parameters
+        ----------
+        rank : int
+            Local rank
+        machine_id : int
+            Global machine id
+        communication : decentralizepy.communication.Communication
+            Communication module used to send and receive messages
+        mapping : decentralizepy.mappings.Mapping
+            Mapping (rank, machine_id) -> uid
+        graph : decentralizepy.graphs.Graph
+            Graph reprensenting neighbors
+        model : decentralizepy.models.Model
+            Model to train
+        dataset : decentralizepy.datasets.Dataset
+            Dataset for sharing data. Not implemented yet! TODO
+        log_dir : str
+            Location to write shared_params (only writing for 2 procs per machine)
+        alpha : float
+            Percentage of model to share
+        dict_ordered : bool
+            Specifies if the python dict maintains the order of insertion
+        save_shared : bool
+            Specifies if the indices of shared parameters should be logged
+        metadata_cap : float
+            Share full model when self.alpha > metadata_cap
+        accumulation : bool
+            True if the the indices to share should be selected based on accumulated frequency change
+        save_accumulated : bool
+            True if accumulated weight change should be written to file. In case of accumulation the accumulated change
+            is stored. If a change_transformer is used then the transformed change is stored.
+        change_transformer : (x: Tensor) -> Tensor
+            A function that transforms the model change into other domains. Default: identity function
+        accumulate_averaging_changes: bool
+            True if the accumulation should account the model change due to averaging
+
+        """
+        super().__init__(
+            rank, machine_id, communication, mapping, graph, model, dataset, log_dir
+        )
+        self.alpha = alpha
+        self.dict_ordered = dict_ordered
+        self.save_shared = save_shared
+        self.metadata_cap = metadata_cap
+        self.total_meta = 0
+        self.accumulation = accumulation
+        self.save_accumulated = conditional_value(save_accumulated, "", False)
+        self.change_transformer = change_transformer
+        self.accumulate_averaging_changes = accumulate_averaging_changes
+
+        # getting the initial model
+        self.shapes = []
+        self.lens = []
+        with torch.no_grad():
+            tensors_to_cat = []
+            for _, v in self.model.state_dict().items():
+                self.shapes.append(v.shape)
+                t = v.flatten()
+                self.lens.append(t.shape[0])
+                tensors_to_cat.append(t)
+            self.init_model = torch.cat(tensors_to_cat, dim=0)
+            if self.accumulation:
+                self.model.accumulated_changes = torch.zeros_like(
+                    self.change_transformer(self.init_model)
+                )
+                self.prev = self.init_model
+
+        if self.save_accumulated:
+            self.model_change_path = os.path.join(
+                self.log_dir, "model_change/{}".format(self.rank)
+            )
+            Path(self.model_change_path).mkdir(parents=True, exist_ok=True)
+
+            self.model_val_path = os.path.join(
+                self.log_dir, "model_val/{}".format(self.rank)
+            )
+            Path(self.model_val_path).mkdir(parents=True, exist_ok=True)
+
+        # Only save for 2 procs: Save space
+        if self.save_shared and not (rank == 0 or rank == 1):
+            self.save_shared = False
+
+        if self.save_shared:
+            self.folder_path = os.path.join(
+                self.log_dir, "shared_params/{}".format(self.rank)
+            )
+            Path(self.folder_path).mkdir(parents=True, exist_ok=True)
+
+        self.model.shared_parameters_counter = torch.zeros(
+            self.change_transformer(self.init_model).shape[0], dtype=torch.int32
+        )
+
+        self.caches = dict()
+        my_neighbors = self.graph.neighbors(self.uid)
+        for n in my_neighbors:
+            self.caches[n] = self.init_model.clone().detach()
+        self.my_uid = self.mapping.get_uid(self.rank, self.machine_id)
+        self.caches[self.my_uid] = self.init_model.clone().detach()
+        self.e = torch.zeros_like(self.init_model)
+
+    def extract_top_gradients(self):
+        """
+        Extract the indices and values of the topK gradients.
+        The gradients must have been accumulated.
+
+        Returns
+        -------
+        tuple
+            (a,b). a: The magnitudes of the topK gradients, b: Their indices.
+
+        """
+
+        logging.info("Returning topk gradients")
+        G_topk = torch.abs(self.u)
+        std, mean = torch.std_mean(G_topk, unbiased=False)
+        self.std = std.item()
+        self.mean = mean.item()
+        return torch.topk(
+            G_topk, round(self.alpha * G_topk.shape[0]), dim=0, sorted=False
+        )
+
+    def serialized_model(self):
+        """
+        Convert model to a dict. self.alpha specifies the fraction of model to send.
+
+        Returns
+        -------
+        dict
+            Model converted to a dict
+
+        """
+        if self.alpha >= self.metadata_cap:  # Share fully
+            return super().serialized_model()
+
+        with torch.no_grad():
+            _, G_topk = self.extract_top_gradients()
+            self.model.shared_parameters_counter[G_topk] += 1
+
+            start_index = 0
+            std_dict = {}
+            new_model = self.init_model.clone().detach()
+            new_model[G_topk] += self.u[G_topk]
+            self.caches[self.my_uid] = new_model.clone().detach()
+            for i, key in enumerate(self.model.state_dict()):
+                end_index = start_index + self.lens[i]
+                std_dict[key] = new_model[start_index:end_index].reshape(self.shapes[i])
+                start_index = end_index
+
+            self.model.load_state_dict(std_dict)
+            self.g[G_topk] -= self.g[G_topk]
+            self.e = self.g
+
+            if self.save_shared:
+                shared_params = dict()
+                shared_params["order"] = list(self.model.state_dict().keys())
+                shapes = dict()
+                for k, v in self.model.state_dict().items():
+                    shapes[k] = list(v.shape)
+                shared_params["shapes"] = shapes
+
+                shared_params[self.communication_round] = G_topk.tolist()
+
+                with open(
+                    os.path.join(
+                        self.folder_path,
+                        "{}_shared_params.json".format(self.communication_round + 1),
+                    ),
+                    "w",
+                ) as of:
+                    json.dump(shared_params, of)
+
+            logging.info("Extracting topk params")
+
+            logging.info("Generating dictionary to send")
+
+            m = dict()
+
+            if not self.dict_ordered:
+                raise NotImplementedError
+
+            m["indices"] = G_topk.numpy().astype(np.int32)
+
+            m["params"] = self.u[G_topk].numpy()
+
+            m["send_partial"] = True
+
+            assert len(m["indices"]) == len(m["params"])
+            logging.info("Elements sending: {}".format(len(m["indices"])))
+
+            logging.info("Generated dictionary to send")
+
+            logging.info("Converted dictionary to pickle")
+            self.total_data += len(self.communication.encrypt(m["params"]))
+            self.total_meta += len(self.communication.encrypt(m["indices"]))
+
+            return m
+
+    def deserialized_model(self, m):
+        """
+        Convert received dict to state_dict.
+
+        Parameters
+        ----------
+        m : dict
+            dict received
+
+        Returns
+        -------
+        state_dict
+            state_dict of received
+
+        """
+        if "send_partial" not in m:
+            return super().deserialized_model(m)
+
+        with torch.no_grad():
+            state_dict = self.model.state_dict()
+
+            if not self.dict_ordered:
+                raise NotImplementedError
+
+            index_tensor = torch.tensor(m["indices"], dtype=torch.long)
+            values = torch.tensor(m["params"])
+            return index_tensor, values
+
+    def _pre_step(self):
+        """
+        Called at the beginning of step.
+
+        """
+        tensors_to_cat = [v.data.flatten() for _, v in self.model.state_dict().items()]
+        self.post_train_model = torch.cat(tensors_to_cat, dim=0)
+        self.g = self.e + (self.post_train_model - self.init_model)
+
+    def _averaging(self):
+        """
+        Averages the received model with the local model
+
+        """
+        with torch.no_grad():
+            total = torch.zeros_like(self.init_model)
+            weight_total = 0
+            for i, n in enumerate(self.caches):
+                if n != self.my_uid:
+                    data = self.caches[n]
+                    degree = len(self.graph.neighbors(n))
+                    weight = 1 / (
+                        max(len(self.peer_deques), degree) + 1
+                    )  # Metro-Hastings
+                    weight_total += weight
+                    total += data * weight
+
+            total += (1 - weight_total) * self.caches[self.my_uid]  # Metro-Hastings
+            self.avg = total
+
+    def step(self):
+        """
+        Perform a sharing step. Implements D-PSGD.
+
+        """
+
+        self._pre_step()
+
+        logging.info("Starting model averaging after receiving from all neighbors")
+        self._averaging()
+        logging.info("Model averaging complete")
+
+        self.u = (self.avg - self.init_model) - self.g
+
+        data = self.serialized_model()
+        my_uid = self.mapping.get_uid(self.rank, self.machine_id)
+        all_neighbors = self.graph.neighbors(my_uid)
+        iter_neighbors = self.get_neighbors(all_neighbors)
+        data["degree"] = len(all_neighbors)
+        data["iteration"] = self.communication_round
+        for neighbor in iter_neighbors:
+            self.communication.send(neighbor, data)
+
+        logging.info("Waiting for messages from neighbors")
+        while not self.received_from_all():
+            sender, data = self.communication.receive()
+            logging.debug("Received model from {}".format(sender))
+            degree = data["degree"]
+            iteration = data["iteration"]
+            del data["degree"]
+            del data["iteration"]
+            self.peer_deques[sender].append((degree, iteration, data))
+            logging.info(
+                "Deserialized received model from {} of iteration {}".format(
+                    sender, iteration
+                )
+            )
+
+        for i, n in enumerate(self.peer_deques):
+            degree, iteration, data = self.peer_deques[n].popleft()
+            ind, val = self.deserialized_model(data)
+            self.caches[n][ind] += val
+
+        self.communication_round += 1
+
+        tensors_to_cat = [v.data.flatten() for _, v in self.model.state_dict().items()]
+        post_share_model = torch.cat(tensors_to_cat, dim=0)
+        self.init_model = post_share_model
+        self._post_step()
+
+    def save_vector(self, v, s):
+        """
+        Saves the given vector to the file.
+
+        Parameters
+        ----------
+        v : torch.tensor
+            The torch tensor to write to file
+        s : str
+            Path to folder to write to
+
+        """
+        output_dict = dict()
+        output_dict["order"] = list(self.model.state_dict().keys())
+        shapes = dict()
+        for k, v1 in self.model.state_dict().items():
+            shapes[k] = list(v1.shape)
+        output_dict["shapes"] = shapes
+
+        output_dict["tensor"] = v.tolist()
+
+        with open(
+            os.path.join(
+                s,
+                "{}.json".format(self.communication_round + 1),
+            ),
+            "w",
+        ) as of:
+            json.dump(output_dict, of)
+
+    def save_change(self):
+        """
+        Saves the change and the gradient values for every iteration
+
+        """
+        self.save_vector(self.model.model_change, self.model_change_path)
diff --git a/random files/PartialModelWed.py b/random files/PartialModelWed.py
new file mode 100644
index 0000000..5fccc99
--- /dev/null
+++ b/random files/PartialModelWed.py	
@@ -0,0 +1,381 @@
+import json
+import logging
+import os
+from pathlib import Path
+
+import numpy as np
+import torch
+
+from decentralizepy.sharing.Sharing import Sharing
+from decentralizepy.utils import conditional_value, identity
+
+
+class PartialModel(Sharing):
+    """
+    This class implements the vanilla version of partial model sharing.
+
+    """
+
+    def __init__(
+        self,
+        rank,
+        machine_id,
+        communication,
+        mapping,
+        graph,
+        model,
+        dataset,
+        log_dir,
+        alpha=1.0,
+        dict_ordered=True,
+        save_shared=False,
+        metadata_cap=1.0,
+        accumulation=False,
+        save_accumulated="",
+        change_transformer=identity,
+        accumulate_averaging_changes=False,
+    ):
+        """
+        Constructor
+
+        Parameters
+        ----------
+        rank : int
+            Local rank
+        machine_id : int
+            Global machine id
+        communication : decentralizepy.communication.Communication
+            Communication module used to send and receive messages
+        mapping : decentralizepy.mappings.Mapping
+            Mapping (rank, machine_id) -> uid
+        graph : decentralizepy.graphs.Graph
+            Graph reprensenting neighbors
+        model : decentralizepy.models.Model
+            Model to train
+        dataset : decentralizepy.datasets.Dataset
+            Dataset for sharing data. Not implemented yet! TODO
+        log_dir : str
+            Location to write shared_params (only writing for 2 procs per machine)
+        alpha : float
+            Percentage of model to share
+        dict_ordered : bool
+            Specifies if the python dict maintains the order of insertion
+        save_shared : bool
+            Specifies if the indices of shared parameters should be logged
+        metadata_cap : float
+            Share full model when self.alpha > metadata_cap
+        accumulation : bool
+            True if the the indices to share should be selected based on accumulated frequency change
+        save_accumulated : bool
+            True if accumulated weight change should be written to file. In case of accumulation the accumulated change
+            is stored. If a change_transformer is used then the transformed change is stored.
+        change_transformer : (x: Tensor) -> Tensor
+            A function that transforms the model change into other domains. Default: identity function
+        accumulate_averaging_changes: bool
+            True if the accumulation should account the model change due to averaging
+
+        """
+        super().__init__(
+            rank, machine_id, communication, mapping, graph, model, dataset, log_dir
+        )
+        self.alpha = alpha
+        self.dict_ordered = dict_ordered
+        self.save_shared = save_shared
+        self.metadata_cap = metadata_cap
+        self.total_meta = 0
+        self.accumulation = accumulation
+        self.save_accumulated = conditional_value(save_accumulated, "", False)
+        self.change_transformer = change_transformer
+        self.accumulate_averaging_changes = accumulate_averaging_changes
+
+        # getting the initial model
+        self.shapes = []
+        self.lens = []
+        with torch.no_grad():
+            tensors_to_cat = []
+            for _, v in self.model.state_dict().items():
+                self.shapes.append(v.shape)
+                t = v.flatten()
+                self.lens.append(t.shape[0])
+                tensors_to_cat.append(t)
+            self.init_model = torch.cat(tensors_to_cat, dim=0)
+            if self.accumulation:
+                self.model.accumulated_changes = torch.zeros_like(
+                    self.change_transformer(self.init_model)
+                )
+                self.prev = self.init_model
+
+        if self.save_accumulated:
+            self.model_change_path = os.path.join(
+                self.log_dir, "model_change/{}".format(self.rank)
+            )
+            Path(self.model_change_path).mkdir(parents=True, exist_ok=True)
+
+            self.model_val_path = os.path.join(
+                self.log_dir, "model_val/{}".format(self.rank)
+            )
+            Path(self.model_val_path).mkdir(parents=True, exist_ok=True)
+
+        # Only save for 2 procs: Save space
+        if self.save_shared and not (rank == 0 or rank == 1):
+            self.save_shared = False
+
+        if self.save_shared:
+            self.folder_path = os.path.join(
+                self.log_dir, "shared_params/{}".format(self.rank)
+            )
+            Path(self.folder_path).mkdir(parents=True, exist_ok=True)
+
+        self.model.shared_parameters_counter = torch.zeros(
+            self.change_transformer(self.init_model).shape[0], dtype=torch.int32
+        )
+
+        self.caches = dict()
+        my_neighbors = self.graph.neighbors(self.uid)
+        for n in my_neighbors:
+            self.caches[n] = self.init_model.clone().detach()
+        self.my_uid = self.mapping.get_uid(self.rank, self.machine_id)
+        self.caches[self.my_uid] = self.init_model.clone().detach()
+        self.e = torch.zeros_like(self.init_model)
+
+    def extract_top_gradients(self):
+        """
+        Extract the indices and values of the topK gradients.
+        The gradients must have been accumulated.
+
+        Returns
+        -------
+        tuple
+            (a,b). a: The magnitudes of the topK gradients, b: Their indices.
+
+        """
+
+        logging.info("Returning topk gradients")
+        G_topk = torch.abs(self.u)
+        std, mean = torch.std_mean(G_topk, unbiased=False)
+        self.std = std.item()
+        self.mean = mean.item()
+        return torch.topk(
+            G_topk, round(self.alpha * G_topk.shape[0]), dim=0, sorted=False
+        )
+
+    def serialized_model(self):
+        """
+        Convert model to a dict. self.alpha specifies the fraction of model to send.
+
+        Returns
+        -------
+        dict
+            Model converted to a dict
+
+        """
+        if self.alpha >= self.metadata_cap:  # Share fully
+            return super().serialized_model()
+
+        with torch.no_grad():
+            _, G_topk = self.extract_top_gradients()
+            self.model.shared_parameters_counter[G_topk] += 1
+
+            start_index = 0
+            std_dict = {}
+            new_model = self.init_model.clone().detach()
+            new_model[G_topk] += self.u[G_topk]
+            self.caches[self.my_uid] = new_model.clone().detach()
+            for i, key in enumerate(self.model.state_dict()):
+                end_index = start_index + self.lens[i]
+                std_dict[key] = new_model[start_index:end_index].reshape(self.shapes[i])
+                start_index = end_index
+
+            self.model.load_state_dict(std_dict)
+            self.g[G_topk] -= self.g[G_topk]
+            self.e = self.g
+
+            if self.save_shared:
+                shared_params = dict()
+                shared_params["order"] = list(self.model.state_dict().keys())
+                shapes = dict()
+                for k, v in self.model.state_dict().items():
+                    shapes[k] = list(v.shape)
+                shared_params["shapes"] = shapes
+
+                shared_params[self.communication_round] = G_topk.tolist()
+
+                with open(
+                    os.path.join(
+                        self.folder_path,
+                        "{}_shared_params.json".format(self.communication_round + 1),
+                    ),
+                    "w",
+                ) as of:
+                    json.dump(shared_params, of)
+
+            logging.info("Extracting topk params")
+
+            logging.info("Generating dictionary to send")
+
+            m = dict()
+
+            if not self.dict_ordered:
+                raise NotImplementedError
+
+            m["indices"] = G_topk.numpy().astype(np.int32)
+
+            m["params"] = self.u[G_topk].numpy()
+
+            m["send_partial"] = True
+
+            assert len(m["indices"]) == len(m["params"])
+            logging.info("Elements sending: {}".format(len(m["indices"])))
+
+            logging.info("Generated dictionary to send")
+
+            logging.info("Converted dictionary to pickle")
+            self.total_data += len(self.communication.encrypt(m["params"]))
+            self.total_meta += len(self.communication.encrypt(m["indices"]))
+
+            return m
+
+    def deserialized_model(self, m):
+        """
+        Convert received dict to state_dict.
+
+        Parameters
+        ----------
+        m : dict
+            dict received
+
+        Returns
+        -------
+        state_dict
+            state_dict of received
+
+        """
+        if "send_partial" not in m:
+            return super().deserialized_model(m)
+
+        with torch.no_grad():
+            state_dict = self.model.state_dict()
+
+            if not self.dict_ordered:
+                raise NotImplementedError
+
+            index_tensor = torch.tensor(m["indices"], dtype=torch.long)
+            values = torch.tensor(m["params"])
+            return index_tensor, values
+
+    def _pre_step(self):
+        """
+        Called at the beginning of step.
+
+        """
+        tensors_to_cat = [v.data.flatten() for _, v in self.model.state_dict().items()]
+        self.post_train_model = torch.cat(tensors_to_cat, dim=0)
+        self.g = self.e + (self.post_train_model - self.init_model)
+
+    def _averaging(self):
+        """
+        Averages the received model with the local model
+
+        """
+        with torch.no_grad():
+            total = torch.zeros_like(self.init_model)
+            weight_total = 0
+            for i, n in enumerate(self.caches):
+                if n != self.my_uid:
+                    data = self.caches[n]
+                    degree = len(self.graph.neighbors(n))
+                    weight = 1 / (
+                        max(len(self.peer_deques), degree) + 1
+                    )  # Metro-Hastings
+                    weight_total += weight
+                    total += data * weight
+
+            total += (1 - weight_total) * self.caches[self.my_uid]  # Metro-Hastings
+            self.avg = total
+
+    def step(self):
+        """
+        Perform a sharing step. Implements D-PSGD.
+
+        """
+
+        self._pre_step()
+
+        logging.info("Starting model averaging after receiving from all neighbors")
+        self._averaging()
+        logging.info("Model averaging complete")
+
+        self.u = (self.avg - self.init_model) - self.g
+
+        data = self.serialized_model()
+        my_uid = self.mapping.get_uid(self.rank, self.machine_id)
+        all_neighbors = self.graph.neighbors(my_uid)
+        iter_neighbors = self.get_neighbors(all_neighbors)
+        data["degree"] = len(all_neighbors)
+        data["iteration"] = self.communication_round
+        for neighbor in iter_neighbors:
+            self.communication.send(neighbor, data)
+
+        logging.info("Waiting for messages from neighbors")
+        while not self.received_from_all():
+            sender, data = self.communication.receive()
+            logging.debug("Received model from {}".format(sender))
+            degree = data["degree"]
+            iteration = data["iteration"]
+            del data["degree"]
+            del data["iteration"]
+            self.peer_deques[sender].append((degree, iteration, data))
+            logging.info(
+                "Deserialized received model from {} of iteration {}".format(
+                    sender, iteration
+                )
+            )
+
+        for i, n in enumerate(self.peer_deques):
+            degree, iteration, data = self.peer_deques[n].popleft()
+            ind, val = self.deserialized_model(data)
+            self.caches[n][ind] += val
+
+        self.communication_round += 1
+
+        tensors_to_cat = [v.data.flatten() for _, v in self.model.state_dict().items()]
+        post_share_model = torch.cat(tensors_to_cat, dim=0)
+        self.init_model = post_share_model
+        self._post_step()
+
+    def save_vector(self, v, s):
+        """
+        Saves the given vector to the file.
+
+        Parameters
+        ----------
+        v : torch.tensor
+            The torch tensor to write to file
+        s : str
+            Path to folder to write to
+
+        """
+        output_dict = dict()
+        output_dict["order"] = list(self.model.state_dict().keys())
+        shapes = dict()
+        for k, v1 in self.model.state_dict().items():
+            shapes[k] = list(v1.shape)
+        output_dict["shapes"] = shapes
+
+        output_dict["tensor"] = v.tolist()
+
+        with open(
+            os.path.join(
+                s,
+                "{}.json".format(self.communication_round + 1),
+            ),
+            "w",
+        ) as of:
+            json.dump(output_dict, of)
+
+    def save_change(self):
+        """
+        Saves the change and the gradient values for every iteration
+
+        """
+        self.save_vector(self.model.model_change, self.model_change_path)
diff --git a/random files/WVFreq_Diff_Values.png b/random files/WVFreq_Diff_Values.png
new file mode 100644
index 0000000000000000000000000000000000000000..48954e2293cc2e105bb2eaa7c32a20df709bd91e
GIT binary patch
literal 21344
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

literal 0
HcmV?d00001

diff --git a/random files/WVFreq_Values.png b/random files/WVFreq_Values.png
new file mode 100644
index 0000000000000000000000000000000000000000..ee8f7ce2d6d0951098a75e86fcf01eb99d17f87d
GIT binary patch
literal 20025
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
V^vu0cvGf`@)UE(BRP7&i=1-R2+%EtC

literal 0
HcmV?d00001

diff --git a/random files/accHist.png b/random files/accHist.png
new file mode 100644
index 0000000000000000000000000000000000000000..6d14866f13987e00fa5de2ec071fd07e7462e59d
GIT binary patch
literal 9003
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
U&pk`P7gs=7J!4G4ImcW71J!y0TL1t6

literal 0
HcmV?d00001

diff --git a/random files/accPercentiles.png b/random files/accPercentiles.png
new file mode 100644
index 0000000000000000000000000000000000000000..71aea29b6fbadfc71eb99f4d48726be4ccdaba62
GIT binary patch
literal 15237
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
G*Z&Wh{O#oc

literal 0
HcmV?d00001

diff --git a/random files/accPercentiles70.png b/random files/accPercentiles70.png
new file mode 100644
index 0000000000000000000000000000000000000000..60175b0f7eff376e436ca78a314bd4e461fadaa9
GIT binary patch
literal 14525
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
P5TvQ9t5T(8`{sWDDyvVt

literal 0
HcmV?d00001

diff --git a/random files/celeba.ipynb b/random files/celeba.ipynb
new file mode 100644
index 0000000..14aa8d3
--- /dev/null
+++ b/random files/celeba.ipynb	
@@ -0,0 +1,768 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "colab": {
+     "base_uri": "https://localhost:8080/"
+    },
+    "id": "ZMZYcW3itMzT",
+    "outputId": "f2970f7e-cf26-4a67-e8d3-29bcd1a11775"
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "colab": {
+     "base_uri": "https://localhost:8080/"
+    },
+    "id": "2VftlLfttdT8",
+    "outputId": "48b47fdc-853b-4711-ae95-8c0e64510615"
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "metadata": {
+    "id": "ft7BMl1LyWP6"
+   },
+   "outputs": [],
+   "source": [
+    "from torch import nn\n",
+    "import torch\n",
+    "import os\n",
+    "import json\n",
+    "import pickle\n",
+    "import numpy as np\n",
+    "import pywt\n",
+    "train_dir = \"./../\"\n",
+    "my_train_data = {\"x\": [], \"y\": []}"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "<torch._C.Generator at 0x7f9ed4066cd0>"
+      ]
+     },
+     "execution_count": 2,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.manual_seed(13)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {
+    "id": "hi0N5rB5xBWn"
+   },
+   "outputs": [],
+   "source": [
+    "if torch.cuda.is_available():\n",
+    "  device = \"cuda\"\n",
+    "else:\n",
+    "  device = \"cpu\""
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "metadata": {
+    "colab": {
+     "base_uri": "https://localhost:8080/",
+     "height": 35
+    },
+    "id": "6lO3uYsmxNYz",
+    "outputId": "b170b610-f21e-465d-fcd6-b7e6989e73e5"
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "'cpu'"
+      ]
+     },
+     "execution_count": 4,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "device"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Contents\n",
+    "* [CNN Model Training](#train)\n",
+    "* [Optimizer analysis](#optim)\n",
+    "* [FFT](#fft)\n",
+    "* [Wavelets](#wt)\n",
+    "* [FFT Training](#ffttrain)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## CNN Model Training <a class=\"anchor\" id=\"train\"></a>"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "metadata": {
+    "id": "9LpgzEw1s-xo"
+   },
+   "outputs": [],
+   "source": [
+    "# From Femnist.py\n",
+    "def read_file(file_path):\n",
+    "    with open(file_path, \"r\") as inf:\n",
+    "        client_data = json.load(inf)\n",
+    "        print(\"loaded the data\")\n",
+    "    return (\n",
+    "        client_data[\"users\"],\n",
+    "        client_data[\"num_samples\"],\n",
+    "        client_data[\"user_data\"],\n",
+    "    )"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "id": "QBu1kiw8s-xr"
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "raw",
+   "metadata": {
+    "id": "jI3ixEN4s-xt",
+    "outputId": "ed969663-9e1e-4810-9507-52cdc426650a"
+   },
+   "source": [
+    "# From Femnist.py\n",
+    "for i in range(1):\n",
+    "    cur_file = \"leaf/data/femnist/data/train/all_data_0_niid_0_keep_0_train_9.json\"\n",
+    "    # test_file = \"leaf/data/femnist/data/test/all_data_0_niid_0_keep_0_test_9.json\"\n",
+    "    # cur_file = test_file\n",
+    "    clients, _, train_data = read_file(\n",
+    "        os.path.join(train_dir, cur_file)\n",
+    "    )\n",
+    "    for cur_client in clients:\n",
+    "        # self.clients.append(cur_client)\n",
+    "        my_train_data[\"x\"].extend(train_data[cur_client][\"x\"])\n",
+    "        my_train_data[\"y\"].extend(train_data[cur_client][\"y\"])\n",
+    "        del train_data[cur_client]\n"
+   ]
+  },
+  {
+   "cell_type": "raw",
+   "metadata": {
+    "id": "wvHsSz8as-xw"
+   },
+   "source": [
+    "train_x = (\n",
+    "    np.array(my_train_data[\"x\"], dtype=np.dtype(\"float32\"))\n",
+    "    .reshape(-1, 28, 28, 1)\n",
+    "    .transpose(0, 3, 1, 2)\n",
+    ")\n",
+    "train_y = np.array(my_train_data[\"y\"], dtype=np.dtype(\"int64\")).reshape(-1)"
+   ]
+  },
+  {
+   "cell_type": "raw",
+   "metadata": {
+    "id": "K8X471SKs-xz",
+    "outputId": "cdf73c06-1323-4e76-850b-16324008d255"
+   },
+   "source": [
+    "len(train_y)"
+   ]
+  },
+  {
+   "cell_type": "raw",
+   "metadata": {
+    "id": "EpWNELBrs-x0"
+   },
+   "source": [
+    "with open(train_dir+\"femnist.pkl\", \"wb\") as f:\n",
+    "    pickle.dump({\"test_x\": train_x, \"test_y\": train_y}, f)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "id": "mAEASHr2s-x1"
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "metadata": {
+    "id": "Am_XlcSSs-x3"
+   },
+   "outputs": [],
+   "source": [
+    "with open(train_dir+\"femnist.pkl\", \"rb\") as f:\n",
+    "    train = pickle.load(f)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "metadata": {
+    "id": "evAd9ZvYs-x6"
+   },
+   "outputs": [],
+   "source": [
+    "with open(train_dir+\"femnist_test.pkl\", \"rb\") as f:\n",
+    "    test = pickle.load(f)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "metadata": {
+    "id": "9_vIFakbs-x7",
+    "outputId": "3a8b546a-186f-4519-8c0b-e853986a8101"
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "(735856, 1, 28, 28)"
+      ]
+     },
+     "execution_count": 8,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "train[\"train_x\"].shape"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "metadata": {
+    "id": "GPyZ2C8ws-x9"
+   },
+   "outputs": [],
+   "source": [
+    "IMAGE_DIM = 84\n",
+    "CHANNELS = 3\n",
+    "NUM_CLASSES = 2\n",
+    "import torch.nn.functional as F\n",
+    "\n",
+    "class CNN(nn.Module):\n",
+    "    \"\"\"\n",
+    "    Class for a CNN Model for Celeba\n",
+    "\n",
+    "    \"\"\"\n",
+    "\n",
+    "    def __init__(self):\n",
+    "        \"\"\"\n",
+    "        Constructor. Instantiates the CNN Model\n",
+    "            with 84*84*3 Input and 2 output classes\n",
+    "\n",
+    "        \"\"\"\n",
+    "        super().__init__()\n",
+    "        # 2.8k parameters\n",
+    "        self.conv1 = nn.Conv2d(CHANNELS, 32, 3, padding=\"same\")\n",
+    "        self.pool = nn.MaxPool2d(2, 2)\n",
+    "        self.conv2 = nn.Conv2d(32, 32, 3, padding=\"same\")\n",
+    "        self.conv3 = nn.Conv2d(32, 32, 3, padding=\"same\")\n",
+    "        self.conv4 = nn.Conv2d(32, 32, 3, padding=\"same\")\n",
+    "        self.fc1 = nn.Linear(5 * 5 * 32, NUM_CLASSES)\n",
+    "\n",
+    "    def forward(self, x):\n",
+    "        \"\"\"\n",
+    "        Forward pass of the model\n",
+    "\n",
+    "        Parameters\n",
+    "        ----------\n",
+    "        x : torch.tensor\n",
+    "            The input torch tensor\n",
+    "\n",
+    "        Returns\n",
+    "        -------\n",
+    "        torch.tensor\n",
+    "            The output torch tensor\n",
+    "\n",
+    "        \"\"\"\n",
+    "        x = F.relu(self.pool(self.conv1(x)))\n",
+    "        x = F.relu(self.pool(self.conv2(x)))\n",
+    "        x = F.relu(self.pool(self.conv3(x)))\n",
+    "        x = F.relu(self.pool(self.conv4(x)))\n",
+    "        x = torch.flatten(x, 1)\n",
+    "        x = self.fc1(x)\n",
+    "        return x"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "id": "bCgW8ClBs-x_"
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 10,
+   "metadata": {
+    "id": "oBGwcwZks-yA"
+   },
+   "outputs": [],
+   "source": [
+    "import os\n",
+    "from torch.utils.data import Dataset\n",
+    "\n",
+    "class FemnistDataset(Dataset):\n",
+    "    def __init__(self, training, transform=None, target_transform=None):\n",
+    "        if training:\n",
+    "            with open(train_dir+\"femnist.pkl\", \"rb\") as f:\n",
+    "                train = pickle.load(f)\n",
+    "                self.data = train[\"train_x\"]\n",
+    "                self.label = train[\"train_y\"]\n",
+    "        else: \n",
+    "            with open(train_dir+\"femnist_test.pkl\", \"rb\") as f:\n",
+    "                test = pickle.load(f)\n",
+    "                self.data = test[\"test_x\"]\n",
+    "                self.label = test[\"test_y\"]\n",
+    "        self.transform = transform\n",
+    "        self.target_transform = target_transform\n",
+    "\n",
+    "    def __len__(self):\n",
+    "        return len(self.label)\n",
+    "\n",
+    "    def __getitem__(self, idx):\n",
+    "        return self.data[idx], self.label[idx]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 11,
+   "metadata": {
+    "id": "U3boC_N4s-yC"
+   },
+   "outputs": [],
+   "source": [
+    "from torch.utils.data import DataLoader"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "metadata": {
+    "id": "sJsrQXkEs-yD"
+   },
+   "outputs": [],
+   "source": [
+    "trainset = FemnistDataset(True)\n",
+    "testset = FemnistDataset(False)\n",
+    "\n",
+    "train_dataloader = DataLoader(trainset, batch_size=128, shuffle=True)\n",
+    "test_dataloader = DataLoader(testset, batch_size=128, shuffle=True)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 13,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "5749"
+      ]
+     },
+     "execution_count": 13,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "len(train_dataloader)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 14,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "735872"
+      ]
+     },
+     "execution_count": 14,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "5749*128"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 27,
+   "metadata": {
+    "id": "e65Izyv0s-yE"
+   },
+   "outputs": [],
+   "source": [
+    "lr = 0.0005\n",
+    "model = CNN().to(device)\n",
+    "loss_fn = nn.CrossEntropyLoss()\n",
+    "optimizer = torch.optim.Adam(model.parameters(), lr=lr)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 28,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([-0.1714, -0.1405, -0.0313,  0.0578,  0.0766, -0.1935,  0.1538,  0.0907,\n",
+       "         0.0226,  0.0708,  0.1525, -0.0412, -0.1595,  0.0278,  0.0404, -0.1018,\n",
+       "        -0.1330, -0.1515, -0.1124,  0.0592, -0.0866, -0.0707, -0.0435, -0.0559,\n",
+       "         0.0480, -0.1483, -0.0215, -0.1404, -0.0433,  0.0631, -0.1822, -0.0755])"
+      ]
+     },
+     "execution_count": 28,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "list(model.state_dict().values())[1]"
+   ]
+  },
+  {
+   "cell_type": "raw",
+   "metadata": {},
+   "source": [
+    "tensor([-0.0180,  0.0236,  0.1279, -0.1352, -0.1948, -0.0330, -0.1615, -0.0286,\n",
+    "        -0.1762,  0.0040,  0.1570, -0.1069, -0.1074, -0.1417, -0.1171,  0.0359,\n",
+    "         0.1276, -0.1534, -0.1773, -0.1639,  0.1334,  0.0518,  0.0586,  0.1466,\n",
+    "         0.1283,  0.0443, -0.0982, -0.1739, -0.0061,  0.1047, -0.0291,  0.1525])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 29,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "torch.Size([32, 1, 5, 5])\n",
+      "torch.Size([32])\n",
+      "torch.Size([64, 32, 5, 5])\n",
+      "torch.Size([64])\n",
+      "torch.Size([512, 3136])\n",
+      "torch.Size([512])\n",
+      "torch.Size([62, 512])\n",
+      "torch.Size([62])\n"
+     ]
+    }
+   ],
+   "source": [
+    "for p in model.parameters():\n",
+    "    print(p.data.size())\n",
+    "    p.data = torch.zeros(p.data.size())"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 30,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
+       "        0., 0., 0., 0., 0., 0., 0., 0.])"
+      ]
+     },
+     "execution_count": 30,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "list(model.state_dict().values())[1]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "colab": {
+     "base_uri": "https://localhost:8080/"
+    },
+    "id": "eqOXilqMs-yF",
+    "outputId": "06799a3b-983b-4f51-a7bd-a901c041bd05"
+   },
+   "outputs": [],
+   "source": [
+    "stats = {\"train\": [], \"test\":[]}\n",
+    "for e in range(10):\n",
+    "    #training\n",
+    "    batch = 0\n",
+    "    for X, y in train_dataloader:\n",
+    "        print(\"grad: \"+str(model.conv1.bias.grad))\n",
+    "        old = model.conv1.bias.clone()\n",
+    "        X = X.to(device)\n",
+    "        y = y.to(device)\n",
+    "        #print(len(label))\n",
+    "        size = len(train_dataloader.dataset)\n",
+    "        model.train()\n",
+    "        # Compute prediction error\n",
+    "        pred = model(X)\n",
+    "        loss = loss_fn(pred, y)\n",
+    "        # Backpropagation\n",
+    "        loss.backward()\n",
+    "        print(\"grad2: \"+str(model.conv1.bias.grad))\n",
+    "        optimizer.step()\n",
+    "        model.zero_grad()\n",
+    "        #optimizer.zero_grad()\n",
+    "        \n",
+    "        #resetting the optimizer\n",
+    "        # optimizer.load_state_dict(model.state_dict())\n",
+    "        vals = optimizer.state.values()\n",
+    "        print(optimizer.state.values())\n",
+    "\n",
+    "        if batch % 500 == 0:\n",
+    "            loss, current = loss.item(), batch * len(X)\n",
+    "            print(f\"loss: {loss:>7f}  [{current:>5d}/{size:>5d}]\")\n",
+    "            stats[\"train\"].append([batch, e*size + current, loss])\n",
+    "        batch += 1\n",
+    "    \n",
+    "    #testing\n",
+    "    size = len(test_dataloader.dataset)\n",
+    "    num_batches = len(test_dataloader)\n",
+    "    model.eval()\n",
+    "    test_loss, correct = 0, 0\n",
+    "    with torch.no_grad():\n",
+    "        for X, y in test_dataloader:\n",
+    "            X = X.to(device)\n",
+    "            y = y.to(device)\n",
+    "            pred = model(X)\n",
+    "            test_loss += loss_fn(pred, y).item()\n",
+    "            correct += (pred.argmax(1) == y).type(torch.float).sum().item()\n",
+    "    test_loss /= num_batches\n",
+    "    correct /= size\n",
+    "    print(\"epoch:\")\n",
+    "    print(f\"Test Error: \\n Accuracy: {(100*correct):>0.1f}%, Avg loss: {test_loss:>8f} \\n\")\n",
+    "    stats[\"test\"].append([e, test_loss, 100*correct])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 58,
+   "metadata": {
+    "id": "4P-VA0vcs-yH"
+   },
+   "outputs": [],
+   "source": [
+    "with open(train_dir+\"/results:128:\"+str(lr)+\".pkl\", \"wb\") as f:\n",
+    "  pickle.dump(stats, f)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "colab": {
+     "base_uri": "https://localhost:8080/"
+    },
+    "id": "641-b_VCvT2b",
+    "outputId": "cced38ab-5c04-45b2-faf4-e73327126159"
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 60,
+   "metadata": {
+    "colab": {
+     "base_uri": "https://localhost:8080/"
+    },
+    "id": "F_OKqiiHs-yJ",
+    "outputId": "65786b88-05f4-42fa-a851-03397ef4457a"
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "0.1: [9.         3.69780584 5.50521373]\n",
+      "0.01: [ 9.          3.98475619 82.61967193]\n",
+      "0.005: [ 9.          0.51492128 85.40642722]\n",
+      "0.001: [ 9.          0.41047618 88.03829502]\n",
+      "0.0005: [ 9.          0.44351858 88.21025672]\n",
+      "0.0001: [ 9.          0.67233266 87.71754375]\n",
+      "1e-05: [ 9.          1.81167539 81.52570279]\n"
+     ]
+    }
+   ],
+   "source": [
+    "lrs = [0.1, 0.01, 0.005, 0.001, 0.0005, 0.0001, 0.00001]\n",
+    "for l in lrs:\n",
+    "  with open(train_dir+\"/results:128:\"+str(l)+\".pkl\", \"rb\") as f:\n",
+    "    res = pickle.load(f)\n",
+    "    print(str(l)+\": \" + str(np.amax(res[\"test\"], axis=0)))#+ str(np.max(res[\"test\"]))\n",
+    "    # print(str(l)+\": \" + str(res[\"test\"]))\n",
+    "    "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 61,
+   "metadata": {
+    "colab": {
+     "base_uri": "https://localhost:8080/"
+    },
+    "id": "rADw-XkfKjOo",
+    "outputId": "06c54a2c-f7c2-4610-f879-3e1c2f98543f"
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "0.1: [[0, 3.6898819485246297, 4.914933837429111], [1, 3.695287103771977, 4.914933837429111], [2, 3.691172517592003, 5.505213732544667], [3, 3.6920483804158226, 4.967376059515824], [4, 3.6939517986755845, 5.505213732544667], [5, 3.6917366434742993, 4.914933837429111], [6, 3.695435837910811, 5.505213732544667], [7, 3.6978058357506574, 5.135679004817367], [8, 3.6948341036363623, 5.505213732544667], [9, 3.6921330658768343, 5.135679004817367]]\n",
+      "0.01: [[0, 0.5728003431500958, 81.8086468687115], [1, 0.5517885946725348, 82.61967193121532], [2, 3.984756194857093, 25.844258796268065], [3, 0.5739870879932797, 81.7476675407037], [4, 0.7832032613188912, 75.77779132873955], [5, 0.7142617320772638, 77.80474419171901], [6, 0.6602287095348103, 79.28654186230868], [7, 0.6738644539380036, 79.2719068235868], [8, 0.6469118589079138, 79.77071772669065], [9, 0.6788249858734946, 79.28898103542899]]\n",
+      "0.005: [[0, 0.4834194714537649, 83.79047502896519], [1, 0.466142692822562, 84.33928898103544], [2, 0.4559767278791776, 84.9515214342338], [3, 0.4488265364432298, 84.86493078846271], [4, 0.4554814101660307, 84.773461796451], [5, 0.5149212768315897, 83.05872309287152], [6, 0.4551808235472338, 84.86127202878224], [7, 0.4531376465992325, 85.06494298432831], [8, 0.4589428385362238, 84.83078236477834], [9, 0.4409179601951992, 85.40642722117202]]\n",
+      "0.001: [[0, 0.4104761779773254, 85.89670101835478], [1, 0.36889259526491536, 87.17604731995854], [2, 0.3517718464717292, 87.6992499542655], [3, 0.35526543692939927, 87.57607171168974], [4, 0.3493265717198808, 87.76266845539362], [5, 0.35079776836259874, 87.47362644063662], [6, 0.34534544340812845, 87.96268065125923], [7, 0.35734797465540874, 87.72608085858894], [8, 0.3524193228360457, 87.63339228001708], [9, 0.35447056082407136, 88.0382950179889]]\n",
+      "0.0005: [[0, 0.4435185831906085, 85.1039697542533], [1, 0.37539843543085405, 86.94310628696871], [2, 0.35873422210283473, 87.3797182755046], [3, 0.34818319706667605, 87.93097140069517], [4, 0.34545205666010914, 87.86633331300689], [5, 0.3371337376732536, 88.10415269223734], [6, 0.33852135716659976, 88.11512897127874], [7, 0.33852605533302293, 88.14074028904201], [8, 0.33997187332225476, 88.21025672297091], [9, 0.3402654077747311, 88.1968412708092]]\n",
+      "0.0001: [[0, 0.6723326555745278, 79.72437343740472], [1, 0.5084800024207409, 83.89901823281907], [2, 0.45863669222676995, 84.88932251966584], [3, 0.42524330169194946, 85.90767729739618], [4, 0.4028480564841242, 86.33575218001097], [5, 0.38621816764383715, 86.9126166229648], [6, 0.3782781209337544, 87.11506799195074], [7, 0.3759017101781045, 87.00530520153667], [8, 0.3668581307538772, 87.32117812061712], [9, 0.3569657983208967, 87.71754375266785]]\n",
+      "1e-05: [[0, 1.8116753936371826, 54.021586682114766], [1, 1.3575628893609724, 63.8148667601683], [2, 1.0996285610935432, 69.48716385145435], [3, 0.9349309672803477, 73.7788889566437], [4, 0.8294046315685635, 76.08878590157937], [5, 0.7614829346374863, 77.91938532837368], [6, 0.7032811826737176, 79.30727483383133], [7, 0.6657257149818349, 80.09024940545156], [8, 0.6363296165202226, 80.82931886090616], [9, 0.6094131586890139, 81.52570278675529]]\n"
+     ]
+    }
+   ],
+   "source": [
+    "lrs = [0.1, 0.01, 0.005, 0.001, 0.0005, 0.0001, 0.00001]\n",
+    "for l in lrs:\n",
+    "  with open(train_dir+\"/results:128:\"+str(l)+\".pkl\", \"rb\") as f:\n",
+    "    res = pickle.load(f)\n",
+    "    # print(str(l)+\": \" + str(np.amax(res[\"test\"], axis=0)))#+ str(np.max(res[\"test\"]))\n",
+    "    print(str(l)+\": \" + str(res[\"test\"]))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "id": "HGpNYzG_s-yJ",
+    "outputId": "783622a5-249f-4dd8-d242-fc6dfa47443c"
+   },
+   "outputs": [
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "Using cache found in /home/jeffrey/.cache/torch/hub/pytorch_vision_v0.10.0\n"
+     ]
+    }
+   ],
+   "source": [
+    "import torch\n",
+    "resnet = torch.hub.load('pytorch/vision:v0.10.0', 'resnet18', pretrained=True)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "id": "uZFgT6wss-yL",
+    "outputId": "10f8fc51-abb7-4c2b-f608-85229f3de29d",
+    "tags": []
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "11699132\n"
+     ]
+    }
+   ],
+   "source": [
+    "total = 0\n",
+    "for i in resnet.state_dict().values():\n",
+    "    total += i.flatten().size(dim=0)\n",
+    "print(total)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Optimizer analysis <a class=\"anchor\" id=\"optim\"></a>"
+   ]
+  }
+ ],
+ "metadata": {
+  "colab": {
+   "name": "learningrate.ipynb",
+   "provenance": []
+  },
+  "interpreter": {
+   "hash": "996934296aa9d79be6c3d800a38d8fdb7dfa8fe7bb07df178f1397cde2cb8742"
+  },
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.9.10"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/random files/generate_graph.py b/random files/generate_graph.py
new file mode 100644
index 0000000..cd62542
--- /dev/null
+++ b/random files/generate_graph.py	
@@ -0,0 +1,19 @@
+import matplotlib.pyplot as plt
+import networkx as nx
+
+from decentralizepy.graphs.Regular import Regular
+from decentralizepy.graphs.Ring import Ring
+from decentralizepy.graphs.Star import Star
+
+# b = Regular(16, 1, 686)
+
+
+b = Regular(96*3, 5)
+# TODO: rewrite to directly connect dissconnected subgraphs
+# b.connect_graph()
+
+b.write_graph_to_file(f"{96*3}_regular.edges")
+
+g = nx.read_edgelist(f"{96*3}_regular.edges")
+nx.draw(g)
+#plt.savefig("96_star.png")
diff --git a/random files/ip_addr_1Machines.json b/random files/ip_addr_1Machines.json
new file mode 100644
index 0000000..15d6591
--- /dev/null
+++ b/random files/ip_addr_1Machines.json	
@@ -0,0 +1,3 @@
+{
+    "0": "127.0.0.1"
+}
\ No newline at end of file
diff --git a/random files/learningrate-Copy2.ipynb b/random files/learningrate-Copy2.ipynb
new file mode 100644
index 0000000..6a5dff3
--- /dev/null
+++ b/random files/learningrate-Copy2.ipynb	
@@ -0,0 +1,7121 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "colab": {
+     "base_uri": "https://localhost:8080/"
+    },
+    "id": "ZMZYcW3itMzT",
+    "outputId": "f2970f7e-cf26-4a67-e8d3-29bcd1a11775"
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "colab": {
+     "base_uri": "https://localhost:8080/"
+    },
+    "id": "2VftlLfttdT8",
+    "outputId": "48b47fdc-853b-4711-ae95-8c0e64510615"
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "metadata": {
+    "id": "ft7BMl1LyWP6"
+   },
+   "outputs": [],
+   "source": [
+    "from torch import nn\n",
+    "import torch\n",
+    "import os\n",
+    "import json\n",
+    "import pickle\n",
+    "import numpy as np\n",
+    "import pywt\n",
+    "#from torchvision.models.resnet import ResNet, BasicBlock, Bottleneck\n",
+    "train_dir = \"../../\"\n",
+    "my_train_data = {\"x\": [], \"y\": []}"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "<torch._C.Generator at 0x7f1e10694c30>"
+      ]
+     },
+     "execution_count": 2,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.manual_seed(13)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {
+    "id": "hi0N5rB5xBWn"
+   },
+   "outputs": [],
+   "source": [
+    "if torch.cuda.is_available():\n",
+    "  device = \"cuda\"\n",
+    "else:\n",
+    "  device = \"cpu\""
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "metadata": {
+    "colab": {
+     "base_uri": "https://localhost:8080/",
+     "height": 35
+    },
+    "id": "6lO3uYsmxNYz",
+    "outputId": "b170b610-f21e-465d-fcd6-b7e6989e73e5"
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "'cpu'"
+      ]
+     },
+     "execution_count": 4,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "device"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "torch.set_num_threads(6)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Contents\n",
+    "* [CNN Model Training](#train)\n",
+    "* [Optimizer analysis](#optim)\n",
+    "* [FFT](#fft)\n",
+    "* [Wavelets](#wt)\n",
+    "* [FFT Training](#ffttrain)\n",
+    "* [Node_Training](#nodetraining)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## CNN Model Training <a class=\"anchor\" id=\"train\"></a>"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "metadata": {
+    "id": "9LpgzEw1s-xo"
+   },
+   "outputs": [],
+   "source": [
+    "# From Femnist.py\n",
+    "def read_file(file_path):\n",
+    "    with open(file_path, \"r\") as inf:\n",
+    "        client_data = json.load(inf)\n",
+    "        print(\"loaded the data\")\n",
+    "    return (\n",
+    "        client_data[\"users\"],\n",
+    "        client_data[\"num_samples\"],\n",
+    "        client_data[\"user_data\"],\n",
+    "    )"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "id": "QBu1kiw8s-xr"
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "raw",
+   "metadata": {
+    "id": "jI3ixEN4s-xt",
+    "outputId": "ed969663-9e1e-4810-9507-52cdc426650a"
+   },
+   "source": [
+    "# From Femnist.py\n",
+    "for i in range(1):\n",
+    "    cur_file = \"leaf/data/femnist/data/train/all_data_0_niid_0_keep_0_train_9.json\"\n",
+    "    # test_file = \"leaf/data/femnist/data/test/all_data_0_niid_0_keep_0_test_9.json\"\n",
+    "    # cur_file = test_file\n",
+    "    clients, _, train_data = read_file(\n",
+    "        os.path.join(train_dir, cur_file)\n",
+    "    )\n",
+    "    for cur_client in clients:\n",
+    "        # self.clients.append(cur_client)\n",
+    "        my_train_data[\"x\"].extend(train_data[cur_client][\"x\"])\n",
+    "        my_train_data[\"y\"].extend(train_data[cur_client][\"y\"])\n",
+    "        del train_data[cur_client]\n"
+   ]
+  },
+  {
+   "cell_type": "raw",
+   "metadata": {
+    "id": "wvHsSz8as-xw"
+   },
+   "source": [
+    "train_x = (\n",
+    "    np.array(my_train_data[\"x\"], dtype=np.dtype(\"float32\"))\n",
+    "    .reshape(-1, 28, 28, 1)\n",
+    "    .transpose(0, 3, 1, 2)\n",
+    ")\n",
+    "train_y = np.array(my_train_data[\"y\"], dtype=np.dtype(\"int64\")).reshape(-1)"
+   ]
+  },
+  {
+   "cell_type": "raw",
+   "metadata": {
+    "id": "K8X471SKs-xz",
+    "outputId": "cdf73c06-1323-4e76-850b-16324008d255"
+   },
+   "source": [
+    "len(train_y)"
+   ]
+  },
+  {
+   "cell_type": "raw",
+   "metadata": {
+    "id": "EpWNELBrs-x0"
+   },
+   "source": [
+    "with open(train_dir+\"femnist.pkl\", \"wb\") as f:\n",
+    "    pickle.dump({\"test_x\": train_x, \"test_y\": train_y}, f)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "id": "mAEASHr2s-x1"
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "metadata": {
+    "id": "Am_XlcSSs-x3"
+   },
+   "outputs": [],
+   "source": [
+    "with open(train_dir+\"femnist.pkl\", \"rb\") as f:\n",
+    "    train = pickle.load(f)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "metadata": {
+    "id": "evAd9ZvYs-x6"
+   },
+   "outputs": [],
+   "source": [
+    "with open(train_dir+\"femnist_test.pkl\", \"rb\") as f:\n",
+    "    test = pickle.load(f)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "metadata": {
+    "id": "9_vIFakbs-x7",
+    "outputId": "3a8b546a-186f-4519-8c0b-e853986a8101"
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "(735856, 1, 28, 28)"
+      ]
+     },
+     "execution_count": 9,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "train[\"train_x\"].shape"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 10,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def conv3x3(in_planes, out_planes, stride=1, groups=1, dilation=1):\n",
+    "    \"\"\"3x3 convolution with padding\"\"\"\n",
+    "    return nn.Conv2d(in_planes, out_planes, kernel_size=3, stride=stride,\n",
+    "                     padding=dilation, groups=groups, bias=False, dilation=dilation)\n",
+    "\n",
+    "\n",
+    "def conv1x1(in_planes, out_planes, stride=1):\n",
+    "    \"\"\"1x1 convolution\"\"\"\n",
+    "    return nn.Conv2d(in_planes, out_planes, kernel_size=1, stride=stride, bias=False)\n",
+    "\n",
+    "class BasicBlock(nn.Module):\n",
+    "    expansion = 1\n",
+    "\n",
+    "    def __init__(self, inplanes, planes, stride=1, downsample=None, groups=1,\n",
+    "                 base_width=64, dilation=1, norm_layer=None):\n",
+    "        super(BasicBlock, self).__init__()\n",
+    "        if norm_layer is None:\n",
+    "            norm_layer = nn.BatchNorm2d\n",
+    "        if dilation > 1:\n",
+    "            raise NotImplementedError(\"Dilation > 1 not supported in BasicBlock\")\n",
+    "        # Both self.conv1 and self.downsample layers downsample the input when stride != 1\n",
+    "        self.conv1 = conv3x3(inplanes, planes, stride)\n",
+    "        self.bn1 = norm_layer(planes)\n",
+    "        self.relu = nn.ReLU(inplace=True)\n",
+    "        self.conv2 = conv3x3(planes, planes)\n",
+    "        self.bn2 = norm_layer(planes)\n",
+    "        self.downsample = downsample\n",
+    "        self.stride = stride\n",
+    "    \n",
+    "    def forward(self, x):\n",
+    "        identity = x\n",
+    "\n",
+    "        out = self.conv1(x)\n",
+    "        out = self.bn1(out)\n",
+    "        out = self.relu(out)\n",
+    "\n",
+    "        out = self.conv2(out)\n",
+    "        out = self.bn2(out)\n",
+    "\n",
+    "        if self.downsample is not None:\n",
+    "            identity = self.downsample(x)\n",
+    "\n",
+    "        out += identity\n",
+    "        out = self.relu(out)\n",
+    "\n",
+    "        return out\n",
+    "\n",
+    "class Bottleneck(nn.Module):\n",
+    "    # Bottleneck in torchvision places the stride for downsampling at 3x3 convolution(self.conv2)\n",
+    "    # while original implementation places the stride at the first 1x1 convolution(self.conv1)\n",
+    "    # according to \"Deep residual learning for image recognition\"https://arxiv.org/abs/1512.03385.\n",
+    "    # This variant is also known as ResNet V1.5 and improves accuracy according to\n",
+    "    # https://ngc.nvidia.com/catalog/model-scripts/nvidia:resnet_50_v1_5_for_pytorch.\n",
+    "\n",
+    "    expansion = 4\n",
+    "\n",
+    "    def __init__(self, inplanes, planes, stride=1, downsample=None, groups=1,\n",
+    "                 base_width=64, dilation=1, norm_layer=None):\n",
+    "        super(Bottleneck, self).__init__()\n",
+    "        if norm_layer is None:\n",
+    "            norm_layer = nn.BatchNorm2d\n",
+    "        width = int(planes * (base_width / 64.)) * groups\n",
+    "        # Both self.conv2 and self.downsample layers downsample the input when stride != 1\n",
+    "        self.conv1 = conv1x1(inplanes, width)\n",
+    "        self.bn1 = norm_layer(width)\n",
+    "        self.conv2 = conv3x3(width, width, stride, groups, dilation)\n",
+    "        self.bn2 = norm_layer(width)\n",
+    "        self.conv3 = conv1x1(width, planes * self.expansion)\n",
+    "        self.bn3 = norm_layer(planes * self.expansion)\n",
+    "        self.relu = nn.ReLU(inplace=True)\n",
+    "        self.downsample = downsample\n",
+    "        self.stride = stride\n",
+    "\n",
+    "    def forward(self, x):\n",
+    "        identity = x\n",
+    "\n",
+    "        out = self.conv1(x)\n",
+    "        out = self.bn1(out)\n",
+    "        out = self.relu(out)\n",
+    "\n",
+    "        out = self.conv2(out)\n",
+    "        out = self.bn2(out)\n",
+    "        out = self.relu(out)\n",
+    "\n",
+    "        out = self.conv3(out)\n",
+    "        out = self.bn3(out)\n",
+    "\n",
+    "        if self.downsample is not None:\n",
+    "            identity = self.downsample(x)\n",
+    "\n",
+    "        out += identity\n",
+    "        out = self.relu(out)\n",
+    "\n",
+    "        return out\n",
+    "\n",
+    "class ResNet(nn.Module):\n",
+    "\n",
+    "    def __init__(self, block, layers, num_classes=1000, zero_init_residual=False,\n",
+    "                 groups=1, width_per_group=64, replace_stride_with_dilation=None,\n",
+    "                 norm_layer=None):\n",
+    "        super(ResNet, self).__init__()\n",
+    "        if norm_layer is None:\n",
+    "            norm_layer = nn.BatchNorm2d\n",
+    "        self._norm_layer = norm_layer\n",
+    "\n",
+    "        self.inplanes = 32\n",
+    "        self.dilation = 1\n",
+    "        if replace_stride_with_dilation is None:\n",
+    "            # each element in the tuple indicates if we should replace\n",
+    "            # the 2x2 stride with a dilated convolution instead\n",
+    "            replace_stride_with_dilation = [False, False, False]\n",
+    "        if len(replace_stride_with_dilation) != 3:\n",
+    "            raise ValueError(\"replace_stride_with_dilation should be None \"\n",
+    "                             \"or a 3-element tuple, got {}\".format(replace_stride_with_dilation))\n",
+    "        self.groups = groups\n",
+    "        self.base_width = width_per_group\n",
+    "        self.conv1 = nn.Conv2d(1, self.inplanes, kernel_size=7, stride=2, padding=3,\n",
+    "                               bias=False)\n",
+    "        self.bn1 = norm_layer(self.inplanes)\n",
+    "        self.relu = nn.ReLU(inplace=True)\n",
+    "        self.maxpool = nn.MaxPool2d(kernel_size=3, stride=2, padding=1)\n",
+    "        self.layer1 = self._make_layer(block, 32, layers[0])\n",
+    "        self.layer2 = self._make_layer(block, 64, layers[1], stride=2,\n",
+    "                                       dilate=replace_stride_with_dilation[0])\n",
+    "        self.layer3 = self._make_layer(block, 128, layers[2], stride=2,\n",
+    "                                       dilate=replace_stride_with_dilation[1])\n",
+    "        self.layer4 = self._make_layer(block, 256, layers[3], stride=2,\n",
+    "                                       dilate=replace_stride_with_dilation[2])\n",
+    "        self.avgpool = nn.AdaptiveAvgPool2d((1, 1))\n",
+    "        self.fc = nn.Linear(256 * block.expansion, num_classes)\n",
+    "\n",
+    "        for m in self.modules():\n",
+    "            if isinstance(m, nn.Conv2d):\n",
+    "                nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu')\n",
+    "            elif isinstance(m, (nn.BatchNorm2d, nn.GroupNorm)):\n",
+    "                nn.init.constant_(m.weight, 1)\n",
+    "                nn.init.constant_(m.bias, 0)\n",
+    "\n",
+    "        # Zero-initialize the last BN in each residual branch,\n",
+    "        # so that the residual branch starts with zeros, and each residual block behaves like an identity.\n",
+    "        # This improves the model by 0.2~0.3% according to https://arxiv.org/abs/1706.02677\n",
+    "        if zero_init_residual:\n",
+    "            for m in self.modules():\n",
+    "                if isinstance(m, Bottleneck):\n",
+    "                    nn.init.constant_(m.bn3.weight, 0)\n",
+    "                elif isinstance(m, BasicBlock):\n",
+    "                    nn.init.constant_(m.bn2.weight, 0)\n",
+    "\n",
+    "    def _make_layer(self, block, planes, blocks, stride=1, dilate=False):\n",
+    "        norm_layer = self._norm_layer\n",
+    "        downsample = None\n",
+    "        previous_dilation = self.dilation\n",
+    "        if dilate:\n",
+    "            self.dilation *= stride\n",
+    "            stride = 1\n",
+    "        if stride != 1 or self.inplanes != planes * block.expansion:\n",
+    "            downsample = nn.Sequential(\n",
+    "                conv1x1(self.inplanes, planes * block.expansion, stride),\n",
+    "                norm_layer(planes * block.expansion),\n",
+    "            )\n",
+    "\n",
+    "        layers = []\n",
+    "        layers.append(block(self.inplanes, planes, stride, downsample, self.groups,\n",
+    "                            self.base_width, previous_dilation, norm_layer))\n",
+    "        self.inplanes = planes * block.expansion\n",
+    "        for _ in range(1, blocks):\n",
+    "            layers.append(block(self.inplanes, planes, groups=self.groups,\n",
+    "                                base_width=self.base_width, dilation=self.dilation,\n",
+    "                                norm_layer=norm_layer))\n",
+    "\n",
+    "        return nn.Sequential(*layers)\n",
+    "\n",
+    "    def _forward_impl(self, x):\n",
+    "        # See note [TorchScript super()]\n",
+    "        x = self.conv1(x)\n",
+    "        x = self.bn1(x)\n",
+    "        x = self.relu(x)\n",
+    "        x = self.maxpool(x)\n",
+    "\n",
+    "        x = self.layer1(x)\n",
+    "        x = self.layer2(x)\n",
+    "        x = self.layer3(x)\n",
+    "        x = self.layer4(x)\n",
+    "\n",
+    "        x = self.avgpool(x)\n",
+    "        x = torch.flatten(x, 1)\n",
+    "        x = self.fc(x)\n",
+    "\n",
+    "        return x\n",
+    "\n",
+    "    def forward(self, x):\n",
+    "        return self._forward_impl(x)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 11,
+   "metadata": {
+    "id": "GPyZ2C8ws-x9"
+   },
+   "outputs": [],
+   "source": [
+    "NUM_CLASSES = 62\n",
+    "IMAGE_SIZE = (28, 28)\n",
+    "FLAT_SIZE = 28 * 28\n",
+    "PIXEL_RANGE = 256.0\n",
+    "\n",
+    "model = ResNet(BasicBlock, [2,2,2,2], num_classes=62,  width_per_group=32)\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "metadata": {
+    "id": "bCgW8ClBs-x_"
+   },
+   "outputs": [],
+   "source": [
+    "flat = []\n",
+    "for v in model.state_dict().values():\n",
+    "    flat.append(v.flatten())\n",
+    "conc = torch.cat(flat)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 13,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "torch.Size([2816498])"
+      ]
+     },
+     "execution_count": 13,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "conc.shape"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 14,
+   "metadata": {
+    "id": "oBGwcwZks-yA"
+   },
+   "outputs": [],
+   "source": [
+    "import os\n",
+    "from torch.utils.data import Dataset\n",
+    "\n",
+    "class FemnistDataset(Dataset):\n",
+    "    def __init__(self, training, transform=None, target_transform=None):\n",
+    "        if training:\n",
+    "            with open(train_dir+\"femnist.pkl\", \"rb\") as f:\n",
+    "                train = pickle.load(f)\n",
+    "                self.data = train[\"train_x\"]\n",
+    "                self.label = train[\"train_y\"]\n",
+    "        else: \n",
+    "            with open(train_dir+\"femnist_test.pkl\", \"rb\") as f:\n",
+    "                test = pickle.load(f)\n",
+    "                self.data = test[\"test_x\"]\n",
+    "                self.label = test[\"test_y\"]\n",
+    "        self.transform = transform\n",
+    "        self.target_transform = target_transform\n",
+    "\n",
+    "    def __len__(self):\n",
+    "        return len(self.label)\n",
+    "\n",
+    "    def __getitem__(self, idx):\n",
+    "        return self.data[idx], self.label[idx]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 15,
+   "metadata": {
+    "id": "U3boC_N4s-yC"
+   },
+   "outputs": [],
+   "source": [
+    "from torch.utils.data import DataLoader"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 16,
+   "metadata": {
+    "id": "sJsrQXkEs-yD"
+   },
+   "outputs": [],
+   "source": [
+    "trainset = FemnistDataset(True)\n",
+    "testset = FemnistDataset(False)\n",
+    "\n",
+    "train_dataloader = DataLoader(trainset, batch_size=128, shuffle=True)\n",
+    "test_dataloader = DataLoader(testset, batch_size=128, shuffle=True)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 17,
+   "metadata": {
+    "id": "e65Izyv0s-yE"
+   },
+   "outputs": [],
+   "source": [
+    "lr = 0.0005\n",
+    "model = model.to(device)\n",
+    "loss_fn = nn.CrossEntropyLoss()\n",
+    "optimizer = torch.optim.Adam(model.parameters(), lr=lr)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 18,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n",
+       "        1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])"
+      ]
+     },
+     "execution_count": 18,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "list(model.state_dict().values())[1]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 19,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "for v in model.state_dict().values():\n",
+    "    flat.append(v.flatten())\n",
+    "conc = torch.cat(flat)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 27,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "tensor([-3.6153e-02,  1.0922e-02,  1.5911e-01,  7.6926e-02,  5.7525e-02,\n",
+      "         2.0833e-01,  4.8255e-02,  2.0805e-01, -2.4887e-02,  8.3241e-02,\n",
+      "         5.7281e-02,  3.2598e-02, -5.9614e-03,  2.3448e-01, -2.7755e-02,\n",
+      "         1.2072e-01,  2.0834e-03,  1.4729e-01, -2.0169e-01, -2.3126e-03,\n",
+      "        -1.0632e-02,  1.1928e-02, -1.2216e-01, -1.3769e-03, -1.1989e-01,\n",
+      "        -2.1655e-02,  1.6833e-02, -1.0780e-01,  5.3008e-02,  1.1340e-01,\n",
+      "        -1.1262e-01, -2.9909e-02, -1.3595e-01,  1.1996e-01, -3.5497e-02,\n",
+      "        -5.9646e-02, -8.5283e-03, -3.5111e-02, -7.9876e-03,  4.3423e-02,\n",
+      "         8.0446e-02,  1.3475e-01, -1.7352e-02,  1.5214e-01,  5.7564e-02,\n",
+      "        -1.2092e-02,  4.2873e-02, -4.6847e-02, -1.5831e-01,  3.2632e-02,\n",
+      "         1.2103e-02, -7.3686e-02,  5.8829e-02, -4.9315e-02,  1.1395e-02,\n",
+      "        -1.2393e-02,  3.4627e-02, -2.0724e-02, -7.6100e-02,  1.5033e-02,\n",
+      "        -6.2240e-02,  1.3045e-01,  2.9429e-02,  5.1437e-02,  5.2329e-02,\n",
+      "         2.4896e-02, -1.8821e-02, -4.8809e-02, -6.7213e-02, -1.0350e-02,\n",
+      "        -9.7824e-03,  8.3952e-02,  7.2283e-02, -6.4382e-02,  1.5534e-01,\n",
+      "         8.4570e-02, -1.6595e-01,  4.1408e-03,  4.5516e-02, -5.6906e-02,\n",
+      "        -4.2940e-02, -1.1772e-02, -5.6404e-02,  1.8210e-01,  2.0227e-02,\n",
+      "         7.7609e-02, -1.4693e-01, -6.8822e-02, -3.4503e-02,  4.1717e-02,\n",
+      "         6.6086e-02,  1.1133e-01,  1.3154e-02, -3.4234e-02,  9.1784e-04,\n",
+      "        -2.9296e-02,  2.6286e-02, -1.1241e-01, -8.3519e-02,  1.9695e-01,\n",
+      "        -9.7168e-02, -5.8979e-02,  1.5797e-02,  3.9749e-02,  3.8752e-02,\n",
+      "        -7.1771e-02, -7.8542e-02, -1.0243e-02,  1.7219e-01, -1.1095e-01,\n",
+      "         1.2735e-01, -4.5902e-02, -9.4965e-03,  1.0000e+00,  1.0000e+00,\n",
+      "         1.0000e+00,  1.0000e+00,  1.0000e+00,  1.0000e+00,  1.0000e+00,\n",
+      "         1.0000e+00,  1.0000e+00,  1.0000e+00,  1.0000e+00,  1.0000e+00,\n",
+      "         1.0000e+00,  1.0000e+00,  1.0000e+00,  1.0000e+00,  1.0000e+00,\n",
+      "         1.0000e+00,  1.0000e+00,  1.0000e+00,  1.0000e+00,  1.0000e+00,\n",
+      "         1.0000e+00,  1.0000e+00,  1.0000e+00,  1.0000e+00,  1.0000e+00,\n",
+      "         1.0000e+00,  1.0000e+00,  1.0000e+00,  1.0000e+00,  1.0000e+00,\n",
+      "         0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00,\n",
+      "         0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00,\n",
+      "         0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00,\n",
+      "         0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00,\n",
+      "         0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00,\n",
+      "         0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00,\n",
+      "         0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00,\n",
+      "         0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00,\n",
+      "         0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00,\n",
+      "         0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00,\n",
+      "         0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00,\n",
+      "         0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00,\n",
+      "         0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00,  1.0000e+00,\n",
+      "         1.0000e+00,  1.0000e+00,  1.0000e+00,  1.0000e+00,  1.0000e+00,\n",
+      "         1.0000e+00,  1.0000e+00,  1.0000e+00,  1.0000e+00,  1.0000e+00,\n",
+      "         1.0000e+00,  1.0000e+00,  1.0000e+00,  1.0000e+00,  1.0000e+00,\n",
+      "         1.0000e+00,  1.0000e+00,  1.0000e+00,  1.0000e+00,  1.0000e+00,\n",
+      "         1.0000e+00,  1.0000e+00,  1.0000e+00,  1.0000e+00,  1.0000e+00,\n",
+      "         1.0000e+00,  1.0000e+00,  1.0000e+00,  1.0000e+00,  1.0000e+00,\n",
+      "         1.0000e+00,  0.0000e+00,  1.6987e-01, -1.2518e-02,  7.4222e-02,\n",
+      "         8.1779e-04,  1.0769e-01,  1.7932e-01,  1.0626e-01,  5.5261e-02,\n",
+      "        -7.1285e-02,  3.4232e-02, -1.9942e-01, -3.2020e-02, -5.8090e-04,\n",
+      "        -3.1324e-03, -5.2624e-02, -1.1991e-01, -6.3235e-02, -5.6224e-02,\n",
+      "        -3.8221e-03,  1.7819e-02,  1.5929e-01, -1.2379e-01, -1.1942e-01,\n",
+      "        -9.9741e-02,  3.7306e-02, -4.5313e-02,  9.5044e-02, -1.0798e-01,\n",
+      "         4.7692e-02, -6.8353e-02, -6.4735e-02,  1.6302e-01, -7.3956e-02,\n",
+      "        -5.7375e-02, -7.0186e-02, -1.9878e-02,  6.8199e-02, -7.7473e-02,\n",
+      "         1.1649e-01, -1.7948e-01,  6.5320e-02, -1.6462e-01, -1.7468e-01,\n",
+      "         6.9575e-02, -3.6026e-02, -1.8932e-02,  3.2033e-02,  3.8191e-02,\n",
+      "         4.2004e-02,  9.8125e-03, -2.4546e-02,  8.1653e-03, -4.7182e-02,\n",
+      "        -1.4758e-01,  3.9359e-02, -2.0074e-02,  5.3813e-02,  1.3991e-02,\n",
+      "        -3.9933e-02, -9.2483e-02, -6.1893e-02,  2.6557e-03,  1.9068e-02,\n",
+      "         4.8750e-02,  6.6708e-02,  1.9469e-02, -2.1096e-02,  4.4306e-02,\n",
+      "        -9.8441e-02,  3.5618e-03, -7.8726e-02,  9.7077e-02, -2.4202e-02,\n",
+      "         1.7504e-02,  1.4211e-01,  6.3227e-02,  2.9580e-03, -2.3347e-02,\n",
+      "         5.8336e-02, -5.9110e-02,  7.2662e-02,  5.8302e-02, -6.3689e-02,\n",
+      "        -1.7816e-02, -1.3492e-01,  1.1300e-01, -3.2642e-02, -4.5522e-02,\n",
+      "        -8.7756e-02,  2.1591e-02,  1.7699e-01,  1.1176e-02, -4.9630e-02,\n",
+      "        -1.1987e-01,  8.9175e-02, -1.5066e-02, -1.0060e-02, -3.6194e-03,\n",
+      "         6.5334e-02,  7.3754e-02,  1.2938e-02, -3.8157e-02,  4.3455e-02,\n",
+      "         2.0767e-02,  6.2418e-02, -3.1317e-03, -6.5233e-03, -2.9303e-02,\n",
+      "         5.8986e-02,  3.9827e-02, -4.4528e-02,  3.3096e-02,  1.4558e-01,\n",
+      "        -7.1790e-02,  2.8021e-02, -1.1121e-01, -8.7729e-02, -1.6679e-02,\n",
+      "         6.0385e-02, -1.0069e-01,  3.8162e-03, -1.5804e-02,  9.3877e-03,\n",
+      "        -1.9549e-02,  6.8907e-02,  9.2226e-02,  6.7532e-02,  5.1782e-02,\n",
+      "        -5.0173e-02,  6.4691e-02,  5.3740e-03,  2.6782e-02,  1.7140e-01,\n",
+      "        -7.1114e-02,  1.3247e-01,  1.9341e-02, -2.8109e-02, -9.6079e-02,\n",
+      "        -1.6598e-01,  1.1776e-01, -1.2546e-01,  8.9671e-02, -1.1108e-01,\n",
+      "         4.8116e-03,  1.5545e-02,  1.0199e-01, -9.5309e-02, -1.4364e-03,\n",
+      "        -4.8351e-02, -8.6616e-02,  2.2615e-02, -5.3860e-02, -4.1553e-02,\n",
+      "        -3.7117e-02, -1.3335e-01,  6.1934e-02, -6.1574e-03, -4.8353e-04,\n",
+      "        -6.7036e-02,  9.5313e-03,  6.4967e-02,  1.0548e-01, -8.5173e-02,\n",
+      "         1.6937e-02,  1.8506e-01,  1.1589e-01,  1.5855e-02,  5.2601e-02,\n",
+      "        -1.9648e-02, -2.8683e-02,  1.7219e-02,  4.4335e-02, -1.2565e-01,\n",
+      "        -1.1790e-01,  2.4435e-04,  1.0657e-01,  4.9675e-02, -1.5611e-02,\n",
+      "        -1.0195e-02, -2.6327e-02,  6.7269e-02, -2.0982e-02,  1.9502e-03,\n",
+      "        -1.5793e-02,  2.6358e-02,  6.0283e-02,  1.3618e-01,  1.3374e-01,\n",
+      "        -2.5466e-02, -4.8720e-02, -1.8593e-01,  1.7561e-03, -1.2250e-01,\n",
+      "        -1.6137e-01, -5.0002e-03, -1.2871e-01, -3.7437e-02, -4.0313e-02,\n",
+      "         3.4365e-02, -3.7071e-02,  2.2959e-02,  1.1128e-01, -4.9545e-03,\n",
+      "        -2.6472e-02,  3.2626e-02, -1.7230e-02,  7.8508e-02,  2.7197e-02,\n",
+      "        -9.8706e-02,  1.1325e-02, -4.3507e-02,  3.5809e-02, -8.2735e-02,\n",
+      "        -3.1467e-02, -2.3812e-03,  2.2783e-01,  1.4469e-01,  4.7378e-02,\n",
+      "         1.1900e-01,  1.3966e-02, -1.5898e-01, -5.6670e-02,  6.0425e-02,\n",
+      "         4.4461e-02,  4.3565e-02, -1.3006e-01, -3.5693e-02, -1.6811e-02,\n",
+      "         7.3669e-02, -5.5727e-03,  2.3922e-02, -1.0258e-01, -2.0600e-02,\n",
+      "         7.0644e-02,  5.4080e-02, -1.8225e-02,  8.2288e-02,  1.3712e-01,\n",
+      "         9.1076e-03, -5.9369e-02, -1.2339e-01, -9.4833e-02,  3.3790e-02,\n",
+      "         2.7712e-02,  1.1237e-01,  9.4319e-02,  6.9273e-03,  2.7316e-02,\n",
+      "        -2.6998e-02,  6.5125e-02,  3.9116e-02, -1.7837e-02, -7.1617e-02,\n",
+      "         4.7388e-02,  6.2827e-02,  8.7470e-02, -1.4028e-02,  3.4789e-02,\n",
+      "        -1.0830e-01,  2.5725e-03,  7.5497e-02, -5.1828e-02,  2.0584e-01,\n",
+      "        -2.0988e-02,  1.3311e-01,  1.8669e-02, -1.0620e-01,  6.3515e-02,\n",
+      "         2.3155e-02,  5.2781e-02,  9.0113e-02, -1.6853e-01,  3.3725e-02,\n",
+      "        -8.8361e-02,  9.8612e-02, -7.9768e-02,  2.4839e-02,  5.0955e-02,\n",
+      "         1.9578e-01,  4.9857e-02, -4.9117e-02, -6.0971e-02, -7.1335e-02,\n",
+      "         4.8186e-03,  2.6048e-01, -4.1628e-02,  6.4097e-02, -6.2915e-02,\n",
+      "        -2.2990e-02, -1.0170e-01,  7.9752e-02,  1.4351e-01, -5.9676e-02,\n",
+      "         1.0420e-02, -2.1729e-02,  3.7526e-02, -3.2499e-02,  7.3554e-02,\n",
+      "        -1.1204e-01, -7.0101e-02, -1.3232e-01, -8.4415e-02, -7.2395e-02,\n",
+      "         1.0182e-01, -3.3702e-03,  5.1951e-02,  5.0360e-02, -7.8748e-02,\n",
+      "         7.5663e-02,  8.7619e-02,  5.2736e-02,  1.0218e-01,  1.5727e-02,\n",
+      "        -3.0746e-02,  5.0295e-02,  5.2703e-03,  5.5152e-02, -9.1586e-02,\n",
+      "        -2.4175e-02, -8.0762e-03, -9.6645e-02,  5.7554e-02,  3.0361e-02,\n",
+      "         5.6569e-02,  1.1550e-01, -8.5696e-02, -1.2037e-01,  1.4408e-01,\n",
+      "        -6.9288e-02, -9.6466e-02, -1.0642e-01,  6.7118e-02, -4.6111e-02,\n",
+      "         1.2625e-01, -2.2200e-02,  1.8784e-01,  5.6559e-02, -9.2792e-03,\n",
+      "         1.0988e-01, -8.4376e-02,  2.0674e-02,  5.1443e-02, -6.3788e-02,\n",
+      "         9.2447e-02,  5.4876e-03, -5.5736e-02,  1.1064e-01, -9.2663e-02,\n",
+      "        -1.3774e-02, -1.1738e-02,  1.1746e-01, -1.1146e-01,  5.0254e-02,\n",
+      "        -2.7132e-02,  6.3535e-02, -5.7441e-02,  1.4019e-01,  1.5358e-01,\n",
+      "        -9.0577e-02, -6.1400e-02, -8.2789e-03, -3.0574e-02, -1.6684e-01,\n",
+      "         2.1997e-02,  1.2047e-01, -8.1132e-02,  2.7643e-02, -4.1913e-02,\n",
+      "         7.8445e-02,  3.4260e-02,  1.9198e-02,  8.3587e-03,  8.4882e-02,\n",
+      "         4.7922e-02,  3.2085e-03,  6.3019e-02, -1.2356e-01, -2.2035e-02,\n",
+      "        -1.4141e-01,  3.0651e-02, -4.9958e-02,  2.0171e-02, -1.0585e-01,\n",
+      "        -1.4497e-01, -4.1225e-02, -6.8969e-02, -1.5650e-01, -8.4516e-02,\n",
+      "        -7.2454e-02, -1.9754e-02, -2.0815e-02, -1.4435e-01, -1.3507e-01,\n",
+      "        -9.3353e-03, -7.8647e-02,  4.9376e-02, -9.1362e-02, -2.6405e-04,\n",
+      "        -1.1060e-01,  6.1339e-02, -1.6488e-01, -1.2586e-02, -1.6126e-01,\n",
+      "        -5.5025e-02, -3.0095e-02, -6.0076e-02, -8.4154e-02, -4.5846e-02,\n",
+      "         1.0521e-01, -1.0573e-01, -5.6448e-03, -1.1787e-01, -1.6642e-01,\n",
+      "        -4.6485e-02,  2.1018e-03, -1.7721e-01, -2.3989e-02,  2.2526e-03,\n",
+      "        -3.3936e-02, -8.5082e-04,  2.3318e-02, -1.2200e-01, -3.8985e-02,\n",
+      "        -5.0310e-02, -2.1276e-01, -1.0934e-01,  5.0431e-02,  1.5243e-01,\n",
+      "        -4.5213e-02,  5.6250e-02, -5.1513e-02, -7.0380e-02,  1.3558e-02,\n",
+      "         4.8311e-02, -1.0758e-01, -6.9672e-02,  4.1720e-02, -3.7519e-02,\n",
+      "         4.4889e-03,  3.1567e-02,  1.8889e-01, -2.1389e-02, -1.7544e-01,\n",
+      "         4.2167e-02,  2.3926e-01, -8.3352e-02,  2.3343e-02,  1.1568e-01,\n",
+      "        -4.0584e-02,  4.9951e-02,  3.1471e-02,  5.3396e-02,  4.5164e-02,\n",
+      "         9.5883e-02, -1.0847e-01, -1.0457e-01,  4.1262e-02,  6.4844e-02,\n",
+      "         9.8069e-02,  1.5135e-02, -2.5175e-02,  7.6218e-02, -6.0823e-02,\n",
+      "        -1.1629e-01,  6.7468e-03,  2.0872e-02,  1.2584e-01, -3.4727e-02,\n",
+      "        -1.0161e-01,  8.7080e-02, -2.7376e-04, -4.8307e-02, -1.0124e-01,\n",
+      "        -7.6946e-02, -1.9775e-02, -4.2434e-02,  3.4611e-02,  7.3197e-02,\n",
+      "         1.0860e-02, -1.0779e-02, -1.1027e-01, -2.7294e-02,  2.2437e-02,\n",
+      "        -1.6622e-01, -2.6583e-02,  5.8286e-02,  2.9824e-03, -5.5497e-02,\n",
+      "         5.0274e-02,  5.9907e-02,  1.5858e-01, -2.4947e-02,  7.6584e-02,\n",
+      "         8.5319e-02,  3.4722e-03,  1.0288e-01,  1.0969e-01,  6.5799e-02,\n",
+      "        -2.6551e-02, -1.7372e-01,  1.4605e-01,  2.1898e-02, -3.5002e-03,\n",
+      "        -1.5310e-01, -3.0351e-02,  5.7421e-02, -1.3553e-01, -9.7861e-02,\n",
+      "         1.3477e-01, -1.2629e-01, -8.7702e-02, -4.4454e-03, -7.2945e-03,\n",
+      "        -7.9274e-02, -1.0867e-02,  3.8146e-02,  1.0687e-01, -2.5816e-03,\n",
+      "         1.6793e-02,  6.4059e-02, -7.5229e-02, -8.1442e-02,  8.3586e-03,\n",
+      "        -8.0715e-02,  8.9084e-03, -1.0933e-01, -1.4269e-02, -7.3607e-03,\n",
+      "         1.5704e-02,  9.4702e-03,  2.2811e-02, -8.7653e-02,  9.0603e-02,\n",
+      "         6.9251e-02, -3.1635e-02,  9.3687e-03,  5.9566e-03, -1.1568e-02,\n",
+      "         7.7497e-02,  8.1724e-03,  7.5156e-02,  5.9760e-02, -9.0665e-02,\n",
+      "        -4.1795e-02, -5.5084e-02, -2.1276e-02, -7.5714e-03,  8.1334e-02,\n",
+      "         3.2634e-02, -6.9134e-02,  7.7450e-02, -6.0068e-02,  1.4064e-01,\n",
+      "        -1.5251e-01, -5.5206e-02,  9.4398e-02,  6.7102e-02, -2.1777e-02,\n",
+      "        -1.0860e-01,  8.1245e-02, -7.5645e-02,  1.3485e-02,  8.9177e-02,\n",
+      "         1.7675e-02, -8.5894e-02, -1.2788e-02,  2.8444e-02,  1.0189e-01,\n",
+      "         1.3065e-01,  4.1666e-02,  4.3118e-02, -4.6221e-03, -8.9139e-02,\n",
+      "         7.8242e-02,  6.2911e-02, -2.1091e-01, -8.0931e-02,  3.9291e-02,\n",
+      "         2.0712e-01, -1.2777e-02,  3.2420e-02,  3.9909e-02, -4.8477e-02,\n",
+      "         1.1958e-01, -6.7129e-02, -5.5796e-02, -7.8439e-02,  1.0222e-01,\n",
+      "        -1.2084e-01,  5.1758e-02,  1.8989e-01, -2.1552e-01,  1.0309e-01,\n",
+      "         1.4989e-01,  2.9901e-02,  5.6023e-02, -7.9886e-03,  4.2809e-02,\n",
+      "         7.0390e-02,  6.5856e-02,  1.8404e-02, -1.8389e-01,  3.2689e-02,\n",
+      "        -2.9534e-02, -7.4516e-02,  1.9053e-02,  6.8197e-03, -8.6406e-02,\n",
+      "        -1.2057e-01,  5.4083e-02, -2.8486e-02,  2.0098e-03, -2.4764e-02,\n",
+      "        -6.8012e-02, -9.7861e-02,  2.7055e-02,  3.1677e-02,  1.7974e-02,\n",
+      "         5.6053e-02, -1.2744e-02,  1.1241e-02,  1.1206e-01, -3.9609e-02,\n",
+      "         1.8022e-02, -3.5299e-02,  4.1814e-02, -7.1772e-02, -7.2119e-02,\n",
+      "         3.1803e-02, -5.6058e-02, -1.2408e-01,  1.1487e-01,  8.2424e-02,\n",
+      "        -7.6738e-02,  3.6102e-02,  1.0330e-01,  1.6182e-01,  7.3596e-02,\n",
+      "        -8.2679e-02,  2.3563e-02, -4.7735e-02,  5.1281e-02, -4.4526e-02,\n",
+      "        -1.8515e-02,  1.0371e-02, -2.1650e-02,  1.7475e-02, -6.6999e-02,\n",
+      "        -3.5237e-03, -6.6710e-03,  4.5694e-02, -2.4330e-02, -9.4324e-02,\n",
+      "         1.0351e-01, -9.7201e-02,  9.9928e-02,  6.0018e-03, -1.9398e-01,\n",
+      "        -6.9612e-02,  3.7000e-02,  2.5857e-02, -2.0493e-01,  1.0143e-01,\n",
+      "         2.9652e-02, -1.0923e-01, -1.3063e-01,  8.0357e-02, -2.8222e-02,\n",
+      "         1.1236e-01,  1.0068e-01,  1.8715e-01, -4.7519e-03, -1.9877e-02,\n",
+      "        -5.8805e-02, -2.2623e-02, -9.1535e-02, -3.9104e-02,  1.1634e-02,\n",
+      "        -1.2658e-02, -1.9400e-01,  1.3103e-01,  3.6966e-02, -6.6630e-02,\n",
+      "         3.6699e-02, -1.3168e-01, -3.5448e-02, -6.5795e-02,  3.8508e-02,\n",
+      "        -2.8908e-02,  5.9616e-03, -1.1947e-01, -4.5128e-02,  2.2609e-02,\n",
+      "        -6.0078e-02,  1.2044e-02, -4.2161e-02, -1.7942e-01, -1.4760e-01,\n",
+      "        -2.2213e-02, -1.2489e-01,  1.2302e-01,  2.6101e-02,  1.1545e-01,\n",
+      "        -6.0973e-02, -9.3216e-02, -1.3401e-01,  6.9192e-02,  1.0547e-01,\n",
+      "         4.1468e-02,  7.5163e-02, -4.5361e-02,  2.8214e-02, -9.8323e-02,\n",
+      "        -8.9710e-04,  7.1415e-02, -8.6964e-02,  7.2207e-02, -5.4545e-02,\n",
+      "        -4.4864e-02, -1.0401e-02,  1.1054e-02, -5.4850e-03, -1.5119e-01,\n",
+      "         2.7383e-02,  7.9438e-02,  9.7938e-02, -7.6253e-02, -9.8225e-02,\n",
+      "        -3.6008e-03,  2.5735e-02, -4.4595e-02,  9.2904e-03,  2.4263e-02,\n",
+      "        -1.1514e-02, -2.5885e-02,  9.3242e-02,  3.7527e-02,  1.4858e-03,\n",
+      "         4.4235e-02,  4.6888e-02,  2.9045e-04, -3.7129e-02, -1.3034e-01,\n",
+      "        -1.3929e-01,  6.9240e-02, -2.5642e-02, -8.9732e-03, -1.2048e-01,\n",
+      "         5.1459e-02, -5.1739e-02, -8.8432e-02, -6.8968e-02, -1.3449e-01,\n",
+      "         1.8770e-02,  1.4933e-01, -1.4537e-01, -1.3368e-02, -2.0281e-03])\n"
+     ]
+    }
+   ],
+   "source": [
+    "o = 10800\n",
+    "print(conc[o:o+1000])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "colab": {
+     "base_uri": "https://localhost:8080/"
+    },
+    "id": "eqOXilqMs-yF",
+    "outputId": "06799a3b-983b-4f51-a7bd-a901c041bd05"
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "loss: 4.317379  [    0/735856]\n",
+      "loss: 1.467329  [12800/735856]\n",
+      "loss: 0.863656  [25600/735856]\n",
+      "loss: 0.814204  [38400/735856]\n",
+      "loss: 0.746839  [51200/735856]\n",
+      "loss: 0.734121  [64000/735856]\n",
+      "loss: 0.761491  [76800/735856]\n",
+      "loss: 0.680998  [89600/735856]\n",
+      "loss: 0.731149  [102400/735856]\n",
+      "loss: 0.826501  [115200/735856]\n",
+      "loss: 0.662327  [128000/735856]\n",
+      "loss: 0.612664  [140800/735856]\n",
+      "loss: 0.755015  [153600/735856]\n",
+      "loss: 0.400373  [166400/735856]\n",
+      "loss: 0.558040  [179200/735856]\n",
+      "loss: 0.603362  [192000/735856]\n",
+      "loss: 0.418064  [204800/735856]\n",
+      "loss: 0.628256  [217600/735856]\n",
+      "loss: 0.377127  [230400/735856]\n",
+      "loss: 0.420045  [243200/735856]\n",
+      "loss: 0.558597  [256000/735856]\n",
+      "loss: 0.438556  [268800/735856]\n",
+      "loss: 0.684690  [281600/735856]\n",
+      "loss: 0.590059  [294400/735856]\n",
+      "loss: 0.557874  [307200/735856]\n",
+      "loss: 0.494909  [320000/735856]\n",
+      "loss: 0.617219  [332800/735856]\n",
+      "loss: 0.351243  [345600/735856]\n",
+      "loss: 0.454522  [358400/735856]\n",
+      "loss: 0.429664  [371200/735856]\n",
+      "loss: 0.468215  [384000/735856]\n",
+      "loss: 0.401258  [396800/735856]\n",
+      "loss: 0.474102  [409600/735856]\n",
+      "loss: 0.562686  [422400/735856]\n",
+      "loss: 0.483383  [435200/735856]\n",
+      "loss: 0.348151  [448000/735856]\n",
+      "loss: 0.528455  [460800/735856]\n",
+      "loss: 0.545382  [473600/735856]\n",
+      "loss: 0.370390  [486400/735856]\n",
+      "loss: 0.567488  [499200/735856]\n",
+      "loss: 0.480258  [512000/735856]\n",
+      "loss: 0.605147  [524800/735856]\n",
+      "loss: 0.415480  [537600/735856]\n",
+      "loss: 0.427186  [550400/735856]\n",
+      "loss: 0.391611  [563200/735856]\n",
+      "loss: 0.604008  [576000/735856]\n",
+      "loss: 0.745116  [588800/735856]\n",
+      "loss: 0.357690  [601600/735856]\n",
+      "loss: 0.347922  [614400/735856]\n",
+      "loss: 0.518981  [627200/735856]\n",
+      "loss: 0.435502  [640000/735856]\n",
+      "loss: 0.387361  [652800/735856]\n",
+      "loss: 0.449226  [665600/735856]\n",
+      "loss: 0.447640  [678400/735856]\n",
+      "loss: 0.403468  [691200/735856]\n",
+      "loss: 0.349100  [704000/735856]\n",
+      "loss: 0.361501  [716800/735856]\n",
+      "loss: 0.315695  [729600/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 85.0%, Avg loss: 0.434803 \n",
+      "\n",
+      "loss: 0.436410  [    0/735856]\n",
+      "loss: 0.429430  [12800/735856]\n",
+      "loss: 0.300599  [25600/735856]\n",
+      "loss: 0.416907  [38400/735856]\n",
+      "loss: 0.505084  [51200/735856]\n",
+      "loss: 0.399249  [64000/735856]\n",
+      "loss: 0.379393  [76800/735856]\n",
+      "loss: 0.375960  [89600/735856]\n",
+      "loss: 0.408403  [102400/735856]\n",
+      "loss: 0.499817  [115200/735856]\n",
+      "loss: 0.450748  [128000/735856]\n",
+      "loss: 0.408854  [140800/735856]\n",
+      "loss: 0.342387  [153600/735856]\n",
+      "loss: 0.330833  [166400/735856]\n",
+      "loss: 0.416435  [179200/735856]\n",
+      "loss: 0.340663  [192000/735856]\n",
+      "loss: 0.408621  [204800/735856]\n",
+      "loss: 0.444404  [217600/735856]\n",
+      "loss: 0.453196  [230400/735856]\n",
+      "loss: 0.408210  [243200/735856]\n",
+      "loss: 0.460274  [256000/735856]\n",
+      "loss: 0.334112  [268800/735856]\n",
+      "loss: 0.330720  [281600/735856]\n",
+      "loss: 0.316345  [294400/735856]\n",
+      "loss: 0.248728  [307200/735856]\n",
+      "loss: 0.464760  [320000/735856]\n",
+      "loss: 0.427282  [332800/735856]\n",
+      "loss: 0.431015  [345600/735856]\n",
+      "loss: 0.491930  [358400/735856]\n",
+      "loss: 0.379011  [371200/735856]\n",
+      "loss: 0.336299  [384000/735856]\n",
+      "loss: 0.312829  [396800/735856]\n",
+      "loss: 0.355771  [409600/735856]\n",
+      "loss: 0.289162  [422400/735856]\n",
+      "loss: 0.583171  [435200/735856]\n",
+      "loss: 0.499083  [448000/735856]\n",
+      "loss: 0.423254  [460800/735856]\n",
+      "loss: 0.436303  [473600/735856]\n",
+      "loss: 0.360267  [486400/735856]\n",
+      "loss: 0.376950  [499200/735856]\n",
+      "loss: 0.424678  [512000/735856]\n",
+      "loss: 0.381343  [524800/735856]\n",
+      "loss: 0.429872  [537600/735856]\n",
+      "loss: 0.355957  [550400/735856]\n",
+      "loss: 0.409392  [563200/735856]\n",
+      "loss: 0.352608  [576000/735856]\n",
+      "loss: 0.265125  [588800/735856]\n",
+      "loss: 0.406446  [601600/735856]\n",
+      "loss: 0.368569  [614400/735856]\n",
+      "loss: 0.437190  [627200/735856]\n",
+      "loss: 0.305703  [640000/735856]\n",
+      "loss: 0.347399  [652800/735856]\n",
+      "loss: 0.331695  [665600/735856]\n",
+      "loss: 0.457639  [678400/735856]\n",
+      "loss: 0.473799  [691200/735856]\n",
+      "loss: 0.489939  [704000/735856]\n",
+      "loss: 0.370199  [716800/735856]\n",
+      "loss: 0.331481  [729600/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 86.6%, Avg loss: 0.387414 \n",
+      "\n",
+      "loss: 0.443714  [    0/735856]\n",
+      "loss: 0.449352  [12800/735856]\n",
+      "loss: 0.414199  [25600/735856]\n",
+      "loss: 0.404422  [38400/735856]\n",
+      "loss: 0.368516  [51200/735856]\n",
+      "loss: 0.346299  [64000/735856]\n",
+      "loss: 0.484283  [76800/735856]\n",
+      "loss: 0.401498  [89600/735856]\n",
+      "loss: 0.410465  [102400/735856]\n",
+      "loss: 0.273847  [115200/735856]\n",
+      "loss: 0.399912  [128000/735856]\n",
+      "loss: 0.479173  [140800/735856]\n",
+      "loss: 0.401442  [153600/735856]\n",
+      "loss: 0.285392  [166400/735856]\n",
+      "loss: 0.421379  [179200/735856]\n",
+      "loss: 0.279620  [192000/735856]\n",
+      "loss: 0.390798  [204800/735856]\n",
+      "loss: 0.212120  [217600/735856]\n",
+      "loss: 0.354751  [230400/735856]\n",
+      "loss: 0.219936  [243200/735856]\n",
+      "loss: 0.402732  [256000/735856]\n",
+      "loss: 0.519650  [268800/735856]\n",
+      "loss: 0.288248  [281600/735856]\n",
+      "loss: 0.384210  [294400/735856]\n",
+      "loss: 0.478157  [307200/735856]\n",
+      "loss: 0.439406  [320000/735856]\n",
+      "loss: 0.389753  [332800/735856]\n",
+      "loss: 0.356618  [345600/735856]\n",
+      "loss: 0.323311  [358400/735856]\n",
+      "loss: 0.398488  [371200/735856]\n",
+      "loss: 0.319226  [384000/735856]\n",
+      "loss: 0.332842  [396800/735856]\n",
+      "loss: 0.252516  [409600/735856]\n",
+      "loss: 0.293284  [422400/735856]\n",
+      "loss: 0.334755  [435200/735856]\n",
+      "loss: 0.377591  [448000/735856]\n",
+      "loss: 0.380793  [460800/735856]\n",
+      "loss: 0.403311  [473600/735856]\n",
+      "loss: 0.357482  [486400/735856]\n",
+      "loss: 0.304435  [499200/735856]\n",
+      "loss: 0.241090  [512000/735856]\n",
+      "loss: 0.324607  [524800/735856]\n",
+      "loss: 0.328274  [537600/735856]\n",
+      "loss: 0.244099  [550400/735856]\n",
+      "loss: 0.415031  [563200/735856]\n",
+      "loss: 0.348006  [576000/735856]\n",
+      "loss: 0.283688  [588800/735856]\n",
+      "loss: 0.300562  [601600/735856]\n",
+      "loss: 0.326958  [614400/735856]\n",
+      "loss: 0.369248  [627200/735856]\n",
+      "loss: 0.332926  [640000/735856]\n",
+      "loss: 0.302038  [652800/735856]\n",
+      "loss: 0.342727  [665600/735856]\n",
+      "loss: 0.368321  [678400/735856]\n",
+      "loss: 0.231897  [691200/735856]\n",
+      "loss: 0.431953  [704000/735856]\n",
+      "loss: 0.248471  [716800/735856]\n",
+      "loss: 0.294091  [729600/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 87.0%, Avg loss: 0.366894 \n",
+      "\n",
+      "loss: 0.376553  [    0/735856]\n",
+      "loss: 0.220013  [12800/735856]\n",
+      "loss: 0.282281  [25600/735856]\n",
+      "loss: 0.397939  [38400/735856]\n",
+      "loss: 0.286681  [51200/735856]\n",
+      "loss: 0.299091  [64000/735856]\n",
+      "loss: 0.373950  [76800/735856]\n",
+      "loss: 0.429636  [89600/735856]\n",
+      "loss: 0.306355  [102400/735856]\n",
+      "loss: 0.411843  [115200/735856]\n",
+      "loss: 0.228846  [128000/735856]\n",
+      "loss: 0.207205  [140800/735856]\n",
+      "loss: 0.351640  [153600/735856]\n",
+      "loss: 0.401937  [166400/735856]\n",
+      "loss: 0.273460  [179200/735856]\n",
+      "loss: 0.327492  [192000/735856]\n",
+      "loss: 0.331937  [204800/735856]\n",
+      "loss: 0.228119  [217600/735856]\n",
+      "loss: 0.287975  [230400/735856]\n",
+      "loss: 0.224747  [243200/735856]\n",
+      "loss: 0.283936  [256000/735856]\n",
+      "loss: 0.342105  [268800/735856]\n",
+      "loss: 0.292306  [281600/735856]\n",
+      "loss: 0.292342  [294400/735856]\n",
+      "loss: 0.240786  [307200/735856]\n",
+      "loss: 0.313040  [320000/735856]\n",
+      "loss: 0.419340  [332800/735856]\n",
+      "loss: 0.489452  [345600/735856]\n"
+     ]
+    }
+   ],
+   "source": [
+    "stats = {\"train\": [], \"test\":[]}\n",
+    "for e in range(10):\n",
+    "    #training\n",
+    "    batch = 0\n",
+    "    for X, y in train_dataloader:\n",
+    "        X = X.to(device)\n",
+    "        y = y.to(device)\n",
+    "        size = len(train_dataloader.dataset)\n",
+    "        model.train()\n",
+    "        # Compute prediction error\n",
+    "        pred = model(X)\n",
+    "        loss = loss_fn(pred, y)\n",
+    "        # Backpropagation\n",
+    "        loss.backward()\n",
+    "        optimizer.step()\n",
+    "        model.zero_grad()\n",
+    "        #optimizer.zero_grad()\n",
+    "        \n",
+    "        #resetting the optimizer\n",
+    "        # optimizer.load_state_dict(model.state_dict())\n",
+    "        vals = optimizer.state.values()\n",
+    "\n",
+    "        if batch % 100 == 0:\n",
+    "            loss, current = loss.item(), batch * len(X)\n",
+    "            print(f\"loss: {loss:>7f}  [{current:>5d}/{size:>5d}]\")\n",
+    "            stats[\"train\"].append([batch, e*size + current, loss])\n",
+    "        batch += 1\n",
+    "    \n",
+    "    #testing\n",
+    "    size = len(test_dataloader.dataset)\n",
+    "    num_batches = len(test_dataloader)\n",
+    "    model.eval()\n",
+    "    test_loss, correct = 0, 0\n",
+    "    with torch.no_grad():\n",
+    "        for X, y in test_dataloader:\n",
+    "            X = X.to(device)\n",
+    "            y = y.to(device)\n",
+    "            pred = model(X)\n",
+    "            test_loss += loss_fn(pred, y).item()\n",
+    "            correct += (pred.argmax(1) == y).type(torch.float).sum().item()\n",
+    "    test_loss /= num_batches\n",
+    "    correct /= size\n",
+    "    print(\"epoch:\")\n",
+    "    print(f\"Test Error: \\n Accuracy: {(100*correct):>0.1f}%, Avg loss: {test_loss:>8f} \\n\")\n",
+    "    stats[\"test\"].append([e, test_loss, 100*correct])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "id": "4P-VA0vcs-yH"
+   },
+   "outputs": [],
+   "source": [
+    "with open(train_dir+\"/results:128:\"+str(lr)+\".pkl\", \"wb\") as f:\n",
+    "  pickle.dump(stats, f)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "colab": {
+     "base_uri": "https://localhost:8080/"
+    },
+    "id": "641-b_VCvT2b",
+    "outputId": "cced38ab-5c04-45b2-faf4-e73327126159"
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "colab": {
+     "base_uri": "https://localhost:8080/"
+    },
+    "id": "F_OKqiiHs-yJ",
+    "outputId": "65786b88-05f4-42fa-a851-03397ef4457a"
+   },
+   "outputs": [],
+   "source": [
+    "lrs = [0.1, 0.01, 0.005, 0.001, 0.0005, 0.0001, 0.00001]\n",
+    "for l in lrs:\n",
+    "  with open(train_dir+\"/results:128:\"+str(l)+\".pkl\", \"rb\") as f:\n",
+    "    res = pickle.load(f)\n",
+    "    print(str(l)+\": \" + str(np.amax(res[\"test\"], axis=0)))#+ str(np.max(res[\"test\"]))\n",
+    "    # print(str(l)+\": \" + str(res[\"test\"]))\n",
+    "    "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 61,
+   "metadata": {
+    "colab": {
+     "base_uri": "https://localhost:8080/"
+    },
+    "id": "rADw-XkfKjOo",
+    "outputId": "06c54a2c-f7c2-4610-f879-3e1c2f98543f"
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "0.1: [[0, 3.6898819485246297, 4.914933837429111], [1, 3.695287103771977, 4.914933837429111], [2, 3.691172517592003, 5.505213732544667], [3, 3.6920483804158226, 4.967376059515824], [4, 3.6939517986755845, 5.505213732544667], [5, 3.6917366434742993, 4.914933837429111], [6, 3.695435837910811, 5.505213732544667], [7, 3.6978058357506574, 5.135679004817367], [8, 3.6948341036363623, 5.505213732544667], [9, 3.6921330658768343, 5.135679004817367]]\n",
+      "0.01: [[0, 0.5728003431500958, 81.8086468687115], [1, 0.5517885946725348, 82.61967193121532], [2, 3.984756194857093, 25.844258796268065], [3, 0.5739870879932797, 81.7476675407037], [4, 0.7832032613188912, 75.77779132873955], [5, 0.7142617320772638, 77.80474419171901], [6, 0.6602287095348103, 79.28654186230868], [7, 0.6738644539380036, 79.2719068235868], [8, 0.6469118589079138, 79.77071772669065], [9, 0.6788249858734946, 79.28898103542899]]\n",
+      "0.005: [[0, 0.4834194714537649, 83.79047502896519], [1, 0.466142692822562, 84.33928898103544], [2, 0.4559767278791776, 84.9515214342338], [3, 0.4488265364432298, 84.86493078846271], [4, 0.4554814101660307, 84.773461796451], [5, 0.5149212768315897, 83.05872309287152], [6, 0.4551808235472338, 84.86127202878224], [7, 0.4531376465992325, 85.06494298432831], [8, 0.4589428385362238, 84.83078236477834], [9, 0.4409179601951992, 85.40642722117202]]\n",
+      "0.001: [[0, 0.4104761779773254, 85.89670101835478], [1, 0.36889259526491536, 87.17604731995854], [2, 0.3517718464717292, 87.6992499542655], [3, 0.35526543692939927, 87.57607171168974], [4, 0.3493265717198808, 87.76266845539362], [5, 0.35079776836259874, 87.47362644063662], [6, 0.34534544340812845, 87.96268065125923], [7, 0.35734797465540874, 87.72608085858894], [8, 0.3524193228360457, 87.63339228001708], [9, 0.35447056082407136, 88.0382950179889]]\n",
+      "0.0005: [[0, 0.4435185831906085, 85.1039697542533], [1, 0.37539843543085405, 86.94310628696871], [2, 0.35873422210283473, 87.3797182755046], [3, 0.34818319706667605, 87.93097140069517], [4, 0.34545205666010914, 87.86633331300689], [5, 0.3371337376732536, 88.10415269223734], [6, 0.33852135716659976, 88.11512897127874], [7, 0.33852605533302293, 88.14074028904201], [8, 0.33997187332225476, 88.21025672297091], [9, 0.3402654077747311, 88.1968412708092]]\n",
+      "0.0001: [[0, 0.6723326555745278, 79.72437343740472], [1, 0.5084800024207409, 83.89901823281907], [2, 0.45863669222676995, 84.88932251966584], [3, 0.42524330169194946, 85.90767729739618], [4, 0.4028480564841242, 86.33575218001097], [5, 0.38621816764383715, 86.9126166229648], [6, 0.3782781209337544, 87.11506799195074], [7, 0.3759017101781045, 87.00530520153667], [8, 0.3668581307538772, 87.32117812061712], [9, 0.3569657983208967, 87.71754375266785]]\n",
+      "1e-05: [[0, 1.8116753936371826, 54.021586682114766], [1, 1.3575628893609724, 63.8148667601683], [2, 1.0996285610935432, 69.48716385145435], [3, 0.9349309672803477, 73.7788889566437], [4, 0.8294046315685635, 76.08878590157937], [5, 0.7614829346374863, 77.91938532837368], [6, 0.7032811826737176, 79.30727483383133], [7, 0.6657257149818349, 80.09024940545156], [8, 0.6363296165202226, 80.82931886090616], [9, 0.6094131586890139, 81.52570278675529]]\n"
+     ]
+    }
+   ],
+   "source": [
+    "lrs = [0.1, 0.01, 0.005, 0.001, 0.0005, 0.0001, 0.00001]\n",
+    "for l in lrs:\n",
+    "  with open(train_dir+\"/results:128:\"+str(l)+\".pkl\", \"rb\") as f:\n",
+    "    res = pickle.load(f)\n",
+    "    # print(str(l)+\": \" + str(np.amax(res[\"test\"], axis=0)))#+ str(np.max(res[\"test\"]))\n",
+    "    print(str(l)+\": \" + str(res[\"test\"]))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "id": "HGpNYzG_s-yJ",
+    "outputId": "783622a5-249f-4dd8-d242-fc6dfa47443c"
+   },
+   "outputs": [
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "Using cache found in /home/jeffrey/.cache/torch/hub/pytorch_vision_v0.10.0\n"
+     ]
+    }
+   ],
+   "source": [
+    "import torch\n",
+    "resnet = torch.hub.load('pytorch/vision:v0.10.0', 'resnet18', pretrained=True)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "id": "uZFgT6wss-yL",
+    "outputId": "10f8fc51-abb7-4c2b-f608-85229f3de29d",
+    "tags": []
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "11699132\n"
+     ]
+    }
+   ],
+   "source": [
+    "total = 0\n",
+    "for i in resnet.state_dict().values():\n",
+    "    total += i.flatten().size(dim=0)\n",
+    "print(total)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Optimizer analysis <a class=\"anchor\" id=\"optim\"></a>"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 13,
+   "metadata": {
+    "id": "mRZYP5UNs-yL"
+   },
+   "outputs": [],
+   "source": [
+    "# internal state test\n",
+    "lr = 0.0005\n",
+    "model = CNN().to(device)\n",
+    "loss_fn = nn.CrossEntropyLoss()\n",
+    "optimizer = torch.optim.Adam(model.parameters(), lr=lr)\n",
+    "old = model.state_dict()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([-0.0877, -0.1623, -0.0757, -0.1486,  0.1212,  0.1070,  0.0221, -0.1306,\n",
+       "         0.0798, -0.1525, -0.0297, -0.1715,  0.1039,  0.0143,  0.0982,  0.0428,\n",
+       "        -0.0983, -0.0698,  0.1894,  0.1400,  0.0139, -0.0640,  0.0410, -0.0332,\n",
+       "        -0.0993, -0.0840, -0.1224,  0.0723,  0.1994,  0.0017, -0.1309,  0.0044])"
+      ]
+     },
+     "execution_count": 12,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "old[\"conv1.bias\"]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 13,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "model = CNN().to(device)\n",
+    "loss_fn = nn.CrossEntropyLoss()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 14,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([-0.1695,  0.0365,  0.0043, -0.0058,  0.1130,  0.1614, -0.1921,  0.0229,\n",
+       "         0.1472,  0.0111, -0.1327, -0.0368,  0.0536, -0.0637,  0.1539,  0.1022,\n",
+       "         0.1948, -0.1443,  0.1046,  0.1746,  0.1998, -0.0572,  0.0675, -0.1533,\n",
+       "        -0.1863, -0.0397,  0.1823, -0.0121,  0.0045,  0.0704,  0.1362,  0.1068])"
+      ]
+     },
+     "execution_count": 14,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "model.state_dict()[\"conv1.bias\"]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 15,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([-0.0877, -0.1623, -0.0757, -0.1486,  0.1212,  0.1070,  0.0221, -0.1306,\n",
+       "         0.0798, -0.1525, -0.0297, -0.1715,  0.1039,  0.0143,  0.0982,  0.0428,\n",
+       "        -0.0983, -0.0698,  0.1894,  0.1400,  0.0139, -0.0640,  0.0410, -0.0332,\n",
+       "        -0.0993, -0.0840, -0.1224,  0.0723,  0.1994,  0.0017, -0.1309,  0.0044])"
+      ]
+     },
+     "execution_count": 15,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "old[\"conv1.bias\"]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 16,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "{'state': {},\n",
+       " 'param_groups': [{'lr': 0.0005,\n",
+       "   'betas': (0.9, 0.999),\n",
+       "   'eps': 1e-08,\n",
+       "   'weight_decay': 0,\n",
+       "   'amsgrad': False,\n",
+       "   'params': [0, 1, 2, 3, 4, 5, 6, 7]}]}"
+      ]
+     },
+     "execution_count": 16,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "optimizer.state_dict()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 17,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "<class 'torch.nn.parameter.Parameter'>\n",
+      "<class 'torch.nn.parameter.Parameter'>\n",
+      "<class 'torch.nn.parameter.Parameter'>\n",
+      "<class 'torch.nn.parameter.Parameter'>\n",
+      "<class 'torch.nn.parameter.Parameter'>\n",
+      "<class 'torch.nn.parameter.Parameter'>\n",
+      "<class 'torch.nn.parameter.Parameter'>\n",
+      "<class 'torch.nn.parameter.Parameter'>\n"
+     ]
+    }
+   ],
+   "source": [
+    "for p in model.parameters():\n",
+    "    print(type(p))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 18,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "8"
+      ]
+     },
+     "execution_count": 18,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "len(optimizer.param_groups[0][\"params\"])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 19,
+   "metadata": {},
+   "outputs": [
+    {
+     "ename": "IndexError",
+     "evalue": "list index out of range",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+      "\u001b[0;31mIndexError\u001b[0m                                Traceback (most recent call last)",
+      "Input \u001b[0;32mIn [19]\u001b[0m, in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43moptimizer\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mparam_groups\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m]\u001b[49m\n",
+      "\u001b[0;31mIndexError\u001b[0m: list index out of range"
+     ]
+    }
+   ],
+   "source": [
+    "optimizer.param_groups[1]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 20,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "dict_keys(['params', 'lr', 'betas', 'eps', 'weight_decay', 'amsgrad'])"
+      ]
+     },
+     "execution_count": 20,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "optimizer.param_groups[0].keys()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 21,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "Parameter containing:\n",
+       "tensor([-0.0877, -0.1623, -0.0757, -0.1486,  0.1212,  0.1070,  0.0221, -0.1306,\n",
+       "         0.0798, -0.1525, -0.0297, -0.1715,  0.1039,  0.0143,  0.0982,  0.0428,\n",
+       "        -0.0983, -0.0698,  0.1894,  0.1400,  0.0139, -0.0640,  0.0410, -0.0332,\n",
+       "        -0.0993, -0.0840, -0.1224,  0.0723,  0.1994,  0.0017, -0.1309,  0.0044],\n",
+       "       requires_grad=True)"
+      ]
+     },
+     "execution_count": 21,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "optimizer.param_groups[0][\"params\"][1]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# --> yes the optimizer values do not get updates"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 22,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "defaultdict(dict, {})"
+      ]
+     },
+     "execution_count": 22,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "optimizer.state"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# optimizer.state is a dictionary that gets filled during the first step() call\n",
+    "# as keys it has the params and as values it has the internal state of the optimizer (first momentum, second momentum etc)\n",
+    "# stored the values in vals, they are from running the training loop"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "8"
+      ]
+     },
+     "execution_count": 12,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "len(vals)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 20,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "vals_list = list(vals)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 21,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "8"
+      ]
+     },
+     "execution_count": 21,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "len(vals_list)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 22,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "{'step': 69,\n",
+       " 'exp_avg': tensor([-1.4137e-03, -1.0432e-02, -5.7605e-03, -1.5292e-02, -1.1802e-02,\n",
+       "          1.1299e-03,  2.1533e-03, -9.7591e-03, -8.8733e-03, -4.7788e-03,\n",
+       "         -1.9228e-03, -5.7594e-03, -5.4949e-05, -3.8590e-05,  1.3072e-04,\n",
+       "         -7.8018e-03, -6.1446e-04, -2.9151e-03, -3.3301e-03, -2.0083e-03,\n",
+       "         -3.0533e-03, -3.5316e-04, -8.1218e-03,  5.7864e-04,  5.8342e-04,\n",
+       "         -1.1397e-02, -8.2111e-04, -6.8639e-03, -7.7449e-04,  1.0854e-04,\n",
+       "         -4.7743e-05, -9.0613e-03]),\n",
+       " 'exp_avg_sq': tensor([9.6760e-06, 2.4495e-05, 8.1120e-06, 3.0419e-05, 1.0932e-05, 2.3003e-05,\n",
+       "         1.9296e-05, 1.5492e-05, 2.6551e-06, 1.1472e-05, 2.6787e-05, 9.0655e-05,\n",
+       "         8.7915e-11, 3.1380e-05, 4.9582e-06, 3.9729e-06, 7.5247e-06, 1.8417e-05,\n",
+       "         6.9078e-06, 2.9552e-05, 5.0895e-06, 1.6462e-06, 2.1158e-06, 2.8078e-06,\n",
+       "         2.5839e-06, 2.6732e-05, 2.0372e-05, 9.5084e-07, 2.0701e-06, 1.2862e-06,\n",
+       "         1.5106e-06, 2.5722e-05])}"
+      ]
+     },
+     "execution_count": 22,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "vals_list[1] # entry for "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# The most feasible solution would be to create a new optimizer and then \n",
+    "# vals = list(optimizer.state.values())\n",
+    "# create new optimizer\n",
+    "# for i, k in enmumerate(optimizer.param_groups[0][\"params\"]):\n",
+    "#     optimizer.state[k] = vals[i]\n",
+    "# https://pytorch.org/docs/stable/_modules/torch/optim/adam.html#Adam\n",
+    "# https://pytorch.org/docs/stable/_modules/torch/optim/optimizer.html#Optimizer"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## FFT <a class=\"anchor\" id=\"fft\"></a>"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 14,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "(735856, 1, 28, 28)"
+      ]
+     },
+     "execution_count": 14,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "train[\"train_x\"].shape"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 15,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "5748.875"
+      ]
+     },
+     "execution_count": 15,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "735856 / 128"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 15,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "weights = {}"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 16,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "loss: 4.124378  [    0/735856]\n",
+      "loss: 1.539611  [64000/735856]\n",
+      "loss: 0.719579  [128000/735856]\n",
+      "loss: 0.685157  [192000/735856]\n",
+      "loss: 0.778637  [256000/735856]\n",
+      "loss: 0.493262  [320000/735856]\n",
+      "loss: 0.423785  [384000/735856]\n",
+      "loss: 0.531239  [448000/735856]\n",
+      "loss: 0.803173  [512000/735856]\n",
+      "loss: 0.498672  [576000/735856]\n",
+      "loss: 0.453685  [640000/735856]\n",
+      "loss: 0.355350  [704000/735856]\n",
+      "loss: 0.417364  [768000/735856]\n",
+      "loss: 0.462418  [832000/735856]\n",
+      "loss: 0.361217  [896000/735856]\n",
+      "loss: 0.484760  [960000/735856]\n",
+      "loss: 0.360997  [1024000/735856]\n",
+      "loss: 0.353997  [1088000/735856]\n",
+      "loss: 0.378490  [1152000/735856]\n",
+      "loss: 0.376164  [1216000/735856]\n",
+      "loss: 0.375268  [1280000/735856]\n",
+      "loss: 0.570408  [1344000/735856]\n",
+      "loss: 0.295247  [1408000/735856]\n",
+      "loss: 0.257762  [1472000/735856]\n",
+      "loss: 0.609368  [1536000/735856]\n",
+      "loss: 0.423437  [1600000/735856]\n",
+      "loss: 0.363265  [1664000/735856]\n",
+      "loss: 0.393251  [1728000/735856]\n",
+      "loss: 0.353971  [1792000/735856]\n",
+      "loss: 0.279443  [1856000/735856]\n",
+      "loss: 0.532804  [1920000/735856]\n",
+      "loss: 0.364327  [1984000/735856]\n",
+      "loss: 0.310962  [2048000/735856]\n",
+      "loss: 0.306962  [2112000/735856]\n",
+      "loss: 0.391289  [2176000/735856]\n"
+     ]
+    }
+   ],
+   "source": [
+    "stats = {\"train\": [], \"test\":[]}\n",
+    "batch = 0\n",
+    "for e in range(3):\n",
+    "    #training\n",
+    "    for X, y in train_dataloader:\n",
+    "        old = model.conv1.bias.clone()\n",
+    "        X = X.to(device)\n",
+    "        y = y.to(device)\n",
+    "        #print(len(label))\n",
+    "        size = len(train_dataloader.dataset)\n",
+    "        model.train()\n",
+    "        # Compute prediction error\n",
+    "        pred = model(X)\n",
+    "        loss = loss_fn(pred, y)\n",
+    "        # Backpropagation\n",
+    "        loss.backward()\n",
+    "        optimizer.step()\n",
+    "        model.zero_grad()\n",
+    "        #optimizer.zero_grad()\n",
+    "        \n",
+    "\n",
+    "        if batch % 500 == 0:\n",
+    "            loss, current = loss.item(), batch * len(X)\n",
+    "            print(f\"loss: {loss:>7f}  [{current:>5d}/{size:>5d}]\")\n",
+    "            stats[\"train\"].append([batch, e*size + current, loss])\n",
+    "            weight = {}\n",
+    "            for k,v in model.state_dict().items():\n",
+    "                weight[k] = v.clone()\n",
+    "            \n",
+    "            weights[str(batch)] = weight\n",
+    "        batch += 1"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 17,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 87.2%, Avg loss: 0.367197 \n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "size = len(test_dataloader.dataset)\n",
+    "num_batches = len(test_dataloader)\n",
+    "model.eval()\n",
+    "test_loss, correct = 0, 0\n",
+    "with torch.no_grad():\n",
+    "    for X, y in test_dataloader:\n",
+    "        X = X.to(device)\n",
+    "        y = y.to(device)\n",
+    "        pred = model(X)\n",
+    "        test_loss += loss_fn(pred, y).item()\n",
+    "        correct += (pred.argmax(1) == y).type(torch.float).sum().item()\n",
+    "test_loss /= num_batches\n",
+    "correct /= size\n",
+    "print(\"epoch:\")\n",
+    "print(f\"Test Error: \\n Accuracy: {(100*correct):>0.1f}%, Avg loss: {test_loss:>8f} \\n\")\n",
+    "stats[\"test\"].append([e, test_loss, 100*correct])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 18,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "dict_keys(['0', '500', '1000', '1500', '2000', '2500', '3000', '3500', '4000', '4500', '5000', '5500', '6000', '6500', '7000', '7500', '8000', '8500', '9000', '9500', '10000', '10500', '11000', '11500', '12000', '12500', '13000', '13500', '14000', '14500', '15000', '15500', '16000', '16500', '17000'])"
+      ]
+     },
+     "execution_count": 18,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "weights.keys()"
+   ]
+  },
+  {
+   "cell_type": "raw",
+   "metadata": {},
+   "source": [
+    "with open(\"vecs.pkl\", \"wb\") as f:\n",
+    "    \n",
+    "    json.dump(weights, f)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "* 1d on flattend\n",
+    "* 1d on layers\n",
+    "* nd on layers"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 25,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# working on the random initialization\n",
+    "flat = []\n",
+    "for v in weights[\"17000\"].values():\n",
+    "    flat.append(v.flatten())\n",
+    "conc = torch.cat(flat)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 26,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "1690046"
+      ]
+     },
+     "execution_count": 26,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "len(conc)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 27,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([-0.1440, -0.0482,  0.2070, -0.2534, -0.2413,  0.0336, -0.2401,  0.2761,\n",
+       "         0.2361, -0.2687])"
+      ]
+     },
+     "execution_count": 27,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "conc[0:10]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 28,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import torch.fft as fft"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 29,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "1690046"
+      ]
+     },
+     "execution_count": 29,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "flat_fft = fft.fft(conc)\n",
+    "len(flat_fft)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 30,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "845024"
+      ]
+     },
+     "execution_count": 30,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "flat_fft = fft.rfft(conc)\n",
+    "len(flat_fft)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 31,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([-3912.2754+0.0000j,  -685.3215+117.2780j,  -718.2836-68.4478j,\n",
+       "         ...,    33.0949-6.6868j,    49.2176+6.2663j,\n",
+       "           -9.9980+0.0000j])"
+      ]
+     },
+     "execution_count": 31,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "flat_fft"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 32,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "reverse = fft.irfft(flat_fft)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 33,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([-0.1440, -0.0482,  0.2070, -0.2534, -0.2413,  0.0336, -0.2401,  0.2761,\n",
+       "         0.2361, -0.2687])"
+      ]
+     },
+     "execution_count": 33,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "reverse[0:10]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 34,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(0.0004)"
+      ]
+     },
+     "execution_count": 34,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(conc - reverse, 2)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 35,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "top10 = torch.zeros(flat_fft.size(dim=0), dtype = torch.cfloat)\n",
+    "top10[0:84502] = flat_fft[0:84502]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 36,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([-3912.2754+0.0000j,  -685.3215+117.2780j,  -718.2836-68.4478j,\n",
+       "         ...,     0.0000+0.0000j,     0.0000+0.0000j,\n",
+       "            0.0000+0.0000j])"
+      ]
+     },
+     "execution_count": 36,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "top10"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 37,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "reverse_t10 = fft.irfft(top10)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 38,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([-0.0439, -0.0400, -0.0357, -0.0312, -0.0269, -0.0229, -0.0193, -0.0162,\n",
+       "        -0.0134, -0.0109])"
+      ]
+     },
+     "execution_count": 38,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "reverse_t10[0:10]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 39,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(40.2866)"
+      ]
+     },
+     "execution_count": 39,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(reverse_t10 - reverse, 2)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 40,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "d10 = torch.zeros(flat_fft.size(dim=0), dtype = torch.cfloat)\n",
+    "d10[-84502:] = flat_fft[-84502:]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 41,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "reverse_d10 = fft.irfft(d10)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 42,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([-0.0026,  0.0042, -0.0056,  0.0065, -0.0065,  0.0053, -0.0029, -0.0008,\n",
+       "         0.0059, -0.0120])"
+      ]
+     },
+     "execution_count": 42,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "reverse_d10[0:10]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 43,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(43.7672)"
+      ]
+     },
+     "execution_count": 43,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(reverse_d10 - reverse, 2)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 44,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(44.8886)"
+      ]
+     },
+     "execution_count": 44,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(reverse, 2)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 45,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "rand = torch.rand(conc.size(dim=0))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 46,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(754.6744)"
+      ]
+     },
+     "execution_count": 46,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(rand - reverse, 2)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 47,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(29442.5273)"
+      ]
+     },
+     "execution_count": 47,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(reverse_d10 - reverse, 1)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 48,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(27450.3555)"
+      ]
+     },
+     "execution_count": 48,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(reverse_t10 - reverse, 1)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 49,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(30432.2695)"
+      ]
+     },
+     "execution_count": 49,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(reverse, 1)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 50,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(44.8886)"
+      ]
+     },
+     "execution_count": 50,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(reverse, 2)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 51,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([-3912.2754+0.0000j,  -685.3215+117.2780j,  -718.2836-68.4478j,\n",
+       "         ...,    33.0949-6.6868j,    49.2176+6.2663j,\n",
+       "           -9.9980+0.0000j])"
+      ]
+     },
+     "execution_count": 51,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "flat_fft"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 52,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([3912.2754,  695.2839,  721.5375,  ...,   33.7637,   49.6149,\n",
+       "           9.9980])"
+      ]
+     },
+     "execution_count": 52,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "flat_fft.abs()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 53,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import matplotlib.pyplot as plt"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 54,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "plt.plot(torch.arange(0,len(conc)), conc, '.')\n",
+    "plt.title('Parameter Values') \n",
+    "plt.xlabel(\"Parameter indices\")\n",
+    "plt.draw()\n",
+    "plt.savefig(\"Parameter_Values.png\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 55,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "plt.plot(torch.arange(0,len(flat_fft)), flat_fft.abs(), '.')\n",
+    "plt.title('Model Fourier Frequency Representation') \n",
+    "plt.ylabel(\"Absolute frequency value\")\n",
+    "plt.xlabel(\"Parameter indices\")\n",
+    "plt.draw()\n",
+    "plt.savefig(\"Parameter_Frequency.png\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Normalizing"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 56,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(-0.0023)"
+      ]
+     },
+     "execution_count": 56,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.mean(conc)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 57,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "conc2 = conc #+ 0.0016"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 58,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(-0.0023)"
+      ]
+     },
+     "execution_count": 58,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.mean(conc2)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 59,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "flat_fft2 = fft.rfft(conc)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 60,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[<matplotlib.lines.Line2D at 0x7ff775a99c10>]"
+      ]
+     },
+     "execution_count": 60,
+     "metadata": {},
+     "output_type": "execute_result"
+    },
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "plt.plot(torch.arange(0,len(conc2)), conc2, '.')"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 61,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[<matplotlib.lines.Line2D at 0x7ff7759c01f0>]"
+      ]
+     },
+     "execution_count": 61,
+     "metadata": {},
+     "output_type": "execute_result"
+    },
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "plt.plot(torch.arange(0,len(flat_fft2)), flat_fft2.abs(), '.')"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 62,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "topk = torch.topk(\n",
+    "            flat_fft2.abs(), round(0.1*len(flat_fft2)), dim=0, sorted=False\n",
+    "        )"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 63,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "torch.return_types.topk(\n",
+       "values=tensor([ 75.7603, 695.2839, 721.5375,  ...,  68.1649,  68.1649,  68.1649]),\n",
+       "indices=tensor([294037,      1,      2,  ..., 241565, 434039, 328013]))"
+      ]
+     },
+     "execution_count": 63,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "topk"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 64,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([294037,      1,      2,  ..., 241565, 434039, 328013])"
+      ]
+     },
+     "execution_count": 64,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "topk.indices"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 65,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "top10 = torch.zeros(len(flat_fft2), dtype = torch.cfloat)\n",
+    "top10[topk.indices] = flat_fft2[topk.indices]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 66,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "84502"
+      ]
+     },
+     "execution_count": 66,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "len(topk.indices)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 67,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "reverse_top10 = fft.irfft(top10)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 68,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(34.8182)"
+      ]
+     },
+     "execution_count": 68,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(reverse_top10 - conc2, 2)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 69,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(44.8886)"
+      ]
+     },
+     "execution_count": 69,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(conc2, 2) "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 70,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(30254.6758)"
+      ]
+     },
+     "execution_count": 70,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(reverse_top10 - conc2, 1)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 71,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "topk_og = torch.topk(\n",
+    "            conc2.abs(), round(0.1*len(conc2)), dim=0, sorted=False\n",
+    "        )"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 72,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "169005"
+      ]
+     },
+     "execution_count": 72,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "len(topk_og.indices)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 73,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([ 1,  2,  3,  4,  0,  6,  7,  8,  9, 10, 11, 12, 13, 16, 18, 19, 20, 21,\n",
+       "        22, 23, 24, 25, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 40, 41, 42,\n",
+       "        44, 45, 46, 47, 48, 49, 39])"
+      ]
+     },
+     "execution_count": 73,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "topk_og.indices[topk_og.indices<50]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 74,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "top10_og = torch.zeros(len(conc2))\n",
+    "top10_og[topk_og.indices] = conc2[topk_og.indices]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 75,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(15.5541)"
+      ]
+     },
+     "execution_count": 75,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(top10_og - conc2, 2) "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 76,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(15858.2695)"
+      ]
+     },
+     "execution_count": 76,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(top10_og - conc2, 1)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 77,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([-0.0058, -0.0441, -0.0381, -0.0493, -0.0240,  0.0190, -0.0132, -0.0221,\n",
+       "        -0.0472,  0.0077,  0.0236,  0.0183,  0.0231,  0.0014, -0.0245, -0.0085,\n",
+       "         0.0035, -0.0036,  0.0150,  0.0107,  0.0123,  0.0039,  0.0003, -0.0320,\n",
+       "        -0.0093,  0.0632,  0.0360,  0.0200, -0.0248,  0.0029, -0.0011, -0.0193,\n",
+       "         0.0221,  0.0056, -0.0091, -0.0008,  0.0329,  0.0133, -0.0078, -0.0061,\n",
+       "        -0.0372, -0.0354, -0.0238, -0.0028,  0.0145, -0.0121, -0.0517, -0.0468,\n",
+       "        -0.0123, -0.0132])"
+      ]
+     },
+     "execution_count": 77,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "reverse_top10[10000:10050]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 78,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([ 0.0155,  0.0128, -0.0386,  0.0186,  0.0166,  0.0259, -0.0200, -0.0033,\n",
+       "        -0.0399,  0.0214,  0.0106,  0.0197, -0.0182, -0.0191, -0.0370,  0.0159,\n",
+       "         0.0071, -0.0321, -0.0166, -0.0082,  0.0090,  0.0291,  0.0117,  0.0011,\n",
+       "         0.0066,  0.0163,  0.0237,  0.0092, -0.0029, -0.0209, -0.0207,  0.0039,\n",
+       "         0.0065,  0.0057,  0.0316, -0.0262, -0.0342, -0.0115,  0.0149, -0.0175,\n",
+       "        -0.0568, -0.0135, -0.0503, -0.0252,  0.0148, -0.0429, -0.0424, -0.0182,\n",
+       "        -0.0002, -0.0341])"
+      ]
+     },
+     "execution_count": 78,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "conc2 [10000:10050]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 79,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([ 0.0000,  0.0000, -0.0386,  0.0000,  0.0000,  0.0000,  0.0000,  0.0000,\n",
+       "        -0.0399,  0.0000,  0.0000,  0.0000,  0.0000,  0.0000, -0.0370,  0.0000,\n",
+       "         0.0000,  0.0000,  0.0000,  0.0000,  0.0000,  0.0000,  0.0000,  0.0000,\n",
+       "         0.0000,  0.0000,  0.0000,  0.0000,  0.0000,  0.0000,  0.0000,  0.0000,\n",
+       "         0.0000,  0.0000,  0.0000,  0.0000,  0.0000,  0.0000,  0.0000,  0.0000,\n",
+       "        -0.0568,  0.0000, -0.0503,  0.0000,  0.0000, -0.0429, -0.0424,  0.0000,\n",
+       "         0.0000,  0.0000])"
+      ]
+     },
+     "execution_count": 79,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "top10_og[10000:10050]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 80,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([-0.1440, -0.0482,  0.2070,  ...,  0.0011,  0.0177, -0.0218])"
+      ]
+     },
+     "execution_count": 80,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "conc2[0:10000]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 81,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "reverse_top10fft = reverse_top10"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 82,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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Qho4AaaTgWEIKoaUkre85S1cffXVtLW1sXfvXgKBAP/93/89Yt94PM7s2bNHzB/Ix1//+tdxawbl45Of/CRbtmzh97//Pe9973tJJpMlPS6RSFR8LTpjMQQTuR6D8jGbBE01hs5QIXJHVoZOkBzB1K9gIvjbTdC5rbLP2bIWXn9rwbsfffRRHA4H//zP/wyoITW33XYbCxcu5POf/zy/+93v+OMf/0ggECCRSHD33Xdz5ZVXsn37dkKhEDfccAPbt29n+fLlHD9+nDvvvJMNGzbQ2trK5s2bCQQCvP71r+f888/n2WefZc6cOdx///1UVVXxox/9iB/+8IdEo1GWLFnCz3/+85LnBaxcuRKLxUJvby833ngjR48eJRwO84lPfIIbb7wRAJfLxb/8y7/w8MMPc+edd/Loo4/ypz/9ieHhYc4991x+8IMfIIRg48aNnHrqqTz11FMEg0F+9rOf8ZWvfIVt27bxjne8g1tuuQWAX/ziF9xxxx1Eo1HOOussvvvd7/Lf//3fKfXW1atX88tf/jLvfmazecR6/vznP/PAAw9gsVi49NJL83pBBgYnAnpTma5CqkJDU38aNjyCCrFjxw5OP/30rG1ut5v58+ezb98+AF5++WXuuecennjiiaz9vvvd71JbW8vOnTv54he/yEsvvZT3GG1tbXzkIx9hx44deL1e/vCHPwDwlre8hRdffJGtW7eycuVK/u///q/kdW/atAmTyURjYyM/+clPeOmll9i8eTN33HEHfX19AASDQc466yy2bt3K+eefz0c/+lFefPFFtm/fzvDwcJayqs1mY/PmzXzwgx/kTW96E3feeSfbt2/nrrvuoq+vj127dvHb3/6WZ555hi1btmA2m/nlL3/JrbfemlJv/eUvf1lwv9z1rFy5knvvvZcdO3bw6quv8tnPfrbk125gMNnUV9uwmkXKIwhE4lMuQQ3T1SMocuU+lVxyySXU1dWN2P7000/ziU98AoA1a9awbt26vI9fuHAh69evB+D000/n0KFDAGzfvp3PfvazDA4OEggEuOyyy0Zdy2233cYvfvELampq+O1vf4sQgjvuuIN7770XgKNHj9LW1kZ9fT1ms5m3vvWtqcc+9thjfO1rXyMUCtHf38/q1at54xvfCCgBO4C1a9eyevXqlHjdokWLOHr0KE8//TQvvfQSZ5xxBqBmODQ1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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "plt.plot(np.arange(100000,100050,1), reverse_top10fft[100000:100050], label = \"FFT top-10%\")\n",
+    "plt.plot(np.arange(100000,100050,1), conc2[100000:100050], label = \"Original Parameters\")\n",
+    "plt.plot(np.arange(100000,100050,1), top10_og[100000:100050], label = \"Parameter top-10%\")\n",
+    "plt.title('Parameter Values') \n",
+    "#plt.ylabel(\"Absolute frequency value\")\n",
+    "plt.xlabel(\"Parameter indices\")\n",
+    "plt.legend()\n",
+    "plt.draw()\n",
+    "plt.savefig(\"Parameters.png\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 83,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "plt.hist(conc2.numpy(), 100, (-0.1,0.1))\n",
+    "plt.title('Parameter Values Histogram') \n",
+    "#plt.ylabel(\"Absolute frequency value\")\n",
+    "plt.xlabel(\"Parameter values\")\n",
+    "plt.draw()\n",
+    "plt.savefig(\"Parameter_Histogram.png\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 84,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "plt.hist(reverse_top10.numpy(), 100, (-0.1,0.1))\n",
+    "plt.title('Top-10% FFT Reconstructed Parameter Values Histogram') \n",
+    "#plt.ylabel(\"Absolute frequency value\")\n",
+    "plt.xlabel(\"Parameter values\")\n",
+    "plt.draw()\n",
+    "plt.savefig(\"FFT_Histogram.png\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 85,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "plt.hist(top10_og[top10_og.abs() >0].numpy(), 100, (-0.1,0.1))\n",
+    "plt.title('Top-10% Parameter Values Histogram') \n",
+    "#plt.ylabel(\"Absolute frequency value\")\n",
+    "plt.xlabel(\"Parameter values\")\n",
+    "plt.draw()\n",
+    "plt.savefig(\"top10_Histogram.png\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 86,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([-0.14400896, -0.04817872,  0.20703338, ...,  0.0729612 ,\n",
+       "       -0.06001848, -0.03798665], dtype=float32)"
+      ]
+     },
+     "execution_count": 86,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "top10_og[top10_og.abs() >0].numpy()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Per Layer"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 87,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "flat5000 = []\n",
+    "for v in weights[\"17000\"].values():\n",
+    "    flat5000.append(v.flatten())\n",
+    "conc500 = torch.cat(flat5000)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 88,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(44.8886)"
+      ]
+     },
+     "execution_count": 88,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(conc500, 2)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 134,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "tensor(3.8334)\n",
+      "tensor(0.5911)\n",
+      "tensor(14.2745)\n",
+      "tensor(0.2714)\n",
+      "tensor(29.4115)\n",
+      "tensor(0.4823)\n",
+      "tensor(9.3226)\n",
+      "tensor(0.3447)\n"
+     ]
+    }
+   ],
+   "source": [
+    "# working on the random initialization\n",
+    "errs = []\n",
+    "lens = []\n",
+    "fft_layers = []\n",
+    "for v in weights[\"17000\"].values():\n",
+    "    flat = v.flatten()\n",
+    "    lens.append(len(flat))\n",
+    "    flat_fft = fft.rfft(flat)\n",
+    "    topk = torch.topk(\n",
+    "            flat_fft.abs(), round(0.1*len(flat_fft)), dim=0, sorted=False\n",
+    "        )\n",
+    "    top10 = torch.zeros(len(flat_fft), dtype = torch.cfloat)\n",
+    "    top10[topk.indices] = flat_fft[topk.indices]\n",
+    "    reverse_top10 = fft.irfft(top10)\n",
+    "    fft_layers.append(reverse_top10)\n",
+    "    err = torch.norm(reverse_top10 - flat, 2)\n",
+    "    print(err)\n",
+    "    errs.append(err*err)\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 135,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[800, 32, 51200, 64, 1605632, 512, 31744, 62]"
+      ]
+     },
+     "execution_count": 135,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "lens"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 136,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "1171.1743"
+      ]
+     },
+     "execution_count": 136,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "np.sum(errs)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 137,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "34.222424"
+      ]
+     },
+     "execution_count": 137,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "np.sqrt(np.sum(errs))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 93,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "fft_conc = torch.cat(fft_layers)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 94,
+   "metadata": {},
+   "outputs": [
+    {
+     "ename": "NameError",
+     "evalue": "name 'conc5000' is not defined",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+      "\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)",
+      "Input \u001b[0;32mIn [94]\u001b[0m, in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0m torch\u001b[38;5;241m.\u001b[39mnorm(fft_conc \u001b[38;5;241m-\u001b[39m \u001b[43mconc5000\u001b[49m\n\u001b[1;32m      2\u001b[0m            ,\u001b[38;5;241m2\u001b[39m)\n",
+      "\u001b[0;31mNameError\u001b[0m: name 'conc5000' is not defined"
+     ]
+    }
+   ],
+   "source": [
+    "torch.norm(fft_conc - conc5000\n",
+    "           ,2)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Almost no difference in layerwise vs over the entire weight"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 138,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "dict_keys(['0', '500', '1000', '1500', '2000', '2500', '3000', '3500', '4000', '4500', '5000', '5500', '6000', '6500', '7000', '7500', '8000', '8500', '9000', '9500', '10000', '10500', '11000', '11500', '12000', '12500', '13000', '13500', '14000', '14500', '15000', '15500', '16000', '16500', '17000'])"
+      ]
+     },
+     "execution_count": 138,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "weights.keys()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 139,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "tensor(3.8017)\n",
+      "tensor(0.6525)\n",
+      "tensor(9.6627)\n",
+      "tensor(0.2314)\n",
+      "tensor(14.0121)\n",
+      "tensor(0.3602)\n",
+      "tensor(6.0212)\n",
+      "tensor(0.3187)\n"
+     ]
+    }
+   ],
+   "source": [
+    "# working on the random initialization\n",
+    "errs = []\n",
+    "lens = []\n",
+    "for v in weights[\"17000\"].values():\n",
+    "    flat = v.flatten()\n",
+    "    lens.append(len(flat))\n",
+    "    topk = torch.topk(\n",
+    "            flat.abs(), round(0.1*len(flat)), dim=0, sorted=False\n",
+    "        )\n",
+    "    top10 = torch.zeros(len(flat))\n",
+    "    top10[topk.indices] = flat[topk.indices]\n",
+    "    err = torch.norm(top10 - flat, 2)\n",
+    "    print(err)\n",
+    "    errs.append(err*err)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 140,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[800, 32, 51200, 64, 1605632, 512, 31744, 62]"
+      ]
+     },
+     "execution_count": 140,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "lens"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 141,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "341.1233"
+      ]
+     },
+     "execution_count": 141,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "np.sum(errs)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 142,
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "18.469522"
+      ]
+     },
+     "execution_count": 142,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "np.sqrt(np.sum(errs))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 99,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "flat5000 = []\n",
+    "for v in weights[\"17000\"].values():\n",
+    "    flat5000.append(v.flatten())\n",
+    "conc5000 = torch.cat(flat5000)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 100,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(44.8886)"
+      ]
+     },
+     "execution_count": 100,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(conc5000, 2)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 101,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "tensor(2.5049)\n",
+      "tensor(0.4643)\n",
+      "tensor(6.6074)\n",
+      "tensor(0.1233)\n",
+      "tensor(12.2971)\n",
+      "tensor(0.1902)\n",
+      "tensor(4.0843)\n",
+      "tensor(0.1482)\n"
+     ]
+    }
+   ],
+   "source": [
+    "# working on the random initialization\n",
+    "errs = []\n",
+    "errs1 = []\n",
+    "lens = []\n",
+    "fft_layers = []\n",
+    "for v in weights[\"1000\"].values():\n",
+    "    flat = v.flatten()\n",
+    "    lens.append(len(flat))\n",
+    "    flat_fft = fft.rfft(flat)\n",
+    "    topk = torch.topk(\n",
+    "            flat_fft.abs(), round(0.2*len(flat_fft)), dim=0, sorted=False\n",
+    "        )\n",
+    "    top10 = torch.zeros(len(flat_fft), dtype = torch.cfloat)\n",
+    "    top10[topk.indices] = flat_fft[topk.indices]\n",
+    "    reverse_top10 = fft.irfft(top10)\n",
+    "    fft_layers.append(reverse_top10)\n",
+    "    err = torch.norm(reverse_top10 - flat, 2)\n",
+    "    errs1.append(torch.norm(reverse_top10 - flat, 1))\n",
+    "    print(err)\n",
+    "    errs.append(err*err)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 102,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[800, 32, 51200, 64, 1605632, 512, 31744, 62]"
+      ]
+     },
+     "execution_count": 102,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "lens"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 103,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "218.12065"
+      ]
+     },
+     "execution_count": 103,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "np.sum(errs)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 104,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "14.7689085"
+      ]
+     },
+     "execution_count": 104,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "np.sqrt(np.sum(errs))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 105,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "fft_conc = torch.cat(fft_layers)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 106,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(39.6843)"
+      ]
+     },
+     "execution_count": 106,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(fft_conc - conc5000,2)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 107,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[tensor(57.1960),\n",
+       " tensor(2.2182),\n",
+       " tensor(1148.8655),\n",
+       " tensor(0.7960),\n",
+       " tensor(12109.6943),\n",
+       " tensor(3.3738),\n",
+       " tensor(578.7853),\n",
+       " tensor(0.9163)]"
+      ]
+     },
+     "execution_count": 107,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "errs1"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 108,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "13901.846"
+      ]
+     },
+     "execution_count": 108,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "np.sum(errs1)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 109,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "tensor(3.8017)\n",
+      "tensor(0.6525)\n",
+      "tensor(9.6627)\n",
+      "tensor(0.2314)\n",
+      "tensor(14.0121)\n",
+      "tensor(0.3602)\n",
+      "tensor(6.0212)\n",
+      "tensor(0.3187)\n"
+     ]
+    }
+   ],
+   "source": [
+    "# working on the random initialization\n",
+    "errs = []\n",
+    "lens = []\n",
+    "errs1 = []\n",
+    "for v in weights[\"17000\"].values():\n",
+    "    flat = v.flatten()\n",
+    "    lens.append(len(flat))\n",
+    "    topk = torch.topk(\n",
+    "            flat.abs(), round(0.1*len(flat)), dim=0, sorted=False\n",
+    "        )\n",
+    "    top10 = torch.zeros(len(flat))\n",
+    "    top10[topk.indices] = flat[topk.indices]\n",
+    "    err = torch.norm(top10 - flat, 2)\n",
+    "    print(err)\n",
+    "    errs.append(err*err)\n",
+    "    errs1.append(torch.norm(top10 - flat, 1))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 110,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[800, 32, 51200, 64, 1605632, 512, 31744, 62]"
+      ]
+     },
+     "execution_count": 110,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "lens"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 111,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "341.1233"
+      ]
+     },
+     "execution_count": 111,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "np.sum(errs)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 112,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "18.469522"
+      ]
+     },
+     "execution_count": 112,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "np.sqrt(np.sum(errs))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 113,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[tensor(86.4496),\n",
+       " tensor(3.1551),\n",
+       " tensor(1531.9570),\n",
+       " tensor(1.5015),\n",
+       " tensor(14199.5361),\n",
+       " tensor(6.1879),\n",
+       " tensor(814.4448),\n",
+       " tensor(2.0511)]"
+      ]
+     },
+     "execution_count": 113,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "errs1"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 114,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "16645.283"
+      ]
+     },
+     "execution_count": 114,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "np.sum(errs1)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 115,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "None\n",
+      "None\n",
+      "None\n",
+      "None\n",
+      "None\n",
+      "None\n",
+      "None\n",
+      "None\n"
+     ]
+    }
+   ],
+   "source": [
+    "flat5000 = []\n",
+    "for v in weights[\"17000\"].values():\n",
+    "    print(v.grad)\n",
+    "    flat5000.append(v.flatten())\n",
+    "conc5000 = torch.cat(flat5000)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Wavelets  <a class=\"anchor\" id=\"wt\"></a>"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 116,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Requirement already satisfied: PyWavelets in /home/jeffrey/anaconda3/envs/sacs39/lib/python3.9/site-packages (1.2.0)\n",
+      "Requirement already satisfied: numpy>=1.17.3 in /home/jeffrey/anaconda3/envs/sacs39/lib/python3.9/site-packages (from PyWavelets) (1.22.3)\n"
+     ]
+    }
+   ],
+   "source": [
+    "!pip install PyWavelets"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 117,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import pywt"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 118,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "#(cA, cD) = pywt.dwt(, 'db1')"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 24,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# pywt.wavelist(kind='discrete', )"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 143,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "haar 18.427034\n",
+      "db1 18.427034\n",
+      "sym2 18.36348\n",
+      "coif1 18.393574\n",
+      "bior1.1 18.427034\n",
+      "rbio1.1 18.427034\n",
+      "dmey 18.671127\n",
+      "bior4.4 18.496372\n"
+     ]
+    }
+   ],
+   "source": [
+    "# working on the random initialization\n",
+    "wavelets = ['haar', 'db1', 'sym2', 'coif1', 'bior1.1', 'rbio1.1', 'dmey', 'bior4.4'] # 'gaus1' not supported, 'mexh','morl',  'cgau1', 'shan',  'fbsp', 'cmor'\n",
+    "for wavelet in wavelets:\n",
+    "    errs = []\n",
+    "    errs1 = []\n",
+    "    lens = []\n",
+    "    fft_layers = []\n",
+    "    for v in weights[\"17000\"].values():\n",
+    "        flat = v.flatten()\n",
+    "        #print(flat.shape)\n",
+    "        lens.append(len(flat))\n",
+    "        coeff = pywt.wavedec(flat.numpy(), wavelet, level = None)\n",
+    "        array, coeff_slices = pywt.coeffs_to_array(coeff)\n",
+    "        #print(coeff_slices) # should be static so we do not need to send them\n",
+    "        topk = torch.topk(\n",
+    "                torch.from_numpy(np.absolute(array)), round(0.1*len(array)), dim=0, sorted=False\n",
+    "            )\n",
+    "        top10 = torch.zeros(len(array))\n",
+    "        top10[topk.indices] = torch.from_numpy(array[topk.indices])\n",
+    "        og = pywt.array_to_coeffs(top10, coeff_slices, output_format=\"wavedec\")\n",
+    "        reverse_top10 = torch.from_numpy(pywt.waverec(og, wavelet = wavelet))\n",
+    "        fft_layers.append(reverse_top10)\n",
+    "        err = torch.norm(reverse_top10 - flat, 2)\n",
+    "        errs1.append(torch.norm(reverse_top10 - flat, 1))\n",
+    "        #print(err)\n",
+    "        errs.append(err*err)\n",
+    "        # print(flat[0:10])\n",
+    "        # print(reverse_top10[0:10])\n",
+    "    print(wavelet, np.sqrt(np.sum(errs)))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 156,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "bior1.1 15.07145881652832 16107.921875\n",
+      "bior1.3 15.25814437866211 16279.986328125\n",
+      "bior1.5 15.425777435302734 16436.12109375\n",
+      "bior2.2 15.66141128540039 16473.904296875\n",
+      "bior2.4 15.516386985778809 16417.8203125\n",
+      "bior2.6 15.544709205627441 16466.162109375\n",
+      "bior2.8 15.579778671264648 16503.138671875\n",
+      "bior3.1 25.344850540161133 24354.4453125\n",
+      "bior3.3 18.38104248046875 18552.30859375\n",
+      "bior3.5 17.479848861694336 17874.1015625\n",
+      "bior3.7 17.260520935058594 17713.20703125\n",
+      "bior3.9 17.19255828857422 17672.990234375\n",
+      "bior4.4 15.1978120803833 16241.7060546875\n",
+      "bior5.5 15.467646598815918 16527.41796875\n",
+      "bior6.8 15.204909324645996 16253.8125\n",
+      "coif1 15.142683029174805 16156.6630859375\n",
+      "coif2 15.175430297851562 16219.298828125\n",
+      "coif3 15.218149185180664 16275.017578125\n",
+      "coif4 15.248283386230469 16304.376953125\n",
+      "coif5 15.278726577758789 16337.1923828125\n",
+      "coif6 15.300649642944336 16357.455078125\n",
+      "coif7 15.324337005615234 16380.2119140625\n",
+      "coif8 15.34239387512207 16396.9453125\n",
+      "coif9 15.35299301147461 16408.88671875\n",
+      "coif10 15.358224868774414 16412.31640625\n",
+      "coif11 15.375347137451172 16429.083984375\n",
+      "coif12 15.383316993713379 16440.47265625\n",
+      "coif13 15.401575088500977 16450.142578125\n",
+      "coif14 15.413949012756348 16466.5859375\n",
+      "coif15 15.430389404296875 16478.208984375\n",
+      "coif16 15.438526153564453 16489.732421875\n",
+      "coif17 15.44447135925293 16493.5625\n",
+      "db1 15.07145881652832 16107.921875\n",
+      "db2 15.11799430847168 16146.3642578125\n",
+      "db3 15.206748008728027 16251.126953125\n",
+      "db4 15.276558876037598 16337.6650390625\n",
+      "db5 15.346190452575684 16396.228515625\n",
+      "db6 15.424012184143066 16471.95703125\n",
+      "db7 15.465736389160156 16520.9609375\n",
+      "db8 15.5084228515625 16558.216796875\n",
+      "db9 15.579204559326172 16622.1484375\n",
+      "db10 15.634806632995605 16672.583984375\n",
+      "db11 15.69124698638916 16721.88671875\n",
+      "db12 15.76386833190918 16791.78125\n",
+      "db13 15.807873725891113 16828.6328125\n",
+      "db14 15.84904956817627 16859.560546875\n",
+      "db15 15.879130363464355 16884.310546875\n",
+      "db16 15.916594505310059 16917.77734375\n",
+      "db17 15.97330093383789 16964.7890625\n",
+      "db18 16.010889053344727 17004.966796875\n",
+      "db19 16.06007957458496 17043.080078125\n",
+      "db20 16.109506607055664 17080.361328125\n",
+      "db21 16.15558433532715 17122.78125\n",
+      "db22 16.195322036743164 17152.8046875\n",
+      "db23 16.23825454711914 17190.244140625\n",
+      "db24 16.28815269470215 17229.99609375\n",
+      "db25 16.29660415649414 17237.244140625\n",
+      "db26 16.331958770751953 17263.62890625\n",
+      "db27 16.375545501708984 17302.498046875\n",
+      "db28 16.413320541381836 17331.599609375\n",
+      "db29 16.437959671020508 17352.27734375\n",
+      "db30 16.50661849975586 17411.228515625\n",
+      "db31 16.53733253479004 17433.791015625\n",
+      "db32 16.5701904296875 17458.037109375\n",
+      "db33 16.599777221679688 17484.1953125\n",
+      "db34 16.628063201904297 17505.951171875\n",
+      "db35 16.64190101623535 17514.66796875\n",
+      "db36 16.680456161499023 17541.33203125\n",
+      "db37 16.730104446411133 17587.6328125\n",
+      "db38 16.75263214111328 17598.830078125\n",
+      "dmey 15.428367614746094 16479.267578125\n",
+      "haar 15.07145881652832 16107.921875\n",
+      "rbio1.1 15.07145881652832 16107.921875\n",
+      "rbio1.3 15.1613130569458 16189.78125\n",
+      "rbio1.5 15.32840633392334 16338.216796875\n",
+      "rbio2.2 16.183170318603516 16984.47265625\n",
+      "rbio2.4 15.833732604980469 16793.46875\n",
+      "rbio2.6 15.841042518615723 16820.513671875\n",
+      "rbio2.8 15.870935440063477 16858.255859375\n",
+      "rbio3.1 112.47295379638672 58394.6875\n",
+      "rbio3.3 19.817306518554688 20010.50390625\n",
+      "rbio3.5 18.20765495300293 18729.5625\n",
+      "rbio3.7 17.90874671936035 18495.369140625\n",
+      "rbio3.9 17.855627059936523 18441.083984375\n",
+      "rbio4.4 15.365104675292969 16364.685546875\n",
+      "rbio5.5 15.447882652282715 16390.2890625\n",
+      "rbio6.8 15.320694923400879 16363.552734375\n",
+      "sym2 15.11799430847168 16146.3642578125\n",
+      "sym3 15.206748008728027 16251.126953125\n",
+      "sym4 15.159475326538086 16207.3779296875\n",
+      "sym5 15.204032897949219 16260.142578125\n",
+      "sym6 15.191091537475586 16246.744140625\n",
+      "sym7 15.236370086669922 16293.701171875\n",
+      "sym8 15.241791725158691 16298.5556640625\n",
+      "sym9 15.26644229888916 16327.4296875\n",
+      "sym10 15.264242172241211 16323.5576171875\n",
+      "sym11 15.332569122314453 16396.794921875\n",
+      "sym12 15.310770034790039 16371.40234375\n",
+      "sym13 15.304075241088867 16360.4248046875\n",
+      "sym14 15.317804336547852 16377.61328125\n",
+      "sym15 15.378673553466797 16436.265625\n",
+      "sym16 15.33505916595459 16392.92578125\n",
+      "sym17 15.344695091247559 16404.30859375\n",
+      "sym18 15.363746643066406 16418.08984375\n",
+      "sym19 15.430442810058594 16479.15625\n",
+      "sym20 15.377063751220703 16438.19140625\n",
+      "min:  tensor(15.0715) bior1.1 0\n"
+     ]
+    }
+   ],
+   "source": [
+    "# working on the random initialization\n",
+    "#wavelets = ['haar', 'db1', 'sym2', 'coif1', 'bior1.1', 'rbio1.1', 'dmey', 'bior4.4'] # 'gaus1' not supported, 'mexh','morl',  'cgau1', 'shan',  'fbsp', 'cmor'\n",
+    "wavelets = pywt.wavelist(kind='discrete', )\n",
+    "errs = []\n",
+    "names = []\n",
+    "for wavelet in wavelets:\n",
+    "    lens = []\n",
+    "    fft_layers = []\n",
+    "    to_cat = []\n",
+    "    for v in weights[\"17000\"].values():\n",
+    "        flat = v.flatten()\n",
+    "        #print(flat.shape)\n",
+    "        lens.append(len(flat))\n",
+    "        to_cat.append(flat)\n",
+    "    flat = torch.cat(to_cat, dim=0)\n",
+    "    coeff = pywt.wavedec(flat.numpy(), wavelet, level = None)\n",
+    "    array, coeff_slices = pywt.coeffs_to_array(coeff)\n",
+    "    #print(coeff_slices) # should be static so we do not need to send them\n",
+    "    topk = torch.topk(\n",
+    "            torch.from_numpy(np.absolute(array)), round(0.1*len(array)), dim=0, sorted=False\n",
+    "        )\n",
+    "    top10 = torch.zeros(len(array))\n",
+    "    top10[topk.indices] = torch.from_numpy(array[topk.indices])\n",
+    "    og = pywt.array_to_coeffs(top10, coeff_slices, output_format=\"wavedec\")\n",
+    "    reverse_top10 = torch.from_numpy(pywt.waverec(og, wavelet = wavelet))\n",
+    "    fft_layers.append(reverse_top10)\n",
+    "    err = torch.norm(reverse_top10 - flat, 2)\n",
+    "    err1 = torch.norm(reverse_top10 - flat, 1)\n",
+    "    errs.append(err)\n",
+    "    names.append(wavelet)\n",
+    "    print(wavelet, err.item(), err1.item())\n",
+    "ind = np.argmin(errs)\n",
+    "print(\"min: \", errs[ind], names[ind], ind)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 157,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "topk_og = torch.topk(\n",
+    "            conc2.abs(), round(0.1*len(conc2)), dim=0, sorted=False\n",
+    "        )\n",
+    "top10_og = torch.zeros(len(conc2))\n",
+    "top10_og[topk_og.indices] = conc2[topk_og.indices]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 158,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(15.5541)"
+      ]
+     },
+     "execution_count": 158,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(top10_og - conc2, 2) "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 159,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "42.212055"
+      ]
+     },
+     "execution_count": 159,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "np.sqrt(np.sum(errs))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 58,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Problem: weights with only a few parameters cannot be represented with the wavelets"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 126,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "flat5000 = []\n",
+    "for v in weights[\"17000\"].values():\n",
+    "    flat5000.append(v.flatten())\n",
+    "conc5000 = torch.cat(flat5000)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 127,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(44.8886)"
+      ]
+     },
+     "execution_count": 127,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(conc5000, 2)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 149,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "dmey tensor(15.4284)\n"
+     ]
+    }
+   ],
+   "source": [
+    "wavelet = 'dmey'\n",
+    "coeff = pywt.wavedec(conc5000.numpy(), wavelet, level = None)\n",
+    "array, coeff_slices = pywt.coeffs_to_array(coeff)\n",
+    "#print(coeff_slices) # should be static so we do not need to send them\n",
+    "topk = torch.topk(\n",
+    "        torch.from_numpy(np.absolute(array)), round(0.1*len(array)), dim=0, sorted=False\n",
+    "    )\n",
+    "top10 = torch.zeros(len(array))\n",
+    "top10[topk.indices] = torch.from_numpy(array[topk.indices])\n",
+    "og = pywt.array_to_coeffs(top10, coeff_slices, output_format=\"wavedec\")\n",
+    "reverse_top10 = torch.from_numpy(pywt.waverec(og, wavelet = wavelet))\n",
+    "print(wavelet, torch.norm(conc5000 - reverse_top10, 2))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 150,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "plt.plot(np.arange(100000,100050,1), reverse_top10fft[100000:100050], label = \"FFT top-10%\")\n",
+    "plt.plot(np.arange(100000,100050,1), conc2[100000:100050], label = \"Original Parameters\")\n",
+    "plt.plot(np.arange(100000,100050,1), reverse_top10[100000:100050], label = \"Haar top-10%\")\n",
+    "plt.title('Parameter Values') \n",
+    "#plt.ylabel(\"Absolute frequency value\")\n",
+    "plt.xlabel(\"Parameter indices\")\n",
+    "plt.legend()\n",
+    "plt.draw()\n",
+    "plt.savefig(\"ParametersWaveletHaar.png\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 175,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "haar tensor(12.0875)\n"
+     ]
+    }
+   ],
+   "source": [
+    "wavelet = 'haar'\n",
+    "coeff = pywt.wavedec(conc5000.numpy(), wavelet, level = None)\n",
+    "array, coeff_slices = pywt.coeffs_to_array(coeff)\n",
+    "#print(coeff_slices) # should be static so we do not need to send them\n",
+    "topk = torch.topk(\n",
+    "        torch.from_numpy(np.absolute(array)), round(0.1*len(array)), dim=0, sorted=False\n",
+    "    )\n",
+    "top10 = torch.zeros(len(array))\n",
+    "top10[topk.indices] = torch.from_numpy(array[topk.indices])\n",
+    "og = pywt.array_to_coeffs(top10, coeff_slices, output_format=\"wavedec\")\n",
+    "reverse_top10 = torch.from_numpy(pywt.waverec(og, wavelet = wavelet))\n",
+    "print(wavelet, torch.norm(conc5000 - reverse_top10, 2))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 176,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "haar tensor(9.4642)\n"
+     ]
+    }
+   ],
+   "source": [
+    "wavelet = 'haar'\n",
+    "coeff = pywt.wavedec(conc5000.numpy(), wavelet, level = None)\n",
+    "array, coeff_slices = pywt.coeffs_to_array(coeff)\n",
+    "#print(coeff_slices) # should be static so we do not need to send them\n",
+    "topk = torch.topk(\n",
+    "        torch.from_numpy(np.absolute(array)), round(0.2*len(array)), dim=0, sorted=False\n",
+    "    )\n",
+    "top10 = torch.zeros(len(array))\n",
+    "top10[topk.indices] = torch.from_numpy(array[topk.indices])\n",
+    "og = pywt.array_to_coeffs(top10, coeff_slices, output_format=\"wavedec\")\n",
+    "reverse_top10 = torch.from_numpy(pywt.waverec(og, wavelet = wavelet))\n",
+    "print(wavelet, torch.norm(conc5000 - reverse_top10, 2))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 177,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "6\n",
+      "haar tensor(12.1470)\n",
+      "(52814,)\n",
+      "(52814,)\n",
+      "(105628,)\n",
+      "(211256,)\n",
+      "(422512,)\n",
+      "(845023,)\n",
+      "haar tensor(16.9818)\n",
+      "(52814,)\n",
+      "(52814,)\n",
+      "(105628,)\n",
+      "(211256,)\n",
+      "(422512,)\n",
+      "(845023,)\n",
+      "haar tensor(2.3811e-06)\n"
+     ]
+    }
+   ],
+   "source": [
+    "wavelet = 'haar'\n",
+    "coeff = pywt.wavedec(conc5000.numpy(), wavelet, level = 5)\n",
+    "array, coeff_slices = pywt.coeffs_to_array(coeff)\n",
+    "#print(coeff_slices) # should be static so we do not need to send them\n",
+    "print(len(coeff))\n",
+    "topk = torch.topk(\n",
+    "        torch.from_numpy(np.absolute(array)), round(0.1*len(array)), dim=0, sorted=False\n",
+    "    )\n",
+    "top10 = torch.zeros(len(array))\n",
+    "top10[topk.indices] = torch.from_numpy(array[topk.indices])\n",
+    "og = pywt.array_to_coeffs(top10, coeff_slices, output_format=\"wavedec\")\n",
+    "reverse_top10 = torch.from_numpy(pywt.waverec(og, wavelet = wavelet))\n",
+    "print(wavelet, torch.norm(conc5000 - reverse_top10, 2))\n",
+    "\n",
+    "reduced = []\n",
+    "for i, o in enumerate(coeff):\n",
+    "    print(o.shape) \n",
+    "    if i > 3:\n",
+    "        reduced.append(np.zeros_like(o))\n",
+    "        continue\n",
+    "    reduced.append(o)\n",
+    "reverse_top10 = torch.from_numpy(pywt.waverec(reduced, wavelet = wavelet))\n",
+    "print(wavelet, torch.norm(conc5000 - reverse_top10, 2))\n",
+    "\n",
+    "reduced = []\n",
+    "for i, o in enumerate(coeff):\n",
+    "    print(o.shape) \n",
+    "    if i > 5:\n",
+    "        reduced.append(np.zeros_like(o))\n",
+    "        continue\n",
+    "    reduced.append(o)\n",
+    "reverse_top10 = torch.from_numpy(pywt.waverec(reduced, wavelet = wavelet))\n",
+    "print(wavelet, torch.norm(conc5000 - reverse_top10, 2))\n",
+    "    \n",
+    "    "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# with resnet"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 178,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "Using cache found in /home/jeffrey/.cache/torch/hub/pytorch_vision_v0.10.0\n"
+     ]
+    }
+   ],
+   "source": [
+    "model = torch.hub.load('pytorch/vision:v0.10.0', 'resnet18', pretrained=True)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 179,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "resw = {}\n",
+    "for k,v in model.state_dict().items():\n",
+    "    resw[k] = v.clone()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "flatr = []\n",
+    "for v in resw.values():\n",
+    "    flatr.append(v.flatten())\n",
+    "concr = torch.cat(flatr)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 190,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "bior1.1 43.02796936035156 115077.1953125\n",
+      "bior1.3 44.042415618896484 117252.8203125\n",
+      "bior1.5 44.798824310302734 119106.71875\n",
+      "bior2.2 44.7282600402832 117956.5\n",
+      "bior2.4 44.04926300048828 116528.5078125\n",
+      "bior2.6 44.09769821166992 116693.171875\n",
+      "bior2.8 44.207454681396484 116984.125\n",
+      "bior3.1 65.93879699707031 171188.890625\n",
+      "bior3.3 52.62727355957031 136826.25\n",
+      "bior3.5 50.10884475708008 130465.40625\n",
+      "bior3.7 49.333717346191406 128473.21875\n",
+      "bior3.9 49.07342529296875 127796.1640625\n",
+      "bior4.4 42.742881774902344 114508.9921875\n",
+      "bior5.5 43.98085403442383 118580.4296875\n",
+      "bior6.8 42.57365417480469 113812.046875\n",
+      "coif1 42.74231719970703 114690.046875\n",
+      "coif2 42.56312561035156 114001.890625\n",
+      "coif3 42.54220199584961 113903.578125\n",
+      "coif4 42.558956146240234 113906.859375\n",
+      "coif5 42.56120681762695 113924.28125\n",
+      "coif6 42.592472076416016 113980.0390625\n",
+      "coif7 42.60406494140625 114030.09375\n",
+      "coif8 42.61618423461914 114052.2734375\n",
+      "coif9 42.6173095703125 114053.078125\n",
+      "coif10 42.63934326171875 114081.7890625\n",
+      "coif11 42.65342712402344 114141.3671875\n",
+      "coif12 42.65858840942383 114128.3984375\n",
+      "coif13 42.66160583496094 114154.7890625\n",
+      "coif14 42.68099594116211 114187.8828125\n",
+      "coif15 42.693885803222656 114239.90625\n",
+      "coif16 42.69415283203125 114222.0234375\n",
+      "coif17 42.69487762451172 114230.65625\n",
+      "db1 43.02796936035156 115077.1953125\n",
+      "db2 42.69436264038086 114436.171875\n",
+      "db3 42.692832946777344 114409.2578125\n",
+      "db4 42.69171905517578 114270.2265625\n",
+      "db5 42.7407341003418 114356.6796875\n",
+      "db6 42.832889556884766 114583.046875\n",
+      "db7 42.90106201171875 114756.140625\n",
+      "db8 42.927757263183594 114787.8671875\n",
+      "db9 42.980587005615234 114925.3125\n",
+      "db10 43.0425910949707 115035.796875\n",
+      "db11 43.09166717529297 115145.9609375\n",
+      "db12 43.11075210571289 115177.953125\n",
+      "db13 43.153038024902344 115282.9765625\n",
+      "db14 43.23004913330078 115438.109375\n",
+      "db15 43.254371643066406 115495.4375\n",
+      "db16 43.26611328125 115499.40625\n",
+      "db17 43.29021453857422 115553.8359375\n",
+      "db18 43.339332580566406 115670.8515625\n",
+      "db19 43.363834381103516 115699.546875\n",
+      "db20 43.3875732421875 115747.3046875\n",
+      "db21 43.406944274902344 115809.53125\n",
+      "db22 43.44538879394531 115883.546875\n",
+      "db23 43.48051071166992 115981.046875\n",
+      "db24 43.502601623535156 115997.3203125\n",
+      "db25 43.519954681396484 116035.3359375\n",
+      "db26 43.53356170654297 116078.15625\n",
+      "db27 43.55718994140625 116114.859375\n",
+      "db28 43.56884765625 116135.7421875\n",
+      "db29 43.60223388671875 116207.0390625\n",
+      "db30 43.6269645690918 116254.625\n",
+      "db31 43.62778091430664 116261.8984375\n",
+      "db32 43.65283966064453 116317.5546875\n",
+      "db33 43.683868408203125 116371.8046875\n",
+      "db34 43.71052551269531 116451.03125\n",
+      "db35 43.69470977783203 116395.71875\n",
+      "db36 43.722896575927734 116448.71875\n",
+      "db37 43.732479095458984 116494.3203125\n",
+      "db38 43.75498962402344 116516.2890625\n",
+      "dmey 42.70671844482422 114251.421875\n",
+      "haar 43.02796936035156 115077.1953125\n",
+      "rbio1.1 43.02796936035156 115077.1953125\n",
+      "rbio1.3 42.904876708984375 114998.609375\n",
+      "rbio1.5 43.487056732177734 116603.4375\n",
+      "rbio2.2 48.12295150756836 128830.65625\n",
+      "rbio2.4 45.82650375366211 123338.625\n",
+      "rbio2.6 45.57454299926758 122649.625\n",
+      "rbio2.8 45.610652923583984 122736.25\n",
+      "rbio3.1 323.1489562988281 493834.4375\n",
+      "rbio3.3 63.0237922668457 168654.40625\n",
+      "rbio3.5 55.14375686645508 147856.1875\n",
+      "rbio3.7 53.33525466918945 143081.296875\n",
+      "rbio3.9 52.70606994628906 141449.8125\n",
+      "rbio4.4 43.57114028930664 116553.6171875\n",
+      "rbio5.5 43.684425354003906 115561.5078125\n",
+      "rbio6.8 43.01945495605469 115265.328125\n",
+      "sym2 42.69436264038086 114436.171875\n",
+      "sym3 42.692832946777344 114409.2578125\n",
+      "sym4 42.546844482421875 113956.859375\n",
+      "sym5 42.57182693481445 113959.1640625\n",
+      "sym6 42.52703094482422 113885.0546875\n",
+      "sym7 42.550376892089844 113925.90625\n",
+      "sym8 42.56036376953125 113907.7109375\n",
+      "sym9 42.602020263671875 114008.0625\n",
+      "sym10 42.568580627441406 113940.015625\n",
+      "sym11 42.623958587646484 114091.0546875\n",
+      "sym12 42.602752685546875 114007.203125\n",
+      "sym13 42.62556076049805 114069.9375\n",
+      "sym14 42.608367919921875 114038.21875\n",
+      "sym15 42.66935348510742 114179.7578125\n",
+      "sym16 42.629066467285156 114064.859375\n",
+      "sym17 42.639869689941406 114103.421875\n",
+      "sym18 42.6433219909668 114109.6328125\n",
+      "sym19 42.72231674194336 114301.625\n",
+      "sym20 42.658966064453125 114131.046875\n",
+      "min:  tensor(42.5270) sym6 91\n"
+     ]
+    }
+   ],
+   "source": [
+    "# working on the random initialization\n",
+    "#wavelets = ['haar', 'db1', 'sym2', 'coif1', 'bior1.1', 'rbio1.1', 'dmey', 'bior4.4'] # 'gaus1' not supported, 'mexh','morl',  'cgau1', 'shan',  'fbsp', 'cmor'\n",
+    "wavelets = pywt.wavelist(kind='discrete', )\n",
+    "errs = []\n",
+    "names = []\n",
+    "for wavelet in wavelets:\n",
+    "    lens = []\n",
+    "    fft_layers = []\n",
+    "    to_cat = []\n",
+    "    for v in resw.values():\n",
+    "        flat = v.flatten()\n",
+    "        #print(flat.shape)\n",
+    "        lens.append(len(flat))\n",
+    "        to_cat.append(flat)\n",
+    "    flat = torch.cat(to_cat, dim=0)\n",
+    "    coeff = pywt.wavedec(flat.numpy(), wavelet, level = None)\n",
+    "    array, coeff_slices = pywt.coeffs_to_array(coeff)\n",
+    "    #print(coeff_slices) # should be static so we do not need to send them\n",
+    "    topk = torch.topk(\n",
+    "            torch.from_numpy(np.absolute(array)), round(0.1*len(array)), dim=0, sorted=False\n",
+    "        )\n",
+    "    top10 = torch.zeros(len(array))\n",
+    "    top10[topk.indices] = torch.from_numpy(array[topk.indices])\n",
+    "    og = pywt.array_to_coeffs(top10, coeff_slices, output_format=\"wavedec\")\n",
+    "    reverse_top10 = torch.from_numpy(pywt.waverec(og, wavelet = wavelet))\n",
+    "    fft_layers.append(reverse_top10)\n",
+    "    err = torch.norm(reverse_top10 - flat, 2)\n",
+    "    err1 = torch.norm(reverse_top10 - flat, 1)\n",
+    "    errs.append(err)\n",
+    "    names.append(wavelet)\n",
+    "    print(wavelet, err.item(), err1.item())\n",
+    "ind = np.argmin(errs)\n",
+    "print(\"min: \", errs[ind], names[ind], ind)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 181,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "11699132"
+      ]
+     },
+     "execution_count": 181,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "len(concr)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 197,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "topk_og = torch.topk(\n",
+    "            concr.abs(), round(0.1*len(concr)), dim=0, sorted=False\n",
+    "        )\n",
+    "top10_og = torch.zeros(len(concr))\n",
+    "top10_og[topk_og.indices] = concr[topk_og.indices]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 198,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(47.3773)"
+      ]
+     },
+     "execution_count": 198,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(top10_og - concr, 2) "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 199,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "to_cat = []\n",
+    "for v in resw.values():\n",
+    "    flat = v.flatten()\n",
+    "    to_cat.append(flat)\n",
+    "flat = torch.cat(to_cat, dim=0)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 200,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "tensor(71.3879)\n"
+     ]
+    }
+   ],
+   "source": [
+    "flat_fft = fft.rfft(flat)\n",
+    "topk = torch.topk(\n",
+    "        flat_fft.abs(), round(0.1*len(flat_fft)), dim=0, sorted=False\n",
+    "    )\n",
+    "top10 = torch.zeros(len(flat_fft), dtype = torch.cfloat)\n",
+    "top10[topk.indices] = flat_fft[topk.indices]\n",
+    "reverse_top10fft = fft.irfft(top10)\n",
+    "fft_layers.append(reverse_top10fft)\n",
+    "err = torch.norm(reverse_top10fft - flat, 2)\n",
+    "print(err)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 201,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "tensor(42.6944)\n"
+     ]
+    }
+   ],
+   "source": [
+    "coeff = pywt.wavedec(flat.numpy(), \"sym2\", level = None)\n",
+    "array, coeff_slices = pywt.coeffs_to_array(coeff)\n",
+    "#print(coeff_slices) # should be static so we do not need to send them\n",
+    "topk = torch.topk(\n",
+    "        torch.from_numpy(np.absolute(array)), round(0.1*len(array)), dim=0, sorted=False\n",
+    "    )\n",
+    "top10 = torch.zeros(len(array))\n",
+    "top10[topk.indices] = torch.from_numpy(array[topk.indices])\n",
+    "og = pywt.array_to_coeffs(top10, coeff_slices, output_format=\"wavedec\")\n",
+    "reverse_top10wv = torch.from_numpy(pywt.waverec(og, wavelet = \"sym2\"))\n",
+    "err = torch.norm(reverse_top10wv - flat, 2)\n",
+    "print(err)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 202,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "plt.plot(np.arange(100000,100050,1), reverse_top10fft[100000:100050], label = \"FFT top-10%\")\n",
+    "plt.plot(np.arange(100000,100050,1), concr[100000:100050], label = \"Original Parameters\")\n",
+    "plt.plot(np.arange(100000,100050,1), reverse_top10wv[100000:100050], label = \"Sym2 top-10%\")\n",
+    "\n",
+    "plt.title('Parameter Values') \n",
+    "#plt.ylabel(\"Absolute frequency value\")\n",
+    "plt.xlabel(\"Parameter indices\")\n",
+    "plt.legend()\n",
+    "plt.draw()\n",
+    "plt.savefig(\"ParametersWaveletHaar.png\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 203,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([ 0.0000,  0.0649,  0.0881,  0.0000,  0.0464,  0.0347, -0.0472,  0.0000,\n",
+       "         0.0000,  0.0000,  0.0000,  0.0000,  0.0000,  0.0000, -0.0365,  0.0000,\n",
+       "        -0.0422, -0.0344,  0.0372, -0.0823,  0.0000,  0.0764, -0.1654,  0.0000,\n",
+       "         0.0000, -0.0363, -0.0769,  0.0896,  0.0000,  0.0955,  0.0000, -0.0843,\n",
+       "         0.0000, -0.0387,  0.1598,  0.0000,  0.0000,  0.0000,  0.0000,  0.0000,\n",
+       "         0.0000,  0.0000,  0.0000,  0.0000,  0.0000,  0.0000,  0.0000,  0.0000,\n",
+       "         0.0000,  0.0000])"
+      ]
+     },
+     "execution_count": 203,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "top10_og[100000:100050]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 204,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "plt.plot(np.arange(1000000,1000050,1), reverse_top10fft[1000000:1000050], label = \"FFT top-10%\")\n",
+    "plt.plot(np.arange(1000000,1000050,1), concr[1000000:1000050], label = \"Original Parameters\")\n",
+    "plt.plot(np.arange(1000000,1000050,1), reverse_top10wv[1000000:1000050], label = \"Sym2 top-10%\")\n",
+    "\n",
+    "plt.title('Parameter Values') \n",
+    "#plt.ylabel(\"Absolute frequency value\")\n",
+    "plt.xlabel(\"Parameter indices\")\n",
+    "plt.legend()\n",
+    "plt.draw()\n",
+    "plt.savefig(\"ParametersWaveletHaar.png\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## FFT Training<a class=\"anchor\" id=\"ffttrain\"></a>"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 85,
+   "metadata": {
+    "id": "e65Izyv0s-yE"
+   },
+   "outputs": [],
+   "source": [
+    "lr = 0.0005\n",
+    "model = CNN().to(device)\n",
+    "loss_fn = nn.CrossEntropyLoss()\n",
+    "optimizer = torch.optim.Adam(model.parameters(), lr=lr)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 26,
+   "metadata": {
+    "colab": {
+     "base_uri": "https://localhost:8080/"
+    },
+    "id": "eqOXilqMs-yF",
+    "outputId": "06799a3b-983b-4f51-a7bd-a901c041bd05"
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "loss: 4.136391  [    0/735856]\n",
+      "loss: 1.387546  [64000/735856]\n",
+      "loss: 1.009362  [128000/735856]\n",
+      "loss: 0.568759  [192000/735856]\n",
+      "loss: 0.796950  [256000/735856]\n",
+      "loss: 0.670068  [320000/735856]\n",
+      "loss: 0.625332  [384000/735856]\n",
+      "loss: 0.557147  [448000/735856]\n",
+      "loss: 0.701893  [512000/735856]\n",
+      "loss: 0.670033  [576000/735856]\n",
+      "loss: 0.575888  [640000/735856]\n",
+      "loss: 0.654841  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 82.0%, Avg loss: 0.578153 \n",
+      "\n",
+      "loss: 0.776733  [    0/735856]\n",
+      "loss: 0.519993  [64000/735856]\n",
+      "loss: 0.599282  [128000/735856]\n",
+      "loss: 0.885723  [192000/735856]\n",
+      "loss: 0.514714  [256000/735856]\n",
+      "loss: 0.539040  [320000/735856]\n",
+      "loss: 0.422559  [384000/735856]\n",
+      "loss: 0.382564  [448000/735856]\n",
+      "loss: 0.412677  [512000/735856]\n",
+      "loss: 0.360731  [576000/735856]\n",
+      "loss: 0.534333  [640000/735856]\n",
+      "loss: 0.379236  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 85.1%, Avg loss: 0.463718 \n",
+      "\n",
+      "loss: 0.367664  [    0/735856]\n",
+      "loss: 0.339760  [64000/735856]\n",
+      "loss: 0.653718  [128000/735856]\n",
+      "loss: 0.410070  [192000/735856]\n",
+      "loss: 0.554535  [256000/735856]\n",
+      "loss: 0.578007  [320000/735856]\n",
+      "loss: 0.421670  [384000/735856]\n",
+      "loss: 0.599983  [448000/735856]\n",
+      "loss: 0.262858  [512000/735856]\n",
+      "loss: 0.333737  [576000/735856]\n",
+      "loss: 0.361296  [640000/735856]\n",
+      "loss: 0.468058  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 85.9%, Avg loss: 0.420345 \n",
+      "\n",
+      "loss: 0.443198  [    0/735856]\n",
+      "loss: 0.507409  [64000/735856]\n",
+      "loss: 0.554008  [128000/735856]\n",
+      "loss: 0.304086  [192000/735856]\n",
+      "loss: 0.482780  [256000/735856]\n",
+      "loss: 0.349616  [320000/735856]\n",
+      "loss: 0.402055  [384000/735856]\n",
+      "loss: 0.345523  [448000/735856]\n",
+      "loss: 0.364194  [512000/735856]\n",
+      "loss: 0.310542  [576000/735856]\n",
+      "loss: 0.441185  [640000/735856]\n",
+      "loss: 0.276955  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 86.8%, Avg loss: 0.390410 \n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "stats = {\"train\": [], \"test\":[]}\n",
+    "for e in range(4):\n",
+    "    #training\n",
+    "    batch = 0\n",
+    "    for X, y in train_dataloader:\n",
+    "        # print(\"grad: \"+str(model.conv1.bias.grad))\n",
+    "        old = model.conv1.bias.clone()\n",
+    "        X = X.to(device)\n",
+    "        y = y.to(device)\n",
+    "        #print(len(label))\n",
+    "        size = len(train_dataloader.dataset)\n",
+    "        model.train()\n",
+    "        \n",
+    "        # Compute prediction error\n",
+    "        pred = model(X)\n",
+    "        loss = loss_fn(pred, y)\n",
+    "        # Backpropagation\n",
+    "        loss.backward()\n",
+    "        # print(\"grad2: \"+str(model.conv1.bias.grad))\n",
+    "        \n",
+    "        \n",
+    "        # print(\"params \"+ str(len(list(model.parameters()))))\n",
+    "        \n",
+    "        for g in model.parameters():\n",
+    "            grad = g.grad\n",
+    "            shape = grad.shape\n",
+    "            flat = g.grad.flatten()\n",
+    "            topk = torch.topk(\n",
+    "            flat.abs(), round(0.1*len(flat)), dim=0, sorted=False\n",
+    "            )\n",
+    "            top10 = torch.zeros(len(flat))\n",
+    "            top10[topk.indices] = flat[topk.indices]\n",
+    "            g.grad = top10.reshape(shape)\n",
+    "            \n",
+    "        # print(\"grad3: \"+str(model.conv1.bias.grad))\n",
+    "        \n",
+    "        optimizer.step()\n",
+    "        model.zero_grad()\n",
+    "        #optimizer.zero_grad()\n",
+    "        \n",
+    "        #resetting the optimizer\n",
+    "        # optimizer.load_state_dict(model.state_dict())\n",
+    "        vals = optimizer.state.values()\n",
+    "        # print(optimizer.state.values())\n",
+    "\n",
+    "        if batch % 500 == 0:\n",
+    "            loss, current = loss.item(), batch * len(X)\n",
+    "            print(f\"loss: {loss:>7f}  [{current:>5d}/{size:>5d}]\")\n",
+    "            stats[\"train\"].append([batch, e*size + current, loss])\n",
+    "        batch += 1\n",
+    "    \n",
+    "    #testing\n",
+    "    size = len(test_dataloader.dataset)\n",
+    "    num_batches = len(test_dataloader)\n",
+    "    model.eval()\n",
+    "    test_loss, correct = 0, 0\n",
+    "    with torch.no_grad():\n",
+    "        for X, y in test_dataloader:\n",
+    "            X = X.to(device)\n",
+    "            y = y.to(device)\n",
+    "            pred = model(X)\n",
+    "            test_loss += loss_fn(pred, y).item()\n",
+    "            correct += (pred.argmax(1) == y).type(torch.float).sum().item()\n",
+    "    test_loss /= num_batches\n",
+    "    correct /= size\n",
+    "    print(\"epoch:\")\n",
+    "    print(f\"Test Error: \\n Accuracy: {(100*correct):>0.1f}%, Avg loss: {test_loss:>8f} \\n\")\n",
+    "    stats[\"test\"].append([e, test_loss, 100*correct])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# it converges slower than without gradient compression"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 29,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import torch.fft as fft"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 34,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "lr = 0.0005\n",
+    "model = CNN().to(device)\n",
+    "loss_fn = nn.CrossEntropyLoss()\n",
+    "optimizer = torch.optim.Adam(model.parameters(), lr=lr)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 35,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "loss: 4.122382  [    0/735856]\n",
+      "loss: 1.659356  [64000/735856]\n",
+      "loss: 1.175072  [128000/735856]\n",
+      "loss: 1.030752  [192000/735856]\n",
+      "loss: 0.891644  [256000/735856]\n",
+      "loss: 0.732518  [320000/735856]\n",
+      "loss: 0.613185  [384000/735856]\n",
+      "loss: 0.483264  [448000/735856]\n",
+      "loss: 0.580724  [512000/735856]\n",
+      "loss: 0.509457  [576000/735856]\n",
+      "loss: 0.661517  [640000/735856]\n",
+      "loss: 0.621521  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 81.7%, Avg loss: 0.570322 \n",
+      "\n",
+      "loss: 0.543810  [    0/735856]\n",
+      "loss: 0.339085  [64000/735856]\n",
+      "loss: 0.495473  [128000/735856]\n",
+      "loss: 0.384833  [192000/735856]\n",
+      "loss: 0.418521  [256000/735856]\n",
+      "loss: 0.614597  [320000/735856]\n",
+      "loss: 0.515266  [384000/735856]\n",
+      "loss: 0.738823  [448000/735856]\n",
+      "loss: 0.423178  [512000/735856]\n",
+      "loss: 0.473593  [576000/735856]\n",
+      "loss: 0.518021  [640000/735856]\n",
+      "loss: 0.497685  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 84.0%, Avg loss: 0.474809 \n",
+      "\n",
+      "loss: 0.575689  [    0/735856]\n",
+      "loss: 0.456497  [64000/735856]\n",
+      "loss: 0.429356  [128000/735856]\n",
+      "loss: 0.563055  [192000/735856]\n",
+      "loss: 0.486054  [256000/735856]\n",
+      "loss: 0.542747  [320000/735856]\n",
+      "loss: 0.441926  [384000/735856]\n",
+      "loss: 0.461542  [448000/735856]\n",
+      "loss: 0.502812  [512000/735856]\n",
+      "loss: 0.383888  [576000/735856]\n",
+      "loss: 0.266721  [640000/735856]\n",
+      "loss: 0.490470  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 85.8%, Avg loss: 0.423047 \n",
+      "\n",
+      "loss: 0.302303  [    0/735856]\n",
+      "loss: 0.421864  [64000/735856]\n",
+      "loss: 0.376742  [128000/735856]\n",
+      "loss: 0.259237  [192000/735856]\n",
+      "loss: 0.368860  [256000/735856]\n",
+      "loss: 0.400204  [320000/735856]\n",
+      "loss: 0.310619  [384000/735856]\n",
+      "loss: 0.320007  [448000/735856]\n",
+      "loss: 0.305337  [512000/735856]\n",
+      "loss: 0.375540  [576000/735856]\n",
+      "loss: 0.362421  [640000/735856]\n",
+      "loss: 0.347816  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 86.3%, Avg loss: 0.400034 \n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "stats = {\"train\": [], \"test\":[]}\n",
+    "for e in range(4):\n",
+    "    #training\n",
+    "    batch = 0\n",
+    "    for X, y in train_dataloader:\n",
+    "        # print(\"grad: \"+str(model.conv1.bias.grad))\n",
+    "        old = model.conv1.bias.clone()\n",
+    "        X = X.to(device)\n",
+    "        y = y.to(device)\n",
+    "        #print(len(label))\n",
+    "        size = len(train_dataloader.dataset)\n",
+    "        model.train()\n",
+    "        \n",
+    "        # Compute prediction error\n",
+    "        pred = model(X)\n",
+    "        loss = loss_fn(pred, y)\n",
+    "        # Backpropagation\n",
+    "        loss.backward()\n",
+    "        # print(\"grad2: \"+str(model.conv1.bias.grad))\n",
+    "        \n",
+    "        \n",
+    "        # print(\"params \"+ str(len(list(model.parameters()))))\n",
+    "        \n",
+    "        for g in model.parameters():\n",
+    "            grad = g.grad\n",
+    "            shape = grad.shape\n",
+    "            flat = g.grad.flatten()\n",
+    "            \n",
+    "            flat_fft = fft.rfft(flat)\n",
+    "            topk = torch.topk(flat_fft.abs(), round(0.1*len(flat_fft)), dim=0, sorted=False)\n",
+    "            top10 = torch.zeros(len(flat_fft), dtype = torch.cfloat)\n",
+    "            top10[topk.indices] = flat_fft[topk.indices]\n",
+    "            reverse_top10 = fft.irfft(top10)\n",
+    "            g.grad = reverse_top10.reshape(shape)\n",
+    "            \n",
+    "        # print(\"grad3: \"+str(model.conv1.bias.grad))\n",
+    "        \n",
+    "        optimizer.step()\n",
+    "        model.zero_grad()\n",
+    "        #optimizer.zero_grad()\n",
+    "        \n",
+    "        #resetting the optimizer\n",
+    "        # optimizer.load_state_dict(model.state_dict())\n",
+    "        vals = optimizer.state.values()\n",
+    "        # print(optimizer.state.values())\n",
+    "\n",
+    "        if batch % 500 == 0:\n",
+    "            loss, current = loss.item(), batch * len(X)\n",
+    "            print(f\"loss: {loss:>7f}  [{current:>5d}/{size:>5d}]\")\n",
+    "            stats[\"train\"].append([batch, e*size + current, loss])\n",
+    "        batch += 1\n",
+    "    \n",
+    "    #testing\n",
+    "    size = len(test_dataloader.dataset)\n",
+    "    num_batches = len(test_dataloader)\n",
+    "    model.eval()\n",
+    "    test_loss, correct = 0, 0\n",
+    "    with torch.no_grad():\n",
+    "        for X, y in test_dataloader:\n",
+    "            X = X.to(device)\n",
+    "            y = y.to(device)\n",
+    "            pred = model(X)\n",
+    "            test_loss += loss_fn(pred, y).item()\n",
+    "            correct += (pred.argmax(1) == y).type(torch.float).sum().item()\n",
+    "    test_loss /= num_batches\n",
+    "    correct /= size\n",
+    "    print(\"epoch:\")\n",
+    "    print(f\"Test Error: \\n Accuracy: {(100*correct):>0.1f}%, Avg loss: {test_loss:>8f} \\n\")\n",
+    "    stats[\"test\"].append([e, test_loss, 100*correct])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 36,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "lr = 0.0005\n",
+    "model = CNN().to(device)\n",
+    "loss_fn = nn.CrossEntropyLoss()\n",
+    "optimizer = torch.optim.Adam(model.parameters(), lr=lr)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 37,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "loss: 4.125680  [    0/735856]\n",
+      "loss: 1.490153  [64000/735856]\n",
+      "loss: 0.797238  [128000/735856]\n",
+      "loss: 0.703639  [192000/735856]\n",
+      "loss: 0.862654  [256000/735856]\n",
+      "loss: 0.674491  [320000/735856]\n",
+      "loss: 0.633835  [384000/735856]\n",
+      "loss: 0.537149  [448000/735856]\n",
+      "loss: 0.579062  [512000/735856]\n",
+      "loss: 0.468447  [576000/735856]\n",
+      "loss: 0.488582  [640000/735856]\n",
+      "loss: 0.529873  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 83.8%, Avg loss: 0.489548 \n",
+      "\n",
+      "loss: 0.573154  [    0/735856]\n",
+      "loss: 0.466781  [64000/735856]\n",
+      "loss: 0.468422  [128000/735856]\n",
+      "loss: 0.449423  [192000/735856]\n",
+      "loss: 0.357713  [256000/735856]\n",
+      "loss: 0.391187  [320000/735856]\n",
+      "loss: 0.500866  [384000/735856]\n",
+      "loss: 0.368405  [448000/735856]\n",
+      "loss: 0.423239  [512000/735856]\n",
+      "loss: 0.533780  [576000/735856]\n",
+      "loss: 0.623185  [640000/735856]\n",
+      "loss: 0.380635  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 85.9%, Avg loss: 0.411804 \n",
+      "\n",
+      "loss: 0.485906  [    0/735856]\n",
+      "loss: 0.522850  [64000/735856]\n",
+      "loss: 0.474864  [128000/735856]\n",
+      "loss: 0.453226  [192000/735856]\n",
+      "loss: 0.311791  [256000/735856]\n",
+      "loss: 0.370382  [320000/735856]\n",
+      "loss: 0.415271  [384000/735856]\n",
+      "loss: 0.448348  [448000/735856]\n",
+      "loss: 0.416761  [512000/735856]\n",
+      "loss: 0.392923  [576000/735856]\n",
+      "loss: 0.408733  [640000/735856]\n",
+      "loss: 0.369844  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 86.8%, Avg loss: 0.382454 \n",
+      "\n",
+      "loss: 0.351067  [    0/735856]\n",
+      "loss: 0.441320  [64000/735856]\n",
+      "loss: 0.376012  [128000/735856]\n",
+      "loss: 0.326137  [192000/735856]\n",
+      "loss: 0.326353  [256000/735856]\n",
+      "loss: 0.337223  [320000/735856]\n",
+      "loss: 0.377199  [384000/735856]\n",
+      "loss: 0.453688  [448000/735856]\n",
+      "loss: 0.394669  [512000/735856]\n",
+      "loss: 0.462621  [576000/735856]\n",
+      "loss: 0.365274  [640000/735856]\n",
+      "loss: 0.414022  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 87.0%, Avg loss: 0.381759 \n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "stats = {\"train\": [], \"test\":[]}\n",
+    "for e in range(4):\n",
+    "    #training\n",
+    "    batch = 0\n",
+    "    for X, y in train_dataloader:\n",
+    "        # print(\"grad: \"+str(model.conv1.bias.grad))\n",
+    "        old = model.conv1.bias.clone()\n",
+    "        X = X.to(device)\n",
+    "        y = y.to(device)\n",
+    "        #print(len(label))\n",
+    "        size = len(train_dataloader.dataset)\n",
+    "        model.train()\n",
+    "        \n",
+    "        # Compute prediction error\n",
+    "        pred = model(X)\n",
+    "        loss = loss_fn(pred, y)\n",
+    "        # Backpropagation\n",
+    "        loss.backward()\n",
+    "        # print(\"grad2: \"+str(model.conv1.bias.grad))\n",
+    "        \n",
+    "        \n",
+    "        # print(\"params \"+ str(len(list(model.parameters()))))\n",
+    "        \n",
+    "        for g in model.parameters():\n",
+    "            grad = g.grad\n",
+    "            shape = grad.shape\n",
+    "            flat = g.grad.flatten()\n",
+    "            \n",
+    "            flat_fft = fft.rfft(flat)\n",
+    "            topk = torch.topk(flat_fft.abs(), round(0.2*len(flat_fft)), dim=0, sorted=False)\n",
+    "            top10 = torch.zeros(len(flat_fft), dtype = torch.cfloat)\n",
+    "            top10[topk.indices] = flat_fft[topk.indices]\n",
+    "            reverse_top10 = fft.irfft(top10)\n",
+    "            g.grad = reverse_top10.reshape(shape)\n",
+    "            \n",
+    "        # print(\"grad3: \"+str(model.conv1.bias.grad))\n",
+    "        \n",
+    "        optimizer.step()\n",
+    "        model.zero_grad()\n",
+    "        #optimizer.zero_grad()\n",
+    "        \n",
+    "        #resetting the optimizer\n",
+    "        # optimizer.load_state_dict(model.state_dict())\n",
+    "        vals = optimizer.state.values()\n",
+    "        # print(optimizer.state.values())\n",
+    "\n",
+    "        if batch % 500 == 0:\n",
+    "            loss, current = loss.item(), batch * len(X)\n",
+    "            print(f\"loss: {loss:>7f}  [{current:>5d}/{size:>5d}]\")\n",
+    "            stats[\"train\"].append([batch, e*size + current, loss])\n",
+    "        batch += 1\n",
+    "    \n",
+    "    #testing\n",
+    "    size = len(test_dataloader.dataset)\n",
+    "    num_batches = len(test_dataloader)\n",
+    "    model.eval()\n",
+    "    test_loss, correct = 0, 0\n",
+    "    with torch.no_grad():\n",
+    "        for X, y in test_dataloader:\n",
+    "            X = X.to(device)\n",
+    "            y = y.to(device)\n",
+    "            pred = model(X)\n",
+    "            test_loss += loss_fn(pred, y).item()\n",
+    "            correct += (pred.argmax(1) == y).type(torch.float).sum().item()\n",
+    "    test_loss /= num_batches\n",
+    "    correct /= size\n",
+    "    print(\"epoch:\")\n",
+    "    print(f\"Test Error: \\n Accuracy: {(100*correct):>0.1f}%, Avg loss: {test_loss:>8f} \\n\")\n",
+    "    stats[\"test\"].append([e, test_loss, 100*correct])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 229,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "lr = 0.0005\n",
+    "model = CNN().to(device)\n",
+    "loss_fn = nn.CrossEntropyLoss()\n",
+    "optimizer = torch.optim.Adam(model.parameters(), lr=lr)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 230,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "loss: 4.128546  [    0/735856]\n",
+      "loss: 1.380654  [64000/735856]\n",
+      "loss: 1.055664  [128000/735856]\n",
+      "loss: 0.687121  [192000/735856]\n",
+      "loss: 0.728443  [256000/735856]\n",
+      "loss: 0.731651  [320000/735856]\n",
+      "loss: 0.649674  [384000/735856]\n",
+      "loss: 0.474646  [448000/735856]\n",
+      "loss: 0.653415  [512000/735856]\n",
+      "loss: 0.450781  [576000/735856]\n",
+      "loss: 0.629819  [640000/735856]\n",
+      "loss: 0.548388  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 83.2%, Avg loss: 0.540368 \n",
+      "\n",
+      "loss: 0.767534  [    0/735856]\n",
+      "loss: 0.474996  [64000/735856]\n",
+      "loss: 0.657538  [128000/735856]\n",
+      "loss: 0.388315  [192000/735856]\n",
+      "loss: 0.581206  [256000/735856]\n",
+      "loss: 0.421425  [320000/735856]\n",
+      "loss: 0.494563  [384000/735856]\n",
+      "loss: 0.541493  [448000/735856]\n",
+      "loss: 0.451657  [512000/735856]\n",
+      "loss: 0.382599  [576000/735856]\n",
+      "loss: 0.449485  [640000/735856]\n",
+      "loss: 0.408576  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 85.0%, Avg loss: 0.455863 \n",
+      "\n",
+      "loss: 0.487152  [    0/735856]\n",
+      "loss: 0.566136  [64000/735856]\n",
+      "loss: 0.388435  [128000/735856]\n",
+      "loss: 0.435407  [192000/735856]\n",
+      "loss: 0.626423  [256000/735856]\n",
+      "loss: 0.436673  [320000/735856]\n",
+      "loss: 0.599878  [384000/735856]\n",
+      "loss: 0.567672  [448000/735856]\n",
+      "loss: 0.458641  [512000/735856]\n",
+      "loss: 0.479425  [576000/735856]\n",
+      "loss: 0.289777  [640000/735856]\n",
+      "loss: 0.392798  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 85.1%, Avg loss: 0.449504 \n",
+      "\n",
+      "loss: 0.616642  [    0/735856]\n",
+      "loss: 0.266790  [64000/735856]\n",
+      "loss: 0.314584  [128000/735856]\n",
+      "loss: 0.314711  [192000/735856]\n",
+      "loss: 0.429452  [256000/735856]\n",
+      "loss: 0.363823  [320000/735856]\n",
+      "loss: 0.594678  [384000/735856]\n",
+      "loss: 0.417127  [448000/735856]\n",
+      "loss: 0.415177  [512000/735856]\n",
+      "loss: 0.406279  [576000/735856]\n",
+      "loss: 0.512797  [640000/735856]\n",
+      "loss: 0.259631  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 86.3%, Avg loss: 0.415515 \n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "# wavelet per layer\n",
+    "stats = {\"train\": [], \"test\":[]}\n",
+    "wavelet = 'haar'\n",
+    "for e in range(4):\n",
+    "    #training\n",
+    "    batch = 0\n",
+    "    for X, y in train_dataloader:\n",
+    "        # print(\"grad: \"+str(model.conv1.bias.grad))\n",
+    "        old = model.conv1.bias.clone()\n",
+    "        X = X.to(device)\n",
+    "        y = y.to(device)\n",
+    "        #print(len(label))\n",
+    "        size = len(train_dataloader.dataset)\n",
+    "        model.train()\n",
+    "        \n",
+    "        # Compute prediction error\n",
+    "        pred = model(X)\n",
+    "        loss = loss_fn(pred, y)\n",
+    "        # Backpropagation\n",
+    "        loss.backward()\n",
+    "        # print(\"grad2: \"+str(model.conv1.bias.grad))\n",
+    "        \n",
+    "        \n",
+    "        # print(\"params \"+ str(len(list(model.parameters()))))\n",
+    "        \n",
+    "        for g in model.parameters():\n",
+    "            grad = g.grad\n",
+    "            shape = grad.shape\n",
+    "            flat = g.grad.flatten()\n",
+    "            \n",
+    "            coeff = pywt.wavedec(flat.numpy(), wavelet, level = None)\n",
+    "            array, coeff_slices = pywt.coeffs_to_array(coeff)\n",
+    "            #print(coeff_slices) # should be static so we do not need to send them\n",
+    "            topk = torch.topk(\n",
+    "                    torch.from_numpy(np.absolute(array)), round(0.1*len(array)), dim=0, sorted=False\n",
+    "                )\n",
+    "            top10 = torch.zeros(len(array))\n",
+    "            top10[topk.indices] = torch.from_numpy(array[topk.indices])\n",
+    "            og = pywt.array_to_coeffs(top10, coeff_slices, output_format=\"wavedec\")\n",
+    "            reverse_top10 = torch.from_numpy(pywt.waverec(og, wavelet = wavelet))\n",
+    "            \n",
+    "            g.grad = reverse_top10.reshape(shape)\n",
+    "            \n",
+    "        # print(\"grad3: \"+str(model.conv1.bias.grad))\n",
+    "        \n",
+    "        optimizer.step()\n",
+    "        model.zero_grad()\n",
+    "        #optimizer.zero_grad()\n",
+    "        \n",
+    "        #resetting the optimizer\n",
+    "        # optimizer.load_state_dict(model.state_dict())\n",
+    "        vals = optimizer.state.values()\n",
+    "        # print(optimizer.state.values())\n",
+    "\n",
+    "        if batch % 500 == 0:\n",
+    "            loss, current = loss.item(), batch * len(X)\n",
+    "            print(f\"loss: {loss:>7f}  [{current:>5d}/{size:>5d}]\")\n",
+    "            stats[\"train\"].append([batch, e*size + current, loss])\n",
+    "        batch += 1\n",
+    "    \n",
+    "    #testing\n",
+    "    size = len(test_dataloader.dataset)\n",
+    "    num_batches = len(test_dataloader)\n",
+    "    model.eval()\n",
+    "    test_loss, correct = 0, 0\n",
+    "    with torch.no_grad():\n",
+    "        for X, y in test_dataloader:\n",
+    "            X = X.to(device)\n",
+    "            y = y.to(device)\n",
+    "            pred = model(X)\n",
+    "            test_loss += loss_fn(pred, y).item()\n",
+    "            correct += (pred.argmax(1) == y).type(torch.float).sum().item()\n",
+    "    test_loss /= num_batches\n",
+    "    correct /= size\n",
+    "    print(\"epoch:\")\n",
+    "    print(f\"Test Error: \\n Accuracy: {(100*correct):>0.1f}%, Avg loss: {test_loss:>8f} \\n\")\n",
+    "    stats[\"test\"].append([e, test_loss, 100*correct])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 31,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "lr = 0.0005\n",
+    "model = CNN().to(device)\n",
+    "loss_fn = nn.CrossEntropyLoss()\n",
+    "optimizer = torch.optim.Adam(model.parameters(), lr=lr)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 32,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "loss: 4.114821  [    0/735856]\n",
+      "loss: 1.691283  [64000/735856]\n",
+      "loss: 0.739705  [128000/735856]\n",
+      "loss: 0.878835  [192000/735856]\n",
+      "loss: 0.893373  [256000/735856]\n",
+      "loss: 0.622142  [320000/735856]\n",
+      "loss: 0.729517  [384000/735856]\n",
+      "loss: 0.930510  [448000/735856]\n",
+      "loss: 0.564309  [512000/735856]\n",
+      "loss: 0.820855  [576000/735856]\n",
+      "loss: 0.592394  [640000/735856]\n",
+      "loss: 0.530982  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 82.1%, Avg loss: 0.576240 \n",
+      "\n",
+      "loss: 0.387244  [    0/735856]\n",
+      "loss: 0.483110  [64000/735856]\n",
+      "loss: 0.544743  [128000/735856]\n",
+      "loss: 0.570393  [192000/735856]\n",
+      "loss: 0.511510  [256000/735856]\n",
+      "loss: 0.335736  [320000/735856]\n",
+      "loss: 0.671059  [384000/735856]\n",
+      "loss: 0.473634  [448000/735856]\n",
+      "loss: 0.559810  [512000/735856]\n",
+      "loss: 0.454633  [576000/735856]\n",
+      "loss: 0.571824  [640000/735856]\n",
+      "loss: 0.626598  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 84.3%, Avg loss: 0.482487 \n",
+      "\n",
+      "loss: 0.422876  [    0/735856]\n",
+      "loss: 0.769186  [64000/735856]\n",
+      "loss: 0.351542  [128000/735856]\n",
+      "loss: 0.436626  [192000/735856]\n",
+      "loss: 0.628383  [256000/735856]\n",
+      "loss: 0.528591  [320000/735856]\n",
+      "loss: 0.573713  [384000/735856]\n",
+      "loss: 0.517758  [448000/735856]\n",
+      "loss: 0.434379  [512000/735856]\n",
+      "loss: 0.491439  [576000/735856]\n",
+      "loss: 0.494193  [640000/735856]\n",
+      "loss: 0.505279  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 85.1%, Avg loss: 0.454134 \n",
+      "\n",
+      "loss: 0.439892  [    0/735856]\n",
+      "loss: 0.459202  [64000/735856]\n",
+      "loss: 0.245611  [128000/735856]\n",
+      "loss: 0.355409  [192000/735856]\n",
+      "loss: 0.490522  [256000/735856]\n",
+      "loss: 0.481495  [320000/735856]\n",
+      "loss: 0.426439  [384000/735856]\n",
+      "loss: 0.641797  [448000/735856]\n",
+      "loss: 0.423894  [512000/735856]\n",
+      "loss: 0.498421  [576000/735856]\n",
+      "loss: 0.344970  [640000/735856]\n",
+      "loss: 0.368346  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 84.2%, Avg loss: 0.466052 \n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "# per layer repeat\n",
+    "stats = {\"train\": [], \"test\":[]}\n",
+    "wavelet = 'sym2'\n",
+    "for e in range(4):\n",
+    "    #training\n",
+    "    batch = 0\n",
+    "    for X, y in train_dataloader:\n",
+    "        # print(\"grad: \"+str(model.conv1.bias.grad))\n",
+    "        old = model.conv1.bias.clone()\n",
+    "        X = X.to(device)\n",
+    "        y = y.to(device)\n",
+    "        #print(len(label))\n",
+    "        size = len(train_dataloader.dataset)\n",
+    "        model.train()\n",
+    "        \n",
+    "        # Compute prediction error\n",
+    "        pred = model(X)\n",
+    "        loss = loss_fn(pred, y)\n",
+    "        # Backpropagation\n",
+    "        loss.backward()\n",
+    "        # print(\"grad2: \"+str(model.conv1.bias.grad))\n",
+    "        \n",
+    "        \n",
+    "        # print(\"params \"+ str(len(list(model.parameters()))))\n",
+    "        \n",
+    "        for g in model.parameters():\n",
+    "            grad = g.grad\n",
+    "            shape = grad.shape\n",
+    "            flat = g.grad.flatten()\n",
+    "            \n",
+    "            coeff = pywt.wavedec(flat.numpy(), wavelet, level = 4)\n",
+    "            # print(len(coeff))\n",
+    "            array, coeff_slices = pywt.coeffs_to_array(coeff)\n",
+    "            #print(coeff_slices) # should be static so we do not need to send them\n",
+    "            topk = torch.topk(\n",
+    "                    torch.from_numpy(np.absolute(array)), round(0.1*len(array)), dim=0, sorted=False\n",
+    "                )\n",
+    "            top10 = torch.zeros(len(array))\n",
+    "            top10[topk.indices] = torch.from_numpy(array[topk.indices])\n",
+    "            og = pywt.array_to_coeffs(top10, coeff_slices, output_format=\"wavedec\")\n",
+    "            reverse_top10 = torch.from_numpy(pywt.waverec(og, wavelet = wavelet))\n",
+    "            \n",
+    "            g.grad = reverse_top10.reshape(shape)\n",
+    "            \n",
+    "        # print(\"grad3: \"+str(model.conv1.bias.grad))\n",
+    "        \n",
+    "        optimizer.step()\n",
+    "        model.zero_grad()\n",
+    "        #optimizer.zero_grad()\n",
+    "        \n",
+    "        #resetting the optimizer\n",
+    "        # optimizer.load_state_dict(model.state_dict())\n",
+    "        vals = optimizer.state.values()\n",
+    "        # print(optimizer.state.values())\n",
+    "\n",
+    "        if batch % 500 == 0:\n",
+    "            loss, current = loss.item(), batch * len(X)\n",
+    "            print(f\"loss: {loss:>7f}  [{current:>5d}/{size:>5d}]\")\n",
+    "            stats[\"train\"].append([batch, e*size + current, loss])\n",
+    "        batch += 1\n",
+    "    \n",
+    "    #testing\n",
+    "    size = len(test_dataloader.dataset)\n",
+    "    num_batches = len(test_dataloader)\n",
+    "    model.eval()\n",
+    "    test_loss, correct = 0, 0\n",
+    "    with torch.no_grad():\n",
+    "        for X, y in test_dataloader:\n",
+    "            X = X.to(device)\n",
+    "            y = y.to(device)\n",
+    "            pred = model(X)\n",
+    "            test_loss += loss_fn(pred, y).item()\n",
+    "            correct += (pred.argmax(1) == y).type(torch.float).sum().item()\n",
+    "    test_loss /= num_batches\n",
+    "    correct /= size\n",
+    "    print(\"epoch:\")\n",
+    "    print(f\"Test Error: \\n Accuracy: {(100*correct):>0.1f}%, Avg loss: {test_loss:>8f} \\n\")\n",
+    "    stats[\"test\"].append([e, test_loss, 100*correct])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 22,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "lr = 0.0005\n",
+    "model = CNN().to(device)\n",
+    "loss_fn = nn.CrossEntropyLoss()\n",
+    "optimizer = torch.optim.Adam(model.parameters(), lr=lr)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 23,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "loss: 4.135039  [    0/735856]\n",
+      "loss: 1.154176  [64000/735856]\n",
+      "loss: 0.624926  [128000/735856]\n",
+      "loss: 0.605651  [192000/735856]\n",
+      "loss: 0.601686  [256000/735856]\n",
+      "loss: 0.532184  [320000/735856]\n",
+      "loss: 0.627395  [384000/735856]\n",
+      "loss: 0.411491  [448000/735856]\n",
+      "loss: 0.354714  [512000/735856]\n",
+      "loss: 0.393673  [576000/735856]\n",
+      "loss: 0.612208  [640000/735856]\n",
+      "loss: 0.619142  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 85.2%, Avg loss: 0.445382 \n",
+      "\n",
+      "loss: 0.429652  [    0/735856]\n",
+      "loss: 0.396769  [64000/735856]\n",
+      "loss: 0.423508  [128000/735856]\n",
+      "loss: 0.576669  [192000/735856]\n",
+      "loss: 0.432909  [256000/735856]\n",
+      "loss: 0.515018  [320000/735856]\n",
+      "loss: 0.375972  [384000/735856]\n",
+      "loss: 0.376615  [448000/735856]\n",
+      "loss: 0.326449  [512000/735856]\n",
+      "loss: 0.360019  [576000/735856]\n",
+      "loss: 0.354862  [640000/735856]\n",
+      "loss: 0.522963  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 86.9%, Avg loss: 0.383029 \n",
+      "\n",
+      "loss: 0.319733  [    0/735856]\n",
+      "loss: 0.486813  [64000/735856]\n",
+      "loss: 0.351780  [128000/735856]\n",
+      "loss: 0.327754  [192000/735856]\n",
+      "loss: 0.311207  [256000/735856]\n",
+      "loss: 0.421759  [320000/735856]\n",
+      "loss: 0.486802  [384000/735856]\n",
+      "loss: 0.327473  [448000/735856]\n",
+      "loss: 0.229189  [512000/735856]\n",
+      "loss: 0.395156  [576000/735856]\n",
+      "loss: 0.330383  [640000/735856]\n",
+      "loss: 0.240293  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 87.1%, Avg loss: 0.374847 \n",
+      "\n",
+      "loss: 0.364167  [    0/735856]\n",
+      "loss: 0.325380  [64000/735856]\n",
+      "loss: 0.407133  [128000/735856]\n",
+      "loss: 0.229438  [192000/735856]\n",
+      "loss: 0.324557  [256000/735856]\n",
+      "loss: 0.312494  [320000/735856]\n",
+      "loss: 0.250331  [384000/735856]\n",
+      "loss: 0.405609  [448000/735856]\n",
+      "loss: 0.334161  [512000/735856]\n",
+      "loss: 0.305596  [576000/735856]\n",
+      "loss: 0.396855  [640000/735856]\n",
+      "loss: 0.267720  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 87.3%, Avg loss: 0.357564 \n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "# wavelet over entire flatten gradient\n",
+    "stats = {\"train\": [], \"test\":[]}\n",
+    "wavelet = 'haar'\n",
+    "for e in range(4):\n",
+    "    #training\n",
+    "    batch = 0\n",
+    "    for X, y in train_dataloader:\n",
+    "        # print(\"grad: \"+str(model.conv1.bias.grad))\n",
+    "        old = model.conv1.bias.clone()\n",
+    "        X = X.to(device)\n",
+    "        y = y.to(device)\n",
+    "        #print(len(label))\n",
+    "        size = len(train_dataloader.dataset)\n",
+    "        model.train()\n",
+    "        \n",
+    "        # Compute prediction error\n",
+    "        pred = model(X)\n",
+    "        loss = loss_fn(pred, y)\n",
+    "        # Backpropagation\n",
+    "        loss.backward()\n",
+    "        # print(\"grad2: \"+str(model.conv1.bias.grad))\n",
+    "        \n",
+    "        \n",
+    "        # print(\"params \"+ str(len(list(model.parameters()))))\n",
+    "        flats = []\n",
+    "        shapes = []\n",
+    "        lens = []\n",
+    "        for g in model.parameters():\n",
+    "            grad = g.grad\n",
+    "            shape = grad.shape\n",
+    "            shapes.append(shape)\n",
+    "            flat = g.grad.flatten()\n",
+    "            flats.append(flat)\n",
+    "            lens.append(len(flat))\n",
+    "        flat = torch.cat(flats)\n",
+    "        coeff = pywt.wavedec(flat.numpy(), wavelet, level = None)\n",
+    "        array, coeff_slices = pywt.coeffs_to_array(coeff)\n",
+    "        #print(coeff_slices) # should be static so we do not need to send them\n",
+    "        topk = torch.topk(\n",
+    "                torch.from_numpy(np.absolute(array)), round(0.1*len(array)), dim=0, sorted=False\n",
+    "            )\n",
+    "        top10 = torch.zeros(len(array))\n",
+    "        top10[topk.indices] = torch.from_numpy(array[topk.indices])\n",
+    "        og = pywt.array_to_coeffs(top10, coeff_slices, output_format=\"wavedec\")\n",
+    "        reverse_top10 = torch.from_numpy(pywt.waverec(og, wavelet = wavelet))\n",
+    "            \n",
+    "\n",
+    "        \n",
+    "        start_index = 0    \n",
+    "        for i, key in enumerate(model.parameters()):\n",
+    "            end_index = start_index + lens[i]\n",
+    "            key.grad = reverse_top10[start_index:end_index].reshape(shapes[i])\n",
+    "            start_index = end_index\n",
+    "            \n",
+    "        # print(\"grad3: \"+str(model.conv1.bias.grad))\n",
+    "        \n",
+    "        optimizer.step()\n",
+    "        model.zero_grad()\n",
+    "        #optimizer.zero_grad()\n",
+    "        \n",
+    "        #resetting the optimizer\n",
+    "        # optimizer.load_state_dict(model.state_dict())\n",
+    "        vals = optimizer.state.values()\n",
+    "        # print(optimizer.state.values())\n",
+    "\n",
+    "        if batch % 500 == 0:\n",
+    "            loss, current = loss.item(), batch * len(X)\n",
+    "            print(f\"loss: {loss:>7f}  [{current:>5d}/{size:>5d}]\")\n",
+    "            stats[\"train\"].append([batch, e*size + current, loss])\n",
+    "        batch += 1\n",
+    "    \n",
+    "    #testing\n",
+    "    size = len(test_dataloader.dataset)\n",
+    "    num_batches = len(test_dataloader)\n",
+    "    model.eval()\n",
+    "    test_loss, correct = 0, 0\n",
+    "    with torch.no_grad():\n",
+    "        for X, y in test_dataloader:\n",
+    "            X = X.to(device)\n",
+    "            y = y.to(device)\n",
+    "            pred = model(X)\n",
+    "            test_loss += loss_fn(pred, y).item()\n",
+    "            correct += (pred.argmax(1) == y).type(torch.float).sum().item()\n",
+    "    test_loss /= num_batches\n",
+    "    correct /= size\n",
+    "    print(\"epoch:\")\n",
+    "    print(f\"Test Error: \\n Accuracy: {(100*correct):>0.1f}%, Avg loss: {test_loss:>8f} \\n\")\n",
+    "    stats[\"test\"].append([e, test_loss, 100*correct])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 33,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "lr = 0.0005\n",
+    "model = CNN().to(device)\n",
+    "loss_fn = nn.CrossEntropyLoss()\n",
+    "optimizer = torch.optim.Adam(model.parameters(), lr=lr)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 34,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import pywt"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 35,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "loss: 4.126535  [    0/735856]\n",
+      "loss: 1.238513  [64000/735856]\n",
+      "loss: 0.947478  [128000/735856]\n",
+      "loss: 0.758107  [192000/735856]\n",
+      "loss: 0.538468  [256000/735856]\n",
+      "loss: 0.726651  [320000/735856]\n",
+      "loss: 0.523160  [384000/735856]\n",
+      "loss: 0.323133  [448000/735856]\n",
+      "loss: 0.439029  [512000/735856]\n",
+      "loss: 0.406259  [576000/735856]\n",
+      "loss: 0.490085  [640000/735856]\n",
+      "loss: 0.520512  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 85.0%, Avg loss: 0.449423 \n",
+      "\n",
+      "loss: 0.481995  [    0/735856]\n",
+      "loss: 0.485922  [64000/735856]\n",
+      "loss: 0.363491  [128000/735856]\n",
+      "loss: 0.604679  [192000/735856]\n",
+      "loss: 0.318160  [256000/735856]\n",
+      "loss: 0.321950  [320000/735856]\n",
+      "loss: 0.355750  [384000/735856]\n",
+      "loss: 0.399116  [448000/735856]\n",
+      "loss: 0.283532  [512000/735856]\n",
+      "loss: 0.527641  [576000/735856]\n",
+      "loss: 0.413641  [640000/735856]\n",
+      "loss: 0.309524  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 86.0%, Avg loss: 0.406266 \n",
+      "\n",
+      "loss: 0.332639  [    0/735856]\n",
+      "loss: 0.438504  [64000/735856]\n",
+      "loss: 0.375174  [128000/735856]\n",
+      "loss: 0.325330  [192000/735856]\n",
+      "loss: 0.311181  [256000/735856]\n",
+      "loss: 0.439757  [320000/735856]\n",
+      "loss: 0.357552  [384000/735856]\n",
+      "loss: 0.318609  [448000/735856]\n",
+      "loss: 0.265860  [512000/735856]\n",
+      "loss: 0.534769  [576000/735856]\n",
+      "loss: 0.287946  [640000/735856]\n",
+      "loss: 0.381077  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 87.0%, Avg loss: 0.377133 \n",
+      "\n",
+      "loss: 0.293545  [    0/735856]\n",
+      "loss: 0.346547  [64000/735856]\n",
+      "loss: 0.489387  [128000/735856]\n",
+      "loss: 0.438751  [192000/735856]\n",
+      "loss: 0.376747  [256000/735856]\n",
+      "loss: 0.427431  [320000/735856]\n",
+      "loss: 0.381158  [384000/735856]\n",
+      "loss: 0.482535  [448000/735856]\n",
+      "loss: 0.229551  [512000/735856]\n",
+      "loss: 0.455859  [576000/735856]\n",
+      "loss: 0.332654  [640000/735856]\n",
+      "loss: 0.496725  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 87.5%, Avg loss: 0.358163 \n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "# rerun with alpha 0.2\n",
+    "stats = {\"train\": [], \"test\":[]}\n",
+    "wavelet = 'sym2'\n",
+    "for e in range(4):\n",
+    "    #training\n",
+    "    batch = 0\n",
+    "    for X, y in train_dataloader:\n",
+    "        # print(\"grad: \"+str(model.conv1.bias.grad))\n",
+    "        old = model.conv1.bias.clone()\n",
+    "        X = X.to(device)\n",
+    "        y = y.to(device)\n",
+    "        #print(len(label))\n",
+    "        size = len(train_dataloader.dataset)\n",
+    "        model.train()\n",
+    "        \n",
+    "        # Compute prediction error\n",
+    "        pred = model(X)\n",
+    "        loss = loss_fn(pred, y)\n",
+    "        # Backpropagation\n",
+    "        loss.backward()\n",
+    "        # print(\"grad2: \"+str(model.conv1.bias.grad))\n",
+    "        \n",
+    "        \n",
+    "        # print(\"params \"+ str(len(list(model.parameters()))))\n",
+    "        flats = []\n",
+    "        shapes = []\n",
+    "        lens = []\n",
+    "        for g in model.parameters():\n",
+    "            grad = g.grad\n",
+    "            shape = grad.shape\n",
+    "            shapes.append(shape)\n",
+    "            flat = g.grad.flatten()\n",
+    "            flats.append(flat)\n",
+    "            lens.append(len(flat))\n",
+    "        flat = torch.cat(flats)\n",
+    "        coeff = pywt.wavedec(flat.numpy(), wavelet, level = None)\n",
+    "        array, coeff_slices = pywt.coeffs_to_array(coeff)\n",
+    "        #print(coeff_slices) # should be static so we do not need to send them\n",
+    "        topk = torch.topk(\n",
+    "                torch.from_numpy(np.absolute(array)), round(0.1*len(array)), dim=0, sorted=False\n",
+    "            )\n",
+    "        top10 = torch.zeros(len(array))\n",
+    "        top10[topk.indices] = torch.from_numpy(array[topk.indices])\n",
+    "        og = pywt.array_to_coeffs(top10, coeff_slices, output_format=\"wavedec\")\n",
+    "        reverse_top10 = torch.from_numpy(pywt.waverec(og, wavelet = wavelet))\n",
+    "            \n",
+    "\n",
+    "        \n",
+    "        start_index = 0    \n",
+    "        for i, key in enumerate(model.parameters()):\n",
+    "            end_index = start_index + lens[i]\n",
+    "            key.grad = reverse_top10[start_index:end_index].reshape(shapes[i])\n",
+    "            start_index = end_index\n",
+    "            \n",
+    "        # print(\"grad3: \"+str(model.conv1.bias.grad))\n",
+    "        \n",
+    "        optimizer.step()\n",
+    "        model.zero_grad()\n",
+    "        #optimizer.zero_grad()\n",
+    "        \n",
+    "        #resetting the optimizer\n",
+    "        # optimizer.load_state_dict(model.state_dict())\n",
+    "        vals = optimizer.state.values()\n",
+    "        # print(optimizer.state.values())\n",
+    "\n",
+    "        if batch % 500 == 0:\n",
+    "            loss, current = loss.item(), batch * len(X)\n",
+    "            print(f\"loss: {loss:>7f}  [{current:>5d}/{size:>5d}]\")\n",
+    "            stats[\"train\"].append([batch, e*size + current, loss])\n",
+    "        batch += 1\n",
+    "    \n",
+    "    #testing\n",
+    "    size = len(test_dataloader.dataset)\n",
+    "    num_batches = len(test_dataloader)\n",
+    "    model.eval()\n",
+    "    test_loss, correct = 0, 0\n",
+    "    with torch.no_grad():\n",
+    "        for X, y in test_dataloader:\n",
+    "            X = X.to(device)\n",
+    "            y = y.to(device)\n",
+    "            pred = model(X)\n",
+    "            test_loss += loss_fn(pred, y).item()\n",
+    "            correct += (pred.argmax(1) == y).type(torch.float).sum().item()\n",
+    "    test_loss /= num_batches\n",
+    "    correct /= size\n",
+    "    print(\"epoch:\")\n",
+    "    print(f\"Test Error: \\n Accuracy: {(100*correct):>0.1f}%, Avg loss: {test_loss:>8f} \\n\")\n",
+    "    stats[\"test\"].append([e, test_loss, 100*correct])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 24,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "v,i = torch.topk(torch.tensor([1,2,3,4]), 2 , dim=0, sorted=False)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 25,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([4, 3])"
+      ]
+     },
+     "execution_count": 25,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "v"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 26,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([3, 2])"
+      ]
+     },
+     "execution_count": 26,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "i"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 35,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "lr = 0.0005\n",
+    "model = CNN().to(device)\n",
+    "loss_fn = nn.CrossEntropyLoss()\n",
+    "optimizer = torch.optim.Adam(model.parameters(), lr=lr)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 36,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "loss: 4.126898  [    0/735856]\n",
+      "loss: 1.050626  [64000/735856]\n",
+      "loss: 0.652647  [128000/735856]\n",
+      "loss: 0.648297  [192000/735856]\n",
+      "loss: 0.636182  [256000/735856]\n",
+      "loss: 0.570731  [320000/735856]\n",
+      "loss: 0.509262  [384000/735856]\n",
+      "loss: 0.309913  [448000/735856]\n",
+      "loss: 0.538662  [512000/735856]\n",
+      "loss: 0.530801  [576000/735856]\n",
+      "loss: 0.507737  [640000/735856]\n",
+      "loss: 0.422813  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 85.5%, Avg loss: 0.435624 \n",
+      "\n",
+      "loss: 0.388328  [    0/735856]\n",
+      "loss: 0.299637  [64000/735856]\n",
+      "loss: 0.420440  [128000/735856]\n",
+      "loss: 0.230143  [192000/735856]\n",
+      "loss: 0.374027  [256000/735856]\n",
+      "loss: 0.279048  [320000/735856]\n",
+      "loss: 0.495672  [384000/735856]\n",
+      "loss: 0.277394  [448000/735856]\n",
+      "loss: 0.395940  [512000/735856]\n",
+      "loss: 0.476103  [576000/735856]\n",
+      "loss: 0.550471  [640000/735856]\n",
+      "loss: 0.431940  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 86.7%, Avg loss: 0.391393 \n",
+      "\n",
+      "loss: 0.436391  [    0/735856]\n",
+      "loss: 0.351771  [64000/735856]\n",
+      "loss: 0.352133  [128000/735856]\n",
+      "loss: 0.254270  [192000/735856]\n",
+      "loss: 0.357840  [256000/735856]\n",
+      "loss: 0.368416  [320000/735856]\n",
+      "loss: 0.401375  [384000/735856]\n",
+      "loss: 0.442322  [448000/735856]\n",
+      "loss: 0.538914  [512000/735856]\n",
+      "loss: 0.444955  [576000/735856]\n",
+      "loss: 0.322195  [640000/735856]\n",
+      "loss: 0.493332  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 86.9%, Avg loss: 0.374818 \n",
+      "\n",
+      "loss: 0.457855  [    0/735856]\n",
+      "loss: 0.423867  [64000/735856]\n",
+      "loss: 0.274726  [128000/735856]\n",
+      "loss: 0.356364  [192000/735856]\n",
+      "loss: 0.341427  [256000/735856]\n",
+      "loss: 0.301665  [320000/735856]\n",
+      "loss: 0.409492  [384000/735856]\n",
+      "loss: 0.401218  [448000/735856]\n",
+      "loss: 0.616257  [512000/735856]\n",
+      "loss: 0.287706  [576000/735856]\n",
+      "loss: 0.321826  [640000/735856]\n",
+      "loss: 0.423405  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 87.6%, Avg loss: 0.357925 \n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "# rerun with alpha 0.2 and level 4\n",
+    "stats = {\"train\": [], \"test\":[]}\n",
+    "wavelet = 'coif1'\n",
+    "for e in range(4):\n",
+    "    #training\n",
+    "    batch = 0\n",
+    "    for X, y in train_dataloader:\n",
+    "        # print(\"grad: \"+str(model.conv1.bias.grad))\n",
+    "        old = model.conv1.bias.clone()\n",
+    "        X = X.to(device)\n",
+    "        y = y.to(device)\n",
+    "        #print(len(label))\n",
+    "        size = len(train_dataloader.dataset)\n",
+    "        model.train()\n",
+    "        \n",
+    "        # Compute prediction error\n",
+    "        pred = model(X)\n",
+    "        loss = loss_fn(pred, y)\n",
+    "        # Backpropagation\n",
+    "        loss.backward()\n",
+    "        # print(\"grad2: \"+str(model.conv1.bias.grad))\n",
+    "        \n",
+    "        \n",
+    "        # print(\"params \"+ str(len(list(model.parameters()))))\n",
+    "        flats = []\n",
+    "        shapes = []\n",
+    "        lens = []\n",
+    "        for g in model.parameters():\n",
+    "            grad = g.grad\n",
+    "            shape = grad.shape\n",
+    "            shapes.append(shape)\n",
+    "            flat = g.grad.flatten()\n",
+    "            flats.append(flat)\n",
+    "            lens.append(len(flat))\n",
+    "        flat = torch.cat(flats)\n",
+    "        coeff = pywt.wavedec(flat.numpy(), wavelet, level = 4)\n",
+    "        # print(len(coeff))\n",
+    "        array, coeff_slices = pywt.coeffs_to_array(coeff)\n",
+    "        #print(coeff_slices) # should be static so we do not need to send them\n",
+    "        topk = torch.topk(\n",
+    "                torch.from_numpy(np.absolute(array)), round(0.2*len(array)), dim=0, sorted=False\n",
+    "            )\n",
+    "        top10 = torch.zeros(len(array))\n",
+    "        top10[topk.indices] = torch.from_numpy(array[topk.indices])\n",
+    "        og = pywt.array_to_coeffs(top10, coeff_slices, output_format=\"wavedec\")\n",
+    "        reverse_top10 = torch.from_numpy(pywt.waverec(og, wavelet = wavelet))\n",
+    "            \n",
+    "\n",
+    "        \n",
+    "        start_index = 0    \n",
+    "        for i, key in enumerate(model.parameters()):\n",
+    "            end_index = start_index + lens[i]\n",
+    "            key.grad = reverse_top10[start_index:end_index].reshape(shapes[i])\n",
+    "            start_index = end_index\n",
+    "            \n",
+    "        # print(\"grad3: \"+str(model.conv1.bias.grad))\n",
+    "        \n",
+    "        optimizer.step()\n",
+    "        model.zero_grad()\n",
+    "        #optimizer.zero_grad()\n",
+    "        \n",
+    "        #resetting the optimizer\n",
+    "        # optimizer.load_state_dict(model.state_dict())\n",
+    "        vals = optimizer.state.values()\n",
+    "        # print(optimizer.state.values())\n",
+    "\n",
+    "        if batch % 500 == 0:\n",
+    "            loss, current = loss.item(), batch * len(X)\n",
+    "            print(f\"loss: {loss:>7f}  [{current:>5d}/{size:>5d}]\")\n",
+    "            stats[\"train\"].append([batch, e*size + current, loss])\n",
+    "        batch += 1\n",
+    "    \n",
+    "    #testing\n",
+    "    size = len(test_dataloader.dataset)\n",
+    "    num_batches = len(test_dataloader)\n",
+    "    model.eval()\n",
+    "    test_loss, correct = 0, 0\n",
+    "    with torch.no_grad():\n",
+    "        for X, y in test_dataloader:\n",
+    "            X = X.to(device)\n",
+    "            y = y.to(device)\n",
+    "            pred = model(X)\n",
+    "            test_loss += loss_fn(pred, y).item()\n",
+    "            correct += (pred.argmax(1) == y).type(torch.float).sum().item()\n",
+    "    test_loss /= num_batches\n",
+    "    correct /= size\n",
+    "    print(\"epoch:\")\n",
+    "    print(f\"Test Error: \\n Accuracy: {(100*correct):>0.1f}%, Avg loss: {test_loss:>8f} \\n\")\n",
+    "    stats[\"test\"].append([e, test_loss, 100*correct])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "lr = 0.0005\n",
+    "model = CNN().to(device)\n",
+    "loss_fn = nn.CrossEntropyLoss()\n",
+    "optimizer = torch.optim.Adam(model.parameters(), lr=lr)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 17,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "loss: 4.118358  [    0/735856]\n",
+      "loss: 1.330925  [64000/735856]\n",
+      "loss: 0.899926  [128000/735856]\n",
+      "loss: 0.894990  [192000/735856]\n",
+      "loss: 0.475845  [256000/735856]\n",
+      "loss: 0.672299  [320000/735856]\n",
+      "loss: 0.728748  [384000/735856]\n",
+      "loss: 0.374176  [448000/735856]\n",
+      "loss: 0.621309  [512000/735856]\n",
+      "loss: 0.562943  [576000/735856]\n",
+      "loss: 0.567177  [640000/735856]\n",
+      "loss: 0.408742  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 84.7%, Avg loss: 0.461047 \n",
+      "\n",
+      "loss: 0.545014  [    0/735856]\n",
+      "loss: 0.433877  [64000/735856]\n",
+      "loss: 0.513009  [128000/735856]\n",
+      "loss: 0.462199  [192000/735856]\n",
+      "loss: 0.371584  [256000/735856]\n",
+      "loss: 0.380919  [320000/735856]\n",
+      "loss: 0.448126  [384000/735856]\n",
+      "loss: 0.421078  [448000/735856]\n",
+      "loss: 0.531703  [512000/735856]\n",
+      "loss: 0.314307  [576000/735856]\n",
+      "loss: 0.345081  [640000/735856]\n",
+      "loss: 0.456303  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 86.6%, Avg loss: 0.392272 \n",
+      "\n",
+      "loss: 0.371980  [    0/735856]\n",
+      "loss: 0.419902  [64000/735856]\n",
+      "loss: 0.344231  [128000/735856]\n",
+      "loss: 0.383977  [192000/735856]\n",
+      "loss: 0.586718  [256000/735856]\n",
+      "loss: 0.524982  [320000/735856]\n",
+      "loss: 0.333949  [384000/735856]\n",
+      "loss: 0.478536  [448000/735856]\n",
+      "loss: 0.346808  [512000/735856]\n",
+      "loss: 0.322247  [576000/735856]\n",
+      "loss: 0.281340  [640000/735856]\n",
+      "loss: 0.373933  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 86.8%, Avg loss: 0.379021 \n",
+      "\n",
+      "loss: 0.393135  [    0/735856]\n",
+      "loss: 0.281718  [64000/735856]\n",
+      "loss: 0.488630  [128000/735856]\n",
+      "loss: 0.335369  [192000/735856]\n",
+      "loss: 0.342869  [256000/735856]\n",
+      "loss: 0.293455  [320000/735856]\n",
+      "loss: 0.391644  [384000/735856]\n",
+      "loss: 0.309957  [448000/735856]\n",
+      "loss: 0.277645  [512000/735856]\n",
+      "loss: 0.277113  [576000/735856]\n",
+      "loss: 0.242315  [640000/735856]\n",
+      "loss: 0.292711  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 87.3%, Avg loss: 0.366945 \n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "stats = {\"train\": [], \"test\":[]}\n",
+    "for e in range(4):\n",
+    "    #training\n",
+    "    batch = 0\n",
+    "    for X, y in train_dataloader:\n",
+    "        # print(\"grad: \"+str(model.conv1.bias.grad))\n",
+    "        old = model.conv1.bias.clone()\n",
+    "        X = X.to(device)\n",
+    "        y = y.to(device)\n",
+    "        #print(len(label))\n",
+    "        size = len(train_dataloader.dataset)\n",
+    "        model.train()\n",
+    "        \n",
+    "        # Compute prediction error\n",
+    "        pred = model(X)\n",
+    "        loss = loss_fn(pred, y)\n",
+    "        # Backpropagation\n",
+    "        loss.backward()\n",
+    "        # print(\"grad2: \"+str(model.conv1.bias.grad))\n",
+    "        \n",
+    "        \n",
+    "        # print(\"params \"+ str(len(list(model.parameters()))))\n",
+    "                # print(\"params \"+ str(len(list(model.parameters()))))\n",
+    "        flats = []\n",
+    "        shapes = []\n",
+    "        lens = []\n",
+    "        for g in model.parameters():\n",
+    "            grad = g.grad\n",
+    "            shape = grad.shape\n",
+    "            shapes.append(shape)\n",
+    "            flat = g.grad.flatten()\n",
+    "            flats.append(flat)\n",
+    "            lens.append(len(flat))\n",
+    "        flat = torch.cat(flats)\n",
+    "\n",
+    "        topk = torch.topk(\n",
+    "                flat.abs(), round(0.1*len(flat)), dim=0, sorted=False\n",
+    "            )\n",
+    "        top10 = torch.zeros(len(flat))\n",
+    "        top10[topk.indices] = flat[topk.indices]\n",
+    "        \n",
+    "        start_index = 0    \n",
+    "        for i, key in enumerate(model.parameters()):\n",
+    "            end_index = start_index + lens[i]\n",
+    "            key.grad = top10[start_index:end_index].reshape(shapes[i])\n",
+    "            start_index = end_index\n",
+    "            \n",
+    "            \n",
+    "        # print(\"grad3: \"+str(model.conv1.bias.grad))\n",
+    "        \n",
+    "        optimizer.step()\n",
+    "        model.zero_grad()\n",
+    "        #optimizer.zero_grad()\n",
+    "        \n",
+    "        #resetting the optimizer\n",
+    "        # optimizer.load_state_dict(model.state_dict())\n",
+    "        vals = optimizer.state.values()\n",
+    "        # print(optimizer.state.values())\n",
+    "\n",
+    "        if batch % 500 == 0:\n",
+    "            loss, current = loss.item(), batch * len(X)\n",
+    "            print(f\"loss: {loss:>7f}  [{current:>5d}/{size:>5d}]\")\n",
+    "            stats[\"train\"].append([batch, e*size + current, loss])\n",
+    "        batch += 1\n",
+    "    \n",
+    "    #testing\n",
+    "    size = len(test_dataloader.dataset)\n",
+    "    num_batches = len(test_dataloader)\n",
+    "    model.eval()\n",
+    "    test_loss, correct = 0, 0\n",
+    "    with torch.no_grad():\n",
+    "        for X, y in test_dataloader:\n",
+    "            X = X.to(device)\n",
+    "            y = y.to(device)\n",
+    "            pred = model(X)\n",
+    "            test_loss += loss_fn(pred, y).item()\n",
+    "            correct += (pred.argmax(1) == y).type(torch.float).sum().item()\n",
+    "    test_loss /= num_batches\n",
+    "    correct /= size\n",
+    "    print(\"epoch:\")\n",
+    "    print(f\"Test Error: \\n Accuracy: {(100*correct):>0.1f}%, Avg loss: {test_loss:>8f} \\n\")\n",
+    "    stats[\"test\"].append([e, test_loss, 100*correct])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Node Training <a class=\"anchor\" id=\"nodetraining\"></a>"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "metadata": {
+    "id": "9LpgzEw1s-xo"
+   },
+   "outputs": [],
+   "source": [
+    "# From Femnist.py\n",
+    "def read_file(file_path):\n",
+    "    with open(file_path, \"r\") as inf:\n",
+    "        client_data = json.load(inf)\n",
+    "        print(\"loaded the data\")\n",
+    "    return (\n",
+    "        client_data[\"users\"],\n",
+    "        client_data[\"num_samples\"],\n",
+    "        client_data[\"user_data\"],\n",
+    "    )"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "id": "QBu1kiw8s-xr"
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "raw",
+   "metadata": {
+    "id": "jI3ixEN4s-xt",
+    "outputId": "ed969663-9e1e-4810-9507-52cdc426650a"
+   },
+   "source": [
+    "# From Femnist.py\n",
+    "for i in range(1):\n",
+    "    cur_file = \"leaf/data/femnist/data/train/all_data_0_niid_0_keep_0_train_9.json\"\n",
+    "    # test_file = \"leaf/data/femnist/data/test/all_data_0_niid_0_keep_0_test_9.json\"\n",
+    "    # cur_file = test_file\n",
+    "    clients, _, train_data = read_file(\n",
+    "        os.path.join(train_dir, cur_file)\n",
+    "    )\n",
+    "    for cur_client in clients:\n",
+    "        # self.clients.append(cur_client)\n",
+    "        my_train_data[\"x\"].extend(train_data[cur_client][\"x\"])\n",
+    "        my_train_data[\"y\"].extend(train_data[cur_client][\"y\"])\n",
+    "        del train_data[cur_client]\n"
+   ]
+  },
+  {
+   "cell_type": "raw",
+   "metadata": {
+    "id": "wvHsSz8as-xw"
+   },
+   "source": [
+    "train_x = (\n",
+    "    np.array(my_train_data[\"x\"], dtype=np.dtype(\"float32\"))\n",
+    "    .reshape(-1, 28, 28, 1)\n",
+    "    .transpose(0, 3, 1, 2)\n",
+    ")\n",
+    "train_y = np.array(my_train_data[\"y\"], dtype=np.dtype(\"int64\")).reshape(-1)"
+   ]
+  },
+  {
+   "cell_type": "raw",
+   "metadata": {
+    "id": "K8X471SKs-xz",
+    "outputId": "cdf73c06-1323-4e76-850b-16324008d255"
+   },
+   "source": [
+    "len(train_y)"
+   ]
+  },
+  {
+   "cell_type": "raw",
+   "metadata": {
+    "id": "EpWNELBrs-x0"
+   },
+   "source": [
+    "with open(train_dir+\"femnist.pkl\", \"wb\") as f:\n",
+    "    pickle.dump({\"test_x\": train_x, \"test_y\": train_y}, f)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "metadata": {
+    "id": "mAEASHr2s-x1"
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "7665.166666666667"
+      ]
+     },
+     "execution_count": 7,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "735856 / 96\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "metadata": {
+    "id": "Am_XlcSSs-x3"
+   },
+   "outputs": [],
+   "source": [
+    "with open(train_dir+\"femnist.pkl\", \"rb\") as f:\n",
+    "    train = pickle.load(f)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "metadata": {
+    "id": "evAd9ZvYs-x6"
+   },
+   "outputs": [],
+   "source": [
+    "with open(train_dir+\"femnist_test.pkl\", \"rb\") as f:\n",
+    "    test = pickle.load(f)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 10,
+   "metadata": {
+    "id": "9_vIFakbs-x7",
+    "outputId": "3a8b546a-186f-4519-8c0b-e853986a8101"
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "(735856, 1, 28, 28)"
+      ]
+     },
+     "execution_count": 10,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "train[\"train_x\"].shape"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 11,
+   "metadata": {
+    "id": "GPyZ2C8ws-x9"
+   },
+   "outputs": [],
+   "source": [
+    "NUM_CLASSES = 62\n",
+    "IMAGE_SIZE = (28, 28)\n",
+    "FLAT_SIZE = 28 * 28\n",
+    "PIXEL_RANGE = 256.0\n",
+    "import torch.nn.functional as F\n",
+    "\n",
+    "class CNN(nn.Module):\n",
+    "    \"\"\"\n",
+    "    Class for a CNN Model for FEMNIST\n",
+    "\n",
+    "    \"\"\"\n",
+    "\n",
+    "    def __init__(self):\n",
+    "        \"\"\"\n",
+    "        Constructor. Instantiates the CNN Model\n",
+    "            with 28*28*1 Input and 62 output classes\n",
+    "\n",
+    "        \"\"\"\n",
+    "        super().__init__()\n",
+    "        # 1.6 million params\n",
+    "        self.conv1 = nn.Conv2d(1, 32, 5, padding=2)\n",
+    "        self.pool = nn.MaxPool2d(2, 2)\n",
+    "        self.conv2 = nn.Conv2d(32, 64, 5, padding=2)\n",
+    "        self.fc1 = nn.Linear(7 * 7 * 64, 512)\n",
+    "        self.fc2 = nn.Linear(512, NUM_CLASSES)\n",
+    "\n",
+    "    def forward(self, x):\n",
+    "        \"\"\"\n",
+    "        Forward pass of the model\n",
+    "\n",
+    "        Parameters\n",
+    "        ----------\n",
+    "        x : torch.tensor\n",
+    "            The input torch tensor\n",
+    "\n",
+    "        Returns\n",
+    "        -------\n",
+    "        torch.tensor\n",
+    "            The output torch tensor\n",
+    "\n",
+    "        \"\"\"\n",
+    "        x = self.pool(F.relu(self.conv1(x)))\n",
+    "        x = self.pool(F.relu(self.conv2(x)))\n",
+    "        x = torch.flatten(x, 1)\n",
+    "        x = F.relu(self.fc1(x))\n",
+    "        x = self.fc2(x)\n",
+    "        return x\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "metadata": {
+    "id": "bCgW8ClBs-x_"
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "(735856,)"
+      ]
+     },
+     "execution_count": 12,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "train[\"train_y\"].shape"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 13,
+   "metadata": {
+    "id": "oBGwcwZks-yA"
+   },
+   "outputs": [],
+   "source": [
+    "import os\n",
+    "from torch.utils.data import Dataset\n",
+    "\n",
+    "class FemnistDataset(Dataset):\n",
+    "    def __init__(self, training, transform=None, target_transform=None):\n",
+    "        if training:\n",
+    "            with open(train_dir+\"femnist.pkl\", \"rb\") as f:\n",
+    "                train = pickle.load(f)\n",
+    "                self.data = train[\"train_x\"][10000:10000+7665,...]\n",
+    "                self.label = train[\"train_y\"][10000:10000+7665,...]\n",
+    "        else: \n",
+    "            with open(train_dir+\"femnist_test.pkl\", \"rb\") as f:\n",
+    "                test = pickle.load(f)\n",
+    "                self.data = test[\"test_x\"]\n",
+    "                self.label = test[\"test_y\"]\n",
+    "        self.transform = transform\n",
+    "        self.target_transform = target_transform\n",
+    "\n",
+    "    def __len__(self):\n",
+    "        return len(self.label)\n",
+    "\n",
+    "    def __getitem__(self, idx):\n",
+    "        return self.data[idx], self.label[idx]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 14,
+   "metadata": {
+    "id": "U3boC_N4s-yC"
+   },
+   "outputs": [],
+   "source": [
+    "from torch.utils.data import DataLoader"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 15,
+   "metadata": {
+    "id": "sJsrQXkEs-yD"
+   },
+   "outputs": [],
+   "source": [
+    "trainset = FemnistDataset(True)\n",
+    "testset = FemnistDataset(False)\n",
+    "\n",
+    "train_dataloader = DataLoader(trainset, batch_size=16, shuffle=True)\n",
+    "test_dataloader = DataLoader(testset, batch_size=128, shuffle=True)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 16,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "480"
+      ]
+     },
+     "execution_count": 16,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "len(train_dataloader)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 17,
+   "metadata": {
+    "id": "e65Izyv0s-yE"
+   },
+   "outputs": [],
+   "source": [
+    "lr = 0.001\n",
+    "model = CNN().to(device)\n",
+    "loss_fn = nn.CrossEntropyLoss()\n",
+    "optimizer = torch.optim.Adam(model.parameters(), lr=lr)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 18,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([-0.1487, -0.1003,  0.0990, -0.0245, -0.1023,  0.0974, -0.1139, -0.1425,\n",
+       "        -0.1949, -0.0679, -0.0937,  0.0891,  0.0577, -0.1357,  0.0814,  0.1157,\n",
+       "        -0.1997, -0.1665, -0.1546,  0.1150,  0.0895, -0.1049, -0.0980, -0.0980,\n",
+       "         0.0729,  0.1947,  0.0421, -0.0365, -0.1470, -0.1679,  0.0286, -0.0146])"
+      ]
+     },
+     "execution_count": 18,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "list(model.state_dict().values())[1]"
+   ]
+  },
+  {
+   "cell_type": "raw",
+   "metadata": {},
+   "source": [
+    "tensor([-0.0180,  0.0236,  0.1279, -0.1352, -0.1948, -0.0330, -0.1615, -0.0286,\n",
+    "        -0.1762,  0.0040,  0.1570, -0.1069, -0.1074, -0.1417, -0.1171,  0.0359,\n",
+    "         0.1276, -0.1534, -0.1773, -0.1639,  0.1334,  0.0518,  0.0586,  0.1466,\n",
+    "         0.1283,  0.0443, -0.0982, -0.1739, -0.0061,  0.1047, -0.0291,  0.1525])"
+   ]
+  },
+  {
+   "cell_type": "raw",
+   "metadata": {},
+   "source": [
+    "for p in model.parameters():\n",
+    "    print(p.data.size())\n",
+    "    p.data = torch.zeros(p.data.size())"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 19,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([-0.1487, -0.1003,  0.0990, -0.0245, -0.1023,  0.0974, -0.1139, -0.1425,\n",
+       "        -0.1949, -0.0679, -0.0937,  0.0891,  0.0577, -0.1357,  0.0814,  0.1157,\n",
+       "        -0.1997, -0.1665, -0.1546,  0.1150,  0.0895, -0.1049, -0.0980, -0.0980,\n",
+       "         0.0729,  0.1947,  0.0421, -0.0365, -0.1470, -0.1679,  0.0286, -0.0146])"
+      ]
+     },
+     "execution_count": 19,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "list(model.state_dict().values())[1]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "colab": {
+     "base_uri": "https://localhost:8080/"
+    },
+    "id": "eqOXilqMs-yF",
+    "outputId": "06799a3b-983b-4f51-a7bd-a901c041bd05"
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "loss: 4.158939  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 34.5%, Avg loss: 2.492351 \n",
+      "\n",
+      "loss: 2.274407  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 49.2%, Avg loss: 2.004063 \n",
+      "\n",
+      "loss: 2.080229  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 57.7%, Avg loss: 1.550052 \n",
+      "\n",
+      "loss: 1.220055  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 62.5%, Avg loss: 1.387109 \n",
+      "\n",
+      "loss: 0.547404  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 62.6%, Avg loss: 1.411219 \n",
+      "\n",
+      "loss: 0.666172  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 68.1%, Avg loss: 1.147880 \n",
+      "\n",
+      "loss: 0.539106  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 66.9%, Avg loss: 1.218418 \n",
+      "\n",
+      "loss: 1.057546  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 68.9%, Avg loss: 1.211012 \n",
+      "\n",
+      "loss: 0.315841  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 66.5%, Avg loss: 1.400047 \n",
+      "\n",
+      "loss: 0.659244  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 66.0%, Avg loss: 1.484381 \n",
+      "\n",
+      "loss: 0.437452  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 69.8%, Avg loss: 1.239514 \n",
+      "\n",
+      "loss: 0.675393  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 69.3%, Avg loss: 1.224045 \n",
+      "\n",
+      "loss: 0.409850  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 67.5%, Avg loss: 1.499410 \n",
+      "\n",
+      "loss: 0.942130  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 69.7%, Avg loss: 1.331600 \n",
+      "\n",
+      "loss: 0.193678  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 69.5%, Avg loss: 1.398448 \n",
+      "\n",
+      "loss: 0.120872  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 68.4%, Avg loss: 1.589930 \n",
+      "\n",
+      "loss: 0.099591  [    0/ 7665]\n"
+     ]
+    }
+   ],
+   "source": [
+    "stats = {\"train\": [], \"test\":[]}\n",
+    "for e in range(20):\n",
+    "    #training\n",
+    "    batch = 0\n",
+    "    for X, y in train_dataloader:\n",
+    "        #print(\"grad: \"+str(model.conv1.bias.grad))\n",
+    "        old = model.conv1.bias.clone()\n",
+    "        X = X.to(device)\n",
+    "        y = y.to(device)\n",
+    "        #print(len(label))\n",
+    "        size = len(train_dataloader.dataset)\n",
+    "        model.train()\n",
+    "        # Compute prediction error\n",
+    "        pred = model(X)\n",
+    "        loss = loss_fn(pred, y)\n",
+    "        # Backpropagation\n",
+    "        loss.backward()\n",
+    "        #print(\"grad2: \"+str(model.conv1.bias.grad))\n",
+    "        optimizer.step()\n",
+    "        model.zero_grad()\n",
+    "        #optimizer.zero_grad()\n",
+    "        \n",
+    "        #resetting the optimizer\n",
+    "        # optimizer.load_state_dict(model.state_dict())\n",
+    "        vals = optimizer.state.values()\n",
+    "        #print(optimizer.state.values())\n",
+    "\n",
+    "        if batch % 500 == 0:\n",
+    "            loss, current = loss.item(), batch * len(X)\n",
+    "            print(f\"loss: {loss:>7f}  [{current:>5d}/{size:>5d}]\")\n",
+    "            stats[\"train\"].append([batch, e*size + current, loss])\n",
+    "        batch += 1\n",
+    "    \n",
+    "    #testing\n",
+    "    size = len(test_dataloader.dataset)\n",
+    "    num_batches = len(test_dataloader)\n",
+    "    model.eval()\n",
+    "    test_loss, correct = 0, 0\n",
+    "    with torch.no_grad():\n",
+    "        for X, y in test_dataloader:\n",
+    "            X = X.to(device)\n",
+    "            y = y.to(device)\n",
+    "            pred = model(X)\n",
+    "            test_loss += loss_fn(pred, y).item()\n",
+    "            correct += (pred.argmax(1) == y).type(torch.float).sum().item()\n",
+    "    test_loss /= num_batches\n",
+    "    correct /= size\n",
+    "    print(\"epoch:\")\n",
+    "    print(f\"Test Error: \\n Accuracy: {(100*correct):>0.1f}%, Avg loss: {test_loss:>8f} \\n\")\n",
+    "    stats[\"test\"].append([e, test_loss, 100*correct])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 17,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "lr = 0.001\n",
+    "model = CNN().to(device)\n",
+    "loss_fn = nn.CrossEntropyLoss()\n",
+    "optimizer = torch.optim.Adam(model.parameters(), lr=lr, weight_decay=0.001)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 18,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "loss: 4.158939  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 26.3%, Avg loss: 2.828093 \n",
+      "\n",
+      "loss: 2.478634  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 47.1%, Avg loss: 2.069258 \n",
+      "\n",
+      "loss: 2.099130  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 56.7%, Avg loss: 1.571264 \n",
+      "\n",
+      "loss: 1.343866  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 61.1%, Avg loss: 1.432287 \n",
+      "\n",
+      "loss: 0.783433  [    0/ 7665]\n"
+     ]
+    },
+    {
+     "ename": "KeyboardInterrupt",
+     "evalue": "",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+      "\u001b[0;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
+      "Input \u001b[0;32mIn [18]\u001b[0m, in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m     48\u001b[0m X \u001b[38;5;241m=\u001b[39m X\u001b[38;5;241m.\u001b[39mto(device)\n\u001b[1;32m     49\u001b[0m y \u001b[38;5;241m=\u001b[39m y\u001b[38;5;241m.\u001b[39mto(device)\n\u001b[0;32m---> 50\u001b[0m pred \u001b[38;5;241m=\u001b[39m \u001b[43mmodel\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m     51\u001b[0m test_loss \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m loss_fn(pred, y)\u001b[38;5;241m.\u001b[39mitem()\n\u001b[1;32m     52\u001b[0m correct \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m (pred\u001b[38;5;241m.\u001b[39margmax(\u001b[38;5;241m1\u001b[39m) \u001b[38;5;241m==\u001b[39m y)\u001b[38;5;241m.\u001b[39mtype(torch\u001b[38;5;241m.\u001b[39mfloat)\u001b[38;5;241m.\u001b[39msum()\u001b[38;5;241m.\u001b[39mitem()\n",
+      "File \u001b[0;32m~/anaconda3/envs/sacs39/lib/python3.9/site-packages/torch/nn/modules/module.py:1102\u001b[0m, in \u001b[0;36mModule._call_impl\u001b[0;34m(self, *input, **kwargs)\u001b[0m\n\u001b[1;32m   1098\u001b[0m \u001b[38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in\u001b[39;00m\n\u001b[1;32m   1099\u001b[0m \u001b[38;5;66;03m# this function, and just call forward.\u001b[39;00m\n\u001b[1;32m   1100\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_backward_hooks\n\u001b[1;32m   1101\u001b[0m         \u001b[38;5;129;01mor\u001b[39;00m _global_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_forward_pre_hooks):\n\u001b[0;32m-> 1102\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mforward_call\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m   1103\u001b[0m \u001b[38;5;66;03m# Do not call functions when jit is used\u001b[39;00m\n\u001b[1;32m   1104\u001b[0m full_backward_hooks, non_full_backward_hooks \u001b[38;5;241m=\u001b[39m [], []\n",
+      "Input \u001b[0;32mIn [11]\u001b[0m, in \u001b[0;36mCNN.forward\u001b[0;34m(self, x)\u001b[0m\n\u001b[1;32m     28\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m     29\u001b[0m \u001b[38;5;124;03mForward pass of the model\u001b[39;00m\n\u001b[1;32m     30\u001b[0m \n\u001b[0;32m   (...)\u001b[0m\n\u001b[1;32m     40\u001b[0m \n\u001b[1;32m     41\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m     42\u001b[0m x \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpool(F\u001b[38;5;241m.\u001b[39mrelu(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mconv1(x)))\n\u001b[0;32m---> 43\u001b[0m x \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpool(F\u001b[38;5;241m.\u001b[39mrelu(\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mconv2\u001b[49m\u001b[43m(\u001b[49m\u001b[43mx\u001b[49m\u001b[43m)\u001b[49m))\n\u001b[1;32m     44\u001b[0m x \u001b[38;5;241m=\u001b[39m torch\u001b[38;5;241m.\u001b[39mflatten(x, \u001b[38;5;241m1\u001b[39m)\n\u001b[1;32m     45\u001b[0m x \u001b[38;5;241m=\u001b[39m F\u001b[38;5;241m.\u001b[39mrelu(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfc1(x))\n",
+      "File \u001b[0;32m~/anaconda3/envs/sacs39/lib/python3.9/site-packages/torch/nn/modules/module.py:1102\u001b[0m, in \u001b[0;36mModule._call_impl\u001b[0;34m(self, *input, **kwargs)\u001b[0m\n\u001b[1;32m   1098\u001b[0m \u001b[38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in\u001b[39;00m\n\u001b[1;32m   1099\u001b[0m \u001b[38;5;66;03m# this function, and just call forward.\u001b[39;00m\n\u001b[1;32m   1100\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_backward_hooks\n\u001b[1;32m   1101\u001b[0m         \u001b[38;5;129;01mor\u001b[39;00m _global_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_forward_pre_hooks):\n\u001b[0;32m-> 1102\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mforward_call\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m   1103\u001b[0m \u001b[38;5;66;03m# Do not call functions when jit is used\u001b[39;00m\n\u001b[1;32m   1104\u001b[0m full_backward_hooks, non_full_backward_hooks \u001b[38;5;241m=\u001b[39m [], []\n",
+      "File \u001b[0;32m~/anaconda3/envs/sacs39/lib/python3.9/site-packages/torch/nn/modules/conv.py:446\u001b[0m, in \u001b[0;36mConv2d.forward\u001b[0;34m(self, input)\u001b[0m\n\u001b[1;32m    445\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mforward\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;28minput\u001b[39m: Tensor) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Tensor:\n\u001b[0;32m--> 446\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_conv_forward\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mweight\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbias\u001b[49m\u001b[43m)\u001b[49m\n",
+      "File \u001b[0;32m~/anaconda3/envs/sacs39/lib/python3.9/site-packages/torch/nn/modules/conv.py:442\u001b[0m, in \u001b[0;36mConv2d._conv_forward\u001b[0;34m(self, input, weight, bias)\u001b[0m\n\u001b[1;32m    438\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpadding_mode \u001b[38;5;241m!=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mzeros\u001b[39m\u001b[38;5;124m'\u001b[39m:\n\u001b[1;32m    439\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m F\u001b[38;5;241m.\u001b[39mconv2d(F\u001b[38;5;241m.\u001b[39mpad(\u001b[38;5;28minput\u001b[39m, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_reversed_padding_repeated_twice, mode\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpadding_mode),\n\u001b[1;32m    440\u001b[0m                     weight, bias, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstride,\n\u001b[1;32m    441\u001b[0m                     _pair(\u001b[38;5;241m0\u001b[39m), \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdilation, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mgroups)\n\u001b[0;32m--> 442\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mF\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mconv2d\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mweight\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbias\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstride\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    443\u001b[0m \u001b[43m                \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpadding\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdilation\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgroups\u001b[49m\u001b[43m)\u001b[49m\n",
+      "\u001b[0;31mKeyboardInterrupt\u001b[0m: "
+     ]
+    }
+   ],
+   "source": [
+    "stats = {\"train\": [], \"test\":[]}\n",
+    "for e in range(20):\n",
+    "    #training\n",
+    "    batch = 0\n",
+    "    for X, y in train_dataloader:\n",
+    "        #print(\"grad: \"+str(model.conv1.bias.grad))\n",
+    "        old = model.conv1.bias.clone()\n",
+    "        X = X.to(device)\n",
+    "        y = y.to(device)\n",
+    "        #print(len(label))\n",
+    "        size = len(train_dataloader.dataset)\n",
+    "        model.train()\n",
+    "        # Compute prediction error\n",
+    "        pred = model(X)\n",
+    "        loss = loss_fn(pred, y)\n",
+    "        # https://stackoverflow.com/questions/42704283/adding-l1-l2-regularization-in-pytorch\n",
+    "        #to_cat = []\n",
+    "        #for v in model.state_dict.values():\n",
+    "         #   flat = v.flatten()\n",
+    "          #  to_cat.append(flat)\n",
+    "        #flat = torch.cat(to_cat, dim=0)\n",
+    "        #loss = loss_fn(pred,y) + 0.02*torch.norm(flat, 2)\n",
+    "        # Backpropagation\n",
+    "        loss.backward()\n",
+    "        #print(\"grad2: \"+str(model.conv1.bias.grad))\n",
+    "        optimizer.step()\n",
+    "        optimizer.zero_grad()\n",
+    "        #optimizer.zero_grad()\n",
+    "        \n",
+    "        #resetting the optimizer\n",
+    "        # optimizer.load_state_dict(model.state_dict())\n",
+    "        vals = optimizer.state.values()\n",
+    "        #print(optimizer.state.values())\n",
+    "\n",
+    "        if batch % 500 == 0:\n",
+    "            loss, current = loss.item(), batch * len(X)\n",
+    "            print(f\"loss: {loss:>7f}  [{current:>5d}/{size:>5d}]\")\n",
+    "            stats[\"train\"].append([batch, e*size + current, loss])\n",
+    "        batch += 1\n",
+    "    \n",
+    "    #testing\n",
+    "    size = len(test_dataloader.dataset)\n",
+    "    num_batches = len(test_dataloader)\n",
+    "    model.eval()\n",
+    "    test_loss, correct = 0, 0\n",
+    "    with torch.no_grad():\n",
+    "        for X, y in test_dataloader:\n",
+    "            X = X.to(device)\n",
+    "            y = y.to(device)\n",
+    "            pred = model(X)\n",
+    "            test_loss += loss_fn(pred, y).item()\n",
+    "            correct += (pred.argmax(1) == y).type(torch.float).sum().item()\n",
+    "    test_loss /= num_batches\n",
+    "    correct /= size\n",
+    "    print(\"epoch:\")\n",
+    "    print(f\"Test Error: \\n Accuracy: {(100*correct):>0.1f}%, Avg loss: {test_loss:>8f} \\n\")\n",
+    "    stats[\"test\"].append([e, test_loss, 100*correct])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "after 8: Accuracy: 67.3%, Avg loss: 1.200284 "
+   ]
+  }
+ ],
+ "metadata": {
+  "colab": {
+   "name": "learningrate.ipynb",
+   "provenance": []
+  },
+  "interpreter": {
+   "hash": "996934296aa9d79be6c3d800a38d8fdb7dfa8fe7bb07df178f1397cde2cb8742"
+  },
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.9.10"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/random files/learningrate.ipynb b/random files/learningrate.ipynb
new file mode 100644
index 0000000..8045caf
--- /dev/null
+++ b/random files/learningrate.ipynb	
@@ -0,0 +1,6547 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "colab": {
+     "base_uri": "https://localhost:8080/"
+    },
+    "id": "ZMZYcW3itMzT",
+    "outputId": "f2970f7e-cf26-4a67-e8d3-29bcd1a11775"
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "colab": {
+     "base_uri": "https://localhost:8080/"
+    },
+    "id": "2VftlLfttdT8",
+    "outputId": "48b47fdc-853b-4711-ae95-8c0e64510615"
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "metadata": {
+    "id": "ft7BMl1LyWP6"
+   },
+   "outputs": [],
+   "source": [
+    "from torch import nn\n",
+    "import torch\n",
+    "import os\n",
+    "import json\n",
+    "import pickle\n",
+    "import numpy as np\n",
+    "import pywt\n",
+    "train_dir = \"../../\"\n",
+    "my_train_data = {\"x\": [], \"y\": []}"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "<torch._C.Generator at 0x7f2f8c078db0>"
+      ]
+     },
+     "execution_count": 2,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.manual_seed(13)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {
+    "id": "hi0N5rB5xBWn"
+   },
+   "outputs": [],
+   "source": [
+    "if torch.cuda.is_available():\n",
+    "  device = \"cuda\"\n",
+    "else:\n",
+    "  device = \"cpu\""
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "metadata": {
+    "colab": {
+     "base_uri": "https://localhost:8080/",
+     "height": 35
+    },
+    "id": "6lO3uYsmxNYz",
+    "outputId": "b170b610-f21e-465d-fcd6-b7e6989e73e5"
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "'cpu'"
+      ]
+     },
+     "execution_count": 4,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "device"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "torch.set_num_threads(6)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Contents\n",
+    "* [CNN Model Training](#train)\n",
+    "* [Optimizer analysis](#optim)\n",
+    "* [FFT](#fft)\n",
+    "* [Wavelets](#wt)\n",
+    "* [FFT Training](#ffttrain)\n",
+    "* [Node_Training](#nodetraining)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## CNN Model Training <a class=\"anchor\" id=\"train\"></a>"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "metadata": {
+    "id": "9LpgzEw1s-xo"
+   },
+   "outputs": [],
+   "source": [
+    "# From Femnist.py\n",
+    "def read_file(file_path):\n",
+    "    with open(file_path, \"r\") as inf:\n",
+    "        client_data = json.load(inf)\n",
+    "        print(\"loaded the data\")\n",
+    "    return (\n",
+    "        client_data[\"users\"],\n",
+    "        client_data[\"num_samples\"],\n",
+    "        client_data[\"user_data\"],\n",
+    "    )"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "id": "QBu1kiw8s-xr"
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "raw",
+   "metadata": {
+    "id": "jI3ixEN4s-xt",
+    "outputId": "ed969663-9e1e-4810-9507-52cdc426650a"
+   },
+   "source": [
+    "# From Femnist.py\n",
+    "for i in range(1):\n",
+    "    cur_file = \"leaf/data/femnist/data/train/all_data_0_niid_0_keep_0_train_9.json\"\n",
+    "    # test_file = \"leaf/data/femnist/data/test/all_data_0_niid_0_keep_0_test_9.json\"\n",
+    "    # cur_file = test_file\n",
+    "    clients, _, train_data = read_file(\n",
+    "        os.path.join(train_dir, cur_file)\n",
+    "    )\n",
+    "    for cur_client in clients:\n",
+    "        # self.clients.append(cur_client)\n",
+    "        my_train_data[\"x\"].extend(train_data[cur_client][\"x\"])\n",
+    "        my_train_data[\"y\"].extend(train_data[cur_client][\"y\"])\n",
+    "        del train_data[cur_client]\n"
+   ]
+  },
+  {
+   "cell_type": "raw",
+   "metadata": {
+    "id": "wvHsSz8as-xw"
+   },
+   "source": [
+    "train_x = (\n",
+    "    np.array(my_train_data[\"x\"], dtype=np.dtype(\"float32\"))\n",
+    "    .reshape(-1, 28, 28, 1)\n",
+    "    .transpose(0, 3, 1, 2)\n",
+    ")\n",
+    "train_y = np.array(my_train_data[\"y\"], dtype=np.dtype(\"int64\")).reshape(-1)"
+   ]
+  },
+  {
+   "cell_type": "raw",
+   "metadata": {
+    "id": "K8X471SKs-xz",
+    "outputId": "cdf73c06-1323-4e76-850b-16324008d255"
+   },
+   "source": [
+    "len(train_y)"
+   ]
+  },
+  {
+   "cell_type": "raw",
+   "metadata": {
+    "id": "EpWNELBrs-x0"
+   },
+   "source": [
+    "with open(train_dir+\"femnist.pkl\", \"wb\") as f:\n",
+    "    pickle.dump({\"test_x\": train_x, \"test_y\": train_y}, f)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "id": "mAEASHr2s-x1"
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "metadata": {
+    "id": "Am_XlcSSs-x3"
+   },
+   "outputs": [],
+   "source": [
+    "with open(train_dir+\"femnist.pkl\", \"rb\") as f:\n",
+    "    train = pickle.load(f)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "metadata": {
+    "id": "evAd9ZvYs-x6"
+   },
+   "outputs": [],
+   "source": [
+    "with open(train_dir+\"femnist_test.pkl\", \"rb\") as f:\n",
+    "    test = pickle.load(f)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "metadata": {
+    "id": "9_vIFakbs-x7",
+    "outputId": "3a8b546a-186f-4519-8c0b-e853986a8101"
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "(735856, 1, 28, 28)"
+      ]
+     },
+     "execution_count": 8,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "train[\"train_x\"].shape"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "metadata": {
+    "id": "GPyZ2C8ws-x9"
+   },
+   "outputs": [],
+   "source": [
+    "NUM_CLASSES = 62\n",
+    "IMAGE_SIZE = (28, 28)\n",
+    "FLAT_SIZE = 28 * 28\n",
+    "PIXEL_RANGE = 256.0\n",
+    "import torch.nn.functional as F\n",
+    "\n",
+    "class CNN(nn.Module):\n",
+    "    \"\"\"\n",
+    "    Class for a CNN Model for FEMNIST\n",
+    "\n",
+    "    \"\"\"\n",
+    "\n",
+    "    def __init__(self):\n",
+    "        \"\"\"\n",
+    "        Constructor. Instantiates the CNN Model\n",
+    "            with 28*28*1 Input and 62 output classes\n",
+    "\n",
+    "        \"\"\"\n",
+    "        super().__init__()\n",
+    "        # 1.6 million params\n",
+    "        self.conv1 = nn.Conv2d(1, 32, 5, padding=2)\n",
+    "        self.pool = nn.MaxPool2d(2, 2)\n",
+    "        self.conv2 = nn.Conv2d(32, 64, 5, padding=2)\n",
+    "        self.fc1 = nn.Linear(7 * 7 * 64, 512)\n",
+    "        self.fc2 = nn.Linear(512, NUM_CLASSES)\n",
+    "\n",
+    "    def forward(self, x):\n",
+    "        \"\"\"\n",
+    "        Forward pass of the model\n",
+    "\n",
+    "        Parameters\n",
+    "        ----------\n",
+    "        x : torch.tensor\n",
+    "            The input torch tensor\n",
+    "\n",
+    "        Returns\n",
+    "        -------\n",
+    "        torch.tensor\n",
+    "            The output torch tensor\n",
+    "\n",
+    "        \"\"\"\n",
+    "        x = self.pool(F.relu(self.conv1(x)))\n",
+    "        x = self.pool(F.relu(self.conv2(x)))\n",
+    "        x = torch.flatten(x, 1)\n",
+    "        x = F.relu(self.fc1(x))\n",
+    "        x = self.fc2(x)\n",
+    "        return x\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "id": "bCgW8ClBs-x_"
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 10,
+   "metadata": {
+    "id": "oBGwcwZks-yA"
+   },
+   "outputs": [],
+   "source": [
+    "import os\n",
+    "from torch.utils.data import Dataset\n",
+    "\n",
+    "class FemnistDataset(Dataset):\n",
+    "    def __init__(self, training, transform=None, target_transform=None):\n",
+    "        if training:\n",
+    "            with open(train_dir+\"femnist.pkl\", \"rb\") as f:\n",
+    "                train = pickle.load(f)\n",
+    "                self.data = train[\"train_x\"]\n",
+    "                self.label = train[\"train_y\"]\n",
+    "        else: \n",
+    "            with open(train_dir+\"femnist_test.pkl\", \"rb\") as f:\n",
+    "                test = pickle.load(f)\n",
+    "                self.data = test[\"test_x\"]\n",
+    "                self.label = test[\"test_y\"]\n",
+    "        self.transform = transform\n",
+    "        self.target_transform = target_transform\n",
+    "\n",
+    "    def __len__(self):\n",
+    "        return len(self.label)\n",
+    "\n",
+    "    def __getitem__(self, idx):\n",
+    "        return self.data[idx], self.label[idx]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 11,
+   "metadata": {
+    "id": "U3boC_N4s-yC"
+   },
+   "outputs": [],
+   "source": [
+    "from torch.utils.data import DataLoader"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "metadata": {
+    "id": "sJsrQXkEs-yD"
+   },
+   "outputs": [],
+   "source": [
+    "trainset = FemnistDataset(True)\n",
+    "testset = FemnistDataset(False)\n",
+    "\n",
+    "train_dataloader = DataLoader(trainset, batch_size=128, shuffle=True)\n",
+    "test_dataloader = DataLoader(testset, batch_size=128, shuffle=True)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 13,
+   "metadata": {
+    "id": "e65Izyv0s-yE"
+   },
+   "outputs": [],
+   "source": [
+    "lr = 0.0005\n",
+    "model = CNN().to(device)\n",
+    "loss_fn = nn.CrossEntropyLoss()\n",
+    "optimizer = torch.optim.Adam(model.parameters(), lr=lr)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 14,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([-0.1487, -0.1003,  0.0990, -0.0245, -0.1023,  0.0974, -0.1139, -0.1425,\n",
+       "        -0.1949, -0.0679, -0.0937,  0.0891,  0.0577, -0.1357,  0.0814,  0.1157,\n",
+       "        -0.1997, -0.1665, -0.1546,  0.1150,  0.0895, -0.1049, -0.0980, -0.0980,\n",
+       "         0.0729,  0.1947,  0.0421, -0.0365, -0.1470, -0.1679,  0.0286, -0.0146])"
+      ]
+     },
+     "execution_count": 14,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "list(model.state_dict().values())[1]"
+   ]
+  },
+  {
+   "cell_type": "raw",
+   "metadata": {},
+   "source": [
+    "tensor([-0.0180,  0.0236,  0.1279, -0.1352, -0.1948, -0.0330, -0.1615, -0.0286,\n",
+    "        -0.1762,  0.0040,  0.1570, -0.1069, -0.1074, -0.1417, -0.1171,  0.0359,\n",
+    "         0.1276, -0.1534, -0.1773, -0.1639,  0.1334,  0.0518,  0.0586,  0.1466,\n",
+    "         0.1283,  0.0443, -0.0982, -0.1739, -0.0061,  0.1047, -0.0291,  0.1525])"
+   ]
+  },
+  {
+   "cell_type": "raw",
+   "metadata": {},
+   "source": [
+    "for p in model.parameters():\n",
+    "    print(p.data.size())\n",
+    "    p.data = torch.zeros(p.data.size())"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 16,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
+       "        0., 0., 0., 0., 0., 0., 0., 0.])"
+      ]
+     },
+     "execution_count": 16,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "list(model.state_dict().values())[1]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "colab": {
+     "base_uri": "https://localhost:8080/"
+    },
+    "id": "eqOXilqMs-yF",
+    "outputId": "06799a3b-983b-4f51-a7bd-a901c041bd05"
+   },
+   "outputs": [],
+   "source": [
+    "stats = {\"train\": [], \"test\":[]}\n",
+    "for e in range(10):\n",
+    "    #training\n",
+    "    batch = 0\n",
+    "    for X, y in train_dataloader:\n",
+    "        print(\"grad: \"+str(model.conv1.bias.grad))\n",
+    "        old = model.conv1.bias.clone()\n",
+    "        X = X.to(device)\n",
+    "        y = y.to(device)\n",
+    "        #print(len(label))\n",
+    "        size = len(train_dataloader.dataset)\n",
+    "        model.train()\n",
+    "        # Compute prediction error\n",
+    "        pred = model(X)\n",
+    "        loss = loss_fn(pred, y)\n",
+    "        # Backpropagation\n",
+    "        loss.backward()\n",
+    "        print(\"grad2: \"+str(model.conv1.bias.grad))\n",
+    "        optimizer.step()\n",
+    "        model.zero_grad()\n",
+    "        #optimizer.zero_grad()\n",
+    "        \n",
+    "        #resetting the optimizer\n",
+    "        # optimizer.load_state_dict(model.state_dict())\n",
+    "        vals = optimizer.state.values()\n",
+    "        print(optimizer.state.values())\n",
+    "\n",
+    "        if batch % 500 == 0:\n",
+    "            loss, current = loss.item(), batch * len(X)\n",
+    "            print(f\"loss: {loss:>7f}  [{current:>5d}/{size:>5d}]\")\n",
+    "            stats[\"train\"].append([batch, e*size + current, loss])\n",
+    "        batch += 1\n",
+    "    \n",
+    "    #testing\n",
+    "    size = len(test_dataloader.dataset)\n",
+    "    num_batches = len(test_dataloader)\n",
+    "    model.eval()\n",
+    "    test_loss, correct = 0, 0\n",
+    "    with torch.no_grad():\n",
+    "        for X, y in test_dataloader:\n",
+    "            X = X.to(device)\n",
+    "            y = y.to(device)\n",
+    "            pred = model(X)\n",
+    "            test_loss += loss_fn(pred, y).item()\n",
+    "            correct += (pred.argmax(1) == y).type(torch.float).sum().item()\n",
+    "    test_loss /= num_batches\n",
+    "    correct /= size\n",
+    "    print(\"epoch:\")\n",
+    "    print(f\"Test Error: \\n Accuracy: {(100*correct):>0.1f}%, Avg loss: {test_loss:>8f} \\n\")\n",
+    "    stats[\"test\"].append([e, test_loss, 100*correct])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 58,
+   "metadata": {
+    "id": "4P-VA0vcs-yH"
+   },
+   "outputs": [],
+   "source": [
+    "with open(train_dir+\"/results:128:\"+str(lr)+\".pkl\", \"wb\") as f:\n",
+    "  pickle.dump(stats, f)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "colab": {
+     "base_uri": "https://localhost:8080/"
+    },
+    "id": "641-b_VCvT2b",
+    "outputId": "cced38ab-5c04-45b2-faf4-e73327126159"
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 60,
+   "metadata": {
+    "colab": {
+     "base_uri": "https://localhost:8080/"
+    },
+    "id": "F_OKqiiHs-yJ",
+    "outputId": "65786b88-05f4-42fa-a851-03397ef4457a"
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "0.1: [9.         3.69780584 5.50521373]\n",
+      "0.01: [ 9.          3.98475619 82.61967193]\n",
+      "0.005: [ 9.          0.51492128 85.40642722]\n",
+      "0.001: [ 9.          0.41047618 88.03829502]\n",
+      "0.0005: [ 9.          0.44351858 88.21025672]\n",
+      "0.0001: [ 9.          0.67233266 87.71754375]\n",
+      "1e-05: [ 9.          1.81167539 81.52570279]\n"
+     ]
+    }
+   ],
+   "source": [
+    "lrs = [0.1, 0.01, 0.005, 0.001, 0.0005, 0.0001, 0.00001]\n",
+    "for l in lrs:\n",
+    "  with open(train_dir+\"/results:128:\"+str(l)+\".pkl\", \"rb\") as f:\n",
+    "    res = pickle.load(f)\n",
+    "    print(str(l)+\": \" + str(np.amax(res[\"test\"], axis=0)))#+ str(np.max(res[\"test\"]))\n",
+    "    # print(str(l)+\": \" + str(res[\"test\"]))\n",
+    "    "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 61,
+   "metadata": {
+    "colab": {
+     "base_uri": "https://localhost:8080/"
+    },
+    "id": "rADw-XkfKjOo",
+    "outputId": "06c54a2c-f7c2-4610-f879-3e1c2f98543f"
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "0.1: [[0, 3.6898819485246297, 4.914933837429111], [1, 3.695287103771977, 4.914933837429111], [2, 3.691172517592003, 5.505213732544667], [3, 3.6920483804158226, 4.967376059515824], [4, 3.6939517986755845, 5.505213732544667], [5, 3.6917366434742993, 4.914933837429111], [6, 3.695435837910811, 5.505213732544667], [7, 3.6978058357506574, 5.135679004817367], [8, 3.6948341036363623, 5.505213732544667], [9, 3.6921330658768343, 5.135679004817367]]\n",
+      "0.01: [[0, 0.5728003431500958, 81.8086468687115], [1, 0.5517885946725348, 82.61967193121532], [2, 3.984756194857093, 25.844258796268065], [3, 0.5739870879932797, 81.7476675407037], [4, 0.7832032613188912, 75.77779132873955], [5, 0.7142617320772638, 77.80474419171901], [6, 0.6602287095348103, 79.28654186230868], [7, 0.6738644539380036, 79.2719068235868], [8, 0.6469118589079138, 79.77071772669065], [9, 0.6788249858734946, 79.28898103542899]]\n",
+      "0.005: [[0, 0.4834194714537649, 83.79047502896519], [1, 0.466142692822562, 84.33928898103544], [2, 0.4559767278791776, 84.9515214342338], [3, 0.4488265364432298, 84.86493078846271], [4, 0.4554814101660307, 84.773461796451], [5, 0.5149212768315897, 83.05872309287152], [6, 0.4551808235472338, 84.86127202878224], [7, 0.4531376465992325, 85.06494298432831], [8, 0.4589428385362238, 84.83078236477834], [9, 0.4409179601951992, 85.40642722117202]]\n",
+      "0.001: [[0, 0.4104761779773254, 85.89670101835478], [1, 0.36889259526491536, 87.17604731995854], [2, 0.3517718464717292, 87.6992499542655], [3, 0.35526543692939927, 87.57607171168974], [4, 0.3493265717198808, 87.76266845539362], [5, 0.35079776836259874, 87.47362644063662], [6, 0.34534544340812845, 87.96268065125923], [7, 0.35734797465540874, 87.72608085858894], [8, 0.3524193228360457, 87.63339228001708], [9, 0.35447056082407136, 88.0382950179889]]\n",
+      "0.0005: [[0, 0.4435185831906085, 85.1039697542533], [1, 0.37539843543085405, 86.94310628696871], [2, 0.35873422210283473, 87.3797182755046], [3, 0.34818319706667605, 87.93097140069517], [4, 0.34545205666010914, 87.86633331300689], [5, 0.3371337376732536, 88.10415269223734], [6, 0.33852135716659976, 88.11512897127874], [7, 0.33852605533302293, 88.14074028904201], [8, 0.33997187332225476, 88.21025672297091], [9, 0.3402654077747311, 88.1968412708092]]\n",
+      "0.0001: [[0, 0.6723326555745278, 79.72437343740472], [1, 0.5084800024207409, 83.89901823281907], [2, 0.45863669222676995, 84.88932251966584], [3, 0.42524330169194946, 85.90767729739618], [4, 0.4028480564841242, 86.33575218001097], [5, 0.38621816764383715, 86.9126166229648], [6, 0.3782781209337544, 87.11506799195074], [7, 0.3759017101781045, 87.00530520153667], [8, 0.3668581307538772, 87.32117812061712], [9, 0.3569657983208967, 87.71754375266785]]\n",
+      "1e-05: [[0, 1.8116753936371826, 54.021586682114766], [1, 1.3575628893609724, 63.8148667601683], [2, 1.0996285610935432, 69.48716385145435], [3, 0.9349309672803477, 73.7788889566437], [4, 0.8294046315685635, 76.08878590157937], [5, 0.7614829346374863, 77.91938532837368], [6, 0.7032811826737176, 79.30727483383133], [7, 0.6657257149818349, 80.09024940545156], [8, 0.6363296165202226, 80.82931886090616], [9, 0.6094131586890139, 81.52570278675529]]\n"
+     ]
+    }
+   ],
+   "source": [
+    "lrs = [0.1, 0.01, 0.005, 0.001, 0.0005, 0.0001, 0.00001]\n",
+    "for l in lrs:\n",
+    "  with open(train_dir+\"/results:128:\"+str(l)+\".pkl\", \"rb\") as f:\n",
+    "    res = pickle.load(f)\n",
+    "    # print(str(l)+\": \" + str(np.amax(res[\"test\"], axis=0)))#+ str(np.max(res[\"test\"]))\n",
+    "    print(str(l)+\": \" + str(res[\"test\"]))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "id": "HGpNYzG_s-yJ",
+    "outputId": "783622a5-249f-4dd8-d242-fc6dfa47443c"
+   },
+   "outputs": [
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "Using cache found in /home/jeffrey/.cache/torch/hub/pytorch_vision_v0.10.0\n"
+     ]
+    }
+   ],
+   "source": [
+    "import torch\n",
+    "resnet = torch.hub.load('pytorch/vision:v0.10.0', 'resnet18', pretrained=True)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "id": "uZFgT6wss-yL",
+    "outputId": "10f8fc51-abb7-4c2b-f608-85229f3de29d",
+    "tags": []
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "11699132\n"
+     ]
+    }
+   ],
+   "source": [
+    "total = 0\n",
+    "for i in resnet.state_dict().values():\n",
+    "    total += i.flatten().size(dim=0)\n",
+    "print(total)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Optimizer analysis <a class=\"anchor\" id=\"optim\"></a>"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 13,
+   "metadata": {
+    "id": "mRZYP5UNs-yL"
+   },
+   "outputs": [],
+   "source": [
+    "# internal state test\n",
+    "lr = 0.0005\n",
+    "model = CNN().to(device)\n",
+    "loss_fn = nn.CrossEntropyLoss()\n",
+    "optimizer = torch.optim.Adam(model.parameters(), lr=lr)\n",
+    "old = model.state_dict()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([-0.0877, -0.1623, -0.0757, -0.1486,  0.1212,  0.1070,  0.0221, -0.1306,\n",
+       "         0.0798, -0.1525, -0.0297, -0.1715,  0.1039,  0.0143,  0.0982,  0.0428,\n",
+       "        -0.0983, -0.0698,  0.1894,  0.1400,  0.0139, -0.0640,  0.0410, -0.0332,\n",
+       "        -0.0993, -0.0840, -0.1224,  0.0723,  0.1994,  0.0017, -0.1309,  0.0044])"
+      ]
+     },
+     "execution_count": 12,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "old[\"conv1.bias\"]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 13,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "model = CNN().to(device)\n",
+    "loss_fn = nn.CrossEntropyLoss()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 14,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([-0.1695,  0.0365,  0.0043, -0.0058,  0.1130,  0.1614, -0.1921,  0.0229,\n",
+       "         0.1472,  0.0111, -0.1327, -0.0368,  0.0536, -0.0637,  0.1539,  0.1022,\n",
+       "         0.1948, -0.1443,  0.1046,  0.1746,  0.1998, -0.0572,  0.0675, -0.1533,\n",
+       "        -0.1863, -0.0397,  0.1823, -0.0121,  0.0045,  0.0704,  0.1362,  0.1068])"
+      ]
+     },
+     "execution_count": 14,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "model.state_dict()[\"conv1.bias\"]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 15,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([-0.0877, -0.1623, -0.0757, -0.1486,  0.1212,  0.1070,  0.0221, -0.1306,\n",
+       "         0.0798, -0.1525, -0.0297, -0.1715,  0.1039,  0.0143,  0.0982,  0.0428,\n",
+       "        -0.0983, -0.0698,  0.1894,  0.1400,  0.0139, -0.0640,  0.0410, -0.0332,\n",
+       "        -0.0993, -0.0840, -0.1224,  0.0723,  0.1994,  0.0017, -0.1309,  0.0044])"
+      ]
+     },
+     "execution_count": 15,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "old[\"conv1.bias\"]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 16,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "{'state': {},\n",
+       " 'param_groups': [{'lr': 0.0005,\n",
+       "   'betas': (0.9, 0.999),\n",
+       "   'eps': 1e-08,\n",
+       "   'weight_decay': 0,\n",
+       "   'amsgrad': False,\n",
+       "   'params': [0, 1, 2, 3, 4, 5, 6, 7]}]}"
+      ]
+     },
+     "execution_count": 16,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "optimizer.state_dict()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 17,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "<class 'torch.nn.parameter.Parameter'>\n",
+      "<class 'torch.nn.parameter.Parameter'>\n",
+      "<class 'torch.nn.parameter.Parameter'>\n",
+      "<class 'torch.nn.parameter.Parameter'>\n",
+      "<class 'torch.nn.parameter.Parameter'>\n",
+      "<class 'torch.nn.parameter.Parameter'>\n",
+      "<class 'torch.nn.parameter.Parameter'>\n",
+      "<class 'torch.nn.parameter.Parameter'>\n"
+     ]
+    }
+   ],
+   "source": [
+    "for p in model.parameters():\n",
+    "    print(type(p))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 18,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "8"
+      ]
+     },
+     "execution_count": 18,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "len(optimizer.param_groups[0][\"params\"])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 19,
+   "metadata": {},
+   "outputs": [
+    {
+     "ename": "IndexError",
+     "evalue": "list index out of range",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+      "\u001b[0;31mIndexError\u001b[0m                                Traceback (most recent call last)",
+      "Input \u001b[0;32mIn [19]\u001b[0m, in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43moptimizer\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mparam_groups\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m]\u001b[49m\n",
+      "\u001b[0;31mIndexError\u001b[0m: list index out of range"
+     ]
+    }
+   ],
+   "source": [
+    "optimizer.param_groups[1]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 20,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "dict_keys(['params', 'lr', 'betas', 'eps', 'weight_decay', 'amsgrad'])"
+      ]
+     },
+     "execution_count": 20,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "optimizer.param_groups[0].keys()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 21,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "Parameter containing:\n",
+       "tensor([-0.0877, -0.1623, -0.0757, -0.1486,  0.1212,  0.1070,  0.0221, -0.1306,\n",
+       "         0.0798, -0.1525, -0.0297, -0.1715,  0.1039,  0.0143,  0.0982,  0.0428,\n",
+       "        -0.0983, -0.0698,  0.1894,  0.1400,  0.0139, -0.0640,  0.0410, -0.0332,\n",
+       "        -0.0993, -0.0840, -0.1224,  0.0723,  0.1994,  0.0017, -0.1309,  0.0044],\n",
+       "       requires_grad=True)"
+      ]
+     },
+     "execution_count": 21,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "optimizer.param_groups[0][\"params\"][1]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# --> yes the optimizer values do not get updates"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 22,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "defaultdict(dict, {})"
+      ]
+     },
+     "execution_count": 22,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "optimizer.state"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# optimizer.state is a dictionary that gets filled during the first step() call\n",
+    "# as keys it has the params and as values it has the internal state of the optimizer (first momentum, second momentum etc)\n",
+    "# stored the values in vals, they are from running the training loop"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "8"
+      ]
+     },
+     "execution_count": 12,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "len(vals)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 20,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "vals_list = list(vals)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 21,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "8"
+      ]
+     },
+     "execution_count": 21,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "len(vals_list)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 22,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "{'step': 69,\n",
+       " 'exp_avg': tensor([-1.4137e-03, -1.0432e-02, -5.7605e-03, -1.5292e-02, -1.1802e-02,\n",
+       "          1.1299e-03,  2.1533e-03, -9.7591e-03, -8.8733e-03, -4.7788e-03,\n",
+       "         -1.9228e-03, -5.7594e-03, -5.4949e-05, -3.8590e-05,  1.3072e-04,\n",
+       "         -7.8018e-03, -6.1446e-04, -2.9151e-03, -3.3301e-03, -2.0083e-03,\n",
+       "         -3.0533e-03, -3.5316e-04, -8.1218e-03,  5.7864e-04,  5.8342e-04,\n",
+       "         -1.1397e-02, -8.2111e-04, -6.8639e-03, -7.7449e-04,  1.0854e-04,\n",
+       "         -4.7743e-05, -9.0613e-03]),\n",
+       " 'exp_avg_sq': tensor([9.6760e-06, 2.4495e-05, 8.1120e-06, 3.0419e-05, 1.0932e-05, 2.3003e-05,\n",
+       "         1.9296e-05, 1.5492e-05, 2.6551e-06, 1.1472e-05, 2.6787e-05, 9.0655e-05,\n",
+       "         8.7915e-11, 3.1380e-05, 4.9582e-06, 3.9729e-06, 7.5247e-06, 1.8417e-05,\n",
+       "         6.9078e-06, 2.9552e-05, 5.0895e-06, 1.6462e-06, 2.1158e-06, 2.8078e-06,\n",
+       "         2.5839e-06, 2.6732e-05, 2.0372e-05, 9.5084e-07, 2.0701e-06, 1.2862e-06,\n",
+       "         1.5106e-06, 2.5722e-05])}"
+      ]
+     },
+     "execution_count": 22,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "vals_list[1] # entry for "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# The most feasible solution would be to create a new optimizer and then \n",
+    "# vals = list(optimizer.state.values())\n",
+    "# create new optimizer\n",
+    "# for i, k in enmumerate(optimizer.param_groups[0][\"params\"]):\n",
+    "#     optimizer.state[k] = vals[i]\n",
+    "# https://pytorch.org/docs/stable/_modules/torch/optim/adam.html#Adam\n",
+    "# https://pytorch.org/docs/stable/_modules/torch/optim/optimizer.html#Optimizer"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## FFT <a class=\"anchor\" id=\"fft\"></a>"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 14,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "(735856, 1, 28, 28)"
+      ]
+     },
+     "execution_count": 14,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "train[\"train_x\"].shape"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 15,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "5748.875"
+      ]
+     },
+     "execution_count": 15,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "735856 / 128"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 15,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "weights = {}"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 16,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "loss: 4.124378  [    0/735856]\n",
+      "loss: 1.539611  [64000/735856]\n",
+      "loss: 0.719579  [128000/735856]\n",
+      "loss: 0.685157  [192000/735856]\n",
+      "loss: 0.778637  [256000/735856]\n",
+      "loss: 0.493262  [320000/735856]\n",
+      "loss: 0.423785  [384000/735856]\n",
+      "loss: 0.531239  [448000/735856]\n",
+      "loss: 0.803173  [512000/735856]\n",
+      "loss: 0.498672  [576000/735856]\n",
+      "loss: 0.453685  [640000/735856]\n",
+      "loss: 0.355350  [704000/735856]\n",
+      "loss: 0.417364  [768000/735856]\n",
+      "loss: 0.462418  [832000/735856]\n",
+      "loss: 0.361217  [896000/735856]\n",
+      "loss: 0.484760  [960000/735856]\n",
+      "loss: 0.360997  [1024000/735856]\n",
+      "loss: 0.353997  [1088000/735856]\n",
+      "loss: 0.378490  [1152000/735856]\n",
+      "loss: 0.376164  [1216000/735856]\n",
+      "loss: 0.375268  [1280000/735856]\n",
+      "loss: 0.570408  [1344000/735856]\n",
+      "loss: 0.295247  [1408000/735856]\n",
+      "loss: 0.257762  [1472000/735856]\n",
+      "loss: 0.609368  [1536000/735856]\n",
+      "loss: 0.423437  [1600000/735856]\n",
+      "loss: 0.363265  [1664000/735856]\n",
+      "loss: 0.393251  [1728000/735856]\n",
+      "loss: 0.353971  [1792000/735856]\n",
+      "loss: 0.279443  [1856000/735856]\n",
+      "loss: 0.532804  [1920000/735856]\n",
+      "loss: 0.364327  [1984000/735856]\n",
+      "loss: 0.310962  [2048000/735856]\n",
+      "loss: 0.306962  [2112000/735856]\n",
+      "loss: 0.391289  [2176000/735856]\n"
+     ]
+    }
+   ],
+   "source": [
+    "stats = {\"train\": [], \"test\":[]}\n",
+    "batch = 0\n",
+    "for e in range(3):\n",
+    "    #training\n",
+    "    for X, y in train_dataloader:\n",
+    "        old = model.conv1.bias.clone()\n",
+    "        X = X.to(device)\n",
+    "        y = y.to(device)\n",
+    "        #print(len(label))\n",
+    "        size = len(train_dataloader.dataset)\n",
+    "        model.train()\n",
+    "        # Compute prediction error\n",
+    "        pred = model(X)\n",
+    "        loss = loss_fn(pred, y)\n",
+    "        # Backpropagation\n",
+    "        loss.backward()\n",
+    "        optimizer.step()\n",
+    "        model.zero_grad()\n",
+    "        #optimizer.zero_grad()\n",
+    "        \n",
+    "\n",
+    "        if batch % 500 == 0:\n",
+    "            loss, current = loss.item(), batch * len(X)\n",
+    "            print(f\"loss: {loss:>7f}  [{current:>5d}/{size:>5d}]\")\n",
+    "            stats[\"train\"].append([batch, e*size + current, loss])\n",
+    "            weight = {}\n",
+    "            for k,v in model.state_dict().items():\n",
+    "                weight[k] = v.clone()\n",
+    "            \n",
+    "            weights[str(batch)] = weight\n",
+    "        batch += 1"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 17,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 87.2%, Avg loss: 0.367197 \n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "size = len(test_dataloader.dataset)\n",
+    "num_batches = len(test_dataloader)\n",
+    "model.eval()\n",
+    "test_loss, correct = 0, 0\n",
+    "with torch.no_grad():\n",
+    "    for X, y in test_dataloader:\n",
+    "        X = X.to(device)\n",
+    "        y = y.to(device)\n",
+    "        pred = model(X)\n",
+    "        test_loss += loss_fn(pred, y).item()\n",
+    "        correct += (pred.argmax(1) == y).type(torch.float).sum().item()\n",
+    "test_loss /= num_batches\n",
+    "correct /= size\n",
+    "print(\"epoch:\")\n",
+    "print(f\"Test Error: \\n Accuracy: {(100*correct):>0.1f}%, Avg loss: {test_loss:>8f} \\n\")\n",
+    "stats[\"test\"].append([e, test_loss, 100*correct])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 18,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "dict_keys(['0', '500', '1000', '1500', '2000', '2500', '3000', '3500', '4000', '4500', '5000', '5500', '6000', '6500', '7000', '7500', '8000', '8500', '9000', '9500', '10000', '10500', '11000', '11500', '12000', '12500', '13000', '13500', '14000', '14500', '15000', '15500', '16000', '16500', '17000'])"
+      ]
+     },
+     "execution_count": 18,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "weights.keys()"
+   ]
+  },
+  {
+   "cell_type": "raw",
+   "metadata": {},
+   "source": [
+    "with open(\"vecs.pkl\", \"wb\") as f:\n",
+    "    \n",
+    "    json.dump(weights, f)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "* 1d on flattend\n",
+    "* 1d on layers\n",
+    "* nd on layers"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 25,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# working on the random initialization\n",
+    "flat = []\n",
+    "for v in weights[\"17000\"].values():\n",
+    "    flat.append(v.flatten())\n",
+    "conc = torch.cat(flat)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 26,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "1690046"
+      ]
+     },
+     "execution_count": 26,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "len(conc)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 27,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([-0.1440, -0.0482,  0.2070, -0.2534, -0.2413,  0.0336, -0.2401,  0.2761,\n",
+       "         0.2361, -0.2687])"
+      ]
+     },
+     "execution_count": 27,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "conc[0:10]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 28,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import torch.fft as fft"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 29,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "1690046"
+      ]
+     },
+     "execution_count": 29,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "flat_fft = fft.fft(conc)\n",
+    "len(flat_fft)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 30,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "845024"
+      ]
+     },
+     "execution_count": 30,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "flat_fft = fft.rfft(conc)\n",
+    "len(flat_fft)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 31,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([-3912.2754+0.0000j,  -685.3215+117.2780j,  -718.2836-68.4478j,\n",
+       "         ...,    33.0949-6.6868j,    49.2176+6.2663j,\n",
+       "           -9.9980+0.0000j])"
+      ]
+     },
+     "execution_count": 31,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "flat_fft"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 32,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "reverse = fft.irfft(flat_fft)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 33,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([-0.1440, -0.0482,  0.2070, -0.2534, -0.2413,  0.0336, -0.2401,  0.2761,\n",
+       "         0.2361, -0.2687])"
+      ]
+     },
+     "execution_count": 33,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "reverse[0:10]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 34,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(0.0004)"
+      ]
+     },
+     "execution_count": 34,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(conc - reverse, 2)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 35,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "top10 = torch.zeros(flat_fft.size(dim=0), dtype = torch.cfloat)\n",
+    "top10[0:84502] = flat_fft[0:84502]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 36,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([-3912.2754+0.0000j,  -685.3215+117.2780j,  -718.2836-68.4478j,\n",
+       "         ...,     0.0000+0.0000j,     0.0000+0.0000j,\n",
+       "            0.0000+0.0000j])"
+      ]
+     },
+     "execution_count": 36,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "top10"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 37,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "reverse_t10 = fft.irfft(top10)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 38,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([-0.0439, -0.0400, -0.0357, -0.0312, -0.0269, -0.0229, -0.0193, -0.0162,\n",
+       "        -0.0134, -0.0109])"
+      ]
+     },
+     "execution_count": 38,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "reverse_t10[0:10]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 39,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(40.2866)"
+      ]
+     },
+     "execution_count": 39,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(reverse_t10 - reverse, 2)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 40,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "d10 = torch.zeros(flat_fft.size(dim=0), dtype = torch.cfloat)\n",
+    "d10[-84502:] = flat_fft[-84502:]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 41,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "reverse_d10 = fft.irfft(d10)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 42,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([-0.0026,  0.0042, -0.0056,  0.0065, -0.0065,  0.0053, -0.0029, -0.0008,\n",
+       "         0.0059, -0.0120])"
+      ]
+     },
+     "execution_count": 42,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "reverse_d10[0:10]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 43,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(43.7672)"
+      ]
+     },
+     "execution_count": 43,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(reverse_d10 - reverse, 2)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 44,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(44.8886)"
+      ]
+     },
+     "execution_count": 44,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(reverse, 2)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 45,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "rand = torch.rand(conc.size(dim=0))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 46,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(754.6744)"
+      ]
+     },
+     "execution_count": 46,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(rand - reverse, 2)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 47,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(29442.5273)"
+      ]
+     },
+     "execution_count": 47,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(reverse_d10 - reverse, 1)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 48,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(27450.3555)"
+      ]
+     },
+     "execution_count": 48,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(reverse_t10 - reverse, 1)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 49,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(30432.2695)"
+      ]
+     },
+     "execution_count": 49,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(reverse, 1)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 50,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(44.8886)"
+      ]
+     },
+     "execution_count": 50,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(reverse, 2)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 51,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([-3912.2754+0.0000j,  -685.3215+117.2780j,  -718.2836-68.4478j,\n",
+       "         ...,    33.0949-6.6868j,    49.2176+6.2663j,\n",
+       "           -9.9980+0.0000j])"
+      ]
+     },
+     "execution_count": 51,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "flat_fft"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 52,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([3912.2754,  695.2839,  721.5375,  ...,   33.7637,   49.6149,\n",
+       "           9.9980])"
+      ]
+     },
+     "execution_count": 52,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "flat_fft.abs()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 53,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import matplotlib.pyplot as plt"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 54,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "plt.plot(torch.arange(0,len(conc)), conc, '.')\n",
+    "plt.title('Parameter Values') \n",
+    "plt.xlabel(\"Parameter indices\")\n",
+    "plt.draw()\n",
+    "plt.savefig(\"Parameter_Values.png\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 55,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "plt.plot(torch.arange(0,len(flat_fft)), flat_fft.abs(), '.')\n",
+    "plt.title('Model Fourier Frequency Representation') \n",
+    "plt.ylabel(\"Absolute frequency value\")\n",
+    "plt.xlabel(\"Parameter indices\")\n",
+    "plt.draw()\n",
+    "plt.savefig(\"Parameter_Frequency.png\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Normalizing"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 56,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(-0.0023)"
+      ]
+     },
+     "execution_count": 56,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.mean(conc)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 57,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "conc2 = conc #+ 0.0016"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 58,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(-0.0023)"
+      ]
+     },
+     "execution_count": 58,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.mean(conc2)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 59,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "flat_fft2 = fft.rfft(conc)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 60,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[<matplotlib.lines.Line2D at 0x7ff775a99c10>]"
+      ]
+     },
+     "execution_count": 60,
+     "metadata": {},
+     "output_type": "execute_result"
+    },
+    {
+     "data": {
+      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYMAAAEFCAYAAAABjYvXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABYNklEQVR4nO29e3QU153v+/1VtwQIhBDijZBAGGMQjjHCRtiOH7Gd2Ll2cEwc/JiZ+MTPM8m5kztnZo1PMuGySO4c587kjues43tt7Hg5k2NsYmNj7LGTGL8fgEEEjIQtHgIJ8UY0QiBQq7v2/aNql6p2V3VXv1ut32ctFuru6q5du/bev/17FgkhwDAMwwxttHw3gGEYhsk/LAwYhmEYFgYMwzAMCwOGYRgGLAwYhmEYAMF8N8CLcePGienTp+e7GQzDMIOKpqamk0KI8cl+r2CFwfTp07F169Z8N4NhGGZQQUTtqXyPzUQMwzAMCwOGYRiGhQHDMAwDFgYMwzAMWBgwDMMwYGHAMAzDoIiFQVN7CE++vxdN7aF8N4VhGKbgKdg8g3Roag/hvmc3IRzRURrU8MKDjWiorcx3sxiGYQqWotQMNrV1IRzRoQugP6JjU1tXvpvEMAxT0BSlMGisq0JpUEOAgJKghsa6qnw3iWEYpqApSjNRQ20lXniwEZvautBYV8UmIoZhmAQUpTAADIHAQoBhGMYfRWkmYhiGYZKDhQHDMAzDwoBhGIYpcmHAiWcMwzD+KFoHMieeMQzD+KdoNQNOPGMYhvFP0QoDTjxjGIbxT9GaieIlnjW1hzghjWEYxkZGhAER3QLg3wAEADwrhHjc5ZjvA1gBQADYIYS4NxPnjodb4hn7EhiGYWJJ20xERAEATwK4FcBcAPcQ0VzlmFkA/huAq4UQ9QB+ku55U4V9CQzDMLFkQjO4EsBeIUQbABDRSwCWANhlO+YhAE8KIUIAIIQ4noHzxqWpPYS12zpBAO5cUG3t/qUvoT+isy+BYRjGJBPCYCqAg7bXnQAWKcdcDABE9CkMU9IKIcQf1B8ioocBPAwANTU1KTeoqT2Ee1ZtRDgqAAAvN3XixYcaLbMRF7FjGIZxkisHchDALADXA6gG8BERXSqEOG0/SAixCsAqAFi4cKFI9WSb2rrQHx34ujQHyYWfi9gxDMM4yURo6SEA02yvq8337HQCWC+E6BdC7AewG4ZwyAqNdVUIBMh6zeYghmGY+GRCGGwBMIuIZhBRKYC7AaxXjlkHQysAEY2DYTZqy8C5PZEXRgB+eNV0NNRWcnkKhmEYD9I2EwkhIkT0YwB/hOEPeE4I0UJEKwFsFUKsNz/7JhHtAhAF8PdCiKyF8djNRALAqo8NufP8xgPo69cR0Agrl8zDvYtS90swDMMUExnxGQgh3gLwlvLectvfAsDfmv+yTmVZKYgAYboNdGEIBCEM4RDRBf5x3U4AYIHAMAyDIixH0dQewso3W6Ar7mchABpwI0AXwPLXm9lkxDAMgyIUBjKpTKUkqOHhr9dBcwgEwUlnDMMwKEJhIJPKbGs+CMD3Gqrx2Lfn4Jd3XIoAGe8FNeIoowzBznmGGdwUnTCQSWU3zZ1ovScAzJtSgab2EJoPd0OT6oHdbsSkjKz39Os/teK+ZzexQGCYQUjRCQPJ/pPnHK8/aD2O+57dhBc3d6A/KiAARKNcmygTcL0nhhn8FF0J66b2EJat2ohI1OlBPnbmAsIRHfJdAiejZQqu98Qwg5+iEwavbuuMEQQEYHFdFVqP9aA/YuQZ3LVwmqOAHZM6XO+JYQY/RScMvAoaPb/xAO5fPB0tR87g1nmTOb8gw3C9J4YZ3BSdMJg3pSLmPQHgQr9uZSJvbutCy+Fu1gwYhmFMis6BHOoNe36mC+NfOCrwwuYO3PMMR74wDMMARSgMGuuqEPAZMRqO6Hh1W2d2G8QwDDMIKDph0FBbiYe+Xuf5uSonUn5oAsMwTBFRdMKgqT2EZz52r45NBDxybR1KAwQCUBogLF1QndsGMgzDFCBF50Beu60TUY/tPgngTF8E31s4LebZyAzDMEOZohMG8dwFOoCXtx5EVBcoDWq4s8i0gqb2EMf6DxH4XuePYu37ohMGdy6oxktbOhCNLVwKANZDb/r6dazd1pnWzSykQSHrA4UjOkqDGl54sDHvbRpMFNK9TATf6/xRzH1fdD4DYOChNnGPgaElpBpaWmjF2bg+UOo0tYdwzzOb8C9/bB0U4cZ8r/NHMfd90QmDTW1dMQ+28SISTf15BoU2KGR9oADlr+bSYC1j/eq2Tqtu1WAINy6Eez1UKea+LzozUWVZaVLHp3ozC604W77rAw1m9VndO2Qy3Dgb5if1XgPAk+/vTekcg8k8Vgjke55lk4wIAyK6BcC/AQgAeFYI8bjHcUsBvALgCiHE1kycW6X5cLfvY9OZ9IU4KPJZH8hNUyqEPvHD0gXVeGXrQfRHBUoyGG6cTQEp73U65xjMAjyfFGsdrrSFAREFADwJ4GYAnQC2ENF6IcQu5bhyAH8DYHO654zHyZ6+pI5Px4lcaIMin7u8QtOUkqGhthIvPrw4432XCwGZzjkGswBnMk8mNIMrAewVQrQBABG9BGAJgF3Kcb8A8CsAf5+Bc3oyrnxYUsfvPdaTpZbklnzv8gpRU0qGbAj2XAjIdM4xmAU4k3kyIQymAjhoe90JYJH9ACJaAGCaEOI/iMhTGBDRwwAeBoCamtRKTC9dUI01n3d4Jp6p9EU8YlALFK/dfyHs8gpNU0qGXNj2s9E36Zwj1e+yn8E/g6mvsu5AJiINwP8D4P5ExwohVgFYBQALFy5MyaTfUFuJGeNGYu+Jc4kPBlAxoiSV0wDI/Y2Ot/vnXV7q5MK2n03SOUey321qD+GeVRst/8qLDy8u+EXOjVzM3Xxr68mSCWFwCMA02+tq8z1JOYB5AD4g4wH0kwCsJ6LvZMuJPHZkKeBTGHSc6k3pHPm40fF2//k20wymHZBKIWhVuSSde7V2WyfCptodjoq0EzeTQba7sqwUod5wymMtV3N3sI2rTAiDLQBmEdEMGELgbgD3yg+FEN0AxsnXRPQBgL/LliAAgJ4LEd/H3lI/KaVzbGrrQl+/GZven5sbnWj3ny8zjTq5lt9Wn9ZkzTWDQatKZQFXv9PUHsLabZ14pakTkWhqC6Fa7qXlUDea2kNZv89yjMk5RwACGmHlknlJP7UwV4v0YBhXdtIWBkKICBH9GMAfYYSWPieEaCGilQC2CiHWp3uOZHj8rS/x5VF/TuERQQ2PfXtOSuepLCu1QlN1+M9vSGdXlmj3n6/duX1yhft1LH+9GboQBaEa++mTQteq3HaygLFL9yq46CagV77ZYi2mgPtCmKgtdy6oxstNRpIeAOw81I37nt2U9fssx5hsuwAQ0QWWv96M2ZPKkzp3rhbpfI+rZMmIz0AI8RaAt5T3lnsce30mzunFbz5xL1/txtgkI4/sqPkMfvIbMqGeeu3+82mftE8uIkJUF1Y2bz5V42T6JBtalR9B5KeNqha6dlsnXtl60DLXvNzUiRcfcn5P3f2+3XzEsZgSYjNo/bSlobYSLz7UiJVvtGBHZ3fOTCByjIX7ddhDPnQxUEXA76KbiUXa78ZrMAVVFF0Gcn8SwUFHTp9PWcVV1WU/D1fLpnqaT/uknFxrt3Vi77EefH7AKEehi+QzwlMhUxFWmdSs/AoiP21UtdCTPX1WwUXA/Xvq7vfWeZOx5cAp9Ed0BDTCXQunxWgUyfTXl0fOWH8HAtk3gdgX8J7z/Xj2k/2W9llZVmqZkPyajtJZpAebY9gvRScMkkEXqSedSXVZTjY/5bCzqZ7afzugEQ6nIehS5dVtneizSWMN8Z9JnQlkkTnZp/YdcmNdFYIaoT8qENAobn9neoL7XVj9jIlQbxgaGeNVIyOXpiRAlmZQYi6I9pIUbrvf2ZPK4wo7v+NzU1sXImYBMALwvYbcPBfEvoDfXD/Juha75hTRBX6+bmfSpqNkyNbGK99BGEUnDOSk8UuqSWdSXU7m5mXKhug2aOy785e3HsTqzR2u5oNsodp0ASAYMBbgTA9y++/JInPAQJE5+zmiwrAvJ8o7yURAgL1dfhdWP2OisqwUGhEAYye8dEE1li6otnwG9VMqsGJ9M8JRgQABv7jjUty7qCZm95toN9xQW4nlt9Xj7eYjuHXeZM9j1WvLxdMCpfNb+kjU9mg0cI+jLpu8TI7BRPc2VWd/vrWNohMGyQgCADjV2+94vXpzhzUZklE1cyXV4w2ahtpKvLqt0zIhuC2O6Zw30YIV0/dEaD3ag5VvtmRskKvXf+2s8Y7P7U14+sN9iJqNiuoCT3+4D6v+aqHr76YaEODVrhcebPQt+OMt0k3tIax8swVRXUAjWNdr/85PX9tpaQlRAfw8Baeq/VzhiI4tB055/kaqm5pU54jMbZDXuGbrQWhEjoioG+dMxJ92HbO+Q8r3M73Q3rmg2iGYpFYGIOlzNbWH8MSG3XkPQy06YaABSCaneMa4kdbfqzd34Kev7QQAfLznJAD4CluLZ6pQj0t3UCZSUb0qcKYjrPy0u8XFgR6NDjguMzXI1esfVz4MpQFyLTJ37MwFx3fV1/bre7v5CIy9t6FdJmvecrsvP7rhorQntF3jigrgnV3H8NGeE47wXbUel66LlPo5GfNHsjb3dMb+prYuh48kEhUgGEEKsp2PXDcTH+w+4Wq2zaRZR72O+ikVjs3O0gXVSfup7CGzGuWvNHbRCQNrRvvkhtkTrL/fbj7i+Ozt5iMxwsBtUU1kqpD4GZSJFu1EKurSBdX4/ZYORHQgqBmv0xVCidrd1B7Cy1sPOr5DMByLdsdlJga5m4li6YJq1z5bdkUNdnTudLxWcZuMpQna6Ra/f+j0eQQ0goiKlB2qbvdeXq9sn4DxlD4ZvhvUKGbzQ5Sa4z6bPq10FuTGuiqHjyQYIGhEiEYH2hnPbJvMdXnNP/n+4dPnccH0i/X1x252BJBUH9qFvQbg6ovG4Sc3Xcw+g0yQrJno/1w/oFLfOm+ypREAwK3zJjuOtaurGoCF0ysxa2I5Tig7M68m+LE1uiVvqRmXiVR0TdNAug5NM55dlO7OKFG77Q5FZ0cIzJ5UntFYa6/rd/vdexfVoKPrHP7QchS31E+yBLt9wqu+jkunVmD57fVxzTZ2LXDF7c74fTKvOx5upkgvgS2v96kP9+Ed0wwiACt8tz8qYsabLoAVb7R4mnm8FrxEYysd7TIdQdNQa1SVVX0G8rWf7/sZg173wP6+/XwCQNXI0pjNybwpFdb9BeI/a0Ltl3wJAqAIhUGy9EcHVGo5Mb18BvZUfB3A5wdC+PxACMEAIRggRBVThTp57IOysqzUio+WN98teUtOerljtS8Sduw7l0jUjKyI6tb5gwEz0iiFXavdsVg1shRPbNiN+smjUT6ixOEstceAy8iOVM0lqsMwGUeo/Tee33gA4YiO5zcewM1mtvmypz+zNKeVSy6FphF08762HDljPenM7RyqFrhmS0dMMlQ0jplGNUV2dJ3DY9+eY0Vi2U0fdkE3f9oYvPvlMehiIPtWjg034mmebiZN+1j90Q0XufZlOjWJ0g2ekPfcXpJC3ou12zqtpDov7VcdM/brBWDNHbdNk31eqnSdCzuuq/VoD36+bid0AWzcdxKapsXN9s5UUEkmGPLCAPD/tDOvXUg0KnDPohpMHTPCuqGrN3e4ZuLKm+22A1GTt3QxMNkTmZbk79mjqRxx/nK36ucB0QrSsXjBFjb68Z6TIADDSgacpU9s2I1P9py02qxR/HBO++/bJ8PqzR34+bqdVnRIqlFRbhFC2w+ehrmWI6IDr/25E8I2yyNRgRc2d2DNloOu8erHFS2wNKg5BKGbzdd+faopctXHbaipGomXtx60+s1NYKs7yGljRmBPnPpbbuGmgLtJE0js9FRrEv3DKztQN34UxpcPc82AdiNZP4MdtZSGZs4PNanOj/Zrny9BjQDTGR3UCMGA5jA/Ac6EN2mqk9RPHu0QVPZxG9EB6EZf29vktknMpxCQsDAArAnRerQnrgP5zgXVWLP1ICJKnKJUD+2RRfZBoWbieplt5C5h7bZOnOzpwwe7TyAS8V5kJPbfs6/1Ms5fmnES7VrtuJlSVOy72B/dcBF+ctPF2HLgFML9OjQz+Ucu7l7alirIpleNRNvJc45dWKpOP7cIoeOKE/ngqV7XHV9EF/jHdcZYuHdRjdUf6obg4onleOzWOdZuVa3JpJoe7l883WGKFMLQRBPF7dvNRX/uCHkKgitN06Xq2JQLvCrMjvf0+TIjqte998Q5qzLwmq0HsSaL1UtlH9o3I7oQIBqYF9I3Fe43NlLxfCaO640KyC1XJCpw96Jpjk0dYPT9/Yun4+mP2hyCgACU26oeb2rriglhDmgECGEJ54f+fSve++o4hEe5lnzmGrAwAPDC5g6s3daJ2RPLHe+rDuSG2kqsMW2XMoLDbWe0dlunY1CQskOOZz9tPdqDlzZ3QAcQIOCeRTWon1LhWGTUAaMmnOkwtBUZ5996tMeKUycC/tRyFJVlpa42dNVGKhcwtwWT4BRQdmFGAGZPKk8YoWWfmLqAa+lxv04/dTEO9YYd8QTNh7uxuK4KOzoHIp8a66rwh5aj5iJiHGvXrJa/3gwA1sIa1AglAUIkKqyoldajPdjU1oVb5012mFjcQgbP9EUQoIGYeCLEONm94vZbj/ZYfgM3CMBFE8vxf333Ujz5/l7rvBf6dTz14T4881cLMUEpwTKhfJgvM+KdC6rx4ucd7oIzy9VLpYanIgSgaYTlt9Vb/qFVH7dZNYsA92jAyrJSEBFICGgaEDV/Wgcwb0qF64ZllSIIAGOhrywrdYy/oAbY900PXTMD5SNKUFlWauWCSNRNYr5zDVgYmPRHdEwYPRzAwEKhOpABp33fS3qru6gbL5kQY790S+5pag/hH1/badndo8LYud1pZo7KY9wGjF2jeL/1uNmQgTj/qC5AACIC2NHZbUXZzJ5UHvN76k6xxVZ6wE5tVRkevnZmTB/YbbmqgF2zpcOxYMuFyE3zAIDqMcPx1zfMAuDuiPOKBnrhwUaHZgAAL33egZvmTLQEBAGYNbEcV86osvwhn+w9iZNnB8JKdSEcJohIVODS6grMm1phCQK7sHvu0/344dUzrH5VQwYJzgQ4XQCf7+9yxK17LQCqiUlFAHilqRNLF1RbiVhy8X5n1zGs3tyB+ikV1vslARoIwUxgRnyn5Wjc4IxEjtx0nc+a6SNRieoCod4wVm/uwKqP26w2qkXs7Av2ivXN1m8Jgbghxas3d+B/vLvbNWJLF8L4LSEQNX1Q37hkIN+BAJzpi6B8RAlaDnc7wmMle4714C9/sxm3zpuMUG84r7kGLAxMAhrh0etm4obZE+ImnUlfQFQXVh2U2ZPKHc7O+ikVju9cbwtfVW2fm9u60HK4G3ea4ZHqoNt/4qzDcXfXwmmembKv2KpJAsaAsjs41aG4ZksHvlk/KWYAqppL/eTRDtOGpONUL1a+6YxaUQWJKmB3HTmDnYe6rWip5sPdiOremSGHTl/A8td3QoBcVWs1Gsh+HYdPn3f8li6Ad788hpLggF24sqwUK95o8RRGRMCIkoAlsHQYwvTLI2dw54LqmAV67/Gz+OlrO/HNuRMd7ZpQPgz/+40XG9FVmzsc33l9+2EAxhisn1LhuQCo0W5uRG1BA6OHlziSKp/7pA0dNrOYbJvdjBiJCjyxYXdMVMsfWo56nrPU1JDcnLKpJmKpiDiSqOd8P/71nd0xwkqaRO3n14gckW+6cJpy7FqRXau1Y0SMGZqEfacf0Q2zo9VmAGu2HIQwQ4ADpkZpP/c6895/vOckrp01ztLg85FrwMLARIexoz3XF8HBU73o6Io1VzS1h7D89WZrMEV0gZ++ttOxA3u5qRPXX+zMipUVTZvaQ1YkiyRsOixf3noQP7x6Rsw5x44stUwn4ajA7mM9rpmydsegRJjnlk4xIZwJeTKePmBG02hm/R7V3NPTF3GYW6ZXlVmLirqD6TlvLD7ShGQXsCNKAthgRsSE+3X8/PVm192eeg3GZZnOS1PjUMs+uDlwn/pwn+vvfa+h2rILu/WbHV0HNnx5LGbnKx/s4rVAHztzAUFtIDb+6Jk+rHijBStur49JjJQ9kKgkszSFvLT1IE4rmfOSQEBDz/l+LHt6Y0y4b/f5fufiFRX4r7/fjlvqJ8Fcg6AD+HTvSWw5cMqxaN9SPwlPfeSsCEwY0A4BOJyyUrCUBDXc1TCQiNVnmqzmTxvjW0tYu60zbiLpxrYu13EkACtqb8AUGXucrgt8rboCy66ocbRnzZaOmGMDGuHqmVX4yEMoH1N8MvYM+GVXGpvLz/efwt7jZ2O++5EZlBEwTV/sM8gTMopEIge+/XkHXvH09rfCET0m01X6F3719pfwWnfCUYENXx13vEcAxiiOsNA5pxorBY3qGLTapgPLrjAWv57z/Y4Jvf3gabzTctRSX/ujAq1He2IiTzRyahUTyofh0OnzjgSrpvaQIxYeAK6cPtZyjEsn7Ed7jCxRAAkFgewD1Wn3sunEl6GRy2+rx5otHRgW1DBrYrllalHt4wCsLFF5jW4Cw46AdwAWYcAm/dwnbQ5/x7IravBB63FHiQQZ9WL/uXGjShHq7bf6IqILrHyjxTXXYfXmDjz7yX73nA6T+dUVeObjNtdaTF3nYrOqD3T1xizybkL+sW/PwdEzF6ydLGD0TXuXoR06Mm9tuQ/hiI49x3oc2sg7u45hw65jvkNU1QxrlYmjh0PTzriOJ2mSdCt/bb+OHZ3daD3m1HInKlrt1MoRuP7i8Wg+1O3yKwYXjR+Jpt6w02cIOHxBL30eK2TsbRFCZL3Aoxtazs84iFi3/ZDjtd+szsV1VQjYevaD3SewenMHtpilnb04H3Y+oU0AlhMUMGy8deNHOY6RnzV3nnb9zWCAMM80W8kdviQSFTHqvzR72HdTqgD7/EBowP4pDAFy37ObYpybH+05idWbO9DUHsKT7+8FANy/eDqmjS1DdWVZTFsvGj8S40c5+3hK5QgEA0arA2T4W+RiE47oePrDfVixvhk7Orvx+YEQVm/uwDstR9HUHooRkN+cOzHGRJHI1g0Y2kbA5cDyYQN7qZHDgtDMY4IBwuxJ5TjtMqHrJ492CIOus2GQYsDb0dmNe57ZhKZ2Y7w0tYdw11Of4aev7YwrCABDwKuCgGC0P5moYreInHPhaMxxAsZu/3hPH0qDGgJmhI+dUy5CSGBAu5LjQ16vnab2EN79Mr7TvKw04CoIAoqme/WscbE/YENqnbItj1w3c2DsacCJnj68+HlHjDCQlxsMEO64vDqm/6+YXmmNu1e3dSZMjNXFgIadS1gzADB1zHAcOh1bt2baWOeC5Vdaf7j7hGM7G4nG7ghVAppRfVJth12A6EKgzlZLCTC+s3pzB46ccd89XT97gpUha4ZUW4tCSVCLUf+l09zuN9CFe1a1gLG7lw5WN577pA1tJ84ZJhx4140KaIR5UyscO08AOBQyyjwAMBqvcOzMBYfpQ8DQ6n7z6X6HfVYDcNm0MSmp3pdONRzGqq1/1cdGv6k7a6Ebi9znLsK/7aTT/DhgBnMiI00A4PtPf2ZFvCQirKxEV06vxHWzJ8RohYmI6CImi3n/SfdwVgFjzK+4fSBjfvn6ZkTMiLa68aNco8QA4M/tIat8ikbAL82KqxK3cE313O8pGrVk3pTRjvDQRD4XXRhaZ1Qf8E2t/M48y8T5zq5jrvPgkknlON8fxfxpY/BP/7Er5vNT58JWO/b4qJIsx3BN1cikH+mZDiwMAIwbNcxVGHz3cmeIn19prT52UyPydMJKojpwoT9256Ues0HZJX3Qehzn43zvUKjXcjjbJ1WAgBW3GyF5NVUjY5zmrUd7MHtiOSaOHo66cSM9FxIZ4725rStmIQKcoaLx1rO6qrIYQSCx213VBdZrZ69GbmiBgWc8ALAiS979ynvXKZk3tSImKAAwFo/VLip/SVBzNW0IeBfLc0Nm2foVBCoaGdFSMldENbklQq2zNbasxPPY/oiOUG8YP7rhIjS1h6DBuDcajA2J9BWp2OeKLoB/VJ5F0FhXFROuqSI8VJ4Z40Ziyf/8xBrDqqavQjC0ZWFez9ptnZapNF7fyWs40NXr+vm+k+fQ1B5C69Ee1w2CF2u2dLAwyDX2uHM7aiXOjeZOLVkunjgKPX2RhMd5OaUkAY1iBEbbyXO46ZIJnoJm15Ee1wVTF4a/oak9hFBv2BE94oyi6Mb86tiFULZHxng//eE+tJ9ynwx+UHfMfmn12GkFNILQhSWABjKLOwAySocQIaHKDhjmgZ+5RJUAsQJ8ZGkA//7AIvzq7S9dj58xbqTneFNpOdzt6QvyQ0AjrDazqa+aWZWUIJDYv6P6r9Tjes7348n39xplHWx+qFBvGDcpJaa90AViSnHc9rUpnhsFALhxzkTXzwfe89ffGsEYG7oRTEGAI9EtVYR5TZuSXD+MSLzckRFhQES3APg3AAEAzwohHlc+/1sADwKIADgB4IdCiPZMnDubqJNHDZP0y64jPZ6LViImlQ/DUXNBIAiUDy8BMLC7HFtW4siCdMPLxPP7rQetEFd7yJ8aLrndY/HSdWEJlHQEAZD44TOe3/NYzRfUjEHLoW70KpPZHpnk14YebxEjcu4Z5V8HXKLRAMR1Pqqc6Onz5dPwQmpHEV0k3Gi4QYCjzlY82z0AK0PX3mYpJK6fPcGXMCAgJrwzniAAgLJhmdnTRm3RAv1RgZYk7lUies73+woNlgQ14NHrZmbs/H5I24FMRAEATwK4FcBcAPcQ0VzlsD8DWCiE+BqAVwD83+meNxfMU0wD6dycqA6MCCbf3UdtO8OIbiSx2BlTVorGuqqUFo1IVFg+gT7zQeuAe7KdGwKGKivLeSRDUDMiX9wcs8ngJQya2kMxgiArKBKlNxzFfc9uwtk+d9NddxKOwdO9YUfceq6xX5maVR/vePWwDV8d9+1vmzl+pMOvkyjRDgC2d/g3vSTDLo9ky1RY9XGba7i6F/Pi5Jtki0xEE10JYK8Qok0IEQbwEoAl9gOEEO8LIeSo3gQg+8/JywBWJq/J7zYeSOv3LqRq/I3DOJfwyWQwq1xb2atN7SHMnlQe9zt2ojrwro8dn0pENzSOVDUC6/we30+2lHmq9Lk0oK9fR4mHlCtNYkPQF9HRnsQCkg3kBiEdmX0+HPHlOAWAm+ZMdLyuGpk4gu9g6HzCY1JhVIY0DsAYj08n4cDf3tmNx99yNzVmi0wIg6kA7E826TTf8+IBAG9n4LxZR91xvN3snYXphxQKhsZwXtEM5k2pwNMf7kvJHiy/Lye6zF5Ndqd/Kg8x0YWMgDQfOdEIGD08vknPzuK6KtffySXyGeFuDnS/RKPCM+JHRTV5uuVGqGhZCpDvi+e1ToFk52gih3emyWmeARH9BYCFAP7Z4/OHiWgrEW09ceJELpvmimqS6c/Czj5ZQkrm6Qetx7EhiZ25fWkJBgiLzRo2MvOxsS55R6NbctdQp+dCrDlocsVwHD3jfxfbdvIcxo3Kb9/KBXHdnxNvECaNHoavzxoXoxWd6u3HmQuJAyiA2Ig9P5oBZUkLjBelV4xkQhgcAjDN9rrafM8BEd0E4GcAviOEcA2REEKsEkIsFEIsHD9+vNshOUWth5KJnX26qE34bN/JpJ75bP++EAKrzGxVI97d+NSraqYXwQDnLqq47RsOnb7g6Utwo+Vwt6e5KVfIR4V2+PBdyMWzRMk6i1d7SkWN2Nt64FTC7/T4FDTJElSz53LMMY/coWyRiVm8BcAsIppBRKUA7gaw3n4AEV0O4GkYgsCfvlgAFMDan5BzSSwuKlHdaVvXBfD0h/vQUFuZ1MCIFIDG5Jd8iy2vmHg3CN6x67lC+o8m+Qhz7D4fwcd7TsY47pPx36i+hW4XDUslXb+TF5RnYSCAnPoN0p4bQogIgB8D+COALwH8XgjRQkQrieg75mH/DGAUgJeJaDsRrff4uYJCnbd5HhuelJVkbomT8f6UxE8e7vafSJVv8i22kjFDTx4zImH5iWwj/Ud+NAMvklEce/t1xwI4tix/ZjK3Zyjkmlz6DTLiLhdCvAXgLeW95ba/b8rEeXKNnueJ6AcBo1IlMjRwx5aV4PG3vkwq67UQzGfFiN9aWNnkEzMuPpDGTihZP+y67YesApG94eyYgAYLNWNja3hli3xrzQWNOobzbUP0oi+Djq5ZE8vj1q53I1vRHEOd3SkmKmaSw92GwzuXY9++ALoVxxtK3HF57qLweRongVtMeSHgVhMoVeqnVGD+tDFJfWcQuQwGFfn2FwADPo7jZ3PnzLQvgIPJH5UNXvMRxZUpWBgwDpoPd2NkBpNtmMGNNAEmERCUNvaaYJnc6AxGvvBZxyoT8KxnHOw91oOOAtiRMoWB9diKHJ5zm8tzDYYqmU58iwcLA8bB/pPnYhLbGCaXpFrBlkkPNhMxDs5ciGCcj6xPhskWhZDpPxRhYcA4CEd0VLIwYPJIYcbsFT8sDBgHAsBXR/Mf0sgMYVga5AUWBkwMQzt+g8k3pZy4khe41xmGKSjCuYxjZSxYGDAMU1Cw/zg/sDBgGKagKNCqL0UPCwOGYQqKQVAfsihhYcAwDMOwMEjEk+/vRROnxzMMU+RwOYoE/PMfWxHQCL9YMi/fTWEYhskaLAx8ENUFfvraznw3g2GGDE3tIWxSnofMZBcWBgzDFBxL/7/P8t2EIQf7DBiGicv0x/4j301gckBGhAER3UJErUS0l4gec/l8GBGtMT/fTETTM3FehmEYJjOkLQyIKADgSQC3ApgL4B4imqsc9gCAkBDiIgD/CuBX6Z6XYRiGyRyZ0AyuBLBXCNEmhAgDeAnAEuWYJQB+a/79CoAbiYjzDBmGYQqETAiDqQAO2l53mu+5HiOEiADoBlCVgXMzDMMwGaCgHMhE9DARbSWirSdOnMh3cxiGYYYMmRAGhwBMs72uNt9zPYaIggAqAMQEEQshVgkhFgohFo4fPz4DTWMYhmH8kAlhsAXALCKaQUSlAO4GsF45Zj2AH5h/fw/Ae0IILkfFMAxTIKSddCaEiBDRjwH8EUAAwHNCiBYiWglgqxBiPYDfAPgdEe0FcAqGwGAYhmEKhIxkIAsh3gLwlvLectvfFwDclYlzMQzDMJmnoBzIDMMwTH5gYcAwTFxGlQZyfs5Hr63L+TmHOiwMGIaJS/PKW3J+zse+PQd//63ZOT/vUIaFgU/mV1fkuwkMM6RorOO81FzCwiABY8pKcMf8KVj342vy3RSGGRLIRamhtjKv7Rhq8PMMErB9+Tfz3QSGGVIIrlqWF1gzYBimoOB01PzAwoBhGIZhYcAwDMOwMGAYpsAI8qqUF7jbmRjK8pBkxDCS0SNK8t2EIQkLA8ZBUAOGl/CwYPLHvCmc05MPeNYzDiI6T0Ymv3AwUX5gYcDEcLj7Qr6bwAxh6iePzncThiQsDJgYzocj+W4CYzIU86/K2WeQF1gYMA40AFPHjMh3MxiTfJtMpPsol0KJaxLlBxYGjIOSEg2zJpbnuxlMgRDVjf+1oaiiDDFYGDAOgkS4c0F1vpvBFAhSM8lliYhNbV3W3yyEcgcLgzgMCzhH4lAYl8NKOMegUCiE8SZlAOWwMXYzkZ5vO9kQIi1hQERjiegdItpj/h9Tc5aI5hPRRiJqIaIviGhZOufMJYGAs3uGwrisqRyBV7d15rsZjEm+BUKpuSGqGzcyZ+d8p+Wo9Xe+r38oka5m8BiAd4UQswC8a75W6QXwV0KIegC3AHiCiMaked6cUFnmjGoIFODIzHSbjp65MCSE3mBAABie59oMcpd+vj+a8m8kO0b/YBMGI4exppor0h1pSwD81vz7twDuUA8QQuwWQuwx/z4M4DiA8WmeNyeUKSaTEQVoQolmeOWuLCvlpLMCYURQw9jyYXltw+HT5wEA3ef7U/6N4UnOm1vqJ6X8XSZ10hUGE4UQR8y/jwKYGO9gIroSQCmAfWmeNyccNCeCRM9TOxIxeXRqC0bA5e4vqK1E8+HuNFvEuBHUKCmzR78uMLVieNba4wcpBKaNLUv5N0YkUetq/KhSPPbtOdbrfGtG+aY8h5pRwp4mog1E1Ozyb4n9OCGEQByzOhFNBvA7AP9JCOG6rhLRw0S0lYi2njhxIslLyTzTlHj7QhyWAQJ6Iymq8C53684F1WynTQIvE4jb21fNrMLEJAR3iUZ5N9nJ81dXpi4MLq+pxKzx/nwOJ86G0dQesl5PGeI5Lz19qZvnkiXh+iaEuEkIMc/l3+sAjpmLvFzsj7v9BhGNBvAfAH4mhNgU51yrhBALhRALx4/PvyVpkjIQSwuwgNuo4UGcu5DagFFNTGNGBNFQW5l0aGkh+lJyhVfIpdvbH+05icqyUt+/PbxUwxFFO801cmeeqlAKEPDodTPR0+c/q90eWppvYTiUSHd1Ww/gB+bfPwDwunoAEZUCeA3AvwshXknzfDlFrZHy/YZpeWqJNwSCyNCUOXMhgqb2EBpqKzFnkv/Es/Gj8mvXzifJ9nyoN+z72L5+HWeTWESzQflwI4iiO4l2A0YoKsGIyGs92oNjZ/p8fU8jZ2hpqDd1X0WhUXhbSSfptu9xADcT0R4AN5mvQUQLiehZ85jvA7gWwP1EtN38Nz/N8+aEM3meiH7QCBgezIxdURfGrqypPYSvjvb4/t7Jc2EMG6K23dFlQdf3vbSlZEotaETQshDgP2dSOS6r9hckUGre11PnkhMGQhiCsj+iY82WDt9C88Y5E9FQOxChPiOHIa3ZJpUtWy617rRmsBCiSwhxoxBilmlOOmW+v1UI8aD59/8SQpQIIebb/m3PQNuzzp9ttksA+P3WgzlvQ6IMzO8vnIb6KZmp8kgwFqtNbV0xAzdeM3QhsGjG2Iy0YbDxD9+ag3/67qUx98ltDb9j/hQrOscPOoCaNBy3XiyorcTy2+t9HSsX4xnjR6V0LgEgHPEfenHD7AlxXw9mSlJY2UvcojyyxNDczvlEVekDeciNjxdnTQBurp+EBTUxuX4pUVVeiobayhi7NiF+BmrVyNJBFQJov42pbrwvmjAK//TdS3HvohrMnlQeIyx1Zf27dtY4PHH35eg41ev7HCNLAzh6JvPlxOunVPhOLNxibogevW5myufrj/oXBmok2wetrm5IB7malhoBUytTd2iPTcJfJLmQhCBNFxYGcVBV+myqrKVBzdVOP3Occ0dmP0YAWLutExttDrd0OGVGcoR6w44JtnB6JUqDGgJkDJhSZYfzf9w8G5v3u7eh0HzLk8qHWUJdI+CK2tQE6cjSAO5dVIOm9hDueWZTwnyPfSfPAUjOTHR5TSXGjkx+AYmHBmOTc6LHnw1fljNvqK1M2WRRl4RWoZ7imA9hmK2SFRoN7OYDGuGXd1yK6y9OPbDlmM8+tzNozETFjlq986IsVfO8aMIovPhQI65zGWj7Tpx1vC4f7rRRE5Cyvd5tnG1q60JjXRWCNmnw54Onsfy2evztN2fjl9+9FH9z08W4Y/4UTK8qw6PX1uHeRTU4c97dvzIpxRyIdPHS4o6f7UO/uXLrAhhTVprSA9jbu3rR1B7Cq9s6Xc0gQjm9XFSTqQh7/ewJOJfh0MLSEg2NdVW+7dfXzhoYk5VJCKbasWX4+qxx+KfvXopHrpvp2cd24RzQYosk5tNnUDduJB64egamV5XhoWtmYPakcuw+5t+XZkej1HwGuazNxMIgDuoubmmWqnmONJNynvqoLeYzUuwYfREdpUENBEObuHNBdcolpwMBciSeBQPGQtFQW4nrbbbaSFSg+XA3GuuqsPLNFvzLH1uxbvthHOjqxXOfHcDjb33pOtDvmD8Fl1aPSalt6VAa1HD71ybDLRJYnVwCwMollyad3HP6fD/uXrXRc4ddoggjmdXtN7SUYOzgj3RnLrS0esxwLL+tHg21lZjgM7PZPraSqU90zaxx+N0Di3Dvoho01FZizSNX4ea5E3HR+JEOrfNoTx+i5k2J6gKtSuBCV5KO60xy9kIET33UhgNdvXjqozbcvWojthwIJfxeQHOarr45dyIWpqiB5tIyzcLAg1yaNxbXVWGthw333itrHK+XXVGDFx9qxN99azZefKgx6bwAsv1fP3m0FSdPAL7XUG1FcoxXFguCoTWEI7pj4Q9HdKzbfsj1XPl4LsKV0yvxw6umY932w+j3YW7t7g1j+evNKSX39Ee9g3qDiuNv15EzAPyHlgY0QmNdFSoy+NSvztMXsOKNFqze7C+6Rw3zTIQMJ5WbFDsNtZV49LqZ+O6C6rhmo+c+cW6Ibp03OeF5Rw93j+hKl7PKE//6fdZ+uXiC04f0we7UE2iHJ5G9nS4sDDwQcCa/wOV1pigfUeIqfOZXV+Cxb8/Bo9fWOUwyDbWV+NENF1kLd0NtJeZOTrzwzq+uwLASw/Y/rETDsitqLF/AsBLNofncuaA6RgNprKuyQg3teO129xzr8eUAzCT/cOsctJgLrxclAaMsRDBAaOo4jUiKunhJgDChfJjr7k219Z48G8bqzR2xznkynMsqD14zAw21lb61UVUT8SIc0fHz15vx4uaOmM+mVo5wXItqajuVIOZ/yWVTcM2scVhxe70jPBQAmtpDuO/ZTfj1n1px4ORZj18ALigF8e5dVIOLJsT3OSSTyAcAZT6TR8cogjjgs5zIl0d7HD6kcETHoRSTByOZLj4Wh6ITBpm8IHWQNdZVZUVjaKyrMspAKD9ePqIETe0hPL/xADpO9eL5jQccqfp2EpULuGjCKPz89nosv60eV100Dstvq8e9i2ocr+0TuKG2Eitur3dM7obaSiy/rT7GD7CgthJXTo9Vg9dtP+y5m/Lbj6OHB11/24u12zoTPlD9+tkTcM2scfjG7AnQUxQE1WOG46WHF1tC0w9vNx+JiZYRAvj8wCl8c+5AWS+NBp4D7Pd5wBOSqGEU1d01mnuvrME9V9ZY90bXhWMD1J8gsuXNL47g070nsfLNlphxKrVKXRiRVl495lZ+Yl6C0OmoGrqVgD6fC+zZ8IBgIgDLrpiGm+bGLb/myZHu1KLCcmmhyI5+lUcyGYilqvQNtZWYOHoYjvrMpvTDnEnl1iK85LIpWLf9sPVZ1chSPLFhtzWJ+iM6NrV1ue663kuwA993/CzuWbURIEIkqmPLgVMAgJVvtqCvX8fGfcakv3dRjfWbK99sQTgycGzz4W680tRpLQoEoMRmErjrqc9cbfJ2Ahpw9xXGOV5w2Z2qNNZVoaw0ACCxrRYAXmnqjBvxEQwQPmg9jkhUIBAglAQ1RCI6NI3w4DUz8MYXh3HodOzE1WggkaokQPi3exZY9+GFBxvx1If78M6uY9bxcyaPxueKfbl+8mhs64i9jr5+w/QW1AhRXUAjsjYifs00UyqG41Ao8e4zQEZWcCSix8yVyrJSNNZV4WXzHgdMH5IkkYlLCpmwyziVWmV/RAcRQTc7U4PRp3KcbO/strLgAWD15g7HnHDDT/ilXFQ1guWjSMTXplbg8wOnjL4wtQK/vpYYUtzgB3PoNCg6YZAp3OylTe2hjAoCAJhtCxVVbexvfnHEmmCEATuyyqvbOhOqkwJAOCqs4hX9ER1vNx+xFqKILrD89WbMNoWTfScX7tex/PVmx45SA3D1rHH4yU0Xo6G2Eqs3d7hGPmgU67S9c0F1jKPQiz/ZFlg3aseWoeNUr9Wu/ojuGY44flQpLq+ptH4zEhX45twJGFc+zFos7IIgoAENNZXoi+ioGFGCj/ecBGDsmFuP9jjMdM/81UKs3tyBt5uPWHZuVRiUjyhBn1vkEYB3vzxm9VNEF1ixfuBezJ1cjl1HvPtLI+DiieVoag8ljD4JBDSsuL0eod4wdhw8bfWFDDltPdqDqMwLUAovxdOA5ldXYHunofXoIlarllrl281HUD95NJ77dD/6owLBAOH62RPwzq5jEACiUacgebv5iHqqWBKsl0HNCBII9YbRc77fNVDDjUV1Vfibmy7GUx/uw3tfHceLn3cgqBlBF16pE6OHBzF/2hh8ZI4Vqw1BDfOrK2LGRCL6ksjRSJeiMxNlCs1FIqfjMyACHr22DmOUB+as234YP3ttJ5raQzETyL74CvkjLiSz6SgxfQQlQQ23zpvssAvrYsAsIHdyATL6QhdO00IwqFmCAACe+3S/e9uUxkV14OkP9yHUG86ICjxx9DBHuwQMh3zQJUDbLTJFwBCmL37egaeVRWLS6OHY1nEaOzq78dGek9Z5ogJY/npzjCnk3kU1VgTN+4qmJjcXy65wBgRI1EU8HBVYu60Tqzd3xBUE8rvlw4IoDWrWhCa4r5ERszzE4dPncf3sCRhu+pBKSzRUlpXi5+t2ImpqQBHFTCQ8qvIRgC86neYv9fqlpvnp3pN47tP9iJrjSYdhtpO+rJKgUxtxcyCPLRvwsZUECMM9snQJwNdnjcOaR67CvYtq8KMbLkpYMK8kQAgQMNwMwW092oN3vzyGqC6MjVFUoHqMt0n2G5dMwKf7YteJ7zVUpxSansvQ0qLTDIiSf3i3Rkb0R78tUkaPihhVN1lHlZ0ll01B+YgSXH/x+Bi194XNHXh560HctXAaCAOLe8A0G1iLUNTdTLR0QTVW+zC5zJlUjl9+91Irl0D+zvLXm6ELgVLbRGyorcQLDzZiU1sXKstKsWJ9M8I27UNXO9mj0wMaxThot7aHrAVAaiap4lYz50xfxKzp4/xlIYBx5cNQGiD0R4XlAJYakMqR7guek1EKTvu9aGoPWX27X8kPGTuy1PK7/K9NBxIu8ICxmPnaGQPY2NbluF+h3jAqy0rxj+t2WtdAMBbfHZ3d2NHZjdLggJbQaEa02RVMogFNtKk9hK5z7g5kt9r16vW/uq3Tutf2cSTDlmXb7eMSMARsR9c5PP1Rm3WOUG8/NDLqGD1y3Uw8/eE+dLqY9koC5NiwNLWH8HKckjIagLsWTsPUMSOs6zbmhvO49jhZ5K9vPxzTFxoZocWzJ5Xj91s6kExS8Ygc1vwqOmGQyspSN34Ufnj1DLzfetyy++qIXfz9hwUCv1hyKV77cycOnupFY10V/tByFOt3HPYsPBaOCuw+1uNo/m1fm4yyYUG80tSJaFSP2TVJGkwHbiIVdIG5GAEDWo4sp+A2EeXi1dQeiunWSFRg5RstWG46l394TR1++trOmHPe9rXJaD7Ujb0nzlnvnToXxso3W7D8tnpLdfey1Seibvwo7O86Z6ntMgIq4qJeBwKEpQuqsXRBtXW9rUd7oBFBiFinarxdWalyL2S0TNjMA5lR5YzJP3XOyO5uPdrjEAQEYI6LGUhGcLUe7bHMU/E4eS6MV7d1on5KhbW4v9Ny1HENMyeMwr7jZx0mtebD3ZhqOm3VkXnjJRNixotfxo4sxZPv77X66OWtBwdMjIrpkDAw1ty4uX4SnvvsgJXcJ2BoZ+99dRyPXDcTj1w309WcKAC0Hu2x7vWmtq644aGlZkSdbMeT7+/17V+wn1NFF4Zv7oUHG7Hmkavwj6/txJc+zaSTcvhwo6ITBqnsMvceP4sVb7TgroZqa6BqFLv4G5m5SCjZZaLYjoOn0R8VeGPHYeim6h2zo7YRjugOzeDNL45gzSOLHYuX14T5h1vnYNnTn7m2ze7oVRetFx5sjDsRAWNX5zaJdnR2475nN+GFBxstx/Mv3mzBeVuA//6T5/Cr710W07b+iI5Qbxg/uuEiNLWH8Mwn7mYmwHD6Sp9IMEAQwjChlZj25ve+Mu3eBKy4vR6zJ5VjrW0nKpFdbxdyK99sMZ228v54NsM4B4BLqyuw7IoaR5/ZfSz9Zt/aEcI4Rl1Uv1ZdgeW31+OeZzZZi93YkaX4vpnzIc+xZksHzoWjjsXczqHQecshr5HheOxXLmZkaQAlAbJ25oEAYc2WDkT1Abu6dPKWBDU8YqtH1FhXBQ3eARpXTK/Eto7TVl9u7+zG1vYQSoPGAiu1Q4Kxo/9w9wnrPPVTKizB4TYON7V1uQr3qGnGaqyrQoBin8/RHxX4uakZlQQIP7x6huf6cJl5H1Sn97ASDWFzPNtbcMf8Keg6F0b95NEOrQVw95PJ4I/GuqqksphvmpNa9FIqsM/AJBzRcaKnz7KTqzs/wFhEpo9zj3kuDQ7sqyJRgec+aUPYTEqSNthELK6rcrXhq3kFbtizPO0QjAVHhoeqi5afHV+8tof7dYeW8fVZzkieiaOHW227d9FAXkNJ0LBRP/n+Xjz94T7PHRjBqMx676Ia3LeoBiu/Mw8BGrCJf9B63BIyujAinqSJS32qWFSxgatJdDfOmRg3eqN8eBCBAGHnoe6Y8Em7j6UkqGGxMnaCAcPkotrApVBZcXu9NRlPnQvjqY/aLNPfvYtq8PqPr8Gvln4tJvbfrbW6MBPilC6dMW4kXnx4MW6eOxGXVVdg1vhRlkYV0Q07v5rQKGmorcTD19Y5fi+gmUlmAcJ3L6+G/blskejAGBOA5c8IaISZ40biuovH42vVFfjhVdOx8s0W/PpPrbjv2U2uodOyb9VrlQEVm9q6XGtDaTQw98JRgY1tXVYehQzIkHk0qiCQ1/zCg434r9+ajZf/81X4p+9eapXYeOLuy/G7BxahpmqkY34QgLuvrMG9i2rwzbkTHWMiXlu98BtanAmKTjMote18kmVc+TBP26WkbtxI7D0emzRTVhJAODLgnEr2AeIytnzlknnWbiboET3kRUNtJeZPG+MIcRQwnHutx1owe1K5I8TPy+yksnRBNV7ZehD9UYGABiyoGTBJqea062dPcKjssqyF3OVKLaeyrNQKXY0nbQIaxajuEdOPEtEF2k6ecxx/0iwP0VBbiZqxZY7oLzVCTO2LR6+biRtmT7CcqCpnL0QcJha7z8DuY5H2dzvXz57g2OnLqCOpUYV6wzG77rebj1ify3OsXDLP4QcAELMrtmsGdoEgHegf7zlhCEHlGo+fuRBXS5TJkQLGLnLZFTWWfX3ttk6HUA5ohAAESkzNYN6UCisizR7N03z4DIQQcUOnZSSS/b5oBKxcMs86VvUQVY8ZjrlTKhxj8VxfBMGAZplcpZkynsZt74+G2krH/QAMjc2OgOEfsIdoq+uJ3zUq2QzwdCk6YZCKGCAYaqRcdOLtwB+5biY22MIAJb1K7YNSpaRzwAxULwlquHL6WHxxqNsRx2xfmAMBDXpEt6KH3AaUFz0uQkhgYKL96IaLEgo8lYbaSrz48GKH7XWrGcaomtNkxVMvU5vs3yff3+vLefzgNTMAwDIjVJaVWn2vCyOyxM44Wxz4GMXns1C5t+oCDhgLsFeb5PvS7BZvoqq7WHt8+r2LamIWFTcTpKpFyIqyD3+9Ds9+st9y+i+/rR7Nh7uNEiOKz8C+8I4oCViF9XQR20avSCd7G60ADYJDSD/94T7HsTdeMgGXTRtjjbFNbV2uyW5RXSCoGc/ri9enod5wjHPbHpatBo5UjRqG62dPwAe7T1jmt7aT5xDUCHdfWYM7bW1PBTkn3YpErnyzxQoLVtcTOZfWbuvEGzsOo+eCd3RTsoEw6VJ0wiCapFYwqXwY/vKq6UktjL+841L87LWdMTV6JMEAOWLdNQIeumYGykeUOHbEnx84FbM7efL9vYhEdSvmeu22TmsC2238bjz+1pcx4ZF2IWSPFEp2Iqjf8dIu/GoelWWlCQUBwYgMsvs41PIMFcqCLwvCAU7BALhXnbX7D+57dpMloKwdsLnL1jFQGkDTKCZjW5aylte94vZ6Rz8kqh8lTWlPfbgPx89cwLIrnAJD9fWsXDIv4a4WAJ75ZL9lgtvw5TEENXLsju9fPB0tR844tBQvfrfxgEMQ/27jAavv7GVHSgKER66bGROJ53a/1Ygmr2txC7t+YsNu/OSmi42HMSk/vvOQoQ2vuN3Ibfh070nopq9pypgRKQkCKQDsczioUYyPwG5+jReY8ef2UFxHsjC/n47QSoaiEwbJpmgc7enzLQgkctL83FR77YwaFsBVM8dhw5cD6qkugOc3HrB2oVYyl82JKlEXUwJ8ZSCrGbCAsYj5XTSSQd1Rx9tte51T5hnEEwgChtnH3l+q8607jiZiFwxur+3Y/Qcyoe7WeZOtHfeeYz0D0VpCxGg89lLW4YiOlsPdePGh5DQwAJhv2027tU+OA3XcuPHqtk7H+JSL4bIrB8InkxkTasG1DV8ew5Pv78Xh0+cdDuK7Fk6L+V31fl9WXYF5Uyt879Ddxsune09ii7mhko5xqe3Y++knN12MLbZM4sOnz1u+CXsobrz+sAtjwoBZLhIVjvQfzeYPcwvUsGv5fh76k044e7IUnTBItMC48dSH+/DMXy1M6jtSIPz3t3eh58JADZOzfVG891WsGUku5KqZo+d8vyOSws10sXZbp+dOWw7SCy4lOr9xyQRLXc008bQLt89UU5dfzcAe4aOL2Aeky5Lebv2TyGRlRxXCP7npYgAD5TrsbVXLNACxY0549IMXXlFeXu3zY0tW2yTNW0sTLMBeZsnpY8uwvbfben0uHMWv/9Qao224FddT77eq+cSjqT2EQ6fPW6VDYJqE5ILffLjbNKkaC3NAI+j6gDYs59TabZ14pclIMHx560GAyHJwa2bQiJfmbRfGjj7VyErG0wBcfdE4S1txC9SQ9zioka/SFn7D2TNBWsKAiMYCWANgOoADAL4vhIgNBzCOHQ1gF4B1Qogfp3PeeGhxUsW9OJ7CowWb2kMxiVgS9fx2G/Omti5rkSPAYfu1h3naB2S8nbYcdG5s+PIYPtpzIq5pKZN4LSJN7SHcs2qjlej14sOLHTs9gjGX3QKKJpilIuSOfYbiwF92hXeeRDILqJtG8+T7e2NKdhOcpb4ldie79D8lg9viIc8h+9WPw9OOqgndPHdijPlGJZ5QUiNbZK0mP9pGi61AnwYj6iteOKlbe4Ia4Z5FNaifUoGVb7Y4tGdZL0sXAOkixi8g/RYyysmYt06tyUvzBgbGkn1jQDA2XB/vOeHYRFiOYmXsOawCUeGaKKcymDSDxwC8K4R4nIgeM1//g8exvwDwUZrnS8jI0iDOxHHKuKGGAfrBLYFFLmrSxhw1o2+WXeEcmMNKnAW7Eg3EeDtMOUjdNINEv5tJ7Db3gGmekju/tds6LaEpyywsXVBt9YOM7Gg+3I2XPh+ocSRgRIDYj5MRP2o0jle/JeMsV/tZ9m243yjqJnePbgu96mT309924ekluBJpDPGw7yoJwGXTxiT8bjyhdOu8yY4EuJIAIRoVICJHBI3bddozf7UA4ZWmTkSiia9pU1vXQP2sqGHvVxMlAWDNloOWqUoXcH3WtHyCn30DZ/cN2cOdvcyfUruQWtCj183Eo9fNjLnvXmNPFSiJGDSaAYAlAK43//4tgA/gIgyIqAHARAB/AJCcPSZJvnHJhIRVDlVSieVtrKtyJPAAclAZyS3PfXYAUQhomhazQ7EX7Hp+44GkVH8VOege+O0WnFZMKHKA5yI8zTFplaJ3atQKwXuyvPflMUc46PaDp2OOcwvx8yIVZ7n9u2qJB79hiIlwW+Td+iPe4pwI+65SwN8uM542JUtD/KHlKG6pn4SaqpFWKRN7BI3KprYuh0+hfvJo7DzU7eua7OYlexiz2tcrl8xzFFOU/gS7oGmorcRdC6dZD/ex+4Zk+Q7pGHYTUvKcSxdUY+22zoS1tdwiiewCxUujV68/V6QrDCYKIWTxlKMwFnwHRKQB+DWAvwBwU5rnS0jZsOQvacfB046yuX6QO8GVb7Rgh61Il64LtBw544gIUlV+e2noZFV/r7aoNY9mjR+JSWNG4NZ5k3NiImo0E+YGdmcDCXN3Lqi2yiLbI2vcFs875k91hEPeUj8p5rhkQm3TJR1hEg+3Rd4tsTAVX4EkGZ+JJJ42JZ+tEY7oeH7jASxdUO1Ls7VrWJpGWFxXhdZjPb6uye81zJ5Uju9fMQ0th7rjCpo7zYXczawjzYJ+hJQMGJC+Bz9ajuxfKVD+8jeb0BuOLxAKSjMgog0AJrl89DP7CyGEICI37eevAbwlhOhUn+frcq6HATwMADU1/nZ+KntTeGD1n3albluvn1phLv7GpctqoFtc8geA1KJC/DBrYrnDeb6/qxf7Tp7DlgOnsuJEVhfkhtpKa3fmVvTOK7JG/Z2b6ydZ4ZABjXBz/aSY86ZqNkn3GjMphNwWebffT9bUlegcfvASgOrYFfAOMVZ/b/lt9dbYeH7jAd+bID/XYPdJBTQ4nNluVQTU/rSHjPq5Hkc/mL4HgeQ0NxlE0Rv29hsQCizpTAjhuZsnomNENFkIcYSIJgNwe8LKYgBfJ6K/BjAKQCkRnRVCPOZyrlUAVgHAwoULU0q5cKti6YdkbmRTe8hS9SJRw7H1zbkTMb58mGUSkvVxVPGXzk4vHrKOivRFWA8a6c+8z8BrQfZT9C7R7xgx49JpEFsZNB2zSTKs3tzhEGzLb6uPa0JIFnVRAuAp5FLVTuwmyUxoiOrYVYv+xfv9UG/YoUX43QT5EYZ2n1REB26+ZLxniK78Tbumbu93P0LK3g8BjQCiuIUkvaifUhG3OGOOc87SNhOtB/ADAI+b/7+uHiCEuE/+TUT3A1joJggyxdiRpcCJc4kPtJGMbV1NTgKMaIrLpo2JGdxSlVy7rdMRKSTtholsjslgnzT2B3i4VV91u6Zkdp7xFuRkFi6330kkLBvrqqxy424hnpmgqT2E5a83WyavcMR4EFCmhZC9r5IxUSRzHSvWN6M/KrC5rSttDdFrYfbzm+lsghKNKXUeTSgf5lvbTkVTdxPkqWhuaukWr/blwswLpC8MHgfweyJ6AEA7gO8DABEtBPCoEOLBNH8/adQSBImQj2H0m/yiFjczfiO2hlCiHayboEgXOWmefH+vb1txKmaXTGk3br+jOm1lfLajTTbNIRvI0gkSjSiu6S8TZENjVKO47CXHUyUdLSVVc1civHxSfsiUKS2V60nkDxhUtYmEEF0AbnR5fyuAGEEghHgewPPpnDMRagmCRAiBpNLT1XBDAK5PIIs3yLJp6mhqD2H7wdMgImhw2u7dSKUtmZrYiXaabkJKRqbI+PZs7JykyU06PGWYrJcJLBMk26d+tDl1VNpLjudqt2knU854N39VKtnesk3ZElKJaKyrci13LfnOZVNy2p6iy0BeuqAaaz7v8F0mVqPkK4O+8GAjntiwG5+Yj0KMuDyBLN4giyco0nFSSkeaVa/epYaOSqadjMni11kp+zdbPhe1TV5CKlOT0/68ZHuuhF+flR9tTu6Y7SGMuco7yRbxnseRzqYk3nezGb1mz3uoLAvidO9AZdy3mo/iL5OMckyrLTk5Sw5pqK3EQ1+v8/3Q6wevmZF0ZzfUVjoScHThbpf3GmRei026kTJqIpyux9bQ8duWdHBb6BJhn3AAcOj0edeokGzsoN3I5MKvsnpzh/VUODmG/PYT4F+bkztmNVEql6aHTJOrAAJJNqPX7PkXAQLmTR2DT2xJfbkW3EUnDADgzS/8J50lekC2F8229HrAqGuejIPObbFJd6CriXB+J36md7zJLnRqyQEZt+1VbjjTO+hcoz7XWH1uQSKSLbPRUFvpO+qn0MmFZmgnm8JHvZZb503G5raupOdvpig6YdDUHvJV80OSqgtSPkRFkgl7bLoDvaF2oFY6AWnXbE+FVBY6r7jtSFS4lhXwi596P/lYHNWyDupzCxKRijaXTU0nl2RKk/V7/7MpfNyuxR6Snuv5W3TCQEaf+CGgIemCYhI3R3W6Mf2ZGOj5nvSpLHRucduRiOGgdysr4BeviZxvjUEKx2RNaRK7Ga4YFvhkSXeMx6uj5XaubDqY7dciBVSiqrLZouiEQWOd+8Ox3dASZETHw602vp+Y/kTkezFPl1QWOnXCAcATG3ZbDyRJVT33msh+Vf9sag9uTzvzQ7r+hmIlmXsVr46WG9mckzKB9WRPHz7YfcJ3WYtsUHTCoKG2EjfOmZgwmQMwzBCp7uTfb41NtibktpaISj5NH3ZSWejUCWd/IEk66rnbRPZb4qAY/Q3FiNe98poP8epo5brdy57+zPGoUyB/EV9FJwzUR/DFQ9Mo5Z282zMQ/FaGzAaFunilw50LqrNiO/Wj+uc6asUv6fobihG3ewXEL+/hVUcrl6zd1hkjCAi5dxxLik4YqOGVBGDO5HLsOuIsYGc8QDt+6d14LLuiBjs6dzre05A/zcA+IcL9uvV82EJYwJJFFWzJZJT6JZHqn+uoFb+k62/IJ9nSXN3uVSJhnu0kQj+oRmqNgHtcoudyRdEJA5nVJ+WBAGIEgfxAR+q7Plnbfd32QzhxNhzz0Plco2ZGp+N4zSdN7SE8sWF33nfl2XYcpkOq/oZMkOqCnk3N1eteFaIwt2NPCgxohF/EcWTngqITBn59BvanG6UyUOy13TUySlkvu6Imb4uGnBCZcLzmA3slWPtzafM5kQe7Mz/TpLOgZ9vspt6rRMK8EMyqMimwUDYcRScMAOCR62bi3a+OO4qNqRAGHl6dyk2wD25dAF90dqP1WGomp0zRUFuZMcdrLnGrBGt/uHi+JwljkM6Cng+zWzxhXig+oULacBSlMGiorcQvlMfgqQQ0SitOu7Ks1FFgSn24Rb4iewrZvOGFWgmWAJSWaCwICox0y1AX0rj0ey2FEqGXC0hkqQxwuixcuFBs3bo1rd+Q9md79AVgOI8JSEs9fPL9vfiXP7Y6FrBhJcbvAd6RDEwsUjOQSWd3LZyWMSfaUJrMuaCY+jPRteTKlJTpPiWiJiFE0s+aL0rNABjo4FvnTcbGfSedIVxpOo+BgTpA8lF7y2zPRMjGg0qKmWztGgvBLlxsFJJZI10SXUsuTEmFNEaLUhioHfyNS5wOZU2jzET/EAEQ0DTNsZMt1LDEQiYbi0yh2IWZwUku5nEhjdGiFAZqB48rH4ZSWzVPIudOPtVzRKKGnTuqPM+g0OyjQxUWykw65GIeF9IYLUphoHbwUjOT9YXNHQAAPSqSerqZn3OoN7GY1OnBCgtlJl2yPY8LaYwWpTAAYksZtB4dSDzTAew4eBpNaTxFqJBuIuMNC2Wm0CmUMZqWMCCisQDWAJgO4ACA7wshQi7H1QB4FsA0GFGY3xZCHEjn3F54lTII9YYdzxt9Z9cxfLTnRFoOm0K5iZJiivRgGCa3aGl+/zEA7wohZgF413ztxr8D+GchxBwAVwLwV0kuBbyKVkmzjqwHYs8LKAakEPz1n1px37Ob0NQeI5MZhmE8SVcYLAHwW/Pv3wK4Qz2AiOYCCAoh3gEAIcRZIUTqj69KgFz0A0opA2nWuWdRjevngx0vIcgwDOOHdH0GE4UQssD6UQATXY65GMBpInoVwAwAGwA8JoSIpnluV+y2/MqyUmtRlCadhtrieR6snUKKSmAYZvCRUBgQ0QYAk1w++pn9hRBCEJFbOnMQwNcBXA6gA4aP4X4Av3E518MAHgaAmprUq/fJBT5ePfNiEQKSYnJos++DYXJPQmEghLjJ6zMiOkZEk4UQR4hoMtx9AZ0Atgsh2szvrAPQCBdhIIRYBWAVYJSj8HUFHhRTfX+/FIOQK6SMTIYZSqTrM1gP4Afm3z8A8LrLMVsAjCGi8ebrbwDYleZ5EyLNJhpg1fdnx2rhw74PhskP6QqDxwHcTER7ANxkvgYRLSSiZwHA9A38HYB3iWgnjJpuz6R53oRIs8nVs8ZZIaW8uBQ+XgEADMNkl6KuWgoYZod7Vm1Ef1SgJEB48eHFbHYocNhnwDCpw1VL42EWlDP+ZwqdYvB9MMxgI10zUcHjVlCOYRiGcVL0woBt0AzDMIkpejNRMcXfMwzDZIuiFwYA26AZhmESUfRmImZw0dQewpPv7+V8EIbJMUNCM2AGB5x9zDD5Y8hoBrzjLHw4+5hh8seQ0Ax4xzk44MqrDJM/hoQwcNtxsjAoPDjyi2Hyx5AQBrzjHDxw5BfD5IchIQx4x8kwDBOfISEMAN5xMgzDxGPIRBMxDMMw3rAwYBiGYVgYMAzDMCwMGIZhGLAwYBiGYcDCgGEYhkEBPwOZiE4AaE/jJ8YBOJmh5uQKbnNu4DbnBm5zblDbXCuEGJ/sjxSsMEgXItqaykOh8wm3OTdwm3MDtzk3ZKrNbCZiGIZhWBgwDMMwxS0MVuW7ASnAbc4N3ObcwG3ODRlpc9H6DBiGYRj/FLNmwDAMw/iEhQHDMAwz+IQBEd1CRK1EtJeIHnP5fBgRrTE/30xE022f/Tfz/VYi+lYBtflviWgXEX1BRO8SUa3tsygRbTf/rS+gNt9PRCdsbXvQ9tkPiGiP+e8HBdTmf7W1dzcRnbZ9lq9+fo6IjhNRs8fnRET/w7ymL4hoge2zfPVzojbfZ7Z1JxF9RkSX2T47YL6/nYi2FlCbryeibtsYWG77LO64ymOb/97W3mZzDI81P0u+n4UQg+YfgACAfQDqAJQC2AFgrnLMXwN4yvz7bgBrzL/nmscPAzDD/J1AgbT5BgBl5t//WbbZfH22QPv5fgD/0+W7YwG0mf9Xmn9XFkKbleP/C4Dn8tnP5nmvBbAAQLPH598G8DYAAtAIYHM++9lnm6+SbQFwq2yz+foAgHEF2M/XA3gz3XGVyzYrx94O4L10+nmwaQZXAtgrhGgTQoQBvARgiXLMEgC/Nf9+BcCNRETm+y8JIfqEEPsB7DV/L+9tFkK8L4ToNV9uAlCdg3bFw08/e/EtAO8IIU4JIUIA3gFwS5baaSfZNt8D4MUctCsuQoiPAJyKc8gSAP8uDDYBGENEk5G/fk7YZiHEZ2abgMIYz3762Yt05kJaJNnmtMfzYBMGUwEctL3uNN9zPUYIEQHQDaDK53ezQbLnfQDGTlAynIi2EtEmIrojC+1zw2+bl5rmgFeIaFqS3800vs9rmuFmAHjP9nY++tkPXteVr35OFnU8CwB/IqImIno4T23yYjER7SCit4mo3nyv4PuZiMpgbATW2t5Oup+HzGMvBwNE9BcAFgK4zvZ2rRDiEBHVAXiPiHYKIfblp4UO3gDwohCij4gegaGNfSPPbfLL3QBeEUJEbe8Vaj8PWojoBhjC4Brb29eY/TwBwDtE9JW5A84322CMgbNE9G0A6wDMym+TfHM7gE+FEHYtIul+HmyawSEA02yvq833XI8hoiCACgBdPr+bDXydl4huAvAzAN8RQvTJ94UQh8z/2wB8AODybDbWJGGbhRBdtnY+C6DB73ezRDLnvRuKSp2nfvaD13Xlq599QURfgzEulgghuuT7tn4+DuA15MZUmxAhxBkhxFnz77cAlBDROBR4P5vEG8/++zkXjpAMOlSCMBxlMzDgzKlXjvkRnA7k35t/18PpQG5DbhzIftp8OQwn1Szl/UoAw8y/xwHYgxw4r3y2ebLt7+8C2GT+PRbAfrPtlebfYwuhzeZxl8BwrlG++9l2/unwdmz+b3A6kD/PZz/7bHMNDJ/cVcr7IwGU2/7+DMAtBdLmSXJMwFg4O8w+9zWu8tFm8/MKGH6Fken2c04uKMOd820Au83F82fmeyth7KgBYDiAl83B+DmAOtt3f2Z+rxXArQXU5g0AjgHYbv5bb75/FYCd5gDcCeCBAmrzfwfQYrbtfQCX2L77Q7P/9wL4T4XSZvP1CgCPK9/LZz+/COAIgH4Y9ugHADwK4FHzcwLwpHlNOwEsLIB+TtTmZwGEbON5q/l+ndnHO8yx87MCavOPbeN5E2yCzG1cFUKbzWPuhxEYY/9eSv3M5SgYhmGYQeczYBiGYbIACwOGYRiGhQHDMAzDwoBhGIYBCwOGYZiCIVFxOpfjv09GkcsWIlqd1rk5mohhGKYwIKJrAZyFUY9qXoJjZwH4PYBvCCFCRDRBGElmKcGaAcMwTIEgXIrTEdFMIvqDWWfoYyK6xPzoIQBPCrMoYDqCAGBhwDAMU+isAvBfhBANAP4OwP9rvn8xgIuJ6FOzwGJaVWu5UB3DMEyBQkSjYGTIv2xU4gdglNQBjPV7FoxnMVQD+IiILhVCnE7lXCwMGIZhChcNwGkhxHyXzzphPDioH8B+ItoNQzhsSfVEDMMwTAEihDgDY6G/C7AegyofI7oOhlYAs8LqxTCK6qUECwOGYZgCgYheBLARwGwi6iSiBwDcB+ABIpKF5+ST1v4IoIuIdsEoFvn3wlYuPOlzc2gpwzAMw5oBwzAMw8KAYRiGYWHAMAzDgIUBwzAMAxYGDMMwDFgYMAzDMGBhwDAMwwD4/wHlQQF6Kvi4MAAAAABJRU5ErkJggg==\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "plt.plot(torch.arange(0,len(conc2)), conc2, '.')"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 61,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[<matplotlib.lines.Line2D at 0x7ff7759c01f0>]"
+      ]
+     },
+     "execution_count": 61,
+     "metadata": {},
+     "output_type": "execute_result"
+    },
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "plt.plot(torch.arange(0,len(flat_fft2)), flat_fft2.abs(), '.')"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 62,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "topk = torch.topk(\n",
+    "            flat_fft2.abs(), round(0.1*len(flat_fft2)), dim=0, sorted=False\n",
+    "        )"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 63,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "torch.return_types.topk(\n",
+       "values=tensor([ 75.7603, 695.2839, 721.5375,  ...,  68.1649,  68.1649,  68.1649]),\n",
+       "indices=tensor([294037,      1,      2,  ..., 241565, 434039, 328013]))"
+      ]
+     },
+     "execution_count": 63,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "topk"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 64,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([294037,      1,      2,  ..., 241565, 434039, 328013])"
+      ]
+     },
+     "execution_count": 64,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "topk.indices"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 65,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "top10 = torch.zeros(len(flat_fft2), dtype = torch.cfloat)\n",
+    "top10[topk.indices] = flat_fft2[topk.indices]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 66,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "84502"
+      ]
+     },
+     "execution_count": 66,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "len(topk.indices)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 67,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "reverse_top10 = fft.irfft(top10)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 68,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(34.8182)"
+      ]
+     },
+     "execution_count": 68,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(reverse_top10 - conc2, 2)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 69,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(44.8886)"
+      ]
+     },
+     "execution_count": 69,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(conc2, 2) "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 70,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(30254.6758)"
+      ]
+     },
+     "execution_count": 70,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(reverse_top10 - conc2, 1)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 71,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "topk_og = torch.topk(\n",
+    "            conc2.abs(), round(0.1*len(conc2)), dim=0, sorted=False\n",
+    "        )"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 72,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "169005"
+      ]
+     },
+     "execution_count": 72,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "len(topk_og.indices)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 73,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([ 1,  2,  3,  4,  0,  6,  7,  8,  9, 10, 11, 12, 13, 16, 18, 19, 20, 21,\n",
+       "        22, 23, 24, 25, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 40, 41, 42,\n",
+       "        44, 45, 46, 47, 48, 49, 39])"
+      ]
+     },
+     "execution_count": 73,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "topk_og.indices[topk_og.indices<50]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 74,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "top10_og = torch.zeros(len(conc2))\n",
+    "top10_og[topk_og.indices] = conc2[topk_og.indices]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 75,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(15.5541)"
+      ]
+     },
+     "execution_count": 75,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(top10_og - conc2, 2) "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 76,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(15858.2695)"
+      ]
+     },
+     "execution_count": 76,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(top10_og - conc2, 1)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 77,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([-0.0058, -0.0441, -0.0381, -0.0493, -0.0240,  0.0190, -0.0132, -0.0221,\n",
+       "        -0.0472,  0.0077,  0.0236,  0.0183,  0.0231,  0.0014, -0.0245, -0.0085,\n",
+       "         0.0035, -0.0036,  0.0150,  0.0107,  0.0123,  0.0039,  0.0003, -0.0320,\n",
+       "        -0.0093,  0.0632,  0.0360,  0.0200, -0.0248,  0.0029, -0.0011, -0.0193,\n",
+       "         0.0221,  0.0056, -0.0091, -0.0008,  0.0329,  0.0133, -0.0078, -0.0061,\n",
+       "        -0.0372, -0.0354, -0.0238, -0.0028,  0.0145, -0.0121, -0.0517, -0.0468,\n",
+       "        -0.0123, -0.0132])"
+      ]
+     },
+     "execution_count": 77,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "reverse_top10[10000:10050]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 78,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([ 0.0155,  0.0128, -0.0386,  0.0186,  0.0166,  0.0259, -0.0200, -0.0033,\n",
+       "        -0.0399,  0.0214,  0.0106,  0.0197, -0.0182, -0.0191, -0.0370,  0.0159,\n",
+       "         0.0071, -0.0321, -0.0166, -0.0082,  0.0090,  0.0291,  0.0117,  0.0011,\n",
+       "         0.0066,  0.0163,  0.0237,  0.0092, -0.0029, -0.0209, -0.0207,  0.0039,\n",
+       "         0.0065,  0.0057,  0.0316, -0.0262, -0.0342, -0.0115,  0.0149, -0.0175,\n",
+       "        -0.0568, -0.0135, -0.0503, -0.0252,  0.0148, -0.0429, -0.0424, -0.0182,\n",
+       "        -0.0002, -0.0341])"
+      ]
+     },
+     "execution_count": 78,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "conc2 [10000:10050]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 79,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([ 0.0000,  0.0000, -0.0386,  0.0000,  0.0000,  0.0000,  0.0000,  0.0000,\n",
+       "        -0.0399,  0.0000,  0.0000,  0.0000,  0.0000,  0.0000, -0.0370,  0.0000,\n",
+       "         0.0000,  0.0000,  0.0000,  0.0000,  0.0000,  0.0000,  0.0000,  0.0000,\n",
+       "         0.0000,  0.0000,  0.0000,  0.0000,  0.0000,  0.0000,  0.0000,  0.0000,\n",
+       "         0.0000,  0.0000,  0.0000,  0.0000,  0.0000,  0.0000,  0.0000,  0.0000,\n",
+       "        -0.0568,  0.0000, -0.0503,  0.0000,  0.0000, -0.0429, -0.0424,  0.0000,\n",
+       "         0.0000,  0.0000])"
+      ]
+     },
+     "execution_count": 79,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "top10_og[10000:10050]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 80,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([-0.1440, -0.0482,  0.2070,  ...,  0.0011,  0.0177, -0.0218])"
+      ]
+     },
+     "execution_count": 80,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "conc2[0:10000]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 81,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "reverse_top10fft = reverse_top10"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 82,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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Qho4AaaTgWEIKoaUkre85S1cffXVtLW1sXfvXgKBAP/93/89Yt94PM7s2bNHzB/Ix1//+tdxawbl45Of/CRbtmzh97//Pe9973tJJpMlPS6RSFR8LTpjMQQTuR6D8jGbBE01hs5QIXJHVoZOkBzB1K9gIvjbTdC5rbLP2bIWXn9rwbsfffRRHA4H//zP/wyoITW33XYbCxcu5POf/zy/+93v+OMf/0ggECCRSHD33Xdz5ZVXsn37dkKhEDfccAPbt29n+fLlHD9+nDvvvJMNGzbQ2trK5s2bCQQCvP71r+f888/n2WefZc6cOdx///1UVVXxox/9iB/+8IdEo1GWLFnCz3/+85LnBaxcuRKLxUJvby833ngjR48eJRwO84lPfIIbb7wRAJfLxb/8y7/w8MMPc+edd/Loo4/ypz/9ieHhYc4991x+8IMfIIRg48aNnHrqqTz11FMEg0F+9rOf8ZWvfIVt27bxjne8g1tuuQWAX/ziF9xxxx1Eo1HOOussvvvd7/Lf//3fKfXW1atX88tf/jLvfmazecR6/vznP/PAAw9gsVi49NJL83pBBgYnAnpTma5CqkJDU38aNjyCCrFjxw5OP/30rG1ut5v58+ezb98+AF5++WXuuecennjiiaz9vvvd71JbW8vOnTv54he/yEsvvZT3GG1tbXzkIx9hx44deL1e/vCHPwDwlre8hRdffJGtW7eycuVK/u///q/kdW/atAmTyURjYyM/+clPeOmll9i8eTN33HEHfX19AASDQc466yy2bt3K+eefz0c/+lFefPFFtm/fzvDwcJayqs1mY/PmzXzwgx/kTW96E3feeSfbt2/nrrvuoq+vj127dvHb3/6WZ555hi1btmA2m/nlL3/JrbfemlJv/eUvf1lwv9z1rFy5knvvvZcdO3bw6quv8tnPfrbk125gMNnUV9uwmkXKIwhE4lMuQQ3T1SMocuU+lVxyySXU1dWN2P7000/ziU98AoA1a9awbt26vI9fuHAh69evB+D000/n0KFDAGzfvp3PfvazDA4OEggEuOyyy0Zdy2233cYvfvELampq+O1vf4sQgjvuuIN7770XgKNHj9LW1kZ9fT1ms5m3vvWtqcc+9thjfO1rXyMUCtHf38/q1at54xvfCCgBO4C1a9eyevXqlHjdokWLOHr0KE8//TQvvfQSZ5xxBqBmODQ1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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "plt.plot(np.arange(100000,100050,1), reverse_top10fft[100000:100050], label = \"FFT top-10%\")\n",
+    "plt.plot(np.arange(100000,100050,1), conc2[100000:100050], label = \"Original Parameters\")\n",
+    "plt.plot(np.arange(100000,100050,1), top10_og[100000:100050], label = \"Parameter top-10%\")\n",
+    "plt.title('Parameter Values') \n",
+    "#plt.ylabel(\"Absolute frequency value\")\n",
+    "plt.xlabel(\"Parameter indices\")\n",
+    "plt.legend()\n",
+    "plt.draw()\n",
+    "plt.savefig(\"Parameters.png\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 83,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "plt.hist(conc2.numpy(), 100, (-0.1,0.1))\n",
+    "plt.title('Parameter Values Histogram') \n",
+    "#plt.ylabel(\"Absolute frequency value\")\n",
+    "plt.xlabel(\"Parameter values\")\n",
+    "plt.draw()\n",
+    "plt.savefig(\"Parameter_Histogram.png\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 84,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "plt.hist(reverse_top10.numpy(), 100, (-0.1,0.1))\n",
+    "plt.title('Top-10% FFT Reconstructed Parameter Values Histogram') \n",
+    "#plt.ylabel(\"Absolute frequency value\")\n",
+    "plt.xlabel(\"Parameter values\")\n",
+    "plt.draw()\n",
+    "plt.savefig(\"FFT_Histogram.png\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 85,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "plt.hist(top10_og[top10_og.abs() >0].numpy(), 100, (-0.1,0.1))\n",
+    "plt.title('Top-10% Parameter Values Histogram') \n",
+    "#plt.ylabel(\"Absolute frequency value\")\n",
+    "plt.xlabel(\"Parameter values\")\n",
+    "plt.draw()\n",
+    "plt.savefig(\"top10_Histogram.png\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 86,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([-0.14400896, -0.04817872,  0.20703338, ...,  0.0729612 ,\n",
+       "       -0.06001848, -0.03798665], dtype=float32)"
+      ]
+     },
+     "execution_count": 86,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "top10_og[top10_og.abs() >0].numpy()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Per Layer"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 87,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "flat5000 = []\n",
+    "for v in weights[\"17000\"].values():\n",
+    "    flat5000.append(v.flatten())\n",
+    "conc500 = torch.cat(flat5000)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 88,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(44.8886)"
+      ]
+     },
+     "execution_count": 88,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(conc500, 2)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 134,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "tensor(3.8334)\n",
+      "tensor(0.5911)\n",
+      "tensor(14.2745)\n",
+      "tensor(0.2714)\n",
+      "tensor(29.4115)\n",
+      "tensor(0.4823)\n",
+      "tensor(9.3226)\n",
+      "tensor(0.3447)\n"
+     ]
+    }
+   ],
+   "source": [
+    "# working on the random initialization\n",
+    "errs = []\n",
+    "lens = []\n",
+    "fft_layers = []\n",
+    "for v in weights[\"17000\"].values():\n",
+    "    flat = v.flatten()\n",
+    "    lens.append(len(flat))\n",
+    "    flat_fft = fft.rfft(flat)\n",
+    "    topk = torch.topk(\n",
+    "            flat_fft.abs(), round(0.1*len(flat_fft)), dim=0, sorted=False\n",
+    "        )\n",
+    "    top10 = torch.zeros(len(flat_fft), dtype = torch.cfloat)\n",
+    "    top10[topk.indices] = flat_fft[topk.indices]\n",
+    "    reverse_top10 = fft.irfft(top10)\n",
+    "    fft_layers.append(reverse_top10)\n",
+    "    err = torch.norm(reverse_top10 - flat, 2)\n",
+    "    print(err)\n",
+    "    errs.append(err*err)\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 135,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[800, 32, 51200, 64, 1605632, 512, 31744, 62]"
+      ]
+     },
+     "execution_count": 135,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "lens"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 136,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "1171.1743"
+      ]
+     },
+     "execution_count": 136,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "np.sum(errs)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 137,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "34.222424"
+      ]
+     },
+     "execution_count": 137,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "np.sqrt(np.sum(errs))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 93,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "fft_conc = torch.cat(fft_layers)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 94,
+   "metadata": {},
+   "outputs": [
+    {
+     "ename": "NameError",
+     "evalue": "name 'conc5000' is not defined",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+      "\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)",
+      "Input \u001b[0;32mIn [94]\u001b[0m, in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0m torch\u001b[38;5;241m.\u001b[39mnorm(fft_conc \u001b[38;5;241m-\u001b[39m \u001b[43mconc5000\u001b[49m\n\u001b[1;32m      2\u001b[0m            ,\u001b[38;5;241m2\u001b[39m)\n",
+      "\u001b[0;31mNameError\u001b[0m: name 'conc5000' is not defined"
+     ]
+    }
+   ],
+   "source": [
+    "torch.norm(fft_conc - conc5000\n",
+    "           ,2)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Almost no difference in layerwise vs over the entire weight"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 138,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "dict_keys(['0', '500', '1000', '1500', '2000', '2500', '3000', '3500', '4000', '4500', '5000', '5500', '6000', '6500', '7000', '7500', '8000', '8500', '9000', '9500', '10000', '10500', '11000', '11500', '12000', '12500', '13000', '13500', '14000', '14500', '15000', '15500', '16000', '16500', '17000'])"
+      ]
+     },
+     "execution_count": 138,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "weights.keys()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 139,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "tensor(3.8017)\n",
+      "tensor(0.6525)\n",
+      "tensor(9.6627)\n",
+      "tensor(0.2314)\n",
+      "tensor(14.0121)\n",
+      "tensor(0.3602)\n",
+      "tensor(6.0212)\n",
+      "tensor(0.3187)\n"
+     ]
+    }
+   ],
+   "source": [
+    "# working on the random initialization\n",
+    "errs = []\n",
+    "lens = []\n",
+    "for v in weights[\"17000\"].values():\n",
+    "    flat = v.flatten()\n",
+    "    lens.append(len(flat))\n",
+    "    topk = torch.topk(\n",
+    "            flat.abs(), round(0.1*len(flat)), dim=0, sorted=False\n",
+    "        )\n",
+    "    top10 = torch.zeros(len(flat))\n",
+    "    top10[topk.indices] = flat[topk.indices]\n",
+    "    err = torch.norm(top10 - flat, 2)\n",
+    "    print(err)\n",
+    "    errs.append(err*err)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 140,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[800, 32, 51200, 64, 1605632, 512, 31744, 62]"
+      ]
+     },
+     "execution_count": 140,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "lens"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 141,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "341.1233"
+      ]
+     },
+     "execution_count": 141,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "np.sum(errs)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 142,
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "18.469522"
+      ]
+     },
+     "execution_count": 142,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "np.sqrt(np.sum(errs))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 99,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "flat5000 = []\n",
+    "for v in weights[\"17000\"].values():\n",
+    "    flat5000.append(v.flatten())\n",
+    "conc5000 = torch.cat(flat5000)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 100,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(44.8886)"
+      ]
+     },
+     "execution_count": 100,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(conc5000, 2)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 101,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "tensor(2.5049)\n",
+      "tensor(0.4643)\n",
+      "tensor(6.6074)\n",
+      "tensor(0.1233)\n",
+      "tensor(12.2971)\n",
+      "tensor(0.1902)\n",
+      "tensor(4.0843)\n",
+      "tensor(0.1482)\n"
+     ]
+    }
+   ],
+   "source": [
+    "# working on the random initialization\n",
+    "errs = []\n",
+    "errs1 = []\n",
+    "lens = []\n",
+    "fft_layers = []\n",
+    "for v in weights[\"1000\"].values():\n",
+    "    flat = v.flatten()\n",
+    "    lens.append(len(flat))\n",
+    "    flat_fft = fft.rfft(flat)\n",
+    "    topk = torch.topk(\n",
+    "            flat_fft.abs(), round(0.2*len(flat_fft)), dim=0, sorted=False\n",
+    "        )\n",
+    "    top10 = torch.zeros(len(flat_fft), dtype = torch.cfloat)\n",
+    "    top10[topk.indices] = flat_fft[topk.indices]\n",
+    "    reverse_top10 = fft.irfft(top10)\n",
+    "    fft_layers.append(reverse_top10)\n",
+    "    err = torch.norm(reverse_top10 - flat, 2)\n",
+    "    errs1.append(torch.norm(reverse_top10 - flat, 1))\n",
+    "    print(err)\n",
+    "    errs.append(err*err)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 102,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[800, 32, 51200, 64, 1605632, 512, 31744, 62]"
+      ]
+     },
+     "execution_count": 102,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "lens"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 103,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "218.12065"
+      ]
+     },
+     "execution_count": 103,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "np.sum(errs)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 104,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "14.7689085"
+      ]
+     },
+     "execution_count": 104,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "np.sqrt(np.sum(errs))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 105,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "fft_conc = torch.cat(fft_layers)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 106,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(39.6843)"
+      ]
+     },
+     "execution_count": 106,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(fft_conc - conc5000,2)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 107,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[tensor(57.1960),\n",
+       " tensor(2.2182),\n",
+       " tensor(1148.8655),\n",
+       " tensor(0.7960),\n",
+       " tensor(12109.6943),\n",
+       " tensor(3.3738),\n",
+       " tensor(578.7853),\n",
+       " tensor(0.9163)]"
+      ]
+     },
+     "execution_count": 107,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "errs1"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 108,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "13901.846"
+      ]
+     },
+     "execution_count": 108,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "np.sum(errs1)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 109,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "tensor(3.8017)\n",
+      "tensor(0.6525)\n",
+      "tensor(9.6627)\n",
+      "tensor(0.2314)\n",
+      "tensor(14.0121)\n",
+      "tensor(0.3602)\n",
+      "tensor(6.0212)\n",
+      "tensor(0.3187)\n"
+     ]
+    }
+   ],
+   "source": [
+    "# working on the random initialization\n",
+    "errs = []\n",
+    "lens = []\n",
+    "errs1 = []\n",
+    "for v in weights[\"17000\"].values():\n",
+    "    flat = v.flatten()\n",
+    "    lens.append(len(flat))\n",
+    "    topk = torch.topk(\n",
+    "            flat.abs(), round(0.1*len(flat)), dim=0, sorted=False\n",
+    "        )\n",
+    "    top10 = torch.zeros(len(flat))\n",
+    "    top10[topk.indices] = flat[topk.indices]\n",
+    "    err = torch.norm(top10 - flat, 2)\n",
+    "    print(err)\n",
+    "    errs.append(err*err)\n",
+    "    errs1.append(torch.norm(top10 - flat, 1))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 110,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[800, 32, 51200, 64, 1605632, 512, 31744, 62]"
+      ]
+     },
+     "execution_count": 110,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "lens"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 111,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "341.1233"
+      ]
+     },
+     "execution_count": 111,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "np.sum(errs)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 112,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "18.469522"
+      ]
+     },
+     "execution_count": 112,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "np.sqrt(np.sum(errs))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 113,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[tensor(86.4496),\n",
+       " tensor(3.1551),\n",
+       " tensor(1531.9570),\n",
+       " tensor(1.5015),\n",
+       " tensor(14199.5361),\n",
+       " tensor(6.1879),\n",
+       " tensor(814.4448),\n",
+       " tensor(2.0511)]"
+      ]
+     },
+     "execution_count": 113,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "errs1"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 114,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "16645.283"
+      ]
+     },
+     "execution_count": 114,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "np.sum(errs1)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 115,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "None\n",
+      "None\n",
+      "None\n",
+      "None\n",
+      "None\n",
+      "None\n",
+      "None\n",
+      "None\n"
+     ]
+    }
+   ],
+   "source": [
+    "flat5000 = []\n",
+    "for v in weights[\"17000\"].values():\n",
+    "    print(v.grad)\n",
+    "    flat5000.append(v.flatten())\n",
+    "conc5000 = torch.cat(flat5000)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Wavelets  <a class=\"anchor\" id=\"wt\"></a>"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 116,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Requirement already satisfied: PyWavelets in /home/jeffrey/anaconda3/envs/sacs39/lib/python3.9/site-packages (1.2.0)\n",
+      "Requirement already satisfied: numpy>=1.17.3 in /home/jeffrey/anaconda3/envs/sacs39/lib/python3.9/site-packages (from PyWavelets) (1.22.3)\n"
+     ]
+    }
+   ],
+   "source": [
+    "!pip install PyWavelets"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 117,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import pywt"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 118,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "#(cA, cD) = pywt.dwt(, 'db1')"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 24,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# pywt.wavelist(kind='discrete', )"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 143,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "haar 18.427034\n",
+      "db1 18.427034\n",
+      "sym2 18.36348\n",
+      "coif1 18.393574\n",
+      "bior1.1 18.427034\n",
+      "rbio1.1 18.427034\n",
+      "dmey 18.671127\n",
+      "bior4.4 18.496372\n"
+     ]
+    }
+   ],
+   "source": [
+    "# working on the random initialization\n",
+    "wavelets = ['haar', 'db1', 'sym2', 'coif1', 'bior1.1', 'rbio1.1', 'dmey', 'bior4.4'] # 'gaus1' not supported, 'mexh','morl',  'cgau1', 'shan',  'fbsp', 'cmor'\n",
+    "for wavelet in wavelets:\n",
+    "    errs = []\n",
+    "    errs1 = []\n",
+    "    lens = []\n",
+    "    fft_layers = []\n",
+    "    for v in weights[\"17000\"].values():\n",
+    "        flat = v.flatten()\n",
+    "        #print(flat.shape)\n",
+    "        lens.append(len(flat))\n",
+    "        coeff = pywt.wavedec(flat.numpy(), wavelet, level = None)\n",
+    "        array, coeff_slices = pywt.coeffs_to_array(coeff)\n",
+    "        #print(coeff_slices) # should be static so we do not need to send them\n",
+    "        topk = torch.topk(\n",
+    "                torch.from_numpy(np.absolute(array)), round(0.1*len(array)), dim=0, sorted=False\n",
+    "            )\n",
+    "        top10 = torch.zeros(len(array))\n",
+    "        top10[topk.indices] = torch.from_numpy(array[topk.indices])\n",
+    "        og = pywt.array_to_coeffs(top10, coeff_slices, output_format=\"wavedec\")\n",
+    "        reverse_top10 = torch.from_numpy(pywt.waverec(og, wavelet = wavelet))\n",
+    "        fft_layers.append(reverse_top10)\n",
+    "        err = torch.norm(reverse_top10 - flat, 2)\n",
+    "        errs1.append(torch.norm(reverse_top10 - flat, 1))\n",
+    "        #print(err)\n",
+    "        errs.append(err*err)\n",
+    "        # print(flat[0:10])\n",
+    "        # print(reverse_top10[0:10])\n",
+    "    print(wavelet, np.sqrt(np.sum(errs)))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 156,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "bior1.1 15.07145881652832 16107.921875\n",
+      "bior1.3 15.25814437866211 16279.986328125\n",
+      "bior1.5 15.425777435302734 16436.12109375\n",
+      "bior2.2 15.66141128540039 16473.904296875\n",
+      "bior2.4 15.516386985778809 16417.8203125\n",
+      "bior2.6 15.544709205627441 16466.162109375\n",
+      "bior2.8 15.579778671264648 16503.138671875\n",
+      "bior3.1 25.344850540161133 24354.4453125\n",
+      "bior3.3 18.38104248046875 18552.30859375\n",
+      "bior3.5 17.479848861694336 17874.1015625\n",
+      "bior3.7 17.260520935058594 17713.20703125\n",
+      "bior3.9 17.19255828857422 17672.990234375\n",
+      "bior4.4 15.1978120803833 16241.7060546875\n",
+      "bior5.5 15.467646598815918 16527.41796875\n",
+      "bior6.8 15.204909324645996 16253.8125\n",
+      "coif1 15.142683029174805 16156.6630859375\n",
+      "coif2 15.175430297851562 16219.298828125\n",
+      "coif3 15.218149185180664 16275.017578125\n",
+      "coif4 15.248283386230469 16304.376953125\n",
+      "coif5 15.278726577758789 16337.1923828125\n",
+      "coif6 15.300649642944336 16357.455078125\n",
+      "coif7 15.324337005615234 16380.2119140625\n",
+      "coif8 15.34239387512207 16396.9453125\n",
+      "coif9 15.35299301147461 16408.88671875\n",
+      "coif10 15.358224868774414 16412.31640625\n",
+      "coif11 15.375347137451172 16429.083984375\n",
+      "coif12 15.383316993713379 16440.47265625\n",
+      "coif13 15.401575088500977 16450.142578125\n",
+      "coif14 15.413949012756348 16466.5859375\n",
+      "coif15 15.430389404296875 16478.208984375\n",
+      "coif16 15.438526153564453 16489.732421875\n",
+      "coif17 15.44447135925293 16493.5625\n",
+      "db1 15.07145881652832 16107.921875\n",
+      "db2 15.11799430847168 16146.3642578125\n",
+      "db3 15.206748008728027 16251.126953125\n",
+      "db4 15.276558876037598 16337.6650390625\n",
+      "db5 15.346190452575684 16396.228515625\n",
+      "db6 15.424012184143066 16471.95703125\n",
+      "db7 15.465736389160156 16520.9609375\n",
+      "db8 15.5084228515625 16558.216796875\n",
+      "db9 15.579204559326172 16622.1484375\n",
+      "db10 15.634806632995605 16672.583984375\n",
+      "db11 15.69124698638916 16721.88671875\n",
+      "db12 15.76386833190918 16791.78125\n",
+      "db13 15.807873725891113 16828.6328125\n",
+      "db14 15.84904956817627 16859.560546875\n",
+      "db15 15.879130363464355 16884.310546875\n",
+      "db16 15.916594505310059 16917.77734375\n",
+      "db17 15.97330093383789 16964.7890625\n",
+      "db18 16.010889053344727 17004.966796875\n",
+      "db19 16.06007957458496 17043.080078125\n",
+      "db20 16.109506607055664 17080.361328125\n",
+      "db21 16.15558433532715 17122.78125\n",
+      "db22 16.195322036743164 17152.8046875\n",
+      "db23 16.23825454711914 17190.244140625\n",
+      "db24 16.28815269470215 17229.99609375\n",
+      "db25 16.29660415649414 17237.244140625\n",
+      "db26 16.331958770751953 17263.62890625\n",
+      "db27 16.375545501708984 17302.498046875\n",
+      "db28 16.413320541381836 17331.599609375\n",
+      "db29 16.437959671020508 17352.27734375\n",
+      "db30 16.50661849975586 17411.228515625\n",
+      "db31 16.53733253479004 17433.791015625\n",
+      "db32 16.5701904296875 17458.037109375\n",
+      "db33 16.599777221679688 17484.1953125\n",
+      "db34 16.628063201904297 17505.951171875\n",
+      "db35 16.64190101623535 17514.66796875\n",
+      "db36 16.680456161499023 17541.33203125\n",
+      "db37 16.730104446411133 17587.6328125\n",
+      "db38 16.75263214111328 17598.830078125\n",
+      "dmey 15.428367614746094 16479.267578125\n",
+      "haar 15.07145881652832 16107.921875\n",
+      "rbio1.1 15.07145881652832 16107.921875\n",
+      "rbio1.3 15.1613130569458 16189.78125\n",
+      "rbio1.5 15.32840633392334 16338.216796875\n",
+      "rbio2.2 16.183170318603516 16984.47265625\n",
+      "rbio2.4 15.833732604980469 16793.46875\n",
+      "rbio2.6 15.841042518615723 16820.513671875\n",
+      "rbio2.8 15.870935440063477 16858.255859375\n",
+      "rbio3.1 112.47295379638672 58394.6875\n",
+      "rbio3.3 19.817306518554688 20010.50390625\n",
+      "rbio3.5 18.20765495300293 18729.5625\n",
+      "rbio3.7 17.90874671936035 18495.369140625\n",
+      "rbio3.9 17.855627059936523 18441.083984375\n",
+      "rbio4.4 15.365104675292969 16364.685546875\n",
+      "rbio5.5 15.447882652282715 16390.2890625\n",
+      "rbio6.8 15.320694923400879 16363.552734375\n",
+      "sym2 15.11799430847168 16146.3642578125\n",
+      "sym3 15.206748008728027 16251.126953125\n",
+      "sym4 15.159475326538086 16207.3779296875\n",
+      "sym5 15.204032897949219 16260.142578125\n",
+      "sym6 15.191091537475586 16246.744140625\n",
+      "sym7 15.236370086669922 16293.701171875\n",
+      "sym8 15.241791725158691 16298.5556640625\n",
+      "sym9 15.26644229888916 16327.4296875\n",
+      "sym10 15.264242172241211 16323.5576171875\n",
+      "sym11 15.332569122314453 16396.794921875\n",
+      "sym12 15.310770034790039 16371.40234375\n",
+      "sym13 15.304075241088867 16360.4248046875\n",
+      "sym14 15.317804336547852 16377.61328125\n",
+      "sym15 15.378673553466797 16436.265625\n",
+      "sym16 15.33505916595459 16392.92578125\n",
+      "sym17 15.344695091247559 16404.30859375\n",
+      "sym18 15.363746643066406 16418.08984375\n",
+      "sym19 15.430442810058594 16479.15625\n",
+      "sym20 15.377063751220703 16438.19140625\n",
+      "min:  tensor(15.0715) bior1.1 0\n"
+     ]
+    }
+   ],
+   "source": [
+    "# working on the random initialization\n",
+    "#wavelets = ['haar', 'db1', 'sym2', 'coif1', 'bior1.1', 'rbio1.1', 'dmey', 'bior4.4'] # 'gaus1' not supported, 'mexh','morl',  'cgau1', 'shan',  'fbsp', 'cmor'\n",
+    "wavelets = pywt.wavelist(kind='discrete', )\n",
+    "errs = []\n",
+    "names = []\n",
+    "for wavelet in wavelets:\n",
+    "    lens = []\n",
+    "    fft_layers = []\n",
+    "    to_cat = []\n",
+    "    for v in weights[\"17000\"].values():\n",
+    "        flat = v.flatten()\n",
+    "        #print(flat.shape)\n",
+    "        lens.append(len(flat))\n",
+    "        to_cat.append(flat)\n",
+    "    flat = torch.cat(to_cat, dim=0)\n",
+    "    coeff = pywt.wavedec(flat.numpy(), wavelet, level = None)\n",
+    "    array, coeff_slices = pywt.coeffs_to_array(coeff)\n",
+    "    #print(coeff_slices) # should be static so we do not need to send them\n",
+    "    topk = torch.topk(\n",
+    "            torch.from_numpy(np.absolute(array)), round(0.1*len(array)), dim=0, sorted=False\n",
+    "        )\n",
+    "    top10 = torch.zeros(len(array))\n",
+    "    top10[topk.indices] = torch.from_numpy(array[topk.indices])\n",
+    "    og = pywt.array_to_coeffs(top10, coeff_slices, output_format=\"wavedec\")\n",
+    "    reverse_top10 = torch.from_numpy(pywt.waverec(og, wavelet = wavelet))\n",
+    "    fft_layers.append(reverse_top10)\n",
+    "    err = torch.norm(reverse_top10 - flat, 2)\n",
+    "    err1 = torch.norm(reverse_top10 - flat, 1)\n",
+    "    errs.append(err)\n",
+    "    names.append(wavelet)\n",
+    "    print(wavelet, err.item(), err1.item())\n",
+    "ind = np.argmin(errs)\n",
+    "print(\"min: \", errs[ind], names[ind], ind)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 157,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "topk_og = torch.topk(\n",
+    "            conc2.abs(), round(0.1*len(conc2)), dim=0, sorted=False\n",
+    "        )\n",
+    "top10_og = torch.zeros(len(conc2))\n",
+    "top10_og[topk_og.indices] = conc2[topk_og.indices]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 158,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(15.5541)"
+      ]
+     },
+     "execution_count": 158,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(top10_og - conc2, 2) "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 159,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "42.212055"
+      ]
+     },
+     "execution_count": 159,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "np.sqrt(np.sum(errs))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 58,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Problem: weights with only a few parameters cannot be represented with the wavelets"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 126,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "flat5000 = []\n",
+    "for v in weights[\"17000\"].values():\n",
+    "    flat5000.append(v.flatten())\n",
+    "conc5000 = torch.cat(flat5000)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 127,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(44.8886)"
+      ]
+     },
+     "execution_count": 127,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(conc5000, 2)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 149,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "dmey tensor(15.4284)\n"
+     ]
+    }
+   ],
+   "source": [
+    "wavelet = 'dmey'\n",
+    "coeff = pywt.wavedec(conc5000.numpy(), wavelet, level = None)\n",
+    "array, coeff_slices = pywt.coeffs_to_array(coeff)\n",
+    "#print(coeff_slices) # should be static so we do not need to send them\n",
+    "topk = torch.topk(\n",
+    "        torch.from_numpy(np.absolute(array)), round(0.1*len(array)), dim=0, sorted=False\n",
+    "    )\n",
+    "top10 = torch.zeros(len(array))\n",
+    "top10[topk.indices] = torch.from_numpy(array[topk.indices])\n",
+    "og = pywt.array_to_coeffs(top10, coeff_slices, output_format=\"wavedec\")\n",
+    "reverse_top10 = torch.from_numpy(pywt.waverec(og, wavelet = wavelet))\n",
+    "print(wavelet, torch.norm(conc5000 - reverse_top10, 2))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 150,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "plt.plot(np.arange(100000,100050,1), reverse_top10fft[100000:100050], label = \"FFT top-10%\")\n",
+    "plt.plot(np.arange(100000,100050,1), conc2[100000:100050], label = \"Original Parameters\")\n",
+    "plt.plot(np.arange(100000,100050,1), reverse_top10[100000:100050], label = \"Haar top-10%\")\n",
+    "plt.title('Parameter Values') \n",
+    "#plt.ylabel(\"Absolute frequency value\")\n",
+    "plt.xlabel(\"Parameter indices\")\n",
+    "plt.legend()\n",
+    "plt.draw()\n",
+    "plt.savefig(\"ParametersWaveletHaar.png\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 175,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "haar tensor(12.0875)\n"
+     ]
+    }
+   ],
+   "source": [
+    "wavelet = 'haar'\n",
+    "coeff = pywt.wavedec(conc5000.numpy(), wavelet, level = None)\n",
+    "array, coeff_slices = pywt.coeffs_to_array(coeff)\n",
+    "#print(coeff_slices) # should be static so we do not need to send them\n",
+    "topk = torch.topk(\n",
+    "        torch.from_numpy(np.absolute(array)), round(0.1*len(array)), dim=0, sorted=False\n",
+    "    )\n",
+    "top10 = torch.zeros(len(array))\n",
+    "top10[topk.indices] = torch.from_numpy(array[topk.indices])\n",
+    "og = pywt.array_to_coeffs(top10, coeff_slices, output_format=\"wavedec\")\n",
+    "reverse_top10 = torch.from_numpy(pywt.waverec(og, wavelet = wavelet))\n",
+    "print(wavelet, torch.norm(conc5000 - reverse_top10, 2))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 176,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "haar tensor(9.4642)\n"
+     ]
+    }
+   ],
+   "source": [
+    "wavelet = 'haar'\n",
+    "coeff = pywt.wavedec(conc5000.numpy(), wavelet, level = None)\n",
+    "array, coeff_slices = pywt.coeffs_to_array(coeff)\n",
+    "#print(coeff_slices) # should be static so we do not need to send them\n",
+    "topk = torch.topk(\n",
+    "        torch.from_numpy(np.absolute(array)), round(0.2*len(array)), dim=0, sorted=False\n",
+    "    )\n",
+    "top10 = torch.zeros(len(array))\n",
+    "top10[topk.indices] = torch.from_numpy(array[topk.indices])\n",
+    "og = pywt.array_to_coeffs(top10, coeff_slices, output_format=\"wavedec\")\n",
+    "reverse_top10 = torch.from_numpy(pywt.waverec(og, wavelet = wavelet))\n",
+    "print(wavelet, torch.norm(conc5000 - reverse_top10, 2))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 177,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "6\n",
+      "haar tensor(12.1470)\n",
+      "(52814,)\n",
+      "(52814,)\n",
+      "(105628,)\n",
+      "(211256,)\n",
+      "(422512,)\n",
+      "(845023,)\n",
+      "haar tensor(16.9818)\n",
+      "(52814,)\n",
+      "(52814,)\n",
+      "(105628,)\n",
+      "(211256,)\n",
+      "(422512,)\n",
+      "(845023,)\n",
+      "haar tensor(2.3811e-06)\n"
+     ]
+    }
+   ],
+   "source": [
+    "wavelet = 'haar'\n",
+    "coeff = pywt.wavedec(conc5000.numpy(), wavelet, level = 5)\n",
+    "array, coeff_slices = pywt.coeffs_to_array(coeff)\n",
+    "#print(coeff_slices) # should be static so we do not need to send them\n",
+    "print(len(coeff))\n",
+    "topk = torch.topk(\n",
+    "        torch.from_numpy(np.absolute(array)), round(0.1*len(array)), dim=0, sorted=False\n",
+    "    )\n",
+    "top10 = torch.zeros(len(array))\n",
+    "top10[topk.indices] = torch.from_numpy(array[topk.indices])\n",
+    "og = pywt.array_to_coeffs(top10, coeff_slices, output_format=\"wavedec\")\n",
+    "reverse_top10 = torch.from_numpy(pywt.waverec(og, wavelet = wavelet))\n",
+    "print(wavelet, torch.norm(conc5000 - reverse_top10, 2))\n",
+    "\n",
+    "reduced = []\n",
+    "for i, o in enumerate(coeff):\n",
+    "    print(o.shape) \n",
+    "    if i > 3:\n",
+    "        reduced.append(np.zeros_like(o))\n",
+    "        continue\n",
+    "    reduced.append(o)\n",
+    "reverse_top10 = torch.from_numpy(pywt.waverec(reduced, wavelet = wavelet))\n",
+    "print(wavelet, torch.norm(conc5000 - reverse_top10, 2))\n",
+    "\n",
+    "reduced = []\n",
+    "for i, o in enumerate(coeff):\n",
+    "    print(o.shape) \n",
+    "    if i > 5:\n",
+    "        reduced.append(np.zeros_like(o))\n",
+    "        continue\n",
+    "    reduced.append(o)\n",
+    "reverse_top10 = torch.from_numpy(pywt.waverec(reduced, wavelet = wavelet))\n",
+    "print(wavelet, torch.norm(conc5000 - reverse_top10, 2))\n",
+    "    \n",
+    "    "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# with resnet"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 178,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "Using cache found in /home/jeffrey/.cache/torch/hub/pytorch_vision_v0.10.0\n"
+     ]
+    }
+   ],
+   "source": [
+    "model = torch.hub.load('pytorch/vision:v0.10.0', 'resnet18', pretrained=True)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 179,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "resw = {}\n",
+    "for k,v in model.state_dict().items():\n",
+    "    resw[k] = v.clone()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "flatr = []\n",
+    "for v in resw.values():\n",
+    "    flatr.append(v.flatten())\n",
+    "concr = torch.cat(flatr)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 190,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "bior1.1 43.02796936035156 115077.1953125\n",
+      "bior1.3 44.042415618896484 117252.8203125\n",
+      "bior1.5 44.798824310302734 119106.71875\n",
+      "bior2.2 44.7282600402832 117956.5\n",
+      "bior2.4 44.04926300048828 116528.5078125\n",
+      "bior2.6 44.09769821166992 116693.171875\n",
+      "bior2.8 44.207454681396484 116984.125\n",
+      "bior3.1 65.93879699707031 171188.890625\n",
+      "bior3.3 52.62727355957031 136826.25\n",
+      "bior3.5 50.10884475708008 130465.40625\n",
+      "bior3.7 49.333717346191406 128473.21875\n",
+      "bior3.9 49.07342529296875 127796.1640625\n",
+      "bior4.4 42.742881774902344 114508.9921875\n",
+      "bior5.5 43.98085403442383 118580.4296875\n",
+      "bior6.8 42.57365417480469 113812.046875\n",
+      "coif1 42.74231719970703 114690.046875\n",
+      "coif2 42.56312561035156 114001.890625\n",
+      "coif3 42.54220199584961 113903.578125\n",
+      "coif4 42.558956146240234 113906.859375\n",
+      "coif5 42.56120681762695 113924.28125\n",
+      "coif6 42.592472076416016 113980.0390625\n",
+      "coif7 42.60406494140625 114030.09375\n",
+      "coif8 42.61618423461914 114052.2734375\n",
+      "coif9 42.6173095703125 114053.078125\n",
+      "coif10 42.63934326171875 114081.7890625\n",
+      "coif11 42.65342712402344 114141.3671875\n",
+      "coif12 42.65858840942383 114128.3984375\n",
+      "coif13 42.66160583496094 114154.7890625\n",
+      "coif14 42.68099594116211 114187.8828125\n",
+      "coif15 42.693885803222656 114239.90625\n",
+      "coif16 42.69415283203125 114222.0234375\n",
+      "coif17 42.69487762451172 114230.65625\n",
+      "db1 43.02796936035156 115077.1953125\n",
+      "db2 42.69436264038086 114436.171875\n",
+      "db3 42.692832946777344 114409.2578125\n",
+      "db4 42.69171905517578 114270.2265625\n",
+      "db5 42.7407341003418 114356.6796875\n",
+      "db6 42.832889556884766 114583.046875\n",
+      "db7 42.90106201171875 114756.140625\n",
+      "db8 42.927757263183594 114787.8671875\n",
+      "db9 42.980587005615234 114925.3125\n",
+      "db10 43.0425910949707 115035.796875\n",
+      "db11 43.09166717529297 115145.9609375\n",
+      "db12 43.11075210571289 115177.953125\n",
+      "db13 43.153038024902344 115282.9765625\n",
+      "db14 43.23004913330078 115438.109375\n",
+      "db15 43.254371643066406 115495.4375\n",
+      "db16 43.26611328125 115499.40625\n",
+      "db17 43.29021453857422 115553.8359375\n",
+      "db18 43.339332580566406 115670.8515625\n",
+      "db19 43.363834381103516 115699.546875\n",
+      "db20 43.3875732421875 115747.3046875\n",
+      "db21 43.406944274902344 115809.53125\n",
+      "db22 43.44538879394531 115883.546875\n",
+      "db23 43.48051071166992 115981.046875\n",
+      "db24 43.502601623535156 115997.3203125\n",
+      "db25 43.519954681396484 116035.3359375\n",
+      "db26 43.53356170654297 116078.15625\n",
+      "db27 43.55718994140625 116114.859375\n",
+      "db28 43.56884765625 116135.7421875\n",
+      "db29 43.60223388671875 116207.0390625\n",
+      "db30 43.6269645690918 116254.625\n",
+      "db31 43.62778091430664 116261.8984375\n",
+      "db32 43.65283966064453 116317.5546875\n",
+      "db33 43.683868408203125 116371.8046875\n",
+      "db34 43.71052551269531 116451.03125\n",
+      "db35 43.69470977783203 116395.71875\n",
+      "db36 43.722896575927734 116448.71875\n",
+      "db37 43.732479095458984 116494.3203125\n",
+      "db38 43.75498962402344 116516.2890625\n",
+      "dmey 42.70671844482422 114251.421875\n",
+      "haar 43.02796936035156 115077.1953125\n",
+      "rbio1.1 43.02796936035156 115077.1953125\n",
+      "rbio1.3 42.904876708984375 114998.609375\n",
+      "rbio1.5 43.487056732177734 116603.4375\n",
+      "rbio2.2 48.12295150756836 128830.65625\n",
+      "rbio2.4 45.82650375366211 123338.625\n",
+      "rbio2.6 45.57454299926758 122649.625\n",
+      "rbio2.8 45.610652923583984 122736.25\n",
+      "rbio3.1 323.1489562988281 493834.4375\n",
+      "rbio3.3 63.0237922668457 168654.40625\n",
+      "rbio3.5 55.14375686645508 147856.1875\n",
+      "rbio3.7 53.33525466918945 143081.296875\n",
+      "rbio3.9 52.70606994628906 141449.8125\n",
+      "rbio4.4 43.57114028930664 116553.6171875\n",
+      "rbio5.5 43.684425354003906 115561.5078125\n",
+      "rbio6.8 43.01945495605469 115265.328125\n",
+      "sym2 42.69436264038086 114436.171875\n",
+      "sym3 42.692832946777344 114409.2578125\n",
+      "sym4 42.546844482421875 113956.859375\n",
+      "sym5 42.57182693481445 113959.1640625\n",
+      "sym6 42.52703094482422 113885.0546875\n",
+      "sym7 42.550376892089844 113925.90625\n",
+      "sym8 42.56036376953125 113907.7109375\n",
+      "sym9 42.602020263671875 114008.0625\n",
+      "sym10 42.568580627441406 113940.015625\n",
+      "sym11 42.623958587646484 114091.0546875\n",
+      "sym12 42.602752685546875 114007.203125\n",
+      "sym13 42.62556076049805 114069.9375\n",
+      "sym14 42.608367919921875 114038.21875\n",
+      "sym15 42.66935348510742 114179.7578125\n",
+      "sym16 42.629066467285156 114064.859375\n",
+      "sym17 42.639869689941406 114103.421875\n",
+      "sym18 42.6433219909668 114109.6328125\n",
+      "sym19 42.72231674194336 114301.625\n",
+      "sym20 42.658966064453125 114131.046875\n",
+      "min:  tensor(42.5270) sym6 91\n"
+     ]
+    }
+   ],
+   "source": [
+    "# working on the random initialization\n",
+    "#wavelets = ['haar', 'db1', 'sym2', 'coif1', 'bior1.1', 'rbio1.1', 'dmey', 'bior4.4'] # 'gaus1' not supported, 'mexh','morl',  'cgau1', 'shan',  'fbsp', 'cmor'\n",
+    "wavelets = pywt.wavelist(kind='discrete', )\n",
+    "errs = []\n",
+    "names = []\n",
+    "for wavelet in wavelets:\n",
+    "    lens = []\n",
+    "    fft_layers = []\n",
+    "    to_cat = []\n",
+    "    for v in resw.values():\n",
+    "        flat = v.flatten()\n",
+    "        #print(flat.shape)\n",
+    "        lens.append(len(flat))\n",
+    "        to_cat.append(flat)\n",
+    "    flat = torch.cat(to_cat, dim=0)\n",
+    "    coeff = pywt.wavedec(flat.numpy(), wavelet, level = None)\n",
+    "    array, coeff_slices = pywt.coeffs_to_array(coeff)\n",
+    "    #print(coeff_slices) # should be static so we do not need to send them\n",
+    "    topk = torch.topk(\n",
+    "            torch.from_numpy(np.absolute(array)), round(0.1*len(array)), dim=0, sorted=False\n",
+    "        )\n",
+    "    top10 = torch.zeros(len(array))\n",
+    "    top10[topk.indices] = torch.from_numpy(array[topk.indices])\n",
+    "    og = pywt.array_to_coeffs(top10, coeff_slices, output_format=\"wavedec\")\n",
+    "    reverse_top10 = torch.from_numpy(pywt.waverec(og, wavelet = wavelet))\n",
+    "    fft_layers.append(reverse_top10)\n",
+    "    err = torch.norm(reverse_top10 - flat, 2)\n",
+    "    err1 = torch.norm(reverse_top10 - flat, 1)\n",
+    "    errs.append(err)\n",
+    "    names.append(wavelet)\n",
+    "    print(wavelet, err.item(), err1.item())\n",
+    "ind = np.argmin(errs)\n",
+    "print(\"min: \", errs[ind], names[ind], ind)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 181,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "11699132"
+      ]
+     },
+     "execution_count": 181,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "len(concr)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 197,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "topk_og = torch.topk(\n",
+    "            concr.abs(), round(0.1*len(concr)), dim=0, sorted=False\n",
+    "        )\n",
+    "top10_og = torch.zeros(len(concr))\n",
+    "top10_og[topk_og.indices] = concr[topk_og.indices]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 198,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(47.3773)"
+      ]
+     },
+     "execution_count": 198,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(top10_og - concr, 2) "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 199,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "to_cat = []\n",
+    "for v in resw.values():\n",
+    "    flat = v.flatten()\n",
+    "    to_cat.append(flat)\n",
+    "flat = torch.cat(to_cat, dim=0)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 200,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "tensor(71.3879)\n"
+     ]
+    }
+   ],
+   "source": [
+    "flat_fft = fft.rfft(flat)\n",
+    "topk = torch.topk(\n",
+    "        flat_fft.abs(), round(0.1*len(flat_fft)), dim=0, sorted=False\n",
+    "    )\n",
+    "top10 = torch.zeros(len(flat_fft), dtype = torch.cfloat)\n",
+    "top10[topk.indices] = flat_fft[topk.indices]\n",
+    "reverse_top10fft = fft.irfft(top10)\n",
+    "fft_layers.append(reverse_top10fft)\n",
+    "err = torch.norm(reverse_top10fft - flat, 2)\n",
+    "print(err)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 201,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "tensor(42.6944)\n"
+     ]
+    }
+   ],
+   "source": [
+    "coeff = pywt.wavedec(flat.numpy(), \"sym2\", level = None)\n",
+    "array, coeff_slices = pywt.coeffs_to_array(coeff)\n",
+    "#print(coeff_slices) # should be static so we do not need to send them\n",
+    "topk = torch.topk(\n",
+    "        torch.from_numpy(np.absolute(array)), round(0.1*len(array)), dim=0, sorted=False\n",
+    "    )\n",
+    "top10 = torch.zeros(len(array))\n",
+    "top10[topk.indices] = torch.from_numpy(array[topk.indices])\n",
+    "og = pywt.array_to_coeffs(top10, coeff_slices, output_format=\"wavedec\")\n",
+    "reverse_top10wv = torch.from_numpy(pywt.waverec(og, wavelet = \"sym2\"))\n",
+    "err = torch.norm(reverse_top10wv - flat, 2)\n",
+    "print(err)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 202,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "plt.plot(np.arange(100000,100050,1), reverse_top10fft[100000:100050], label = \"FFT top-10%\")\n",
+    "plt.plot(np.arange(100000,100050,1), concr[100000:100050], label = \"Original Parameters\")\n",
+    "plt.plot(np.arange(100000,100050,1), reverse_top10wv[100000:100050], label = \"Sym2 top-10%\")\n",
+    "\n",
+    "plt.title('Parameter Values') \n",
+    "#plt.ylabel(\"Absolute frequency value\")\n",
+    "plt.xlabel(\"Parameter indices\")\n",
+    "plt.legend()\n",
+    "plt.draw()\n",
+    "plt.savefig(\"ParametersWaveletHaar.png\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 203,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([ 0.0000,  0.0649,  0.0881,  0.0000,  0.0464,  0.0347, -0.0472,  0.0000,\n",
+       "         0.0000,  0.0000,  0.0000,  0.0000,  0.0000,  0.0000, -0.0365,  0.0000,\n",
+       "        -0.0422, -0.0344,  0.0372, -0.0823,  0.0000,  0.0764, -0.1654,  0.0000,\n",
+       "         0.0000, -0.0363, -0.0769,  0.0896,  0.0000,  0.0955,  0.0000, -0.0843,\n",
+       "         0.0000, -0.0387,  0.1598,  0.0000,  0.0000,  0.0000,  0.0000,  0.0000,\n",
+       "         0.0000,  0.0000,  0.0000,  0.0000,  0.0000,  0.0000,  0.0000,  0.0000,\n",
+       "         0.0000,  0.0000])"
+      ]
+     },
+     "execution_count": 203,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "top10_og[100000:100050]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 204,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "plt.plot(np.arange(1000000,1000050,1), reverse_top10fft[1000000:1000050], label = \"FFT top-10%\")\n",
+    "plt.plot(np.arange(1000000,1000050,1), concr[1000000:1000050], label = \"Original Parameters\")\n",
+    "plt.plot(np.arange(1000000,1000050,1), reverse_top10wv[1000000:1000050], label = \"Sym2 top-10%\")\n",
+    "\n",
+    "plt.title('Parameter Values') \n",
+    "#plt.ylabel(\"Absolute frequency value\")\n",
+    "plt.xlabel(\"Parameter indices\")\n",
+    "plt.legend()\n",
+    "plt.draw()\n",
+    "plt.savefig(\"ParametersWaveletHaar.png\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## FFT Training<a class=\"anchor\" id=\"ffttrain\"></a>"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 85,
+   "metadata": {
+    "id": "e65Izyv0s-yE"
+   },
+   "outputs": [],
+   "source": [
+    "lr = 0.0005\n",
+    "model = CNN().to(device)\n",
+    "loss_fn = nn.CrossEntropyLoss()\n",
+    "optimizer = torch.optim.Adam(model.parameters(), lr=lr)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 26,
+   "metadata": {
+    "colab": {
+     "base_uri": "https://localhost:8080/"
+    },
+    "id": "eqOXilqMs-yF",
+    "outputId": "06799a3b-983b-4f51-a7bd-a901c041bd05"
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "loss: 4.136391  [    0/735856]\n",
+      "loss: 1.387546  [64000/735856]\n",
+      "loss: 1.009362  [128000/735856]\n",
+      "loss: 0.568759  [192000/735856]\n",
+      "loss: 0.796950  [256000/735856]\n",
+      "loss: 0.670068  [320000/735856]\n",
+      "loss: 0.625332  [384000/735856]\n",
+      "loss: 0.557147  [448000/735856]\n",
+      "loss: 0.701893  [512000/735856]\n",
+      "loss: 0.670033  [576000/735856]\n",
+      "loss: 0.575888  [640000/735856]\n",
+      "loss: 0.654841  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 82.0%, Avg loss: 0.578153 \n",
+      "\n",
+      "loss: 0.776733  [    0/735856]\n",
+      "loss: 0.519993  [64000/735856]\n",
+      "loss: 0.599282  [128000/735856]\n",
+      "loss: 0.885723  [192000/735856]\n",
+      "loss: 0.514714  [256000/735856]\n",
+      "loss: 0.539040  [320000/735856]\n",
+      "loss: 0.422559  [384000/735856]\n",
+      "loss: 0.382564  [448000/735856]\n",
+      "loss: 0.412677  [512000/735856]\n",
+      "loss: 0.360731  [576000/735856]\n",
+      "loss: 0.534333  [640000/735856]\n",
+      "loss: 0.379236  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 85.1%, Avg loss: 0.463718 \n",
+      "\n",
+      "loss: 0.367664  [    0/735856]\n",
+      "loss: 0.339760  [64000/735856]\n",
+      "loss: 0.653718  [128000/735856]\n",
+      "loss: 0.410070  [192000/735856]\n",
+      "loss: 0.554535  [256000/735856]\n",
+      "loss: 0.578007  [320000/735856]\n",
+      "loss: 0.421670  [384000/735856]\n",
+      "loss: 0.599983  [448000/735856]\n",
+      "loss: 0.262858  [512000/735856]\n",
+      "loss: 0.333737  [576000/735856]\n",
+      "loss: 0.361296  [640000/735856]\n",
+      "loss: 0.468058  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 85.9%, Avg loss: 0.420345 \n",
+      "\n",
+      "loss: 0.443198  [    0/735856]\n",
+      "loss: 0.507409  [64000/735856]\n",
+      "loss: 0.554008  [128000/735856]\n",
+      "loss: 0.304086  [192000/735856]\n",
+      "loss: 0.482780  [256000/735856]\n",
+      "loss: 0.349616  [320000/735856]\n",
+      "loss: 0.402055  [384000/735856]\n",
+      "loss: 0.345523  [448000/735856]\n",
+      "loss: 0.364194  [512000/735856]\n",
+      "loss: 0.310542  [576000/735856]\n",
+      "loss: 0.441185  [640000/735856]\n",
+      "loss: 0.276955  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 86.8%, Avg loss: 0.390410 \n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "stats = {\"train\": [], \"test\":[]}\n",
+    "for e in range(4):\n",
+    "    #training\n",
+    "    batch = 0\n",
+    "    for X, y in train_dataloader:\n",
+    "        # print(\"grad: \"+str(model.conv1.bias.grad))\n",
+    "        old = model.conv1.bias.clone()\n",
+    "        X = X.to(device)\n",
+    "        y = y.to(device)\n",
+    "        #print(len(label))\n",
+    "        size = len(train_dataloader.dataset)\n",
+    "        model.train()\n",
+    "        \n",
+    "        # Compute prediction error\n",
+    "        pred = model(X)\n",
+    "        loss = loss_fn(pred, y)\n",
+    "        # Backpropagation\n",
+    "        loss.backward()\n",
+    "        # print(\"grad2: \"+str(model.conv1.bias.grad))\n",
+    "        \n",
+    "        \n",
+    "        # print(\"params \"+ str(len(list(model.parameters()))))\n",
+    "        \n",
+    "        for g in model.parameters():\n",
+    "            grad = g.grad\n",
+    "            shape = grad.shape\n",
+    "            flat = g.grad.flatten()\n",
+    "            topk = torch.topk(\n",
+    "            flat.abs(), round(0.1*len(flat)), dim=0, sorted=False\n",
+    "            )\n",
+    "            top10 = torch.zeros(len(flat))\n",
+    "            top10[topk.indices] = flat[topk.indices]\n",
+    "            g.grad = top10.reshape(shape)\n",
+    "            \n",
+    "        # print(\"grad3: \"+str(model.conv1.bias.grad))\n",
+    "        \n",
+    "        optimizer.step()\n",
+    "        model.zero_grad()\n",
+    "        #optimizer.zero_grad()\n",
+    "        \n",
+    "        #resetting the optimizer\n",
+    "        # optimizer.load_state_dict(model.state_dict())\n",
+    "        vals = optimizer.state.values()\n",
+    "        # print(optimizer.state.values())\n",
+    "\n",
+    "        if batch % 500 == 0:\n",
+    "            loss, current = loss.item(), batch * len(X)\n",
+    "            print(f\"loss: {loss:>7f}  [{current:>5d}/{size:>5d}]\")\n",
+    "            stats[\"train\"].append([batch, e*size + current, loss])\n",
+    "        batch += 1\n",
+    "    \n",
+    "    #testing\n",
+    "    size = len(test_dataloader.dataset)\n",
+    "    num_batches = len(test_dataloader)\n",
+    "    model.eval()\n",
+    "    test_loss, correct = 0, 0\n",
+    "    with torch.no_grad():\n",
+    "        for X, y in test_dataloader:\n",
+    "            X = X.to(device)\n",
+    "            y = y.to(device)\n",
+    "            pred = model(X)\n",
+    "            test_loss += loss_fn(pred, y).item()\n",
+    "            correct += (pred.argmax(1) == y).type(torch.float).sum().item()\n",
+    "    test_loss /= num_batches\n",
+    "    correct /= size\n",
+    "    print(\"epoch:\")\n",
+    "    print(f\"Test Error: \\n Accuracy: {(100*correct):>0.1f}%, Avg loss: {test_loss:>8f} \\n\")\n",
+    "    stats[\"test\"].append([e, test_loss, 100*correct])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# it converges slower than without gradient compression"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 29,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import torch.fft as fft"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 34,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "lr = 0.0005\n",
+    "model = CNN().to(device)\n",
+    "loss_fn = nn.CrossEntropyLoss()\n",
+    "optimizer = torch.optim.Adam(model.parameters(), lr=lr)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 35,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "loss: 4.122382  [    0/735856]\n",
+      "loss: 1.659356  [64000/735856]\n",
+      "loss: 1.175072  [128000/735856]\n",
+      "loss: 1.030752  [192000/735856]\n",
+      "loss: 0.891644  [256000/735856]\n",
+      "loss: 0.732518  [320000/735856]\n",
+      "loss: 0.613185  [384000/735856]\n",
+      "loss: 0.483264  [448000/735856]\n",
+      "loss: 0.580724  [512000/735856]\n",
+      "loss: 0.509457  [576000/735856]\n",
+      "loss: 0.661517  [640000/735856]\n",
+      "loss: 0.621521  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 81.7%, Avg loss: 0.570322 \n",
+      "\n",
+      "loss: 0.543810  [    0/735856]\n",
+      "loss: 0.339085  [64000/735856]\n",
+      "loss: 0.495473  [128000/735856]\n",
+      "loss: 0.384833  [192000/735856]\n",
+      "loss: 0.418521  [256000/735856]\n",
+      "loss: 0.614597  [320000/735856]\n",
+      "loss: 0.515266  [384000/735856]\n",
+      "loss: 0.738823  [448000/735856]\n",
+      "loss: 0.423178  [512000/735856]\n",
+      "loss: 0.473593  [576000/735856]\n",
+      "loss: 0.518021  [640000/735856]\n",
+      "loss: 0.497685  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 84.0%, Avg loss: 0.474809 \n",
+      "\n",
+      "loss: 0.575689  [    0/735856]\n",
+      "loss: 0.456497  [64000/735856]\n",
+      "loss: 0.429356  [128000/735856]\n",
+      "loss: 0.563055  [192000/735856]\n",
+      "loss: 0.486054  [256000/735856]\n",
+      "loss: 0.542747  [320000/735856]\n",
+      "loss: 0.441926  [384000/735856]\n",
+      "loss: 0.461542  [448000/735856]\n",
+      "loss: 0.502812  [512000/735856]\n",
+      "loss: 0.383888  [576000/735856]\n",
+      "loss: 0.266721  [640000/735856]\n",
+      "loss: 0.490470  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 85.8%, Avg loss: 0.423047 \n",
+      "\n",
+      "loss: 0.302303  [    0/735856]\n",
+      "loss: 0.421864  [64000/735856]\n",
+      "loss: 0.376742  [128000/735856]\n",
+      "loss: 0.259237  [192000/735856]\n",
+      "loss: 0.368860  [256000/735856]\n",
+      "loss: 0.400204  [320000/735856]\n",
+      "loss: 0.310619  [384000/735856]\n",
+      "loss: 0.320007  [448000/735856]\n",
+      "loss: 0.305337  [512000/735856]\n",
+      "loss: 0.375540  [576000/735856]\n",
+      "loss: 0.362421  [640000/735856]\n",
+      "loss: 0.347816  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 86.3%, Avg loss: 0.400034 \n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "stats = {\"train\": [], \"test\":[]}\n",
+    "for e in range(4):\n",
+    "    #training\n",
+    "    batch = 0\n",
+    "    for X, y in train_dataloader:\n",
+    "        # print(\"grad: \"+str(model.conv1.bias.grad))\n",
+    "        old = model.conv1.bias.clone()\n",
+    "        X = X.to(device)\n",
+    "        y = y.to(device)\n",
+    "        #print(len(label))\n",
+    "        size = len(train_dataloader.dataset)\n",
+    "        model.train()\n",
+    "        \n",
+    "        # Compute prediction error\n",
+    "        pred = model(X)\n",
+    "        loss = loss_fn(pred, y)\n",
+    "        # Backpropagation\n",
+    "        loss.backward()\n",
+    "        # print(\"grad2: \"+str(model.conv1.bias.grad))\n",
+    "        \n",
+    "        \n",
+    "        # print(\"params \"+ str(len(list(model.parameters()))))\n",
+    "        \n",
+    "        for g in model.parameters():\n",
+    "            grad = g.grad\n",
+    "            shape = grad.shape\n",
+    "            flat = g.grad.flatten()\n",
+    "            \n",
+    "            flat_fft = fft.rfft(flat)\n",
+    "            topk = torch.topk(flat_fft.abs(), round(0.1*len(flat_fft)), dim=0, sorted=False)\n",
+    "            top10 = torch.zeros(len(flat_fft), dtype = torch.cfloat)\n",
+    "            top10[topk.indices] = flat_fft[topk.indices]\n",
+    "            reverse_top10 = fft.irfft(top10)\n",
+    "            g.grad = reverse_top10.reshape(shape)\n",
+    "            \n",
+    "        # print(\"grad3: \"+str(model.conv1.bias.grad))\n",
+    "        \n",
+    "        optimizer.step()\n",
+    "        model.zero_grad()\n",
+    "        #optimizer.zero_grad()\n",
+    "        \n",
+    "        #resetting the optimizer\n",
+    "        # optimizer.load_state_dict(model.state_dict())\n",
+    "        vals = optimizer.state.values()\n",
+    "        # print(optimizer.state.values())\n",
+    "\n",
+    "        if batch % 500 == 0:\n",
+    "            loss, current = loss.item(), batch * len(X)\n",
+    "            print(f\"loss: {loss:>7f}  [{current:>5d}/{size:>5d}]\")\n",
+    "            stats[\"train\"].append([batch, e*size + current, loss])\n",
+    "        batch += 1\n",
+    "    \n",
+    "    #testing\n",
+    "    size = len(test_dataloader.dataset)\n",
+    "    num_batches = len(test_dataloader)\n",
+    "    model.eval()\n",
+    "    test_loss, correct = 0, 0\n",
+    "    with torch.no_grad():\n",
+    "        for X, y in test_dataloader:\n",
+    "            X = X.to(device)\n",
+    "            y = y.to(device)\n",
+    "            pred = model(X)\n",
+    "            test_loss += loss_fn(pred, y).item()\n",
+    "            correct += (pred.argmax(1) == y).type(torch.float).sum().item()\n",
+    "    test_loss /= num_batches\n",
+    "    correct /= size\n",
+    "    print(\"epoch:\")\n",
+    "    print(f\"Test Error: \\n Accuracy: {(100*correct):>0.1f}%, Avg loss: {test_loss:>8f} \\n\")\n",
+    "    stats[\"test\"].append([e, test_loss, 100*correct])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 36,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "lr = 0.0005\n",
+    "model = CNN().to(device)\n",
+    "loss_fn = nn.CrossEntropyLoss()\n",
+    "optimizer = torch.optim.Adam(model.parameters(), lr=lr)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 37,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "loss: 4.125680  [    0/735856]\n",
+      "loss: 1.490153  [64000/735856]\n",
+      "loss: 0.797238  [128000/735856]\n",
+      "loss: 0.703639  [192000/735856]\n",
+      "loss: 0.862654  [256000/735856]\n",
+      "loss: 0.674491  [320000/735856]\n",
+      "loss: 0.633835  [384000/735856]\n",
+      "loss: 0.537149  [448000/735856]\n",
+      "loss: 0.579062  [512000/735856]\n",
+      "loss: 0.468447  [576000/735856]\n",
+      "loss: 0.488582  [640000/735856]\n",
+      "loss: 0.529873  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 83.8%, Avg loss: 0.489548 \n",
+      "\n",
+      "loss: 0.573154  [    0/735856]\n",
+      "loss: 0.466781  [64000/735856]\n",
+      "loss: 0.468422  [128000/735856]\n",
+      "loss: 0.449423  [192000/735856]\n",
+      "loss: 0.357713  [256000/735856]\n",
+      "loss: 0.391187  [320000/735856]\n",
+      "loss: 0.500866  [384000/735856]\n",
+      "loss: 0.368405  [448000/735856]\n",
+      "loss: 0.423239  [512000/735856]\n",
+      "loss: 0.533780  [576000/735856]\n",
+      "loss: 0.623185  [640000/735856]\n",
+      "loss: 0.380635  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 85.9%, Avg loss: 0.411804 \n",
+      "\n",
+      "loss: 0.485906  [    0/735856]\n",
+      "loss: 0.522850  [64000/735856]\n",
+      "loss: 0.474864  [128000/735856]\n",
+      "loss: 0.453226  [192000/735856]\n",
+      "loss: 0.311791  [256000/735856]\n",
+      "loss: 0.370382  [320000/735856]\n",
+      "loss: 0.415271  [384000/735856]\n",
+      "loss: 0.448348  [448000/735856]\n",
+      "loss: 0.416761  [512000/735856]\n",
+      "loss: 0.392923  [576000/735856]\n",
+      "loss: 0.408733  [640000/735856]\n",
+      "loss: 0.369844  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 86.8%, Avg loss: 0.382454 \n",
+      "\n",
+      "loss: 0.351067  [    0/735856]\n",
+      "loss: 0.441320  [64000/735856]\n",
+      "loss: 0.376012  [128000/735856]\n",
+      "loss: 0.326137  [192000/735856]\n",
+      "loss: 0.326353  [256000/735856]\n",
+      "loss: 0.337223  [320000/735856]\n",
+      "loss: 0.377199  [384000/735856]\n",
+      "loss: 0.453688  [448000/735856]\n",
+      "loss: 0.394669  [512000/735856]\n",
+      "loss: 0.462621  [576000/735856]\n",
+      "loss: 0.365274  [640000/735856]\n",
+      "loss: 0.414022  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 87.0%, Avg loss: 0.381759 \n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "stats = {\"train\": [], \"test\":[]}\n",
+    "for e in range(4):\n",
+    "    #training\n",
+    "    batch = 0\n",
+    "    for X, y in train_dataloader:\n",
+    "        # print(\"grad: \"+str(model.conv1.bias.grad))\n",
+    "        old = model.conv1.bias.clone()\n",
+    "        X = X.to(device)\n",
+    "        y = y.to(device)\n",
+    "        #print(len(label))\n",
+    "        size = len(train_dataloader.dataset)\n",
+    "        model.train()\n",
+    "        \n",
+    "        # Compute prediction error\n",
+    "        pred = model(X)\n",
+    "        loss = loss_fn(pred, y)\n",
+    "        # Backpropagation\n",
+    "        loss.backward()\n",
+    "        # print(\"grad2: \"+str(model.conv1.bias.grad))\n",
+    "        \n",
+    "        \n",
+    "        # print(\"params \"+ str(len(list(model.parameters()))))\n",
+    "        \n",
+    "        for g in model.parameters():\n",
+    "            grad = g.grad\n",
+    "            shape = grad.shape\n",
+    "            flat = g.grad.flatten()\n",
+    "            \n",
+    "            flat_fft = fft.rfft(flat)\n",
+    "            topk = torch.topk(flat_fft.abs(), round(0.2*len(flat_fft)), dim=0, sorted=False)\n",
+    "            top10 = torch.zeros(len(flat_fft), dtype = torch.cfloat)\n",
+    "            top10[topk.indices] = flat_fft[topk.indices]\n",
+    "            reverse_top10 = fft.irfft(top10)\n",
+    "            g.grad = reverse_top10.reshape(shape)\n",
+    "            \n",
+    "        # print(\"grad3: \"+str(model.conv1.bias.grad))\n",
+    "        \n",
+    "        optimizer.step()\n",
+    "        model.zero_grad()\n",
+    "        #optimizer.zero_grad()\n",
+    "        \n",
+    "        #resetting the optimizer\n",
+    "        # optimizer.load_state_dict(model.state_dict())\n",
+    "        vals = optimizer.state.values()\n",
+    "        # print(optimizer.state.values())\n",
+    "\n",
+    "        if batch % 500 == 0:\n",
+    "            loss, current = loss.item(), batch * len(X)\n",
+    "            print(f\"loss: {loss:>7f}  [{current:>5d}/{size:>5d}]\")\n",
+    "            stats[\"train\"].append([batch, e*size + current, loss])\n",
+    "        batch += 1\n",
+    "    \n",
+    "    #testing\n",
+    "    size = len(test_dataloader.dataset)\n",
+    "    num_batches = len(test_dataloader)\n",
+    "    model.eval()\n",
+    "    test_loss, correct = 0, 0\n",
+    "    with torch.no_grad():\n",
+    "        for X, y in test_dataloader:\n",
+    "            X = X.to(device)\n",
+    "            y = y.to(device)\n",
+    "            pred = model(X)\n",
+    "            test_loss += loss_fn(pred, y).item()\n",
+    "            correct += (pred.argmax(1) == y).type(torch.float).sum().item()\n",
+    "    test_loss /= num_batches\n",
+    "    correct /= size\n",
+    "    print(\"epoch:\")\n",
+    "    print(f\"Test Error: \\n Accuracy: {(100*correct):>0.1f}%, Avg loss: {test_loss:>8f} \\n\")\n",
+    "    stats[\"test\"].append([e, test_loss, 100*correct])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 229,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "lr = 0.0005\n",
+    "model = CNN().to(device)\n",
+    "loss_fn = nn.CrossEntropyLoss()\n",
+    "optimizer = torch.optim.Adam(model.parameters(), lr=lr)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 230,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "loss: 4.128546  [    0/735856]\n",
+      "loss: 1.380654  [64000/735856]\n",
+      "loss: 1.055664  [128000/735856]\n",
+      "loss: 0.687121  [192000/735856]\n",
+      "loss: 0.728443  [256000/735856]\n",
+      "loss: 0.731651  [320000/735856]\n",
+      "loss: 0.649674  [384000/735856]\n",
+      "loss: 0.474646  [448000/735856]\n",
+      "loss: 0.653415  [512000/735856]\n",
+      "loss: 0.450781  [576000/735856]\n",
+      "loss: 0.629819  [640000/735856]\n",
+      "loss: 0.548388  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 83.2%, Avg loss: 0.540368 \n",
+      "\n",
+      "loss: 0.767534  [    0/735856]\n",
+      "loss: 0.474996  [64000/735856]\n",
+      "loss: 0.657538  [128000/735856]\n",
+      "loss: 0.388315  [192000/735856]\n",
+      "loss: 0.581206  [256000/735856]\n",
+      "loss: 0.421425  [320000/735856]\n",
+      "loss: 0.494563  [384000/735856]\n",
+      "loss: 0.541493  [448000/735856]\n",
+      "loss: 0.451657  [512000/735856]\n",
+      "loss: 0.382599  [576000/735856]\n",
+      "loss: 0.449485  [640000/735856]\n",
+      "loss: 0.408576  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 85.0%, Avg loss: 0.455863 \n",
+      "\n",
+      "loss: 0.487152  [    0/735856]\n",
+      "loss: 0.566136  [64000/735856]\n",
+      "loss: 0.388435  [128000/735856]\n",
+      "loss: 0.435407  [192000/735856]\n",
+      "loss: 0.626423  [256000/735856]\n",
+      "loss: 0.436673  [320000/735856]\n",
+      "loss: 0.599878  [384000/735856]\n",
+      "loss: 0.567672  [448000/735856]\n",
+      "loss: 0.458641  [512000/735856]\n",
+      "loss: 0.479425  [576000/735856]\n",
+      "loss: 0.289777  [640000/735856]\n",
+      "loss: 0.392798  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 85.1%, Avg loss: 0.449504 \n",
+      "\n",
+      "loss: 0.616642  [    0/735856]\n",
+      "loss: 0.266790  [64000/735856]\n",
+      "loss: 0.314584  [128000/735856]\n",
+      "loss: 0.314711  [192000/735856]\n",
+      "loss: 0.429452  [256000/735856]\n",
+      "loss: 0.363823  [320000/735856]\n",
+      "loss: 0.594678  [384000/735856]\n",
+      "loss: 0.417127  [448000/735856]\n",
+      "loss: 0.415177  [512000/735856]\n",
+      "loss: 0.406279  [576000/735856]\n",
+      "loss: 0.512797  [640000/735856]\n",
+      "loss: 0.259631  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 86.3%, Avg loss: 0.415515 \n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "# wavelet per layer\n",
+    "stats = {\"train\": [], \"test\":[]}\n",
+    "wavelet = 'haar'\n",
+    "for e in range(4):\n",
+    "    #training\n",
+    "    batch = 0\n",
+    "    for X, y in train_dataloader:\n",
+    "        # print(\"grad: \"+str(model.conv1.bias.grad))\n",
+    "        old = model.conv1.bias.clone()\n",
+    "        X = X.to(device)\n",
+    "        y = y.to(device)\n",
+    "        #print(len(label))\n",
+    "        size = len(train_dataloader.dataset)\n",
+    "        model.train()\n",
+    "        \n",
+    "        # Compute prediction error\n",
+    "        pred = model(X)\n",
+    "        loss = loss_fn(pred, y)\n",
+    "        # Backpropagation\n",
+    "        loss.backward()\n",
+    "        # print(\"grad2: \"+str(model.conv1.bias.grad))\n",
+    "        \n",
+    "        \n",
+    "        # print(\"params \"+ str(len(list(model.parameters()))))\n",
+    "        \n",
+    "        for g in model.parameters():\n",
+    "            grad = g.grad\n",
+    "            shape = grad.shape\n",
+    "            flat = g.grad.flatten()\n",
+    "            \n",
+    "            coeff = pywt.wavedec(flat.numpy(), wavelet, level = None)\n",
+    "            array, coeff_slices = pywt.coeffs_to_array(coeff)\n",
+    "            #print(coeff_slices) # should be static so we do not need to send them\n",
+    "            topk = torch.topk(\n",
+    "                    torch.from_numpy(np.absolute(array)), round(0.1*len(array)), dim=0, sorted=False\n",
+    "                )\n",
+    "            top10 = torch.zeros(len(array))\n",
+    "            top10[topk.indices] = torch.from_numpy(array[topk.indices])\n",
+    "            og = pywt.array_to_coeffs(top10, coeff_slices, output_format=\"wavedec\")\n",
+    "            reverse_top10 = torch.from_numpy(pywt.waverec(og, wavelet = wavelet))\n",
+    "            \n",
+    "            g.grad = reverse_top10.reshape(shape)\n",
+    "            \n",
+    "        # print(\"grad3: \"+str(model.conv1.bias.grad))\n",
+    "        \n",
+    "        optimizer.step()\n",
+    "        model.zero_grad()\n",
+    "        #optimizer.zero_grad()\n",
+    "        \n",
+    "        #resetting the optimizer\n",
+    "        # optimizer.load_state_dict(model.state_dict())\n",
+    "        vals = optimizer.state.values()\n",
+    "        # print(optimizer.state.values())\n",
+    "\n",
+    "        if batch % 500 == 0:\n",
+    "            loss, current = loss.item(), batch * len(X)\n",
+    "            print(f\"loss: {loss:>7f}  [{current:>5d}/{size:>5d}]\")\n",
+    "            stats[\"train\"].append([batch, e*size + current, loss])\n",
+    "        batch += 1\n",
+    "    \n",
+    "    #testing\n",
+    "    size = len(test_dataloader.dataset)\n",
+    "    num_batches = len(test_dataloader)\n",
+    "    model.eval()\n",
+    "    test_loss, correct = 0, 0\n",
+    "    with torch.no_grad():\n",
+    "        for X, y in test_dataloader:\n",
+    "            X = X.to(device)\n",
+    "            y = y.to(device)\n",
+    "            pred = model(X)\n",
+    "            test_loss += loss_fn(pred, y).item()\n",
+    "            correct += (pred.argmax(1) == y).type(torch.float).sum().item()\n",
+    "    test_loss /= num_batches\n",
+    "    correct /= size\n",
+    "    print(\"epoch:\")\n",
+    "    print(f\"Test Error: \\n Accuracy: {(100*correct):>0.1f}%, Avg loss: {test_loss:>8f} \\n\")\n",
+    "    stats[\"test\"].append([e, test_loss, 100*correct])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 31,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "lr = 0.0005\n",
+    "model = CNN().to(device)\n",
+    "loss_fn = nn.CrossEntropyLoss()\n",
+    "optimizer = torch.optim.Adam(model.parameters(), lr=lr)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 32,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "loss: 4.114821  [    0/735856]\n",
+      "loss: 1.691283  [64000/735856]\n",
+      "loss: 0.739705  [128000/735856]\n",
+      "loss: 0.878835  [192000/735856]\n",
+      "loss: 0.893373  [256000/735856]\n",
+      "loss: 0.622142  [320000/735856]\n",
+      "loss: 0.729517  [384000/735856]\n",
+      "loss: 0.930510  [448000/735856]\n",
+      "loss: 0.564309  [512000/735856]\n",
+      "loss: 0.820855  [576000/735856]\n",
+      "loss: 0.592394  [640000/735856]\n",
+      "loss: 0.530982  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 82.1%, Avg loss: 0.576240 \n",
+      "\n",
+      "loss: 0.387244  [    0/735856]\n",
+      "loss: 0.483110  [64000/735856]\n",
+      "loss: 0.544743  [128000/735856]\n",
+      "loss: 0.570393  [192000/735856]\n",
+      "loss: 0.511510  [256000/735856]\n",
+      "loss: 0.335736  [320000/735856]\n",
+      "loss: 0.671059  [384000/735856]\n",
+      "loss: 0.473634  [448000/735856]\n",
+      "loss: 0.559810  [512000/735856]\n",
+      "loss: 0.454633  [576000/735856]\n",
+      "loss: 0.571824  [640000/735856]\n",
+      "loss: 0.626598  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 84.3%, Avg loss: 0.482487 \n",
+      "\n",
+      "loss: 0.422876  [    0/735856]\n",
+      "loss: 0.769186  [64000/735856]\n",
+      "loss: 0.351542  [128000/735856]\n",
+      "loss: 0.436626  [192000/735856]\n",
+      "loss: 0.628383  [256000/735856]\n",
+      "loss: 0.528591  [320000/735856]\n",
+      "loss: 0.573713  [384000/735856]\n",
+      "loss: 0.517758  [448000/735856]\n",
+      "loss: 0.434379  [512000/735856]\n",
+      "loss: 0.491439  [576000/735856]\n",
+      "loss: 0.494193  [640000/735856]\n",
+      "loss: 0.505279  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 85.1%, Avg loss: 0.454134 \n",
+      "\n",
+      "loss: 0.439892  [    0/735856]\n",
+      "loss: 0.459202  [64000/735856]\n",
+      "loss: 0.245611  [128000/735856]\n",
+      "loss: 0.355409  [192000/735856]\n",
+      "loss: 0.490522  [256000/735856]\n",
+      "loss: 0.481495  [320000/735856]\n",
+      "loss: 0.426439  [384000/735856]\n",
+      "loss: 0.641797  [448000/735856]\n",
+      "loss: 0.423894  [512000/735856]\n",
+      "loss: 0.498421  [576000/735856]\n",
+      "loss: 0.344970  [640000/735856]\n",
+      "loss: 0.368346  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 84.2%, Avg loss: 0.466052 \n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "# per layer repeat\n",
+    "stats = {\"train\": [], \"test\":[]}\n",
+    "wavelet = 'sym2'\n",
+    "for e in range(4):\n",
+    "    #training\n",
+    "    batch = 0\n",
+    "    for X, y in train_dataloader:\n",
+    "        # print(\"grad: \"+str(model.conv1.bias.grad))\n",
+    "        old = model.conv1.bias.clone()\n",
+    "        X = X.to(device)\n",
+    "        y = y.to(device)\n",
+    "        #print(len(label))\n",
+    "        size = len(train_dataloader.dataset)\n",
+    "        model.train()\n",
+    "        \n",
+    "        # Compute prediction error\n",
+    "        pred = model(X)\n",
+    "        loss = loss_fn(pred, y)\n",
+    "        # Backpropagation\n",
+    "        loss.backward()\n",
+    "        # print(\"grad2: \"+str(model.conv1.bias.grad))\n",
+    "        \n",
+    "        \n",
+    "        # print(\"params \"+ str(len(list(model.parameters()))))\n",
+    "        \n",
+    "        for g in model.parameters():\n",
+    "            grad = g.grad\n",
+    "            shape = grad.shape\n",
+    "            flat = g.grad.flatten()\n",
+    "            \n",
+    "            coeff = pywt.wavedec(flat.numpy(), wavelet, level = 4)\n",
+    "            # print(len(coeff))\n",
+    "            array, coeff_slices = pywt.coeffs_to_array(coeff)\n",
+    "            #print(coeff_slices) # should be static so we do not need to send them\n",
+    "            topk = torch.topk(\n",
+    "                    torch.from_numpy(np.absolute(array)), round(0.1*len(array)), dim=0, sorted=False\n",
+    "                )\n",
+    "            top10 = torch.zeros(len(array))\n",
+    "            top10[topk.indices] = torch.from_numpy(array[topk.indices])\n",
+    "            og = pywt.array_to_coeffs(top10, coeff_slices, output_format=\"wavedec\")\n",
+    "            reverse_top10 = torch.from_numpy(pywt.waverec(og, wavelet = wavelet))\n",
+    "            \n",
+    "            g.grad = reverse_top10.reshape(shape)\n",
+    "            \n",
+    "        # print(\"grad3: \"+str(model.conv1.bias.grad))\n",
+    "        \n",
+    "        optimizer.step()\n",
+    "        model.zero_grad()\n",
+    "        #optimizer.zero_grad()\n",
+    "        \n",
+    "        #resetting the optimizer\n",
+    "        # optimizer.load_state_dict(model.state_dict())\n",
+    "        vals = optimizer.state.values()\n",
+    "        # print(optimizer.state.values())\n",
+    "\n",
+    "        if batch % 500 == 0:\n",
+    "            loss, current = loss.item(), batch * len(X)\n",
+    "            print(f\"loss: {loss:>7f}  [{current:>5d}/{size:>5d}]\")\n",
+    "            stats[\"train\"].append([batch, e*size + current, loss])\n",
+    "        batch += 1\n",
+    "    \n",
+    "    #testing\n",
+    "    size = len(test_dataloader.dataset)\n",
+    "    num_batches = len(test_dataloader)\n",
+    "    model.eval()\n",
+    "    test_loss, correct = 0, 0\n",
+    "    with torch.no_grad():\n",
+    "        for X, y in test_dataloader:\n",
+    "            X = X.to(device)\n",
+    "            y = y.to(device)\n",
+    "            pred = model(X)\n",
+    "            test_loss += loss_fn(pred, y).item()\n",
+    "            correct += (pred.argmax(1) == y).type(torch.float).sum().item()\n",
+    "    test_loss /= num_batches\n",
+    "    correct /= size\n",
+    "    print(\"epoch:\")\n",
+    "    print(f\"Test Error: \\n Accuracy: {(100*correct):>0.1f}%, Avg loss: {test_loss:>8f} \\n\")\n",
+    "    stats[\"test\"].append([e, test_loss, 100*correct])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 22,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "lr = 0.0005\n",
+    "model = CNN().to(device)\n",
+    "loss_fn = nn.CrossEntropyLoss()\n",
+    "optimizer = torch.optim.Adam(model.parameters(), lr=lr)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 23,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "loss: 4.135039  [    0/735856]\n",
+      "loss: 1.154176  [64000/735856]\n",
+      "loss: 0.624926  [128000/735856]\n",
+      "loss: 0.605651  [192000/735856]\n",
+      "loss: 0.601686  [256000/735856]\n",
+      "loss: 0.532184  [320000/735856]\n",
+      "loss: 0.627395  [384000/735856]\n",
+      "loss: 0.411491  [448000/735856]\n",
+      "loss: 0.354714  [512000/735856]\n",
+      "loss: 0.393673  [576000/735856]\n",
+      "loss: 0.612208  [640000/735856]\n",
+      "loss: 0.619142  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 85.2%, Avg loss: 0.445382 \n",
+      "\n",
+      "loss: 0.429652  [    0/735856]\n",
+      "loss: 0.396769  [64000/735856]\n",
+      "loss: 0.423508  [128000/735856]\n",
+      "loss: 0.576669  [192000/735856]\n",
+      "loss: 0.432909  [256000/735856]\n",
+      "loss: 0.515018  [320000/735856]\n",
+      "loss: 0.375972  [384000/735856]\n",
+      "loss: 0.376615  [448000/735856]\n",
+      "loss: 0.326449  [512000/735856]\n",
+      "loss: 0.360019  [576000/735856]\n",
+      "loss: 0.354862  [640000/735856]\n",
+      "loss: 0.522963  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 86.9%, Avg loss: 0.383029 \n",
+      "\n",
+      "loss: 0.319733  [    0/735856]\n",
+      "loss: 0.486813  [64000/735856]\n",
+      "loss: 0.351780  [128000/735856]\n",
+      "loss: 0.327754  [192000/735856]\n",
+      "loss: 0.311207  [256000/735856]\n",
+      "loss: 0.421759  [320000/735856]\n",
+      "loss: 0.486802  [384000/735856]\n",
+      "loss: 0.327473  [448000/735856]\n",
+      "loss: 0.229189  [512000/735856]\n",
+      "loss: 0.395156  [576000/735856]\n",
+      "loss: 0.330383  [640000/735856]\n",
+      "loss: 0.240293  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 87.1%, Avg loss: 0.374847 \n",
+      "\n",
+      "loss: 0.364167  [    0/735856]\n",
+      "loss: 0.325380  [64000/735856]\n",
+      "loss: 0.407133  [128000/735856]\n",
+      "loss: 0.229438  [192000/735856]\n",
+      "loss: 0.324557  [256000/735856]\n",
+      "loss: 0.312494  [320000/735856]\n",
+      "loss: 0.250331  [384000/735856]\n",
+      "loss: 0.405609  [448000/735856]\n",
+      "loss: 0.334161  [512000/735856]\n",
+      "loss: 0.305596  [576000/735856]\n",
+      "loss: 0.396855  [640000/735856]\n",
+      "loss: 0.267720  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 87.3%, Avg loss: 0.357564 \n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "# wavelet over entire flatten gradient\n",
+    "stats = {\"train\": [], \"test\":[]}\n",
+    "wavelet = 'haar'\n",
+    "for e in range(4):\n",
+    "    #training\n",
+    "    batch = 0\n",
+    "    for X, y in train_dataloader:\n",
+    "        # print(\"grad: \"+str(model.conv1.bias.grad))\n",
+    "        old = model.conv1.bias.clone()\n",
+    "        X = X.to(device)\n",
+    "        y = y.to(device)\n",
+    "        #print(len(label))\n",
+    "        size = len(train_dataloader.dataset)\n",
+    "        model.train()\n",
+    "        \n",
+    "        # Compute prediction error\n",
+    "        pred = model(X)\n",
+    "        loss = loss_fn(pred, y)\n",
+    "        # Backpropagation\n",
+    "        loss.backward()\n",
+    "        # print(\"grad2: \"+str(model.conv1.bias.grad))\n",
+    "        \n",
+    "        \n",
+    "        # print(\"params \"+ str(len(list(model.parameters()))))\n",
+    "        flats = []\n",
+    "        shapes = []\n",
+    "        lens = []\n",
+    "        for g in model.parameters():\n",
+    "            grad = g.grad\n",
+    "            shape = grad.shape\n",
+    "            shapes.append(shape)\n",
+    "            flat = g.grad.flatten()\n",
+    "            flats.append(flat)\n",
+    "            lens.append(len(flat))\n",
+    "        flat = torch.cat(flats)\n",
+    "        coeff = pywt.wavedec(flat.numpy(), wavelet, level = None)\n",
+    "        array, coeff_slices = pywt.coeffs_to_array(coeff)\n",
+    "        #print(coeff_slices) # should be static so we do not need to send them\n",
+    "        topk = torch.topk(\n",
+    "                torch.from_numpy(np.absolute(array)), round(0.1*len(array)), dim=0, sorted=False\n",
+    "            )\n",
+    "        top10 = torch.zeros(len(array))\n",
+    "        top10[topk.indices] = torch.from_numpy(array[topk.indices])\n",
+    "        og = pywt.array_to_coeffs(top10, coeff_slices, output_format=\"wavedec\")\n",
+    "        reverse_top10 = torch.from_numpy(pywt.waverec(og, wavelet = wavelet))\n",
+    "            \n",
+    "\n",
+    "        \n",
+    "        start_index = 0    \n",
+    "        for i, key in enumerate(model.parameters()):\n",
+    "            end_index = start_index + lens[i]\n",
+    "            key.grad = reverse_top10[start_index:end_index].reshape(shapes[i])\n",
+    "            start_index = end_index\n",
+    "            \n",
+    "        # print(\"grad3: \"+str(model.conv1.bias.grad))\n",
+    "        \n",
+    "        optimizer.step()\n",
+    "        model.zero_grad()\n",
+    "        #optimizer.zero_grad()\n",
+    "        \n",
+    "        #resetting the optimizer\n",
+    "        # optimizer.load_state_dict(model.state_dict())\n",
+    "        vals = optimizer.state.values()\n",
+    "        # print(optimizer.state.values())\n",
+    "\n",
+    "        if batch % 500 == 0:\n",
+    "            loss, current = loss.item(), batch * len(X)\n",
+    "            print(f\"loss: {loss:>7f}  [{current:>5d}/{size:>5d}]\")\n",
+    "            stats[\"train\"].append([batch, e*size + current, loss])\n",
+    "        batch += 1\n",
+    "    \n",
+    "    #testing\n",
+    "    size = len(test_dataloader.dataset)\n",
+    "    num_batches = len(test_dataloader)\n",
+    "    model.eval()\n",
+    "    test_loss, correct = 0, 0\n",
+    "    with torch.no_grad():\n",
+    "        for X, y in test_dataloader:\n",
+    "            X = X.to(device)\n",
+    "            y = y.to(device)\n",
+    "            pred = model(X)\n",
+    "            test_loss += loss_fn(pred, y).item()\n",
+    "            correct += (pred.argmax(1) == y).type(torch.float).sum().item()\n",
+    "    test_loss /= num_batches\n",
+    "    correct /= size\n",
+    "    print(\"epoch:\")\n",
+    "    print(f\"Test Error: \\n Accuracy: {(100*correct):>0.1f}%, Avg loss: {test_loss:>8f} \\n\")\n",
+    "    stats[\"test\"].append([e, test_loss, 100*correct])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 33,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "lr = 0.0005\n",
+    "model = CNN().to(device)\n",
+    "loss_fn = nn.CrossEntropyLoss()\n",
+    "optimizer = torch.optim.Adam(model.parameters(), lr=lr)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 34,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import pywt"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 35,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "loss: 4.126535  [    0/735856]\n",
+      "loss: 1.238513  [64000/735856]\n",
+      "loss: 0.947478  [128000/735856]\n",
+      "loss: 0.758107  [192000/735856]\n",
+      "loss: 0.538468  [256000/735856]\n",
+      "loss: 0.726651  [320000/735856]\n",
+      "loss: 0.523160  [384000/735856]\n",
+      "loss: 0.323133  [448000/735856]\n",
+      "loss: 0.439029  [512000/735856]\n",
+      "loss: 0.406259  [576000/735856]\n",
+      "loss: 0.490085  [640000/735856]\n",
+      "loss: 0.520512  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 85.0%, Avg loss: 0.449423 \n",
+      "\n",
+      "loss: 0.481995  [    0/735856]\n",
+      "loss: 0.485922  [64000/735856]\n",
+      "loss: 0.363491  [128000/735856]\n",
+      "loss: 0.604679  [192000/735856]\n",
+      "loss: 0.318160  [256000/735856]\n",
+      "loss: 0.321950  [320000/735856]\n",
+      "loss: 0.355750  [384000/735856]\n",
+      "loss: 0.399116  [448000/735856]\n",
+      "loss: 0.283532  [512000/735856]\n",
+      "loss: 0.527641  [576000/735856]\n",
+      "loss: 0.413641  [640000/735856]\n",
+      "loss: 0.309524  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 86.0%, Avg loss: 0.406266 \n",
+      "\n",
+      "loss: 0.332639  [    0/735856]\n",
+      "loss: 0.438504  [64000/735856]\n",
+      "loss: 0.375174  [128000/735856]\n",
+      "loss: 0.325330  [192000/735856]\n",
+      "loss: 0.311181  [256000/735856]\n",
+      "loss: 0.439757  [320000/735856]\n",
+      "loss: 0.357552  [384000/735856]\n",
+      "loss: 0.318609  [448000/735856]\n",
+      "loss: 0.265860  [512000/735856]\n",
+      "loss: 0.534769  [576000/735856]\n",
+      "loss: 0.287946  [640000/735856]\n",
+      "loss: 0.381077  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 87.0%, Avg loss: 0.377133 \n",
+      "\n",
+      "loss: 0.293545  [    0/735856]\n",
+      "loss: 0.346547  [64000/735856]\n",
+      "loss: 0.489387  [128000/735856]\n",
+      "loss: 0.438751  [192000/735856]\n",
+      "loss: 0.376747  [256000/735856]\n",
+      "loss: 0.427431  [320000/735856]\n",
+      "loss: 0.381158  [384000/735856]\n",
+      "loss: 0.482535  [448000/735856]\n",
+      "loss: 0.229551  [512000/735856]\n",
+      "loss: 0.455859  [576000/735856]\n",
+      "loss: 0.332654  [640000/735856]\n",
+      "loss: 0.496725  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 87.5%, Avg loss: 0.358163 \n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "# rerun with alpha 0.2\n",
+    "stats = {\"train\": [], \"test\":[]}\n",
+    "wavelet = 'sym2'\n",
+    "for e in range(4):\n",
+    "    #training\n",
+    "    batch = 0\n",
+    "    for X, y in train_dataloader:\n",
+    "        # print(\"grad: \"+str(model.conv1.bias.grad))\n",
+    "        old = model.conv1.bias.clone()\n",
+    "        X = X.to(device)\n",
+    "        y = y.to(device)\n",
+    "        #print(len(label))\n",
+    "        size = len(train_dataloader.dataset)\n",
+    "        model.train()\n",
+    "        \n",
+    "        # Compute prediction error\n",
+    "        pred = model(X)\n",
+    "        loss = loss_fn(pred, y)\n",
+    "        # Backpropagation\n",
+    "        loss.backward()\n",
+    "        # print(\"grad2: \"+str(model.conv1.bias.grad))\n",
+    "        \n",
+    "        \n",
+    "        # print(\"params \"+ str(len(list(model.parameters()))))\n",
+    "        flats = []\n",
+    "        shapes = []\n",
+    "        lens = []\n",
+    "        for g in model.parameters():\n",
+    "            grad = g.grad\n",
+    "            shape = grad.shape\n",
+    "            shapes.append(shape)\n",
+    "            flat = g.grad.flatten()\n",
+    "            flats.append(flat)\n",
+    "            lens.append(len(flat))\n",
+    "        flat = torch.cat(flats)\n",
+    "        coeff = pywt.wavedec(flat.numpy(), wavelet, level = None)\n",
+    "        array, coeff_slices = pywt.coeffs_to_array(coeff)\n",
+    "        #print(coeff_slices) # should be static so we do not need to send them\n",
+    "        topk = torch.topk(\n",
+    "                torch.from_numpy(np.absolute(array)), round(0.1*len(array)), dim=0, sorted=False\n",
+    "            )\n",
+    "        top10 = torch.zeros(len(array))\n",
+    "        top10[topk.indices] = torch.from_numpy(array[topk.indices])\n",
+    "        og = pywt.array_to_coeffs(top10, coeff_slices, output_format=\"wavedec\")\n",
+    "        reverse_top10 = torch.from_numpy(pywt.waverec(og, wavelet = wavelet))\n",
+    "            \n",
+    "\n",
+    "        \n",
+    "        start_index = 0    \n",
+    "        for i, key in enumerate(model.parameters()):\n",
+    "            end_index = start_index + lens[i]\n",
+    "            key.grad = reverse_top10[start_index:end_index].reshape(shapes[i])\n",
+    "            start_index = end_index\n",
+    "            \n",
+    "        # print(\"grad3: \"+str(model.conv1.bias.grad))\n",
+    "        \n",
+    "        optimizer.step()\n",
+    "        model.zero_grad()\n",
+    "        #optimizer.zero_grad()\n",
+    "        \n",
+    "        #resetting the optimizer\n",
+    "        # optimizer.load_state_dict(model.state_dict())\n",
+    "        vals = optimizer.state.values()\n",
+    "        # print(optimizer.state.values())\n",
+    "\n",
+    "        if batch % 500 == 0:\n",
+    "            loss, current = loss.item(), batch * len(X)\n",
+    "            print(f\"loss: {loss:>7f}  [{current:>5d}/{size:>5d}]\")\n",
+    "            stats[\"train\"].append([batch, e*size + current, loss])\n",
+    "        batch += 1\n",
+    "    \n",
+    "    #testing\n",
+    "    size = len(test_dataloader.dataset)\n",
+    "    num_batches = len(test_dataloader)\n",
+    "    model.eval()\n",
+    "    test_loss, correct = 0, 0\n",
+    "    with torch.no_grad():\n",
+    "        for X, y in test_dataloader:\n",
+    "            X = X.to(device)\n",
+    "            y = y.to(device)\n",
+    "            pred = model(X)\n",
+    "            test_loss += loss_fn(pred, y).item()\n",
+    "            correct += (pred.argmax(1) == y).type(torch.float).sum().item()\n",
+    "    test_loss /= num_batches\n",
+    "    correct /= size\n",
+    "    print(\"epoch:\")\n",
+    "    print(f\"Test Error: \\n Accuracy: {(100*correct):>0.1f}%, Avg loss: {test_loss:>8f} \\n\")\n",
+    "    stats[\"test\"].append([e, test_loss, 100*correct])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 24,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "v,i = torch.topk(torch.tensor([1,2,3,4]), 2 , dim=0, sorted=False)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 25,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([4, 3])"
+      ]
+     },
+     "execution_count": 25,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "v"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 26,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([3, 2])"
+      ]
+     },
+     "execution_count": 26,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "i"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 35,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "lr = 0.0005\n",
+    "model = CNN().to(device)\n",
+    "loss_fn = nn.CrossEntropyLoss()\n",
+    "optimizer = torch.optim.Adam(model.parameters(), lr=lr)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 36,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "loss: 4.126898  [    0/735856]\n",
+      "loss: 1.050626  [64000/735856]\n",
+      "loss: 0.652647  [128000/735856]\n",
+      "loss: 0.648297  [192000/735856]\n",
+      "loss: 0.636182  [256000/735856]\n",
+      "loss: 0.570731  [320000/735856]\n",
+      "loss: 0.509262  [384000/735856]\n",
+      "loss: 0.309913  [448000/735856]\n",
+      "loss: 0.538662  [512000/735856]\n",
+      "loss: 0.530801  [576000/735856]\n",
+      "loss: 0.507737  [640000/735856]\n",
+      "loss: 0.422813  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 85.5%, Avg loss: 0.435624 \n",
+      "\n",
+      "loss: 0.388328  [    0/735856]\n",
+      "loss: 0.299637  [64000/735856]\n",
+      "loss: 0.420440  [128000/735856]\n",
+      "loss: 0.230143  [192000/735856]\n",
+      "loss: 0.374027  [256000/735856]\n",
+      "loss: 0.279048  [320000/735856]\n",
+      "loss: 0.495672  [384000/735856]\n",
+      "loss: 0.277394  [448000/735856]\n",
+      "loss: 0.395940  [512000/735856]\n",
+      "loss: 0.476103  [576000/735856]\n",
+      "loss: 0.550471  [640000/735856]\n",
+      "loss: 0.431940  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 86.7%, Avg loss: 0.391393 \n",
+      "\n",
+      "loss: 0.436391  [    0/735856]\n",
+      "loss: 0.351771  [64000/735856]\n",
+      "loss: 0.352133  [128000/735856]\n",
+      "loss: 0.254270  [192000/735856]\n",
+      "loss: 0.357840  [256000/735856]\n",
+      "loss: 0.368416  [320000/735856]\n",
+      "loss: 0.401375  [384000/735856]\n",
+      "loss: 0.442322  [448000/735856]\n",
+      "loss: 0.538914  [512000/735856]\n",
+      "loss: 0.444955  [576000/735856]\n",
+      "loss: 0.322195  [640000/735856]\n",
+      "loss: 0.493332  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 86.9%, Avg loss: 0.374818 \n",
+      "\n",
+      "loss: 0.457855  [    0/735856]\n",
+      "loss: 0.423867  [64000/735856]\n",
+      "loss: 0.274726  [128000/735856]\n",
+      "loss: 0.356364  [192000/735856]\n",
+      "loss: 0.341427  [256000/735856]\n",
+      "loss: 0.301665  [320000/735856]\n",
+      "loss: 0.409492  [384000/735856]\n",
+      "loss: 0.401218  [448000/735856]\n",
+      "loss: 0.616257  [512000/735856]\n",
+      "loss: 0.287706  [576000/735856]\n",
+      "loss: 0.321826  [640000/735856]\n",
+      "loss: 0.423405  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 87.6%, Avg loss: 0.357925 \n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "# rerun with alpha 0.2 and level 4\n",
+    "stats = {\"train\": [], \"test\":[]}\n",
+    "wavelet = 'coif1'\n",
+    "for e in range(4):\n",
+    "    #training\n",
+    "    batch = 0\n",
+    "    for X, y in train_dataloader:\n",
+    "        # print(\"grad: \"+str(model.conv1.bias.grad))\n",
+    "        old = model.conv1.bias.clone()\n",
+    "        X = X.to(device)\n",
+    "        y = y.to(device)\n",
+    "        #print(len(label))\n",
+    "        size = len(train_dataloader.dataset)\n",
+    "        model.train()\n",
+    "        \n",
+    "        # Compute prediction error\n",
+    "        pred = model(X)\n",
+    "        loss = loss_fn(pred, y)\n",
+    "        # Backpropagation\n",
+    "        loss.backward()\n",
+    "        # print(\"grad2: \"+str(model.conv1.bias.grad))\n",
+    "        \n",
+    "        \n",
+    "        # print(\"params \"+ str(len(list(model.parameters()))))\n",
+    "        flats = []\n",
+    "        shapes = []\n",
+    "        lens = []\n",
+    "        for g in model.parameters():\n",
+    "            grad = g.grad\n",
+    "            shape = grad.shape\n",
+    "            shapes.append(shape)\n",
+    "            flat = g.grad.flatten()\n",
+    "            flats.append(flat)\n",
+    "            lens.append(len(flat))\n",
+    "        flat = torch.cat(flats)\n",
+    "        coeff = pywt.wavedec(flat.numpy(), wavelet, level = 4)\n",
+    "        # print(len(coeff))\n",
+    "        array, coeff_slices = pywt.coeffs_to_array(coeff)\n",
+    "        #print(coeff_slices) # should be static so we do not need to send them\n",
+    "        topk = torch.topk(\n",
+    "                torch.from_numpy(np.absolute(array)), round(0.2*len(array)), dim=0, sorted=False\n",
+    "            )\n",
+    "        top10 = torch.zeros(len(array))\n",
+    "        top10[topk.indices] = torch.from_numpy(array[topk.indices])\n",
+    "        og = pywt.array_to_coeffs(top10, coeff_slices, output_format=\"wavedec\")\n",
+    "        reverse_top10 = torch.from_numpy(pywt.waverec(og, wavelet = wavelet))\n",
+    "            \n",
+    "\n",
+    "        \n",
+    "        start_index = 0    \n",
+    "        for i, key in enumerate(model.parameters()):\n",
+    "            end_index = start_index + lens[i]\n",
+    "            key.grad = reverse_top10[start_index:end_index].reshape(shapes[i])\n",
+    "            start_index = end_index\n",
+    "            \n",
+    "        # print(\"grad3: \"+str(model.conv1.bias.grad))\n",
+    "        \n",
+    "        optimizer.step()\n",
+    "        model.zero_grad()\n",
+    "        #optimizer.zero_grad()\n",
+    "        \n",
+    "        #resetting the optimizer\n",
+    "        # optimizer.load_state_dict(model.state_dict())\n",
+    "        vals = optimizer.state.values()\n",
+    "        # print(optimizer.state.values())\n",
+    "\n",
+    "        if batch % 500 == 0:\n",
+    "            loss, current = loss.item(), batch * len(X)\n",
+    "            print(f\"loss: {loss:>7f}  [{current:>5d}/{size:>5d}]\")\n",
+    "            stats[\"train\"].append([batch, e*size + current, loss])\n",
+    "        batch += 1\n",
+    "    \n",
+    "    #testing\n",
+    "    size = len(test_dataloader.dataset)\n",
+    "    num_batches = len(test_dataloader)\n",
+    "    model.eval()\n",
+    "    test_loss, correct = 0, 0\n",
+    "    with torch.no_grad():\n",
+    "        for X, y in test_dataloader:\n",
+    "            X = X.to(device)\n",
+    "            y = y.to(device)\n",
+    "            pred = model(X)\n",
+    "            test_loss += loss_fn(pred, y).item()\n",
+    "            correct += (pred.argmax(1) == y).type(torch.float).sum().item()\n",
+    "    test_loss /= num_batches\n",
+    "    correct /= size\n",
+    "    print(\"epoch:\")\n",
+    "    print(f\"Test Error: \\n Accuracy: {(100*correct):>0.1f}%, Avg loss: {test_loss:>8f} \\n\")\n",
+    "    stats[\"test\"].append([e, test_loss, 100*correct])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "lr = 0.0005\n",
+    "model = CNN().to(device)\n",
+    "loss_fn = nn.CrossEntropyLoss()\n",
+    "optimizer = torch.optim.Adam(model.parameters(), lr=lr)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 17,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "loss: 4.118358  [    0/735856]\n",
+      "loss: 1.330925  [64000/735856]\n",
+      "loss: 0.899926  [128000/735856]\n",
+      "loss: 0.894990  [192000/735856]\n",
+      "loss: 0.475845  [256000/735856]\n",
+      "loss: 0.672299  [320000/735856]\n",
+      "loss: 0.728748  [384000/735856]\n",
+      "loss: 0.374176  [448000/735856]\n",
+      "loss: 0.621309  [512000/735856]\n",
+      "loss: 0.562943  [576000/735856]\n",
+      "loss: 0.567177  [640000/735856]\n",
+      "loss: 0.408742  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 84.7%, Avg loss: 0.461047 \n",
+      "\n",
+      "loss: 0.545014  [    0/735856]\n",
+      "loss: 0.433877  [64000/735856]\n",
+      "loss: 0.513009  [128000/735856]\n",
+      "loss: 0.462199  [192000/735856]\n",
+      "loss: 0.371584  [256000/735856]\n",
+      "loss: 0.380919  [320000/735856]\n",
+      "loss: 0.448126  [384000/735856]\n",
+      "loss: 0.421078  [448000/735856]\n",
+      "loss: 0.531703  [512000/735856]\n",
+      "loss: 0.314307  [576000/735856]\n",
+      "loss: 0.345081  [640000/735856]\n",
+      "loss: 0.456303  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 86.6%, Avg loss: 0.392272 \n",
+      "\n",
+      "loss: 0.371980  [    0/735856]\n",
+      "loss: 0.419902  [64000/735856]\n",
+      "loss: 0.344231  [128000/735856]\n",
+      "loss: 0.383977  [192000/735856]\n",
+      "loss: 0.586718  [256000/735856]\n",
+      "loss: 0.524982  [320000/735856]\n",
+      "loss: 0.333949  [384000/735856]\n",
+      "loss: 0.478536  [448000/735856]\n",
+      "loss: 0.346808  [512000/735856]\n",
+      "loss: 0.322247  [576000/735856]\n",
+      "loss: 0.281340  [640000/735856]\n",
+      "loss: 0.373933  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 86.8%, Avg loss: 0.379021 \n",
+      "\n",
+      "loss: 0.393135  [    0/735856]\n",
+      "loss: 0.281718  [64000/735856]\n",
+      "loss: 0.488630  [128000/735856]\n",
+      "loss: 0.335369  [192000/735856]\n",
+      "loss: 0.342869  [256000/735856]\n",
+      "loss: 0.293455  [320000/735856]\n",
+      "loss: 0.391644  [384000/735856]\n",
+      "loss: 0.309957  [448000/735856]\n",
+      "loss: 0.277645  [512000/735856]\n",
+      "loss: 0.277113  [576000/735856]\n",
+      "loss: 0.242315  [640000/735856]\n",
+      "loss: 0.292711  [704000/735856]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 87.3%, Avg loss: 0.366945 \n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "stats = {\"train\": [], \"test\":[]}\n",
+    "for e in range(4):\n",
+    "    #training\n",
+    "    batch = 0\n",
+    "    for X, y in train_dataloader:\n",
+    "        # print(\"grad: \"+str(model.conv1.bias.grad))\n",
+    "        old = model.conv1.bias.clone()\n",
+    "        X = X.to(device)\n",
+    "        y = y.to(device)\n",
+    "        #print(len(label))\n",
+    "        size = len(train_dataloader.dataset)\n",
+    "        model.train()\n",
+    "        \n",
+    "        # Compute prediction error\n",
+    "        pred = model(X)\n",
+    "        loss = loss_fn(pred, y)\n",
+    "        # Backpropagation\n",
+    "        loss.backward()\n",
+    "        # print(\"grad2: \"+str(model.conv1.bias.grad))\n",
+    "        \n",
+    "        \n",
+    "        # print(\"params \"+ str(len(list(model.parameters()))))\n",
+    "                # print(\"params \"+ str(len(list(model.parameters()))))\n",
+    "        flats = []\n",
+    "        shapes = []\n",
+    "        lens = []\n",
+    "        for g in model.parameters():\n",
+    "            grad = g.grad\n",
+    "            shape = grad.shape\n",
+    "            shapes.append(shape)\n",
+    "            flat = g.grad.flatten()\n",
+    "            flats.append(flat)\n",
+    "            lens.append(len(flat))\n",
+    "        flat = torch.cat(flats)\n",
+    "\n",
+    "        topk = torch.topk(\n",
+    "                flat.abs(), round(0.1*len(flat)), dim=0, sorted=False\n",
+    "            )\n",
+    "        top10 = torch.zeros(len(flat))\n",
+    "        top10[topk.indices] = flat[topk.indices]\n",
+    "        \n",
+    "        start_index = 0    \n",
+    "        for i, key in enumerate(model.parameters()):\n",
+    "            end_index = start_index + lens[i]\n",
+    "            key.grad = top10[start_index:end_index].reshape(shapes[i])\n",
+    "            start_index = end_index\n",
+    "            \n",
+    "            \n",
+    "        # print(\"grad3: \"+str(model.conv1.bias.grad))\n",
+    "        \n",
+    "        optimizer.step()\n",
+    "        model.zero_grad()\n",
+    "        #optimizer.zero_grad()\n",
+    "        \n",
+    "        #resetting the optimizer\n",
+    "        # optimizer.load_state_dict(model.state_dict())\n",
+    "        vals = optimizer.state.values()\n",
+    "        # print(optimizer.state.values())\n",
+    "\n",
+    "        if batch % 500 == 0:\n",
+    "            loss, current = loss.item(), batch * len(X)\n",
+    "            print(f\"loss: {loss:>7f}  [{current:>5d}/{size:>5d}]\")\n",
+    "            stats[\"train\"].append([batch, e*size + current, loss])\n",
+    "        batch += 1\n",
+    "    \n",
+    "    #testing\n",
+    "    size = len(test_dataloader.dataset)\n",
+    "    num_batches = len(test_dataloader)\n",
+    "    model.eval()\n",
+    "    test_loss, correct = 0, 0\n",
+    "    with torch.no_grad():\n",
+    "        for X, y in test_dataloader:\n",
+    "            X = X.to(device)\n",
+    "            y = y.to(device)\n",
+    "            pred = model(X)\n",
+    "            test_loss += loss_fn(pred, y).item()\n",
+    "            correct += (pred.argmax(1) == y).type(torch.float).sum().item()\n",
+    "    test_loss /= num_batches\n",
+    "    correct /= size\n",
+    "    print(\"epoch:\")\n",
+    "    print(f\"Test Error: \\n Accuracy: {(100*correct):>0.1f}%, Avg loss: {test_loss:>8f} \\n\")\n",
+    "    stats[\"test\"].append([e, test_loss, 100*correct])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Node Training <a class=\"anchor\" id=\"nodetraining\"></a>"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "metadata": {
+    "id": "9LpgzEw1s-xo"
+   },
+   "outputs": [],
+   "source": [
+    "# From Femnist.py\n",
+    "def read_file(file_path):\n",
+    "    with open(file_path, \"r\") as inf:\n",
+    "        client_data = json.load(inf)\n",
+    "        print(\"loaded the data\")\n",
+    "    return (\n",
+    "        client_data[\"users\"],\n",
+    "        client_data[\"num_samples\"],\n",
+    "        client_data[\"user_data\"],\n",
+    "    )"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "id": "QBu1kiw8s-xr"
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "raw",
+   "metadata": {
+    "id": "jI3ixEN4s-xt",
+    "outputId": "ed969663-9e1e-4810-9507-52cdc426650a"
+   },
+   "source": [
+    "# From Femnist.py\n",
+    "for i in range(1):\n",
+    "    cur_file = \"leaf/data/femnist/data/train/all_data_0_niid_0_keep_0_train_9.json\"\n",
+    "    # test_file = \"leaf/data/femnist/data/test/all_data_0_niid_0_keep_0_test_9.json\"\n",
+    "    # cur_file = test_file\n",
+    "    clients, _, train_data = read_file(\n",
+    "        os.path.join(train_dir, cur_file)\n",
+    "    )\n",
+    "    for cur_client in clients:\n",
+    "        # self.clients.append(cur_client)\n",
+    "        my_train_data[\"x\"].extend(train_data[cur_client][\"x\"])\n",
+    "        my_train_data[\"y\"].extend(train_data[cur_client][\"y\"])\n",
+    "        del train_data[cur_client]\n"
+   ]
+  },
+  {
+   "cell_type": "raw",
+   "metadata": {
+    "id": "wvHsSz8as-xw"
+   },
+   "source": [
+    "train_x = (\n",
+    "    np.array(my_train_data[\"x\"], dtype=np.dtype(\"float32\"))\n",
+    "    .reshape(-1, 28, 28, 1)\n",
+    "    .transpose(0, 3, 1, 2)\n",
+    ")\n",
+    "train_y = np.array(my_train_data[\"y\"], dtype=np.dtype(\"int64\")).reshape(-1)"
+   ]
+  },
+  {
+   "cell_type": "raw",
+   "metadata": {
+    "id": "K8X471SKs-xz",
+    "outputId": "cdf73c06-1323-4e76-850b-16324008d255"
+   },
+   "source": [
+    "len(train_y)"
+   ]
+  },
+  {
+   "cell_type": "raw",
+   "metadata": {
+    "id": "EpWNELBrs-x0"
+   },
+   "source": [
+    "with open(train_dir+\"femnist.pkl\", \"wb\") as f:\n",
+    "    pickle.dump({\"test_x\": train_x, \"test_y\": train_y}, f)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "metadata": {
+    "id": "mAEASHr2s-x1"
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "7665.166666666667"
+      ]
+     },
+     "execution_count": 7,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "735856 / 96\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "metadata": {
+    "id": "Am_XlcSSs-x3"
+   },
+   "outputs": [],
+   "source": [
+    "with open(train_dir+\"femnist.pkl\", \"rb\") as f:\n",
+    "    train = pickle.load(f)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "metadata": {
+    "id": "evAd9ZvYs-x6"
+   },
+   "outputs": [],
+   "source": [
+    "with open(train_dir+\"femnist_test.pkl\", \"rb\") as f:\n",
+    "    test = pickle.load(f)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 10,
+   "metadata": {
+    "id": "9_vIFakbs-x7",
+    "outputId": "3a8b546a-186f-4519-8c0b-e853986a8101"
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "(735856, 1, 28, 28)"
+      ]
+     },
+     "execution_count": 10,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "train[\"train_x\"].shape"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 11,
+   "metadata": {
+    "id": "GPyZ2C8ws-x9"
+   },
+   "outputs": [],
+   "source": [
+    "NUM_CLASSES = 62\n",
+    "IMAGE_SIZE = (28, 28)\n",
+    "FLAT_SIZE = 28 * 28\n",
+    "PIXEL_RANGE = 256.0\n",
+    "import torch.nn.functional as F\n",
+    "\n",
+    "class CNN(nn.Module):\n",
+    "    \"\"\"\n",
+    "    Class for a CNN Model for FEMNIST\n",
+    "\n",
+    "    \"\"\"\n",
+    "\n",
+    "    def __init__(self):\n",
+    "        \"\"\"\n",
+    "        Constructor. Instantiates the CNN Model\n",
+    "            with 28*28*1 Input and 62 output classes\n",
+    "\n",
+    "        \"\"\"\n",
+    "        super().__init__()\n",
+    "        # 1.6 million params\n",
+    "        self.conv1 = nn.Conv2d(1, 32, 5, padding=2)\n",
+    "        self.pool = nn.MaxPool2d(2, 2)\n",
+    "        self.conv2 = nn.Conv2d(32, 64, 5, padding=2)\n",
+    "        self.fc1 = nn.Linear(7 * 7 * 64, 512)\n",
+    "        self.fc2 = nn.Linear(512, NUM_CLASSES)\n",
+    "\n",
+    "    def forward(self, x):\n",
+    "        \"\"\"\n",
+    "        Forward pass of the model\n",
+    "\n",
+    "        Parameters\n",
+    "        ----------\n",
+    "        x : torch.tensor\n",
+    "            The input torch tensor\n",
+    "\n",
+    "        Returns\n",
+    "        -------\n",
+    "        torch.tensor\n",
+    "            The output torch tensor\n",
+    "\n",
+    "        \"\"\"\n",
+    "        x = self.pool(F.relu(self.conv1(x)))\n",
+    "        x = self.pool(F.relu(self.conv2(x)))\n",
+    "        x = torch.flatten(x, 1)\n",
+    "        x = F.relu(self.fc1(x))\n",
+    "        x = self.fc2(x)\n",
+    "        return x\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "metadata": {
+    "id": "bCgW8ClBs-x_"
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "(735856,)"
+      ]
+     },
+     "execution_count": 12,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "train[\"train_y\"].shape"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 13,
+   "metadata": {
+    "id": "oBGwcwZks-yA"
+   },
+   "outputs": [],
+   "source": [
+    "import os\n",
+    "from torch.utils.data import Dataset\n",
+    "\n",
+    "class FemnistDataset(Dataset):\n",
+    "    def __init__(self, training, transform=None, target_transform=None):\n",
+    "        if training:\n",
+    "            with open(train_dir+\"femnist.pkl\", \"rb\") as f:\n",
+    "                train = pickle.load(f)\n",
+    "                self.data = train[\"train_x\"][10000:10000+7665,...]\n",
+    "                self.label = train[\"train_y\"][10000:10000+7665,...]\n",
+    "        else: \n",
+    "            with open(train_dir+\"femnist_test.pkl\", \"rb\") as f:\n",
+    "                test = pickle.load(f)\n",
+    "                self.data = test[\"test_x\"]\n",
+    "                self.label = test[\"test_y\"]\n",
+    "        self.transform = transform\n",
+    "        self.target_transform = target_transform\n",
+    "\n",
+    "    def __len__(self):\n",
+    "        return len(self.label)\n",
+    "\n",
+    "    def __getitem__(self, idx):\n",
+    "        return self.data[idx], self.label[idx]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 14,
+   "metadata": {
+    "id": "U3boC_N4s-yC"
+   },
+   "outputs": [],
+   "source": [
+    "from torch.utils.data import DataLoader"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 15,
+   "metadata": {
+    "id": "sJsrQXkEs-yD"
+   },
+   "outputs": [],
+   "source": [
+    "trainset = FemnistDataset(True)\n",
+    "testset = FemnistDataset(False)\n",
+    "\n",
+    "train_dataloader = DataLoader(trainset, batch_size=16, shuffle=True)\n",
+    "test_dataloader = DataLoader(testset, batch_size=128, shuffle=True)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 16,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "480"
+      ]
+     },
+     "execution_count": 16,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "len(train_dataloader)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 17,
+   "metadata": {
+    "id": "e65Izyv0s-yE"
+   },
+   "outputs": [],
+   "source": [
+    "lr = 0.001\n",
+    "model = CNN().to(device)\n",
+    "loss_fn = nn.CrossEntropyLoss()\n",
+    "optimizer = torch.optim.Adam(model.parameters(), lr=lr)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 18,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([-0.1487, -0.1003,  0.0990, -0.0245, -0.1023,  0.0974, -0.1139, -0.1425,\n",
+       "        -0.1949, -0.0679, -0.0937,  0.0891,  0.0577, -0.1357,  0.0814,  0.1157,\n",
+       "        -0.1997, -0.1665, -0.1546,  0.1150,  0.0895, -0.1049, -0.0980, -0.0980,\n",
+       "         0.0729,  0.1947,  0.0421, -0.0365, -0.1470, -0.1679,  0.0286, -0.0146])"
+      ]
+     },
+     "execution_count": 18,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "list(model.state_dict().values())[1]"
+   ]
+  },
+  {
+   "cell_type": "raw",
+   "metadata": {},
+   "source": [
+    "tensor([-0.0180,  0.0236,  0.1279, -0.1352, -0.1948, -0.0330, -0.1615, -0.0286,\n",
+    "        -0.1762,  0.0040,  0.1570, -0.1069, -0.1074, -0.1417, -0.1171,  0.0359,\n",
+    "         0.1276, -0.1534, -0.1773, -0.1639,  0.1334,  0.0518,  0.0586,  0.1466,\n",
+    "         0.1283,  0.0443, -0.0982, -0.1739, -0.0061,  0.1047, -0.0291,  0.1525])"
+   ]
+  },
+  {
+   "cell_type": "raw",
+   "metadata": {},
+   "source": [
+    "for p in model.parameters():\n",
+    "    print(p.data.size())\n",
+    "    p.data = torch.zeros(p.data.size())"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 19,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([-0.1487, -0.1003,  0.0990, -0.0245, -0.1023,  0.0974, -0.1139, -0.1425,\n",
+       "        -0.1949, -0.0679, -0.0937,  0.0891,  0.0577, -0.1357,  0.0814,  0.1157,\n",
+       "        -0.1997, -0.1665, -0.1546,  0.1150,  0.0895, -0.1049, -0.0980, -0.0980,\n",
+       "         0.0729,  0.1947,  0.0421, -0.0365, -0.1470, -0.1679,  0.0286, -0.0146])"
+      ]
+     },
+     "execution_count": 19,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "list(model.state_dict().values())[1]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "colab": {
+     "base_uri": "https://localhost:8080/"
+    },
+    "id": "eqOXilqMs-yF",
+    "outputId": "06799a3b-983b-4f51-a7bd-a901c041bd05"
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "loss: 4.158939  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 34.5%, Avg loss: 2.492351 \n",
+      "\n",
+      "loss: 2.274407  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 49.2%, Avg loss: 2.004063 \n",
+      "\n",
+      "loss: 2.080229  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 57.7%, Avg loss: 1.550052 \n",
+      "\n",
+      "loss: 1.220055  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 62.5%, Avg loss: 1.387109 \n",
+      "\n",
+      "loss: 0.547404  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 62.6%, Avg loss: 1.411219 \n",
+      "\n",
+      "loss: 0.666172  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 68.1%, Avg loss: 1.147880 \n",
+      "\n",
+      "loss: 0.539106  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 66.9%, Avg loss: 1.218418 \n",
+      "\n",
+      "loss: 1.057546  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 68.9%, Avg loss: 1.211012 \n",
+      "\n",
+      "loss: 0.315841  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 66.5%, Avg loss: 1.400047 \n",
+      "\n",
+      "loss: 0.659244  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 66.0%, Avg loss: 1.484381 \n",
+      "\n",
+      "loss: 0.437452  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 69.8%, Avg loss: 1.239514 \n",
+      "\n",
+      "loss: 0.675393  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 69.3%, Avg loss: 1.224045 \n",
+      "\n",
+      "loss: 0.409850  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 67.5%, Avg loss: 1.499410 \n",
+      "\n",
+      "loss: 0.942130  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 69.7%, Avg loss: 1.331600 \n",
+      "\n",
+      "loss: 0.193678  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 69.5%, Avg loss: 1.398448 \n",
+      "\n",
+      "loss: 0.120872  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 68.4%, Avg loss: 1.589930 \n",
+      "\n",
+      "loss: 0.099591  [    0/ 7665]\n"
+     ]
+    }
+   ],
+   "source": [
+    "stats = {\"train\": [], \"test\":[]}\n",
+    "for e in range(20):\n",
+    "    #training\n",
+    "    batch = 0\n",
+    "    for X, y in train_dataloader:\n",
+    "        #print(\"grad: \"+str(model.conv1.bias.grad))\n",
+    "        old = model.conv1.bias.clone()\n",
+    "        X = X.to(device)\n",
+    "        y = y.to(device)\n",
+    "        #print(len(label))\n",
+    "        size = len(train_dataloader.dataset)\n",
+    "        model.train()\n",
+    "        # Compute prediction error\n",
+    "        pred = model(X)\n",
+    "        loss = loss_fn(pred, y)\n",
+    "        # Backpropagation\n",
+    "        loss.backward()\n",
+    "        #print(\"grad2: \"+str(model.conv1.bias.grad))\n",
+    "        optimizer.step()\n",
+    "        model.zero_grad()\n",
+    "        #optimizer.zero_grad()\n",
+    "        \n",
+    "        #resetting the optimizer\n",
+    "        # optimizer.load_state_dict(model.state_dict())\n",
+    "        vals = optimizer.state.values()\n",
+    "        #print(optimizer.state.values())\n",
+    "\n",
+    "        if batch % 500 == 0:\n",
+    "            loss, current = loss.item(), batch * len(X)\n",
+    "            print(f\"loss: {loss:>7f}  [{current:>5d}/{size:>5d}]\")\n",
+    "            stats[\"train\"].append([batch, e*size + current, loss])\n",
+    "        batch += 1\n",
+    "    \n",
+    "    #testing\n",
+    "    size = len(test_dataloader.dataset)\n",
+    "    num_batches = len(test_dataloader)\n",
+    "    model.eval()\n",
+    "    test_loss, correct = 0, 0\n",
+    "    with torch.no_grad():\n",
+    "        for X, y in test_dataloader:\n",
+    "            X = X.to(device)\n",
+    "            y = y.to(device)\n",
+    "            pred = model(X)\n",
+    "            test_loss += loss_fn(pred, y).item()\n",
+    "            correct += (pred.argmax(1) == y).type(torch.float).sum().item()\n",
+    "    test_loss /= num_batches\n",
+    "    correct /= size\n",
+    "    print(\"epoch:\")\n",
+    "    print(f\"Test Error: \\n Accuracy: {(100*correct):>0.1f}%, Avg loss: {test_loss:>8f} \\n\")\n",
+    "    stats[\"test\"].append([e, test_loss, 100*correct])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 17,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "lr = 0.001\n",
+    "model = CNN().to(device)\n",
+    "loss_fn = nn.CrossEntropyLoss()\n",
+    "optimizer = torch.optim.Adam(model.parameters(), lr=lr, weight_decay=0.001)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 18,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "loss: 4.158939  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 26.3%, Avg loss: 2.828093 \n",
+      "\n",
+      "loss: 2.478634  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 47.1%, Avg loss: 2.069258 \n",
+      "\n",
+      "loss: 2.099130  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 56.7%, Avg loss: 1.571264 \n",
+      "\n",
+      "loss: 1.343866  [    0/ 7665]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 61.1%, Avg loss: 1.432287 \n",
+      "\n",
+      "loss: 0.783433  [    0/ 7665]\n"
+     ]
+    },
+    {
+     "ename": "KeyboardInterrupt",
+     "evalue": "",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+      "\u001b[0;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
+      "Input \u001b[0;32mIn [18]\u001b[0m, in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m     48\u001b[0m X \u001b[38;5;241m=\u001b[39m X\u001b[38;5;241m.\u001b[39mto(device)\n\u001b[1;32m     49\u001b[0m y \u001b[38;5;241m=\u001b[39m y\u001b[38;5;241m.\u001b[39mto(device)\n\u001b[0;32m---> 50\u001b[0m pred \u001b[38;5;241m=\u001b[39m \u001b[43mmodel\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m     51\u001b[0m test_loss \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m loss_fn(pred, y)\u001b[38;5;241m.\u001b[39mitem()\n\u001b[1;32m     52\u001b[0m correct \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m (pred\u001b[38;5;241m.\u001b[39margmax(\u001b[38;5;241m1\u001b[39m) \u001b[38;5;241m==\u001b[39m y)\u001b[38;5;241m.\u001b[39mtype(torch\u001b[38;5;241m.\u001b[39mfloat)\u001b[38;5;241m.\u001b[39msum()\u001b[38;5;241m.\u001b[39mitem()\n",
+      "File \u001b[0;32m~/anaconda3/envs/sacs39/lib/python3.9/site-packages/torch/nn/modules/module.py:1102\u001b[0m, in \u001b[0;36mModule._call_impl\u001b[0;34m(self, *input, **kwargs)\u001b[0m\n\u001b[1;32m   1098\u001b[0m \u001b[38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in\u001b[39;00m\n\u001b[1;32m   1099\u001b[0m \u001b[38;5;66;03m# this function, and just call forward.\u001b[39;00m\n\u001b[1;32m   1100\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_backward_hooks\n\u001b[1;32m   1101\u001b[0m         \u001b[38;5;129;01mor\u001b[39;00m _global_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_forward_pre_hooks):\n\u001b[0;32m-> 1102\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mforward_call\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m   1103\u001b[0m \u001b[38;5;66;03m# Do not call functions when jit is used\u001b[39;00m\n\u001b[1;32m   1104\u001b[0m full_backward_hooks, non_full_backward_hooks \u001b[38;5;241m=\u001b[39m [], []\n",
+      "Input \u001b[0;32mIn [11]\u001b[0m, in \u001b[0;36mCNN.forward\u001b[0;34m(self, x)\u001b[0m\n\u001b[1;32m     28\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m     29\u001b[0m \u001b[38;5;124;03mForward pass of the model\u001b[39;00m\n\u001b[1;32m     30\u001b[0m \n\u001b[0;32m   (...)\u001b[0m\n\u001b[1;32m     40\u001b[0m \n\u001b[1;32m     41\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m     42\u001b[0m x \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpool(F\u001b[38;5;241m.\u001b[39mrelu(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mconv1(x)))\n\u001b[0;32m---> 43\u001b[0m x \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpool(F\u001b[38;5;241m.\u001b[39mrelu(\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mconv2\u001b[49m\u001b[43m(\u001b[49m\u001b[43mx\u001b[49m\u001b[43m)\u001b[49m))\n\u001b[1;32m     44\u001b[0m x \u001b[38;5;241m=\u001b[39m torch\u001b[38;5;241m.\u001b[39mflatten(x, \u001b[38;5;241m1\u001b[39m)\n\u001b[1;32m     45\u001b[0m x \u001b[38;5;241m=\u001b[39m F\u001b[38;5;241m.\u001b[39mrelu(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfc1(x))\n",
+      "File \u001b[0;32m~/anaconda3/envs/sacs39/lib/python3.9/site-packages/torch/nn/modules/module.py:1102\u001b[0m, in \u001b[0;36mModule._call_impl\u001b[0;34m(self, *input, **kwargs)\u001b[0m\n\u001b[1;32m   1098\u001b[0m \u001b[38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in\u001b[39;00m\n\u001b[1;32m   1099\u001b[0m \u001b[38;5;66;03m# this function, and just call forward.\u001b[39;00m\n\u001b[1;32m   1100\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_backward_hooks\n\u001b[1;32m   1101\u001b[0m         \u001b[38;5;129;01mor\u001b[39;00m _global_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_forward_pre_hooks):\n\u001b[0;32m-> 1102\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mforward_call\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m   1103\u001b[0m \u001b[38;5;66;03m# Do not call functions when jit is used\u001b[39;00m\n\u001b[1;32m   1104\u001b[0m full_backward_hooks, non_full_backward_hooks \u001b[38;5;241m=\u001b[39m [], []\n",
+      "File \u001b[0;32m~/anaconda3/envs/sacs39/lib/python3.9/site-packages/torch/nn/modules/conv.py:446\u001b[0m, in \u001b[0;36mConv2d.forward\u001b[0;34m(self, input)\u001b[0m\n\u001b[1;32m    445\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mforward\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;28minput\u001b[39m: Tensor) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Tensor:\n\u001b[0;32m--> 446\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_conv_forward\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mweight\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbias\u001b[49m\u001b[43m)\u001b[49m\n",
+      "File \u001b[0;32m~/anaconda3/envs/sacs39/lib/python3.9/site-packages/torch/nn/modules/conv.py:442\u001b[0m, in \u001b[0;36mConv2d._conv_forward\u001b[0;34m(self, input, weight, bias)\u001b[0m\n\u001b[1;32m    438\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpadding_mode \u001b[38;5;241m!=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mzeros\u001b[39m\u001b[38;5;124m'\u001b[39m:\n\u001b[1;32m    439\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m F\u001b[38;5;241m.\u001b[39mconv2d(F\u001b[38;5;241m.\u001b[39mpad(\u001b[38;5;28minput\u001b[39m, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_reversed_padding_repeated_twice, mode\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpadding_mode),\n\u001b[1;32m    440\u001b[0m                     weight, bias, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstride,\n\u001b[1;32m    441\u001b[0m                     _pair(\u001b[38;5;241m0\u001b[39m), \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdilation, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mgroups)\n\u001b[0;32m--> 442\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mF\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mconv2d\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mweight\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbias\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstride\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    443\u001b[0m \u001b[43m                \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpadding\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdilation\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgroups\u001b[49m\u001b[43m)\u001b[49m\n",
+      "\u001b[0;31mKeyboardInterrupt\u001b[0m: "
+     ]
+    }
+   ],
+   "source": [
+    "stats = {\"train\": [], \"test\":[]}\n",
+    "for e in range(20):\n",
+    "    #training\n",
+    "    batch = 0\n",
+    "    for X, y in train_dataloader:\n",
+    "        #print(\"grad: \"+str(model.conv1.bias.grad))\n",
+    "        old = model.conv1.bias.clone()\n",
+    "        X = X.to(device)\n",
+    "        y = y.to(device)\n",
+    "        #print(len(label))\n",
+    "        size = len(train_dataloader.dataset)\n",
+    "        model.train()\n",
+    "        # Compute prediction error\n",
+    "        pred = model(X)\n",
+    "        loss = loss_fn(pred, y)\n",
+    "        # https://stackoverflow.com/questions/42704283/adding-l1-l2-regularization-in-pytorch\n",
+    "        #to_cat = []\n",
+    "        #for v in model.state_dict.values():\n",
+    "         #   flat = v.flatten()\n",
+    "          #  to_cat.append(flat)\n",
+    "        #flat = torch.cat(to_cat, dim=0)\n",
+    "        #loss = loss_fn(pred,y) + 0.02*torch.norm(flat, 2)\n",
+    "        # Backpropagation\n",
+    "        loss.backward()\n",
+    "        #print(\"grad2: \"+str(model.conv1.bias.grad))\n",
+    "        optimizer.step()\n",
+    "        optimizer.zero_grad()\n",
+    "        #optimizer.zero_grad()\n",
+    "        \n",
+    "        #resetting the optimizer\n",
+    "        # optimizer.load_state_dict(model.state_dict())\n",
+    "        vals = optimizer.state.values()\n",
+    "        #print(optimizer.state.values())\n",
+    "\n",
+    "        if batch % 500 == 0:\n",
+    "            loss, current = loss.item(), batch * len(X)\n",
+    "            print(f\"loss: {loss:>7f}  [{current:>5d}/{size:>5d}]\")\n",
+    "            stats[\"train\"].append([batch, e*size + current, loss])\n",
+    "        batch += 1\n",
+    "    \n",
+    "    #testing\n",
+    "    size = len(test_dataloader.dataset)\n",
+    "    num_batches = len(test_dataloader)\n",
+    "    model.eval()\n",
+    "    test_loss, correct = 0, 0\n",
+    "    with torch.no_grad():\n",
+    "        for X, y in test_dataloader:\n",
+    "            X = X.to(device)\n",
+    "            y = y.to(device)\n",
+    "            pred = model(X)\n",
+    "            test_loss += loss_fn(pred, y).item()\n",
+    "            correct += (pred.argmax(1) == y).type(torch.float).sum().item()\n",
+    "    test_loss /= num_batches\n",
+    "    correct /= size\n",
+    "    print(\"epoch:\")\n",
+    "    print(f\"Test Error: \\n Accuracy: {(100*correct):>0.1f}%, Avg loss: {test_loss:>8f} \\n\")\n",
+    "    stats[\"test\"].append([e, test_loss, 100*correct])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "after 8: Accuracy: 67.3%, Avg loss: 1.200284 "
+   ]
+  }
+ ],
+ "metadata": {
+  "colab": {
+   "name": "learningrate.ipynb",
+   "provenance": []
+  },
+  "interpreter": {
+   "hash": "996934296aa9d79be6c3d800a38d8fdb7dfa8fe7bb07df178f1397cde2cb8742"
+  },
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.9.10"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/random files/multiprocessing_tests.py b/random files/multiprocessing_tests.py
new file mode 100644
index 0000000..59b00ba
--- /dev/null
+++ b/random files/multiprocessing_tests.py	
@@ -0,0 +1,56 @@
+import multiprocessing as omp
+import time
+from ctypes import c_int
+
+# from multiprocessing.queues import Queue
+from multiprocessing.sharedctypes import Value
+
+import torch.multiprocessing as mp
+
+
+def do_something_out(rank, node, queue, shared):  # first argument is rank
+    print(f"run {rank}")
+    print(type(queue))
+    node.queue.put("do_something_out")
+    print(f"run {rank}")
+    node.val = 2
+    shared.value = 2
+    print("run")
+
+
+class Node:
+    def __init__(self, queue):
+        super(Node, self).__init__()
+        self.queue = queue
+        self.val = 1
+        # mp.spawn(Node.do_something)
+        # start_processes
+        # do_something_out(self)
+        self.x = Value(c_int, 1, lock=False)
+        print(type(self.x))
+        print("actual value:", self.x.value)
+        mp.start_processes(
+            do_something_out, args=(self, self.queue, self.x), start_method="fork"
+        )
+
+    def do_something(self):
+        # t.queue.put("do_something")
+        print("do_something")
+        self.val = 2
+
+
+if __name__ == "__main__":
+    queue = mp.Queue()
+    # queue.put("test")
+    node = Node(queue)
+    # mp.start_processes(
+    #    do_something_out,
+    #    (node, queue,),
+    #    start_method="fork"
+    # )
+
+    time.sleep(3)
+    print(node.queue.get())
+    print(node.val)
+    print(node.x.value)
+    # print(node.val)
diff --git a/random files/playground_jw.ipynb b/random files/playground_jw.ipynb
new file mode 100644
index 0000000..118dd63
--- /dev/null
+++ b/random files/playground_jw.ipynb	
@@ -0,0 +1,999 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from decentralizepy.datasets.Femnist import Femnist\n",
+    "from decentralizepy.graphs import SmallWorld\n",
+    "from collections import defaultdict\n",
+    "import os\n",
+    "import json\n",
+    "import numpy as np\n",
+    "import torch "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "1256779281901044017"
+      ]
+     },
+     "execution_count": 2,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "random_generator = torch.Generator()\n",
+    "# Will use the random device if supported by CPU, else uses the system time\n",
+    "# In the latter case we could get duplicate seeds on some of the machines\n",
+    "random_generator.seed()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 28,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "seed = random_generator.initial_seed()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 29,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([0.7203, 0.5044, 0.1496, 0.6218, 0.5369, 0.8994, 0.9816, 0.9307, 0.7464,\n",
+       "        0.8109, 0.0372, 0.5295, 0.1905, 0.1923, 0.6036, 0.0288, 0.1395, 0.8307,\n",
+       "        0.0180, 0.8481])"
+      ]
+     },
+     "execution_count": 29,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.rand(20, generator = random_generator)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 30,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([0.2485, 0.6399, 0.7028, 0.0918, 0.3800, 0.3301, 0.4674, 0.1821, 0.0140,\n",
+       "        0.5983, 0.4028, 0.2738, 0.5664, 0.1826, 0.8313, 0.8182, 0.8255, 0.4354,\n",
+       "        0.2829, 0.1707])"
+      ]
+     },
+     "execution_count": 30,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.rand(20, generator = random_generator)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 31,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "<torch._C.Generator at 0x7f415f3a9790>"
+      ]
+     },
+     "execution_count": 31,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "random_generator2 = torch.Generator()\n",
+    "random_generator2.manual_seed(seed)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 32,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([0.7203, 0.5044, 0.1496, 0.6218, 0.5369, 0.8994, 0.9816, 0.9307, 0.7464,\n",
+       "        0.8109, 0.0372, 0.5295, 0.1905, 0.1923, 0.6036, 0.0288, 0.1395, 0.8307,\n",
+       "        0.0180, 0.8481])"
+      ]
+     },
+     "execution_count": 32,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.rand(20, generator = random_generator2)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 33,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([0.2485, 0.6399, 0.7028, 0.0918, 0.3800, 0.3301, 0.4674, 0.1821, 0.0140,\n",
+       "        0.5983, 0.4028, 0.2738, 0.5664, 0.1826, 0.8313, 0.8182, 0.8255, 0.4354,\n",
+       "        0.2829, 0.1707])"
+      ]
+     },
+     "execution_count": 33,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.rand(20, generator = random_generator2)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 133,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0],\n",
+       "       dtype=torch.int32)"
+      ]
+     },
+     "execution_count": 133,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# Or we could use torch.bernoulli\n",
+    "alpha = 0.3\n",
+    "(torch.rand(size=(20,), generator = random_generator) < alpha).int()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 134,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "concated = torch.abs(torch.cat([torch.ones(10), torch.ones(5)*2], dim=0))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 135,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 2., 2., 2., 2., 2.])"
+      ]
+     },
+     "execution_count": 135,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "concated"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 136,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "15"
+      ]
+     },
+     "execution_count": 136,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "concated.size(dim = 0)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 137,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1], dtype=torch.int32)"
+      ]
+     },
+     "execution_count": 137,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "binary_mask = (torch.rand(size=(concated.size(dim = 0),), generator=random_generator) < alpha).int()\n",
+    "binary_mask"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 138,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([ True,  True, False, False, False, False,  True, False, False, False,\n",
+       "        False,  True,  True, False,  True])"
+      ]
+     },
+     "execution_count": 138,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "binary_mask = (torch.rand(size=(concated.size(dim = 0),), generator=random_generator) < alpha)\n",
+    "binary_mask"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 139,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([1., 1., 1., 2., 2., 2.])"
+      ]
+     },
+     "execution_count": 139,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "subsample = concated[binary_mask] # torch.masked_select\n",
+    "subsample"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 145,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "6"
+      ]
+     },
+     "execution_count": 145,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "subsample.size(dim = 0)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 148,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])"
+      ]
+     },
+     "execution_count": 148,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "ground = torch.zeros(size = (15, ))\n",
+    "ground"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 143,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([ True,  True, False, False, False, False,  True, False, False, False,\n",
+       "        False,  True,  True, False,  True])"
+      ]
+     },
+     "execution_count": 143,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "binary_mask"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 149,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([0., 0., 0., 0., 0., 0.])"
+      ]
+     },
+     "execution_count": 149,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "ground[binary_mask]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 150,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "ground[binary_mask] = subsample"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 151,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([1., 1., 0., 0., 0., 0., 1., 0., 0., 0., 0., 2., 2., 0., 2.])"
+      ]
+     },
+     "execution_count": 151,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "ground"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Testing Serialization Speeds"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import pickle\n",
+    "import time \n",
+    "import json\n",
+    "import ujson\n",
+    "import torch\n",
+    "import orjson\n",
+    "import numpy as np"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "0.009081792831420899\n"
+     ]
+    }
+   ],
+   "source": [
+    "times = []\n",
+    "for i in range(10):\n",
+    "    test = torch.rand(size = (5000000,))\n",
+    "    t1 = time.time()\n",
+    "    bin = pickle.dumps(test)\n",
+    "    times.append(time.time() - t1)\n",
+    "print(np.mean(times))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 25,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "2.0366546154022216\n"
+     ]
+    }
+   ],
+   "source": [
+    "#single json encoding\n",
+    "times = []\n",
+    "for i in range(10):\n",
+    "    test = torch.rand(size = (5000000,))\n",
+    "    t1 = time.time()\n",
+    "    test_list = test.numpy().tolist()\n",
+    "    binary = json.dumps(test_list)\n",
+    "    times.append(time.time() - t1)\n",
+    "print(np.mean(times))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 26,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "str"
+      ]
+     },
+     "execution_count": 26,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "type(binary)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 11,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "2.500225853919983\n"
+     ]
+    }
+   ],
+   "source": [
+    "# double json encoding\n",
+    "times = []\n",
+    "for i in range(10):\n",
+    "    test = torch.rand(size = (5000000,))\n",
+    "    t1 = time.time()\n",
+    "    test_list = test.numpy().tolist()\n",
+    "    jsondata = json.dumps(test_list)\n",
+    "    m = dict()\n",
+    "    m[\"asjson\"] = jsondata\n",
+    "    finaljson = json.dumps(m)\n",
+    "    times.append(time.time() - t1)\n",
+    "print(np.mean(times))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 13,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "0.7114214897155762\n"
+     ]
+    }
+   ],
+   "source": [
+    "#single ujson encoding: with to list\n",
+    "times = []\n",
+    "for i in range(10):\n",
+    "    test = torch.rand(size = (5000000,))\n",
+    "    t1 = time.time()\n",
+    "    test_list = test.numpy().tolist()\n",
+    "    binary = ujson.dumps(test_list)\n",
+    "    times.append(time.time() - t1)\n",
+    "print(np.mean(times))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 14,
+   "metadata": {},
+   "outputs": [
+    {
+     "ename": "TypeError",
+     "evalue": "array([0.9719833 , 0.19759083, 0.06048423, ..., 0.10139698, 0.10623038,\n       0.16747206], dtype=float32) is not JSON serializable",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+      "\u001b[0;31mTypeError\u001b[0m                                 Traceback (most recent call last)",
+      "Input \u001b[0;32mIn [14]\u001b[0m, in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      5\u001b[0m     t1 \u001b[38;5;241m=\u001b[39m time\u001b[38;5;241m.\u001b[39mtime()\n\u001b[1;32m      6\u001b[0m     test_list \u001b[38;5;241m=\u001b[39m test\u001b[38;5;241m.\u001b[39mnumpy()\u001b[38;5;66;03m#.tolist()\u001b[39;00m\n\u001b[0;32m----> 7\u001b[0m     binary \u001b[38;5;241m=\u001b[39m \u001b[43mujson\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdumps\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtest_list\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m      8\u001b[0m     times\u001b[38;5;241m.\u001b[39mappend(time\u001b[38;5;241m.\u001b[39mtime() \u001b[38;5;241m-\u001b[39m t1)\n\u001b[1;32m      9\u001b[0m \u001b[38;5;28mprint\u001b[39m(np\u001b[38;5;241m.\u001b[39mmean(times))\n",
+      "\u001b[0;31mTypeError\u001b[0m: array([0.9719833 , 0.19759083, 0.06048423, ..., 0.10139698, 0.10623038,\n       0.16747206], dtype=float32) is not JSON serializable"
+     ]
+    }
+   ],
+   "source": [
+    "#single ujson encoding\n",
+    "times = []\n",
+    "for i in range(10):\n",
+    "    test = torch.rand(size = (5000000,))\n",
+    "    t1 = time.time()\n",
+    "    test_list = test.numpy()#.tolist()\n",
+    "    binary = ujson.dumps(test_list)\n",
+    "    times.append(time.time() - t1)\n",
+    "print(np.mean(times))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "0.31579806804656985\n"
+     ]
+    }
+   ],
+   "source": [
+    "#single orjson encoding: with to list\n",
+    "times = []\n",
+    "for i in range(10):\n",
+    "    test = torch.rand(size = (5000000,))\n",
+    "    t1 = time.time()\n",
+    "    test_list = test.numpy().tolist()\n",
+    "    binary = orjson.dumps(test_list)\n",
+    "    times.append(time.time() - t1)\n",
+    "print(np.mean(times))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 22,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "0.3235017776489258\n"
+     ]
+    }
+   ],
+   "source": [
+    "#single orjson encoding: with to list\n",
+    "times = []\n",
+    "for i in range(10):\n",
+    "    test = torch.rand(size = (5000000,))\n",
+    "    t1 = time.time()\n",
+    "    test_list = test.numpy().tolist()\n",
+    "    binary = orjson.dumps(test_list)\n",
+    "    times.append(time.time() - t1)\n",
+    "print(np.mean(times))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 24,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "bytes"
+      ]
+     },
+     "execution_count": 24,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "type(binary)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "0.16293561458587646\n"
+     ]
+    }
+   ],
+   "source": [
+    "#single orjson encoding\n",
+    "times = []\n",
+    "for i in range(10):\n",
+    "    test = torch.rand(size = (5000000,))\n",
+    "    t1 = time.time()\n",
+    "    test_list = test.numpy()\n",
+    "    binary = orjson.dumps(test_list, option = orjson.OPT_SERIALIZE_NUMPY)\n",
+    "    times.append(time.time() - t1)\n",
+    "print(np.mean(times))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 10,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "0.40661447048187255\n"
+     ]
+    }
+   ],
+   "source": [
+    "# testing decode\n",
+    "#single orjson encoding: with to list\n",
+    "times = []\n",
+    "for i in range(10):\n",
+    "    test = torch.rand(size = (5000000,))\n",
+    "    t1 = time.time()\n",
+    "    test_list = test.numpy()\n",
+    "    binary = orjson.dumps(test_list, option = orjson.OPT_SERIALIZE_NUMPY)\n",
+    "    decoded = orjson.loads(binary)\n",
+    "    times.append(time.time() - t1)\n",
+    "print(np.mean(times))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "list"
+      ]
+     },
+     "execution_count": 12,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "type(decoded)"
+   ]
+  },
+  {
+   "cell_type": "raw",
+   "metadata": {},
+   "source": [
+    "#single orjson encoding: with pickle\n",
+    "times = []\n",
+    "for i in range(10):\n",
+    "    test = torch.rand(size = (5000000,))\n",
+    "    t1 = time.time()\n",
+    "    binary = pickle.dumps(test)\n",
+    "    dictionary = {}\n",
+    "    dictionary[\"array\"] = binary\n",
+    "    json_binary = orjson.dumps(dictionary, option = orjson.OPT_SERIALIZE_NUMPY)\n",
+    "    #decoded = orjson.loads(json_binary)\n",
+    "    times.append(time.time() - t1)\n",
+    "print(np.mean(times))\n",
+    "# TypeError: Type is not JSON serializable: bytes"
+   ]
+  },
+  {
+   "cell_type": "raw",
+   "metadata": {},
+   "source": [
+    "times = []\n",
+    "for i in range(10):\n",
+    "    test = torch.rand(size = (5000000,))\n",
+    "    t1 = time.time()\n",
+    "    binary = pickle.dumps(test)\n",
+    "    m = dict()\n",
+    "    m[\"seed\"] = 10\n",
+    "    m[\"data\"] = binary\n",
+    "    jsondump = json.dumps(m)\n",
+    "    times.append(time.time() - t1)\n",
+    "print(np.mean(times))\n",
+    "TypeError: Object of type bytes is not JSON serializable"
+   ]
+  },
+  {
+   "cell_type": "raw",
+   "metadata": {},
+   "source": [
+    "times = []\n",
+    "for i in range(10):\n",
+    "    test = torch.rand(size = (5000000,))\n",
+    "    t1 = time.time()\n",
+    "    binary = pickle.dumps(test)\n",
+    "    m = dict()\n",
+    "    m[\"seed\"] = 10\n",
+    "    m[\"data\"] = binary.decode('utf-8')\n",
+    "    jsondump = json.dumps(m)\n",
+    "    times.append(time.time() - t1)\n",
+    "print(np.mean(times))\n",
+    "# UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 18,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import base64"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 119,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "0.09808683395385742\n"
+     ]
+    }
+   ],
+   "source": [
+    "times = []\n",
+    "for i in range(10):\n",
+    "    test = torch.rand(size = (5000000,))\n",
+    "    t1 = time.time()\n",
+    "    binary = pickle.dumps(test)\n",
+    "    m = dict()\n",
+    "    m[\"seed\"] = 10\n",
+    "    m[\"data\"] = base64.b64encode(binary).decode('utf-8')\n",
+    "    jsondump = json.dumps(m)\n",
+    "    times.append(time.time() - t1)\n",
+    "print(np.mean(times))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 120,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "'gASVTAAAAAAAAACMDHRvcmNoLl91dGlsc5SMEl9yZWJ1aWxkX3RlbnNvcl92MpSTlCiMDXRvcmNoLnN0b3JhZ2WUjBBfbG9hZF9m'"
+      ]
+     },
+     "execution_count": 120,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "m[\"data\"][0:100]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 121,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([0.0484, 0.4790, 0.4148, 0.8002, 0.2449, 0.2223, 0.4366, 0.7714, 0.8805,\n",
+       "        0.7945, 0.6266, 0.1414, 0.1102, 0.9152, 0.3609, 0.0438, 0.1110, 0.9004,\n",
+       "        0.8536, 0.9587])"
+      ]
+     },
+     "execution_count": 121,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "test[0:20]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 122,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "seed = m[\"seed\"]\n",
+    "\n",
+    "params = m[\"data\"]\n",
+    "\n",
+    "\n",
+    "binary = base64.b64decode(params)\n",
+    "params = pickle.loads(binary)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 123,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([0.0484, 0.4790, 0.4148, 0.8002, 0.2449, 0.2223, 0.4366, 0.7714, 0.8805,\n",
+       "        0.7945, 0.6266, 0.1414, 0.1102, 0.9152, 0.3609, 0.0438, 0.1110, 0.9004,\n",
+       "        0.8536, 0.9587])"
+      ]
+     },
+     "execution_count": 123,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "params[0:20]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 21,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "0.05851750373840332\n"
+     ]
+    }
+   ],
+   "source": [
+    "# with orjson\n",
+    "times = []\n",
+    "for i in range(10):\n",
+    "    test = torch.rand(size = (5000000,))\n",
+    "    t1 = time.time()\n",
+    "    binary = pickle.dumps(test)\n",
+    "    m = dict()\n",
+    "    m[\"seed\"] = 10\n",
+    "    m[\"data\"] = base64.b64encode(binary).decode('utf-8')\n",
+    "    jsondump = orjson.dumps(m)\n",
+    "    times.append(time.time() - t1)\n",
+    "print(np.mean(times))"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Code Snipets from Testing"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 159,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([[ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9],\n",
+       "        [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]])"
+      ]
+     },
+     "execution_count": 159,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.arange(0,20,1).reshape([2,10])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 160,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17,\n",
+       "        18, 19])"
+      ]
+     },
+     "execution_count": 160,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.arange(0,20,1).reshape([2,10]).flatten()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "interpreter": {
+   "hash": "996934296aa9d79be6c3d800a38d8fdb7dfa8fe7bb07df178f1397cde2cb8742"
+  },
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.9.10"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/random files/playground_jw_quant.ipynb b/random files/playground_jw_quant.ipynb
new file mode 100644
index 0000000..bcdd39d
--- /dev/null
+++ b/random files/playground_jw_quant.ipynb	
@@ -0,0 +1,4179 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from qtorch.quant import fixed_point_quantize, block_quantize, float_quantize"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from qtorch import FloatingPoint"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import pickle"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 77,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import numpy as np\n",
+    "import fpzip\n",
+    "from pyzfp import compress, decompress\n",
+    "import torch\n",
+    "import matplotlib.pyplot as plt\n",
+    "from torch.quantization.observer import MinMaxObserver, MovingAverageMinMaxObserver, HistogramObserver\n",
+    "from torch.nn.quantized.modules.utils import _quantize_weight\n",
+    "import pywt"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from decentralizepy.compression.Elias8bitQuant import Elias8bitQuant\n",
+    "ebit8q = Elias8bitQuant()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "a = np.random.normal(0, 0.1, 10000).astype(np.float32)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "40000"
+      ]
+     },
+     "execution_count": 8,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "len(a)*4"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "b = fpzip.compress(a , precision=12, order='C')"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 10,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "12087"
+      ]
+     },
+     "execution_count": 10,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "len(b)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 11,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "c = fpzip.decompress(b,  order='C')"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([-0.01464844, -0.0859375 , -0.00268555,  0.01953125,  0.00317383,\n",
+       "       -0.078125  , -0.109375  ,  0.00585938, -0.1875    , -0.01464844],\n",
+       "      dtype=float32)"
+      ]
+     },
+     "execution_count": 12,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "c[0][0][0][0:10]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 13,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "0.50458467"
+      ]
+     },
+     "execution_count": 13,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "np.linalg.norm((a-c)[0][0], 2)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 14,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([-0.01551323, -0.08976793, -0.00279709, ...,  0.0934156 ,\n",
+       "       -0.00322201, -0.16196491], dtype=float32)"
+      ]
+     },
+     "execution_count": 14,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "a"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 15,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "at = torch.from_numpy(a)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 16,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "stochastic_rounded = float_quantize(at, exp=3, man=5, rounding=\"stochastic\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 17,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "7.9375"
+      ]
+     },
+     "execution_count": 17,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "float_quantize(torch.tensor(np.array([10]), dtype = torch.float32), exp=2, man=6, rounding=\"nearest\").item()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 18,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# something is off this should be half the size\n",
+    "# it is correct 2 bits can represent 0,1,2,3\n",
+    "# 3 - 1 = 2\n",
+    "# and 2^2 is 4\n",
+    "# They do no do subnormal numbers"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 19,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "0.0078125"
+      ]
+     },
+     "execution_count": 19,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "fixed_point_quantize(torch.tensor(np.array([0.01]), dtype = torch.float32), 8, 7, rounding=\"nearest\").item()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 20,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# there is 1 bit for sign"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 21,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([-0.0156, -0.0859, -0.0078,  ...,  0.0938,  0.0000, -0.1641])"
+      ]
+     },
+     "execution_count": 21,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "stochastic_rounded"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 22,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import numpy as np"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 23,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([-0.0156, -0.0859, -0.0078,  ...,  0.0938,  0.0000, -0.1641])"
+      ]
+     },
+     "execution_count": 23,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "stochastic_rounded"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 24,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "bytes_array = stochastic_rounded.numpy().tobytes()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 25,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "numpy.ndarray"
+      ]
+     },
+     "execution_count": 25,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "np.ndarray"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 26,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([  0,   0, 128, ...,   0,  40, 190], dtype=uint8)"
+      ]
+     },
+     "execution_count": 26,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "np.frombuffer(bytes_array, dtype = np.uint8)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 27,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "40399"
+      ]
+     },
+     "execution_count": 27,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "len(pickle.dumps(stochastic_rounded))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 28,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "36855"
+      ]
+     },
+     "execution_count": 28,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "len(pickle.dumps(fpzip.compress(stochastic_rounded.numpy())))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 29,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "FloatingPoint (exponent=3, mantissa=5)"
+      ]
+     },
+     "execution_count": 29,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "FloatingPoint(3,5)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 30,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "40399"
+      ]
+     },
+     "execution_count": 30,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "len(pickle.dumps(at))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 31,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "37119"
+      ]
+     },
+     "execution_count": 31,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "len(pickle.dumps(fpzip.compress(at.numpy())))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 32,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "10000"
+      ]
+     },
+     "execution_count": 32,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "len(at)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 33,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "10000 torch.float32\n"
+     ]
+    }
+   ],
+   "source": [
+    "print(len(stochastic_rounded), stochastic_rounded.dtype)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 34,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(0.3202)"
+      ]
+     },
+     "execution_count": 34,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(at - stochastic_rounded, 2)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 35,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "#backend = 'fbgemm' if x86 else 'qnnpack'\n",
+    "#qconfig = torch.quantization.get_default_qconfig(backend)  \n",
+    "#torch.backends.quantized.engine = backend"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 36,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "'fbgemm'"
+      ]
+     },
+     "execution_count": 36,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.backends.quantized.engine"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 37,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "MinMaxObserver (tensor([0.0031]), tensor([123], dtype=torch.int32))\n",
+      "MovingAverageMinMaxObserver (tensor([0.0031]), tensor([123], dtype=torch.int32))\n",
+      "HistogramObserver (tensor([0.0031]), tensor([123], dtype=torch.int32))\n"
+     ]
+    },
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "/home/jeffrey/anaconda3/envs/sacs39/lib/python3.9/site-packages/torch/ao/quantization/observer.py:886: UserWarning: __floordiv__ is deprecated, and its behavior will change in a future version of pytorch. It currently rounds toward 0 (like the 'trunc' function NOT 'floor'). This results in incorrect rounding for negative values. To keep the current behavior, use torch.div(a, b, rounding_mode='trunc'), or for actual floor division, use torch.div(a, b, rounding_mode='floor').\n",
+      "  src_bin_begin // dst_bin_width, 0, self.dst_nbins - 1\n",
+      "/home/jeffrey/anaconda3/envs/sacs39/lib/python3.9/site-packages/torch/ao/quantization/observer.py:891: UserWarning: __floordiv__ is deprecated, and its behavior will change in a future version of pytorch. It currently rounds toward 0 (like the 'trunc' function NOT 'floor'). This results in incorrect rounding for negative values. To keep the current behavior, use torch.div(a, b, rounding_mode='trunc'), or for actual floor division, use torch.div(a, b, rounding_mode='floor').\n",
+      "  src_bin_end // dst_bin_width, 0, self.dst_nbins - 1\n"
+     ]
+    }
+   ],
+   "source": [
+    "a = np.random.normal(0, 0.1, 10000).astype(np.float32)\n",
+    "scheme = torch.per_tensor_affine#per_tensor_affine # affine means taking into account the actual range of the values\n",
+    "observers = [MinMaxObserver(qscheme=scheme), MovingAverageMinMaxObserver(qscheme=scheme), HistogramObserver(qscheme=scheme)]\n",
+    "for obs in observers:\n",
+    "  #for x in inputs: obs(x) \n",
+    "  obs.forward(torch.tensor(a))#(torch.tensor(a))\n",
+    "  print(obs.__class__.__name__, obs.calculate_qparams())"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 38,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "o = observers[0].calculate_qparams()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 39,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "(tensor([0.0031]), tensor([123], dtype=torch.int32))"
+      ]
+     },
+     "execution_count": 39,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "o"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 40,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([0.0031])"
+      ]
+     },
+     "execution_count": 40,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "o[0]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 41,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "aq = _quantize_weight(torch.tensor(a),  observers[2])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 42,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([ 0.0124,  0.0124, -0.0838,  ..., -0.0217, -0.1644,  0.0124],\n",
+       "       size=(10000,), dtype=torch.qint8,\n",
+       "       quantization_scheme=torch.per_tensor_affine, scale=0.003101914655417204,\n",
+       "       zero_point=123)"
+      ]
+     },
+     "execution_count": 42,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "aq"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 43,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([ 0.0248,  0.0838, -0.0838,  ..., -0.0217, -0.1645,  0.1738],\n",
+       "       size=(10000,), dtype=torch.quint8,\n",
+       "       quantization_scheme=torch.per_tensor_affine, scale=0.003103430150076747,\n",
+       "       zero_point=123)"
+      ]
+     },
+     "execution_count": 43,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.quantize_per_tensor(\n",
+    "            torch.tensor(a),\n",
+    "            o[0].item(), o[1].item(), torch.quint8)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 44,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "qt = torch.quantize_per_tensor(\n",
+    "            torch.tensor(a),\n",
+    "            o[0].item(), o[1].item(), torch.quint8)\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 45,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "qscheme=torch.qint8"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 46,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([ 0.0124,  0.0124, -0.0838,  ..., -0.0217, -0.1644,  0.0124],\n",
+       "       size=(10000,), dtype=torch.qint8,\n",
+       "       quantization_scheme=torch.per_tensor_affine, scale=0.003101914655417204,\n",
+       "       zero_point=123)"
+      ]
+     },
+     "execution_count": 46,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "aq"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 47,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "0.003101914655417204"
+      ]
+     },
+     "execution_count": 47,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "aq.q_scale()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 48,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "123"
+      ]
+     },
+     "execution_count": 48,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "aq.q_zero_point()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 49,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(127, dtype=torch.int8)"
+      ]
+     },
+     "execution_count": 49,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "aq.int_repr().max()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 50,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "_ = plt.hist(aq.int_repr().to(torch.float32).numpy()[0:1000], 100, (-300, 300))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 51,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "_ = plt.hist(qt.int_repr().to(torch.float32).numpy()[0:1000], 100, (-300, 300))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 52,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def convert(aq):\n",
+    "    return (aq.int_repr().to(torch.float32) - aq.q_zero_point())*aq.q_scale()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 53,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "tensor([ 0.0124,  0.0124, -0.0838,  ..., -0.0217, -0.1644,  0.0124],\n",
+      "       size=(10000,), dtype=torch.qint8,\n",
+      "       quantization_scheme=torch.per_tensor_affine, scale=0.003101914655417204,\n",
+      "       zero_point=123)\n"
+     ]
+    }
+   ],
+   "source": [
+    "print(aq)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 54,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([ 0.0124,  0.0124, -0.0838,  ..., -0.0217, -0.1644,  0.0124])"
+      ]
+     },
+     "execution_count": 54,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "convert(aq)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 55,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([127, 127,  96,  ..., 116,  70, 127], dtype=torch.int8)"
+      ]
+     },
+     "execution_count": 55,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "aq.int_repr()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 56,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "a = np.random.rand(100).astype(np.float32)\n",
+    "at = torch.from_numpy(a)\n",
+    "scheme = torch.per_tensor_affine\n",
+    "observer = MovingAverageMinMaxObserver(qscheme=scheme) #MinMaxObserver, MovingAverageMinMaxObserver(qscheme=scheme), HistogramObserver(qscheme=scheme)]\n",
+    "observer.forward(at)\n",
+    "o = observer.calculate_qparams()\n",
+    "aq = torch.quantize_per_tensor(\n",
+    "    torch.tensor(a),\n",
+    "    o[0].item(), o[1].item(), torch.quint8)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 57,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "0.010789979249238968"
+      ]
+     },
+     "execution_count": 57,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(at - convert(aq), 2).item()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 58,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "comp = ebit8q.compress_float(a)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 59,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "decomp = ebit8q.decompress_float(comp)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 60,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "0.010789979249238968"
+      ]
+     },
+     "execution_count": 60,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(at - decomp, 2).item()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 110,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def comp(a):\n",
+    "    b = fpzip.compress(a , precision=14, order='C')\n",
+    "    c = fpzip.decompress(b,  order='C')\n",
+    "    bb = compress(a, tolerance=0.001, parallel=False)\n",
+    "    cc = decompress(bb, a.shape, a.dtype, tolerance=0.001)\n",
+    "    \n",
+    "    at = torch.from_numpy(a)\n",
+    "    stochastic_rounded = float_quantize(at, exp=5, man=2, rounding=\"stochastic\")\n",
+    "    \n",
+    "    scheme = torch.per_tensor_affine#per_tensor_affine # affine means taking into account the actual range of the values\n",
+    "    observer = MovingAverageMinMaxObserver(qscheme=scheme) #MinMaxObserver, MovingAverageMinMaxObserver(qscheme=scheme), HistogramObserver(qscheme=scheme)]\n",
+    "    observer.forward(at)\n",
+    "    o = observer.calculate_qparams()\n",
+    "    # or observer(at)\n",
+    "    #aq = _quantize_weight(at,  observer), this method does not work well!\n",
+    "    aq = torch.quantize_per_tensor(\n",
+    "            torch.tensor(a),\n",
+    "            o[0].item(), o[1].item(), torch.quint8)\n",
+    "    print(a[0:10], aq[0:10])\n",
+    "    print(np.linalg.norm((a-c)[0][0], 2), np.linalg.norm((a-cc), 2), torch.norm(at - stochastic_rounded, 2).item(), torch.norm(at - convert(aq), 2).item())\n",
+    "    print(\"compression_ratio:\", len(b)/(len(a)*4), len(bb)/(len(a)*4), 0.25, 0.25)\n",
+    "    return aq"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 102,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def flatten_model(state_dict):\n",
+    "    shapes = []\n",
+    "    lens = []\n",
+    "    tensors_to_cat = []\n",
+    "    for _, v in state_dict.items():\n",
+    "        shapes.append(v.shape)\n",
+    "        t = v.flatten()\n",
+    "        lens.append(t.shape[0])\n",
+    "        tensors_to_cat.append(t)\n",
+    "    return torch.cat(tensors_to_cat)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 103,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "a = np.random.rand(100).astype(np.float32)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 104,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([0.14649276, 0.8268811 , 0.07076293, 0.41617852, 0.535295  ,\n",
+       "       0.09393147, 0.4459402 , 0.97720236, 0.58554167, 0.3981123 ],\n",
+       "      dtype=float32)"
+      ]
+     },
+     "execution_count": 104,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "a[0:10]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 105,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "[0.14649276 0.8268811  0.07076293 0.41617852 0.535295   0.09393147\n",
+      " 0.4459402  0.97720236 0.58554167 0.3981123 ] tensor([0.1465, 0.8287, 0.0694, 0.4163, 0.5357, 0.0925, 0.4471, 0.9790, 0.5858,\n",
+      "        0.3970], size=(10,), dtype=torch.quint8,\n",
+      "       quantization_scheme=torch.per_tensor_affine, scale=0.0038542263209819794,\n",
+      "       zero_point=0)\n",
+      "0.06702854 0.006093391 0.3343985676765442 0.011288280598819256\n",
+      "compression_ratio: 0.3525 0.42 0.25 0.25\n"
+     ]
+    }
+   ],
+   "source": [
+    "qt = comp(a)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 89,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def comp16(a):\n",
+    "    b = fpzip.compress(a , precision=18, order='C')\n",
+    "    c = fpzip.decompress(b,  order='C')\n",
+    "    \n",
+    "    at = torch.from_numpy(a)\n",
+    "    stochastic_rounded = float_quantize(at, exp=5, man=2, rounding=\"stochastic\")\n",
+    "    \n",
+    "    scheme = torch.per_tensor_affine#per_tensor_affine # affine means taking into account the actual range of the values\n",
+    "    observer = MovingAverageMinMaxObserver(qscheme=scheme) #MinMaxObserver, MovingAverageMinMaxObserver(qscheme=scheme), HistogramObserver(qscheme=scheme)]\n",
+    "    observer.forward(at)\n",
+    "    o = observer.calculate_qparams()\n",
+    "    # or observer(at)\n",
+    "    #aq = _quantize_weight(at,  observer), this method does not work well!\n",
+    "    aq = torch.quantize_per_tensor(\n",
+    "            torch.tensor(a),\n",
+    "            o[0].item(), o[1].item(), torch.quint8)\n",
+    "    print(a[0:10], aq[0:10])\n",
+    "    print(np.linalg.norm((a-c)[0][0], 2), torch.norm(at - stochastic_rounded, 2).item(), torch.norm(at - convert(aq), 2).item())\n",
+    "    print(\"compression_ratio:\", len(b)/(len(a)*4), 0.25, 0.25)\n",
+    "    return aq"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 90,
+   "metadata": {},
+   "outputs": [
+    {
+     "ename": "ValueError",
+     "evalue": "Data type float16 must be a floating type.",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+      "\u001b[0;31mValueError\u001b[0m                                Traceback (most recent call last)",
+      "Input \u001b[0;32mIn [90]\u001b[0m, in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0m qt \u001b[38;5;241m=\u001b[39m \u001b[43mcomp16\u001b[49m\u001b[43m(\u001b[49m\u001b[43ma\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mastype\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfloat16\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n",
+      "Input \u001b[0;32mIn [89]\u001b[0m, in \u001b[0;36mcomp16\u001b[0;34m(a)\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mcomp16\u001b[39m(a):\n\u001b[0;32m----> 2\u001b[0m     b \u001b[38;5;241m=\u001b[39m \u001b[43mfpzip\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcompress\u001b[49m\u001b[43m(\u001b[49m\u001b[43ma\u001b[49m\u001b[43m \u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mprecision\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m18\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43morder\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mC\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m      3\u001b[0m     c \u001b[38;5;241m=\u001b[39m fpzip\u001b[38;5;241m.\u001b[39mdecompress(b,  order\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mC\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m      5\u001b[0m     at \u001b[38;5;241m=\u001b[39m torch\u001b[38;5;241m.\u001b[39mfrom_numpy(a)\n",
+      "File \u001b[0;32mfpzip.pyx:91\u001b[0m, in \u001b[0;36mfpzip.compress\u001b[0;34m()\u001b[0m\n",
+      "\u001b[0;31mValueError\u001b[0m: Data type float16 must be a floating type."
+     ]
+    }
+   ],
+   "source": [
+    "qt = comp16(a.astype(np.float16))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 91,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "_ = plt.hist(qt.int_repr().to(torch.float32).numpy(), 100, (0, 300))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 121,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "a = (np.random.rand(10000).astype(np.float32) -0.5) *10"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 122,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([-4.3329406 ,  2.0941095 , -0.43923616,  0.24154782,  3.528521  ,\n",
+       "       -2.766264  , -0.47501475,  0.7699454 ,  0.90143025, -4.2246346 ],\n",
+       "      dtype=float32)"
+      ]
+     },
+     "execution_count": 122,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "a[0:10]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 123,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "[-4.3329406   2.0941095  -0.43923616  0.24154782  3.528521   -2.766264\n",
+      " -0.47501475  0.7699454   0.90143025 -4.2246346 ] tensor([-4.3515,  2.0778, -0.4312,  0.2352,  3.5283, -2.7834, -0.4704,  0.7841,\n",
+      "         0.9017, -4.2339], size=(10,), dtype=torch.quint8,\n",
+      "       quantization_scheme=torch.per_tensor_affine, scale=0.039202895015478134,\n",
+      "       zero_point=127)\n",
+      "4.052173 0.016632441 23.100893020629883 1.1358001232147217\n",
+      "compression_ratio: 0.3867 0.5506 0.25 0.25\n"
+     ]
+    }
+   ],
+   "source": [
+    "qt = comp(a)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 95,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "_ = plt.hist(qt.int_repr().to(torch.float32).numpy(), 100, (0, 300))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 96,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "[-0.17422378 -0.17071381  0.00554137 -0.02331001  0.03649271  0.08106142\n",
+      "  0.05222103 -0.13010341 -0.16420947  0.04394973] tensor([-0.1739, -0.1712,  0.0054, -0.0245,  0.0353,  0.0815,  0.0516, -0.1304,\n",
+      "        -0.1630,  0.0435], size=(10,), dtype=torch.quint8,\n",
+      "       quantization_scheme=torch.per_tensor_affine, scale=0.0027172896079719067,\n",
+      "       zero_point=126)\n",
+      "0.1308374 0.1322985 0.7414445281028748 0.07875864207744598\n",
+      "compression_ratio: 0.3656 0.302 0.25 0.25\n"
+     ]
+    }
+   ],
+   "source": [
+    "a = np.random.normal(0, 0.1, 10000).astype(np.float32)\n",
+    "qt = comp(a)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 112,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "    bb = compress(a, tolerance=0.001, parallel=False)\n",
+    "    cc = decompress(bb, a.shape, a.dtype, tolerance=0.001)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 119,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "    cc = decompress(np.array(bb).tobytes(), a.shape, a.dtype, tolerance=0.001)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 120,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([0.14685059, 0.8272705 , 0.07067871, 0.4161377 , 0.5352783 ,\n",
+       "       0.09411621, 0.44592285, 0.977417  , 0.58569336, 0.39819336,\n",
+       "       0.6730957 , 0.03930664, 0.45550537, 0.75909424, 0.93377686,\n",
+       "       0.59088135, 0.03643799, 0.9828491 , 0.35211182, 0.24383545,\n",
+       "       0.01055908, 0.00189209, 0.13970947, 0.24627686, 0.06787109,\n",
+       "       0.74121094, 0.5839844 , 0.87353516, 0.39404297, 0.55029297,\n",
+       "       0.5673828 , 0.28515625, 0.46887207, 0.90270996, 0.7393799 ,\n",
+       "       0.7327881 , 0.19091797, 0.87109375, 0.04248047, 0.5761719 ,\n",
+       "       0.42425537, 0.21954346, 0.9767456 , 0.04937744, 0.708313  ,\n",
+       "       0.05804443, 0.62750244, 0.51239014, 0.8782959 , 0.18518066,\n",
+       "       0.6590576 , 0.48742676, 0.12817383, 0.42944336, 0.7199707 ,\n",
+       "       0.92163086, 0.24468994, 0.8966675 , 0.3772583 , 0.7821655 ,\n",
+       "       0.9729614 , 0.96136475, 0.41363525, 0.5739136 , 0.7182617 ,\n",
+       "       0.5683594 , 0.12109375, 0.89990234, 0.29241943, 0.01593018,\n",
+       "       0.19989014, 0.2798462 , 0.49334717, 0.31988525, 0.22454834,\n",
+       "       0.80303955, 0.08361816, 0.9276123 , 0.29406738, 0.6204834 ,\n",
+       "       0.33605957, 0.7904053 , 0.25598145, 0.4515381 , 0.40979004,\n",
+       "       0.10681152, 0.3433838 , 0.36169434, 0.39416504, 0.25134277,\n",
+       "       0.6998291 , 0.32556152, 0.7110596 , 0.21276855, 0.98010254,\n",
+       "       0.9661865 , 0.04711914, 0.9538574 , 0.20532227, 0.7858887 ],\n",
+       "      dtype=float32)"
+      ]
+     },
+     "execution_count": 120,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "cc"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 116,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "192"
+      ]
+     },
+     "execution_count": 116,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "len(np.array(bb).tobytes())"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 118,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "192"
+      ]
+     },
+     "execution_count": 118,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "len(bb)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 117,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "400"
+      ]
+     },
+     "execution_count": 117,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "len(a.tobytes())"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 49,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "_ = plt.hist(a, 100, (-0.5,0.5))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 50,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "_ = plt.hist(qt.int_repr().to(torch.float32).numpy(), 100, (0, 300))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 97,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import torchvision"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 98,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "r18 = torchvision.models.resnet18(True)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 99,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "flat = flatten_model(r18.state_dict())"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 111,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "[-0.01041935 -0.00613561 -0.00180978  0.07484142  0.05661485  0.01708333\n",
+      " -0.01269388  0.01108271  0.00952757 -0.10992692] tensor([ 0.0000,  0.0000,  0.0000,  0.0652,  0.0652,  0.0000,  0.0000,  0.0000,\n",
+      "         0.0000, -0.1305], size=(10,), dtype=torch.quint8,\n",
+      "       quantization_scheme=torch.per_tensor_affine, scale=0.06523405760526657,\n",
+      "       zero_point=45)\n",
+      "1.3827991 0.5653769 7.915776252746582 52.67439651489258\n",
+      "compression_ratio: 0.3207514668609603 0.3097713573964291 0.25 0.25\n"
+     ]
+    },
+    {
+     "data": {
+      "text/plain": [
+       "tensor([0., 0., 0.,  ..., 0., 0., 0.], size=(11699132,), dtype=torch.quint8,\n",
+       "       quantization_scheme=torch.per_tensor_affine, scale=0.06523405760526657,\n",
+       "       zero_point=45)"
+      ]
+     },
+     "execution_count": 111,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "comp(flat.numpy())"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 547,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def comp2(a):\n",
+    "    b = fpzip.compress(a , precision=12, order='C')\n",
+    "    c = fpzip.decompress(b,  order='C')\n",
+    "    \n",
+    "    at = torch.from_numpy(a)\n",
+    "    stochastic_rounded = float_quantize(at, exp=5, man=2, rounding=\"stochastic\")\n",
+    "    \n",
+    "    scheme = torch.per_tensor_symmetric#per_tensor_affine # affine means taking into account the actual range of the values\n",
+    "    observer = HistogramObserver(qscheme=scheme) #MinMaxObserver, MovingAverageMinMaxObserver(qscheme=scheme), HistogramObserver(qscheme=scheme)]\n",
+    "    observer.forward(at)\n",
+    "    o = observer.calculate_qparams()\n",
+    "    # or observer(at)\n",
+    "    #aq = _quantize_weight(at,  observer), this method does not work well!\n",
+    "    aq = torch.quantize_per_tensor(\n",
+    "            torch.tensor(a),\n",
+    "            o[0].item(), o[1].item(), torch.quint8)\n",
+    "    print(a[0:10], aq[0:10])\n",
+    "    print(np.linalg.norm((a-c)[0][0], 2), torch.norm(at - stochastic_rounded, 2).item(), torch.norm(at - convert(aq), 2).item())\n",
+    "    print(\"compression_ratio:\", len(b)/(len(a)*4), 0.25, 0.25)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 468,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "[-0.01041935 -0.00613561 -0.00180978  0.07484142  0.05661485  0.01708333\n",
+      " -0.01269388  0.01108271  0.00952757 -0.10992692] tensor([-0.0130,  0.0000,  0.0000,  0.0780,  0.0520,  0.0130, -0.0130,  0.0130,\n",
+      "         0.0130, -0.1040], size=(10,), dtype=torch.quint8,\n",
+      "       quantization_scheme=torch.per_tensor_affine, scale=0.013002387247979641,\n",
+      "       zero_point=128)\n",
+      "5.376652 7.8146185874938965 28.545759201049805\n",
+      "compression_ratio: 0.2583094839856495 0.25 0.25\n"
+     ]
+    }
+   ],
+   "source": [
+    "comp2(flat.numpy())"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 474,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "11699132"
+      ]
+     },
+     "execution_count": 474,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "len(flat)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 469,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(13.7179)"
+      ]
+     },
+     "execution_count": 469,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "flat.max()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 470,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(-2.9168)"
+      ]
+     },
+     "execution_count": 470,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "flat.min()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 471,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# these are the reasons why it is not working"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 476,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "580"
+      ]
+     },
+     "execution_count": 476,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "len(flat[flat > 1])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Implement qint compression sceme where we ignore values > 1 by sending them seperately"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 556,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "flat2 = flat[(flat < 0.2)]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 557,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "flat3 = flat2[flat2 > -0.2]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 106,
+   "metadata": {},
+   "outputs": [
+    {
+     "ename": "NameError",
+     "evalue": "name 'flat3' is not defined",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+      "\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)",
+      "Input \u001b[0;32mIn [106]\u001b[0m, in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0m qt \u001b[38;5;241m=\u001b[39m comp(\u001b[43mflat3\u001b[49m\u001b[38;5;241m.\u001b[39mnumpy())\n",
+      "\u001b[0;31mNameError\u001b[0m: name 'flat3' is not defined"
+     ]
+    }
+   ],
+   "source": [
+    "qt = comp(flat3.numpy())"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 559,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "_ = plt.hist(qt.int_repr().to(torch.float32).numpy(), 100, (0, 300))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 548,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "[-0.01041935 -0.00613561 -0.00180978  0.07484142  0.05661485  0.01708333\n",
+      " -0.01269388  0.01108271  0.00952757 -0.10992692] tensor([-0.0112, -0.0056,  0.0000,  0.0730,  0.0561,  0.0168, -0.0112,  0.0112,\n",
+      "         0.0112, -0.1123], size=(10,), dtype=torch.quint8,\n",
+      "       quantization_scheme=torch.per_tensor_affine, scale=0.005614420399069786,\n",
+      "       zero_point=128)\n",
+      "4.759155 6.922706604003906 5.910922527313232\n",
+      "compression_ratio: 0.2583142617722315 0.25 0.25\n"
+     ]
+    }
+   ],
+   "source": [
+    "comp2(flat3.numpy())"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# need non linear quantization"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import pywt"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 56,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# removing bn layers"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 13,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "resw = r18.state_dict()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 14,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "resw = {k:v for k,v in resw.items() if \"bn1.\" not in k}\n",
+    "resw = {k:v for k,v in resw.items() if \"bn2.\" not in k}\n",
+    "resw = {k:v for k,v in resw.items() if len(v.shape) >1}"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 15,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(102.5824)"
+      ]
+     },
+     "execution_count": 15,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# Random\n",
+    "probs = torch.rand_like(flat)\n",
+    "indices = probs < 0.1\n",
+    "top10_og = torch.zeros(len(flat))\n",
+    "top10_og[indices] = flat[indices]\n",
+    "torch.norm(top10_og - flat, 2) "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "haar 102.74525451660156 185069.125\n",
+      "db1 103.23194122314453 185122.640625\n",
+      "sym2 103.66918182373047 184979.96875\n",
+      "coif1 102.05806732177734 184744.890625\n",
+      "bior1.1 102.97911834716797 185177.625\n",
+      "rbio1.1 103.00313568115234 185171.53125\n"
+     ]
+    }
+   ],
+   "source": [
+    "# Random\n",
+    "# working on the random initialization\n",
+    "wavelets = ['haar', 'db1', 'sym2', 'coif1', 'bior1.1', 'rbio1.1', 'dmey', 'bior4.4'] # 'gaus1' not supported, 'mexh','morl',  'cgau1', 'shan',  'fbsp', 'cmor'\n",
+    "# wavelets = pywt.wavelist(kind='discrete', )\n",
+    "errs = []\n",
+    "names = []\n",
+    "for wavelet in wavelets:\n",
+    "    coeff = pywt.wavedec(flat.numpy(), wavelet, level = 4)\n",
+    "    array, coeff_slices = pywt.coeffs_to_array(coeff)\n",
+    "    #print(coeff_slices) # should be static so we do not need to send them\n",
+    "    probs = torch.rand_like(torch.from_numpy(array))\n",
+    "    indices = probs < 0.1\n",
+    "    \n",
+    "    top10 = torch.zeros(len(array))\n",
+    "    top10[indices] = torch.from_numpy(array[indices])\n",
+    "    og = pywt.array_to_coeffs(top10, coeff_slices, output_format=\"wavedec\")\n",
+    "    reverse_top10 = torch.from_numpy(pywt.waverec(og, wavelet = wavelet))\n",
+    "    err = torch.norm(reverse_top10 - flat, 2)\n",
+    "    err1 = torch.norm(reverse_top10 - flat, 1)\n",
+    "    errs.append(err)\n",
+    "    names.append(wavelet)\n",
+    "    print(wavelet, err.item(), err1.item())\n",
+    "ind = np.argmin(errs)\n",
+    "print(\"min: \", errs[ind], names[ind], ind)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 24,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(25.6738)"
+      ]
+     },
+     "execution_count": 24,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "topk_og = torch.topk(\n",
+    "            flat.abs(), round(0.33*len(flat)), dim=0, sorted=False\n",
+    "        )\n",
+    "top10_og = torch.zeros(len(flat))\n",
+    "top10_og[topk_og.indices] = flat[topk_og.indices]\n",
+    "torch.norm(top10_og - flat, 2) "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 25,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "torch.Size([11699132])\n"
+     ]
+    }
+   ],
+   "source": [
+    "print(flat.shape)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 23,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "haar 20.19877052307129 53562.796875\n",
+      "db1 20.19877052307129 53562.796875\n",
+      "sym2 20.11495018005371 53570.296875\n",
+      "min:  tensor(20.1150) sym2 2\n"
+     ]
+    }
+   ],
+   "source": [
+    "# Base case on flattened data, with level=4\n",
+    "# working on the random initialization\n",
+    "wavelets = ['haar', 'db1', 'sym2']#, 'coif1', 'bior1.1', 'rbio1.1', 'dmey', 'bior4.4'] # 'gaus1' not supported, 'mexh','morl',  'cgau1', 'shan',  'fbsp', 'cmor'\n",
+    "# wavelets = pywt.wavelist(kind='discrete', )\n",
+    "errs = []\n",
+    "names = []\n",
+    "for wavelet in wavelets:\n",
+    "    coeff = pywt.wavedec(flat.numpy(), wavelet, level = 4)\n",
+    "    array, coeff_slices = pywt.coeffs_to_array(coeff)\n",
+    "    #print(coeff_slices) # should be static so we do not need to send them\n",
+    "    topk = torch.topk(\n",
+    "            torch.from_numpy(np.absolute(array)), round(0.33*len(array)), dim=0, sorted=False\n",
+    "        )\n",
+    "    top10 = torch.zeros(len(array))\n",
+    "    top10[topk.indices] = torch.from_numpy(array[topk.indices])\n",
+    "    og = pywt.array_to_coeffs(top10, coeff_slices, output_format=\"wavedec\")\n",
+    "    reverse_top10 = torch.from_numpy(pywt.waverec(og, wavelet = wavelet))\n",
+    "    err = torch.norm(reverse_top10 - flat, 2)\n",
+    "    err1 = torch.norm(reverse_top10 - flat, 1)\n",
+    "    errs.append(err)\n",
+    "    names.append(wavelet)\n",
+    "    print(wavelet, err.item(), err1.item())\n",
+    "ind = np.argmin(errs)\n",
+    "print(\"min: \", errs[ind], names[ind], ind)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 22,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "0.9491062664912424"
+      ]
+     },
+     "execution_count": 22,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# RMSE\n",
+    "import math\n",
+    "wv = math.sqrt(42.6776)\n",
+    "tpk =  math.sqrt(47.3773)\n",
+    "wv / tpk\n",
+    "# --> 0.949 --> 5% less error"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 27,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "0.8851460621415522"
+      ]
+     },
+     "execution_count": 27,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "wv = math.sqrt(20.1150)\n",
+    "tpk =  math.sqrt(25.6738)\n",
+    "wv / tpk\n",
+    "# --> 0.88 --> 12% less error\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 58,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# level 4: 42.677608489990234 114424.265625\n",
+    "# None: 42.69436264038086 114436.171875"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 59,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "approx = coeff[0]\n",
+    "details = coeff[1:]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 60,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([-0.02112804, -0.12861666,  0.355115  , ...,  0.01942001,\n",
+       "        0.00414812, -0.02489999], dtype=float32)"
+      ]
+     },
+     "execution_count": 60,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "approx"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 61,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "731195.75"
+      ]
+     },
+     "execution_count": 61,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "len(flat) / 16"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 62,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "731198"
+      ]
+     },
+     "execution_count": 62,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "len(approx)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 63,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "16.845043 -5.0946984 -0.00447843\n"
+     ]
+    }
+   ],
+   "source": [
+    "print(approx.max(), approx.min(), approx.mean())"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 64,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "_ = plt.hist(approx, 1000, (-0.3, 0.3))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 65,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "4"
+      ]
+     },
+     "execution_count": 65,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "len(details)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 66,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "[731198, 1462394, 2924785, 5849567]\n"
+     ]
+    }
+   ],
+   "source": [
+    "print([len(d) for d in details])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 67,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "d0 = details[0]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 68,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "4.3342423 -3.6128068 -5.1483516e-06\n"
+     ]
+    }
+   ],
+   "source": [
+    "print(d0.max(), d0.min(), d0.mean())"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 69,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([-0.02881567, -0.49651563, -0.06628633, ...,  0.02382721,\n",
+       "       -0.02910749,  0.01628537], dtype=float32)"
+      ]
+     },
+     "execution_count": 69,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "d0"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 70,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "_ = plt.hist(d0, 1000, (-0.3, 0.3))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 78,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "haar 83.8722915649414 171346.921875\n",
+      "db1 83.8722915649414 171346.921875\n",
+      "sym2 83.61727142333984 169984.34375\n",
+      "min:  tensor(83.6173) sym2 2\n"
+     ]
+    }
+   ],
+   "source": [
+    "# Just using the approximation!\n",
+    "# working on the random initialization\n",
+    "wavelets = ['haar', 'db1', 'sym2']#, 'coif1', 'bior1.1', 'rbio1.1', 'dmey', 'bior4.4'] # 'gaus1' not supported, 'mexh','morl',  'cgau1', 'shan',  'fbsp', 'cmor'\n",
+    "# wavelets = pywt.wavelist(kind='discrete', )\n",
+    "errs = []\n",
+    "names = []\n",
+    "for wavelet in wavelets:\n",
+    "    coeff = pywt.wavedec(flat.numpy(), wavelet, level = 4)\n",
+    "    approx = coeff[0]\n",
+    "    details = coeff[1:]\n",
+    "    details = [np.zeros_like(d) for d in details]\n",
+    "    approx_only = [approx]\n",
+    "    approx_only.extend(details)\n",
+    "    array, coeff_slices = pywt.coeffs_to_array(approx_only)\n",
+    "    #print(coeff_slices) # should be static so we do not need to send them\n",
+    "    #topk = torch.topk(\n",
+    "     #       torch.from_numpy(np.absolute(array)), round(0.1*len(array)), dim=0, sorted=False\n",
+    "      #  )\n",
+    "    #top10 = torch.zeros(len(array))\n",
+    "    #top10[topk.indices] = torch.from_numpy(array[topk.indices])\n",
+    "    og = pywt.array_to_coeffs(array, coeff_slices, output_format=\"wavedec\")\n",
+    "    reverse_top10 = torch.from_numpy(pywt.waverec(og, wavelet = wavelet))\n",
+    "    err = torch.norm(reverse_top10 - flat, 2)\n",
+    "    err1 = torch.norm(reverse_top10 - flat, 1)\n",
+    "    errs.append(err)\n",
+    "    names.append(wavelet)\n",
+    "    print(wavelet, err.item(), err1.item())\n",
+    "ind = np.argmin(errs)\n",
+    "print(\"min: \", errs[ind], names[ind], ind)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 23,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "18.828228"
+      ]
+     },
+     "execution_count": 23,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "array[topk.indices].max()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 24,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "-9.629911"
+      ]
+     },
+     "execution_count": 24,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "array[topk.indices].min()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 31,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "sub = array[topk.indices]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 34,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "527"
+      ]
+     },
+     "execution_count": 34,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "len(sub[np.absolute(sub) > 1])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 35,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "1169917"
+      ]
+     },
+     "execution_count": 35,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "len(sub)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 37,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "_ = plt.hist(array[topk.indices], 1000, (-1, 1))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 171,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "11699132"
+      ]
+     },
+     "execution_count": 171,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "len(flat)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 172,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "3420.399391883936"
+      ]
+     },
+     "execution_count": 172,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "np.sqrt(len(flat))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 180,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 181,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[2, 2, 191, 15313]"
+      ]
+     },
+     "execution_count": 181,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "prime_factors(len(flat))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 182,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "764"
+      ]
+     },
+     "execution_count": 182,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "2*2*191"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 183,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "square = flat.reshape(764, 15313)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 225,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "(765, 15317)\n",
+      "(765, 15317)\n",
+      "torch.Size([764, 15313])\n",
+      "haar 46.458038330078125 125166.609375\n",
+      "(765, 15317)\n",
+      "(765, 15317)\n",
+      "torch.Size([764, 15313])\n",
+      "db1 46.458038330078125 125166.609375\n",
+      "(774, 15322)\n",
+      "(774, 15322)\n",
+      "torch.Size([764, 15313])\n",
+      "sym2 46.43218231201172 125249.15625\n",
+      "(781, 15331)\n",
+      "(781, 15331)\n",
+      "torch.Size([764, 15313])\n",
+      "coif1 46.54570388793945 125596.46875\n",
+      "(765, 15317)\n",
+      "(765, 15317)\n",
+      "torch.Size([764, 15313])\n",
+      "bior1.1 46.458038330078125 125166.609375\n",
+      "(765, 15317)\n",
+      "(765, 15317)\n",
+      "torch.Size([764, 15313])\n",
+      "rbio1.1 46.458038330078125 125166.609375\n",
+      "(1004, 15556)\n",
+      "(1004, 15556)\n",
+      "torch.Size([764, 15313])\n",
+      "dmey 52.37420654296875 139893.703125\n",
+      "(798, 15348)\n",
+      "(798, 15348)\n",
+      "torch.Size([764, 15313])\n",
+      "bior4.4 47.59955978393555 128068.578125\n",
+      "min:  tensor(46.4322) sym2 2\n"
+     ]
+    }
+   ],
+   "source": [
+    "# Base case on rectangular data, with level=4\n",
+    "# working on the random initialization\n",
+    "wavelets = ['haar', 'db1', 'sym2', 'coif1', 'bior1.1', 'rbio1.1', 'dmey', 'bior4.4'] # 'gaus1' not supported, 'mexh','morl',  'cgau1', 'shan',  'fbsp', 'cmor'\n",
+    "# wavelets = pywt.wavelist(kind='discrete', )\n",
+    "errs = []\n",
+    "names = []\n",
+    "for wavelet in wavelets:\n",
+    "    coeff = pywt.wavedecn(square.numpy(), wavelet, level = 4)\n",
+    "    array, coeff_slices = pywt.coeffs_to_array(coeff)\n",
+    "    #print(coeff_slices) # should be static so we do not need to send them\n",
+    "    shape = array.shape\n",
+    "    print(shape)\n",
+    "    array = torch.from_numpy(array).flatten()\n",
+    "    topk = torch.topk(\n",
+    "            array.abs(), round(0.1*len(array)), dim=0, sorted=False\n",
+    "        )\n",
+    "    top10 = torch.zeros(len(array))\n",
+    "    \n",
+    "    top10[topk.indices] = array[topk.indices]\n",
+    "    top10 = top10.reshape(shape).numpy()\n",
+    "    print(top10.shape)\n",
+    "    og = pywt.array_to_coeffs(top10, coeff_slices, output_format=\"wavedecn\")\n",
+    "    reverse_top10 = torch.from_numpy(pywt.waverecn(og, wavelet = wavelet))\n",
+    "    reverse_top10 = reverse_top10[0:, :-1]\n",
+    "    print(reverse_top10.shape)\n",
+    "    err = torch.norm(reverse_top10 - square, 2)\n",
+    "    err1 = torch.norm(reverse_top10 - square, 1)\n",
+    "    errs.append(err)\n",
+    "    names.append(wavelet)\n",
+    "    print(wavelet, err.item(), err1.item())\n",
+    "ind = np.argmin(errs)\n",
+    "print(\"min: \", errs[ind], names[ind], ind)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 75,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# layerwise"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 29,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "stats = {k: l.shape  for k,l in resw.items()}"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 30,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "{'conv1.weight': torch.Size([64, 3, 7, 7]),\n",
+       " 'layer1.0.conv1.weight': torch.Size([64, 64, 3, 3]),\n",
+       " 'layer1.0.conv2.weight': torch.Size([64, 64, 3, 3]),\n",
+       " 'layer1.1.conv1.weight': torch.Size([64, 64, 3, 3]),\n",
+       " 'layer1.1.conv2.weight': torch.Size([64, 64, 3, 3]),\n",
+       " 'layer2.0.conv1.weight': torch.Size([128, 64, 3, 3]),\n",
+       " 'layer2.0.conv2.weight': torch.Size([128, 128, 3, 3]),\n",
+       " 'layer2.0.downsample.0.weight': torch.Size([128, 64, 1, 1]),\n",
+       " 'layer2.1.conv1.weight': torch.Size([128, 128, 3, 3]),\n",
+       " 'layer2.1.conv2.weight': torch.Size([128, 128, 3, 3]),\n",
+       " 'layer3.0.conv1.weight': torch.Size([256, 128, 3, 3]),\n",
+       " 'layer3.0.conv2.weight': torch.Size([256, 256, 3, 3]),\n",
+       " 'layer3.0.downsample.0.weight': torch.Size([256, 128, 1, 1]),\n",
+       " 'layer3.1.conv1.weight': torch.Size([256, 256, 3, 3]),\n",
+       " 'layer3.1.conv2.weight': torch.Size([256, 256, 3, 3]),\n",
+       " 'layer4.0.conv1.weight': torch.Size([512, 256, 3, 3]),\n",
+       " 'layer4.0.conv2.weight': torch.Size([512, 512, 3, 3]),\n",
+       " 'layer4.0.downsample.0.weight': torch.Size([512, 256, 1, 1]),\n",
+       " 'layer4.1.conv1.weight': torch.Size([512, 512, 3, 3]),\n",
+       " 'layer4.1.conv2.weight': torch.Size([512, 512, 3, 3]),\n",
+       " 'fc.weight': torch.Size([1000, 512])}"
+      ]
+     },
+     "execution_count": 30,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "stats"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 78,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "#r18.state_dict()['conv1.weight']"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 79,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "torch.Size([64, 3, 7, 7])"
+      ]
+     },
+     "execution_count": 79,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "r18.state_dict()['conv1.weight'].shape"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 596,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "res = pywt.wavedec(r18.state_dict()['conv1.weight'].numpy(), \"sym2\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 597,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "(64, 3, 7, 5)"
+      ]
+     },
+     "execution_count": 597,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "res[1].shape"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 598,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "(64, 3, 7, 5)"
+      ]
+     },
+     "execution_count": 598,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "res[0].shape"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 600,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "test_weight = r18.state_dict()['conv1.weight'].numpy()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 602,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor([-0.0104, -0.0061, -0.0018,  ..., -0.0244, -0.0712, -0.0668])"
+      ]
+     },
+     "execution_count": 602,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "flatten_model({\"f1\": r18.state_dict()['conv1.weight']})"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 605,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "flat_v1w = flatten_model({\"f1\": r18.state_dict()['conv1.weight']}).numpy()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 618,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 630,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "torch.Size([])"
+      ]
+     },
+     "execution_count": 630,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# resw[\"bn1.num_batches_tracked\"].shape"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 25,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "haar 47.194419860839844 124593.125\n",
+      "db1 47.194419860839844 124593.125\n",
+      "sym2 47.194419860839844 124593.125\n",
+      "coif1 47.194419860839844 124593.125\n",
+      "bior1.1 47.194419860839844 124593.125\n",
+      "rbio1.1 47.194419860839844 124593.125\n",
+      "dmey 47.194419860839844 124593.125\n",
+      "bior4.4 47.194419860839844 124593.125\n",
+      "min:  tensor(47.1944) haar 0\n"
+     ]
+    }
+   ],
+   "source": [
+    "# wavedecn, with level = 0\n",
+    "wavelets = ['haar', 'db1', 'sym2', 'coif1', 'bior1.1', 'rbio1.1', 'dmey', 'bior4.4'] # 'gaus1' not supported, 'mexh','morl',  'cgau1', 'shan',  'fbsp', 'cmor'\n",
+    "#wavelets = pywt.wavelist(kind='discrete', )\n",
+    "errs = []\n",
+    "names = []\n",
+    "for wavelet in wavelets:\n",
+    "    lens = []\n",
+    "    shape = []\n",
+    "    fft_layers = []\n",
+    "    to_cat = []\n",
+    "    coeffs = []\n",
+    "    to_del = []\n",
+    "    for key, v in resw.items():\n",
+    "        #print(key, v.shape)\n",
+    "        if v.shape == torch.Size([]):\n",
+    "            print(key)\n",
+    "            to_del.append(key)\n",
+    "            continue\n",
+    "            \n",
+    "        coeff = pywt.wavedecn(torch.squeeze(v).numpy(), wavelet, level = 0)\n",
+    "        #print(coeff[0].shape)\n",
+    "        array, coeff_slices = pywt.coeffs_to_array(coeff)\n",
+    "        shape.append(array.shape)\n",
+    "        coeffs.append(coeff_slices)\n",
+    "        #print(array.shape)\n",
+    "        flat_array = torch.from_numpy(array).flatten()\n",
+    "        lens.append(len(flat_array))\n",
+    "        to_cat.append(flat_array)\n",
+    "    for k in to_del:\n",
+    "        del resw[k]\n",
+    "    flat_wv = torch.cat(to_cat)\n",
+    "    topk = torch.topk(\n",
+    "            flat_wv.abs(), round(0.1*len(flat_wv)), dim=0, sorted=False\n",
+    "        )\n",
+    "    top10 = torch.zeros(len(flat_wv))\n",
+    "    top10[topk.indices] = flat_wv[topk.indices]\n",
+    "    \n",
+    "    start_index = 0\n",
+    "    state_dict  = {}\n",
+    "    for i, key in enumerate(resw):\n",
+    "        end_index = start_index + lens[i]\n",
+    "        #print(start_index, end_index, top10.shape)\n",
+    "        #print(top10)\n",
+    "        crr = top10[start_index:end_index]\n",
+    "        #print(crr.shape)\n",
+    "        og = pywt.array_to_coeffs(crr.reshape(shape[i]), coeffs[i], output_format=\"wavedecn\")\n",
+    "        state_dict[key] = torch.from_numpy(pywt.waverecn(og, wavelet = wavelet))\n",
+    "        start_index = end_index\n",
+    "\n",
+    "    reverse_top10 = flatten_model(state_dict)\n",
+    "    flat = flatten_model(resw)\n",
+    "    err = torch.norm(reverse_top10 - flat, 2)\n",
+    "    err1 = torch.norm(reverse_top10 - flat, 1)\n",
+    "    errs.append(err)\n",
+    "    names.append(wavelet)\n",
+    "    print(wavelet, err.item(), err1.item())\n",
+    "ind = np.argmin(errs)\n",
+    "print(\"min: \", errs[ind], names[ind], ind)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 110,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[(64, 3, 7, 7),\n",
+       " (64, 64, 3, 3),\n",
+       " (64, 64, 3, 3),\n",
+       " (64, 64, 3, 3),\n",
+       " (64, 64, 3, 3),\n",
+       " (128, 64, 3, 3),\n",
+       " (128, 128, 3, 3),\n",
+       " (128, 64),\n",
+       " (128, 128, 3, 3),\n",
+       " (128, 128, 3, 3),\n",
+       " (256, 128, 3, 3),\n",
+       " (256, 256, 3, 3),\n",
+       " (256, 128),\n",
+       " (256, 256, 3, 3),\n",
+       " (256, 256, 3, 3),\n",
+       " (512, 256, 3, 3),\n",
+       " (512, 512, 3, 3),\n",
+       " (512, 256),\n",
+       " (512, 512, 3, 3),\n",
+       " (512, 512, 3, 3),\n",
+       " (1000, 512)]"
+      ]
+     },
+     "execution_count": 110,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "shape"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## wavedecn does not work corretly for dim > 2, so we need to reshape"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 152,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "resw_oe = resw.copy()\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 153,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "del resw_oe[\"conv1.weight\"] # for this one the size is incorrect during reconstruction"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 227,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "11669504 11669504\n",
+      "haar 45.01624298095703 121187.4765625\n",
+      "11669504 11669504\n",
+      "db1 45.01624298095703 121187.4765625\n",
+      "11669504 11669504\n",
+      "sym2 44.518096923828125 120046.953125\n",
+      "11669504 11669504\n",
+      "coif1 44.400272369384766 119750.8671875\n",
+      "11669504 11669504\n",
+      "bior1.1 45.01624298095703 121187.4765625\n",
+      "11669504 11669504\n",
+      "rbio1.1 45.01624298095703 121187.4765625\n",
+      "11669504 11669504\n",
+      "dmey 44.74907302856445 120040.7890625\n",
+      "11669504 11669504\n",
+      "bior4.4 44.85655975341797 120709.2578125\n",
+      "min:  tensor(44.4003) coif1 3\n"
+     ]
+    }
+   ],
+   "source": [
+    "# wavedecn with axes specified, on dimensions reduced to 2x2\n",
+    "# working on the random initialization\n",
+    "wavelets = ['haar', 'db1', 'sym2', 'coif1', 'bior1.1', 'rbio1.1', 'dmey', 'bior4.4'] # 'gaus1' not supported, 'mexh','morl',  'cgau1', 'shan',  'fbsp', 'cmor'\n",
+    "#wavelets = pywt.wavelist(kind='discrete', )\n",
+    "errs = []\n",
+    "names = []\n",
+    "for wavelet in wavelets:\n",
+    "    lens = []\n",
+    "    shape = []\n",
+    "    fft_layers = []\n",
+    "    to_cat = []\n",
+    "    coeffs = []\n",
+    "    to_del = []\n",
+    "    for key, v in resw_oe.items():\n",
+    "        #print(key, v.shape)\n",
+    "        if v.shape == torch.Size([]):\n",
+    "            print(key)\n",
+    "            to_del.append(key)\n",
+    "            continue\n",
+    "        v = torch.squeeze(v).numpy()\n",
+    "        if len(v.shape) > 2:\n",
+    "            #print(v.shape)\n",
+    "            v = v.reshape((v.shape[0], np.prod(v.shape[1:])))\n",
+    "            #print(v.shape)\n",
+    "        coeff = pywt.wavedecn(v, wavelet, level = None, axes = (0,1))\n",
+    "        #print(coeff[0].shape)\n",
+    "        array, coeff_slices = pywt.coeffs_to_array(coeff, axes = (0,1))\n",
+    "        shape.append(array.shape)\n",
+    "        coeffs.append(coeff_slices)\n",
+    "        #print(array.shape)\n",
+    "        flat_array = torch.from_numpy(array).flatten()\n",
+    "        lens.append(len(flat_array))\n",
+    "        to_cat.append(flat_array)\n",
+    "    for k in to_del:\n",
+    "        del resw_oe[k]\n",
+    "    flat_wv = torch.cat(to_cat)\n",
+    "    topk = torch.topk(\n",
+    "            flat_wv.abs(), round(0.1*len(flat_wv)), dim=0, sorted=False\n",
+    "        )\n",
+    "    top10 = torch.zeros(len(flat_wv))\n",
+    "    top10[topk.indices] = flat_wv[topk.indices]\n",
+    "    \n",
+    "    start_index = 0\n",
+    "    state_dict  = {}\n",
+    "    for i, key in enumerate(resw_oe):\n",
+    "        end_index = start_index + lens[i]\n",
+    "        #print(start_index, end_index, top10.shape)\n",
+    "        #print(top10)\n",
+    "        crr = top10[start_index:end_index]\n",
+    "        #print(crr.shape)\n",
+    "        og = pywt.array_to_coeffs(crr.reshape(shape[i]), coeffs[i], output_format=\"wavedecn\")\n",
+    "        state_dict[key] = torch.from_numpy(pywt.waverecn(og, wavelet = wavelet, axes = (0,1)))\n",
+    "        # print(state_dict[key].shape, shape[i])\n",
+    "        #assert np.prod(state_dict[key].shape) == np.prod(shape[i])\n",
+    "        start_index = end_index\n",
+    "\n",
+    "    reverse_top10 = flatten_model(state_dict)\n",
+    "    \n",
+    "    flat = flatten_model(resw_oe)\n",
+    "    for k, v in resw_oe.items():\n",
+    "        # print(k, v.shape, state_dict[k].shape)\n",
+    "        assert np.prod(torch.squeeze(v).shape) == np.prod(state_dict[k].shape)\n",
+    "    print(len(reverse_top10), len(flat))\n",
+    "    err = torch.norm(reverse_top10 - flat, 2)\n",
+    "    err1 = torch.norm(reverse_top10 - flat, 1)\n",
+    "    errs.append(err)\n",
+    "    names.append(wavelet)\n",
+    "    print(wavelet, err.item(), err1.item())\n",
+    "ind = np.argmin(errs)\n",
+    "print(\"min: \", errs[ind], names[ind], ind)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 235,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "11669504 11669504\n",
+      "haar 47.135135650634766 124408.8359375\n",
+      "11669504 11669504\n",
+      "db1 47.135135650634766 124408.8359375\n",
+      "11669504 11669504\n",
+      "sym2 47.135135650634766 124408.8359375\n",
+      "11669504 11669504\n",
+      "coif1 47.135135650634766 124408.8359375\n",
+      "11669504 11669504\n",
+      "bior1.1 47.135135650634766 124408.8359375\n",
+      "11669504 11669504\n",
+      "rbio1.1 47.135135650634766 124408.8359375\n",
+      "11669504 11669504\n",
+      "dmey 47.135135650634766 124408.8359375\n",
+      "11669504 11669504\n",
+      "bior4.4 47.135135650634766 124408.8359375\n",
+      "min:  tensor(47.1351) haar 0\n"
+     ]
+    }
+   ],
+   "source": [
+    "# wavedecn with axes specified, on dimensions reduced to 2x2, level = 0\n",
+    "\n",
+    "wavelets = ['haar', 'db1', 'sym2', 'coif1', 'bior1.1', 'rbio1.1', 'dmey', 'bior4.4'] # 'gaus1' not supported, 'mexh','morl',  'cgau1', 'shan',  'fbsp', 'cmor'\n",
+    "#wavelets = pywt.wavelist(kind='discrete', )\n",
+    "errs = []\n",
+    "names = []\n",
+    "for wavelet in wavelets:\n",
+    "    lens = []\n",
+    "    shape = []\n",
+    "    fft_layers = []\n",
+    "    to_cat = []\n",
+    "    coeffs = []\n",
+    "    to_del = []\n",
+    "    for key, v in resw_oe.items():\n",
+    "        #print(key, v.shape)\n",
+    "        if v.shape == torch.Size([]):\n",
+    "            print(key)\n",
+    "            to_del.append(key)\n",
+    "            continue\n",
+    "        v = torch.squeeze(v).numpy()\n",
+    "        if len(v.shape) > 2:\n",
+    "            #print(v.shape)\n",
+    "            v = v.reshape((v.shape[0], np.prod(v.shape[1:])))\n",
+    "            #print(v.shape)\n",
+    "        coeff = pywt.wavedecn(v, wavelet, level = 0, axes = (0,1))\n",
+    "        #print(coeff[0].shape)\n",
+    "        array, coeff_slices = pywt.coeffs_to_array(coeff, axes = (0,1))\n",
+    "        shape.append(array.shape)\n",
+    "        coeffs.append(coeff_slices)\n",
+    "        #print(array.shape)\n",
+    "        flat_array = torch.from_numpy(array).flatten()\n",
+    "        lens.append(len(flat_array))\n",
+    "        to_cat.append(flat_array)\n",
+    "    for k in to_del:\n",
+    "        del resw_oe[k]\n",
+    "    flat_wv = torch.cat(to_cat)\n",
+    "    topk = torch.topk(\n",
+    "            flat_wv.abs(), round(0.1*len(flat_wv)), dim=0, sorted=False\n",
+    "        )\n",
+    "    top10 = torch.zeros(len(flat_wv))\n",
+    "    top10[topk.indices] = flat_wv[topk.indices]\n",
+    "    \n",
+    "    start_index = 0\n",
+    "    state_dict  = {}\n",
+    "    for i, key in enumerate(resw_oe):\n",
+    "        end_index = start_index + lens[i]\n",
+    "        #print(start_index, end_index, top10.shape)\n",
+    "        #print(top10)\n",
+    "        crr = top10[start_index:end_index]\n",
+    "        #print(crr.shape)\n",
+    "        og = pywt.array_to_coeffs(crr.reshape(shape[i]), coeffs[i], output_format=\"wavedecn\")\n",
+    "        state_dict[key] = torch.from_numpy(pywt.waverecn(og, wavelet = wavelet, axes = (0,1)))\n",
+    "        # print(state_dict[key].shape, shape[i])\n",
+    "        #assert np.prod(state_dict[key].shape) == np.prod(shape[i])\n",
+    "        start_index = end_index\n",
+    "\n",
+    "    reverse_top10 = flatten_model(state_dict)\n",
+    "    \n",
+    "    flat = flatten_model(resw_oe)\n",
+    "    for k, v in resw_oe.items():\n",
+    "        # print(k, v.shape, state_dict[k].shape)\n",
+    "        assert np.prod(torch.squeeze(v).shape) == np.prod(state_dict[k].shape)\n",
+    "    print(len(reverse_top10), len(flat))\n",
+    "    err = torch.norm(reverse_top10 - flat, 2)\n",
+    "    err1 = torch.norm(reverse_top10 - flat, 1)\n",
+    "    errs.append(err)\n",
+    "    names.append(wavelet)\n",
+    "    print(wavelet, err.item(), err1.item())\n",
+    "ind = np.argmin(errs)\n",
+    "print(\"min: \", errs[ind], names[ind], ind)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 228,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "haar 47.194419860839844 124593.125\n",
+      "db1 47.194419860839844 124593.125\n",
+      "sym2 47.194419860839844 124593.125\n",
+      "coif1 47.194419860839844 124593.125\n",
+      "bior1.1 47.194419860839844 124593.125\n",
+      "rbio1.1 47.194419860839844 124593.125\n",
+      "dmey 47.194419860839844 124593.125\n",
+      "bior4.4 47.194419860839844 124593.125\n",
+      "min:  tensor(47.1944) haar 0\n"
+     ]
+    }
+   ],
+   "source": [
+    "# wavedecn implementation with axes\n",
+    "# working on the random initialization\n",
+    "wavelets = ['haar', 'db1', 'sym2', 'coif1', 'bior1.1', 'rbio1.1', 'dmey', 'bior4.4'] # 'gaus1' not supported, 'mexh','morl',  'cgau1', 'shan',  'fbsp', 'cmor'\n",
+    "#wavelets = pywt.wavelist(kind='discrete', )\n",
+    "errs = []\n",
+    "names = []\n",
+    "for wavelet in wavelets:\n",
+    "    lens = []\n",
+    "    shape = []\n",
+    "    fft_layers = []\n",
+    "    to_cat = []\n",
+    "    coeffs = []\n",
+    "    to_del = []\n",
+    "    for key, v in resw.items():\n",
+    "        #print(key, v.shape)\n",
+    "        if v.shape == torch.Size([]):\n",
+    "            print(key)\n",
+    "            to_del.append(key)\n",
+    "            continue\n",
+    "            \n",
+    "        coeff = pywt.wavedecn(torch.squeeze(v).numpy(), wavelet, level = 0, axes = (0,1))\n",
+    "        #print(coeff[0].shape)\n",
+    "        array, coeff_slices = pywt.coeffs_to_array(coeff, axes = (0,1))\n",
+    "        shape.append(array.shape)\n",
+    "        coeffs.append(coeff_slices)\n",
+    "        #print(array.shape)\n",
+    "        flat_array = torch.from_numpy(array).flatten()\n",
+    "        lens.append(len(flat_array))\n",
+    "        to_cat.append(flat_array)\n",
+    "    for k in to_del:\n",
+    "        del resw[k]\n",
+    "    flat_wv = torch.cat(to_cat)\n",
+    "    topk = torch.topk(\n",
+    "            flat_wv.abs(), round(0.1*len(flat_wv)), dim=0, sorted=False\n",
+    "        )\n",
+    "    top10 = torch.zeros(len(flat_wv))\n",
+    "    top10[topk.indices] = flat_wv[topk.indices]\n",
+    "    \n",
+    "    start_index = 0\n",
+    "    state_dict  = {}\n",
+    "    for i, key in enumerate(resw):\n",
+    "        end_index = start_index + lens[i]\n",
+    "        #print(start_index, end_index, top10.shape)\n",
+    "        #print(top10)\n",
+    "        crr = top10[start_index:end_index]\n",
+    "        #print(crr.shape)\n",
+    "        og = pywt.array_to_coeffs(crr.reshape(shape[i]), coeffs[i], output_format=\"wavedec\")\n",
+    "        state_dict[key] = torch.from_numpy(pywt.waverecn(og, wavelet = wavelet, axes = (0,1)))\n",
+    "        start_index = end_index\n",
+    "\n",
+    "    reverse_top10 = flatten_model(state_dict)\n",
+    "    flat = flatten_model(resw)\n",
+    "    err = torch.norm(reverse_top10 - flat, 2)\n",
+    "    err1 = torch.norm(reverse_top10 - flat, 1)\n",
+    "    errs.append(err)\n",
+    "    names.append(wavelet)\n",
+    "    print(wavelet, err.item(), err1.item())\n",
+    "ind = np.argmin(errs)\n",
+    "print(\"min: \", errs[ind], names[ind], ind)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 229,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "haar 47.194419860839844 124593.125\n",
+      "db1 47.194419860839844 124593.125\n",
+      "sym2 47.194419860839844 124593.125\n",
+      "coif1 47.194419860839844 124593.125\n",
+      "bior1.1 47.194419860839844 124593.125\n",
+      "rbio1.1 47.194419860839844 124593.125\n",
+      "dmey 47.194419860839844 124593.125\n",
+      "bior4.4 47.194419860839844 124593.125\n",
+      "min:  tensor(47.1944) haar 0\n"
+     ]
+    }
+   ],
+   "source": [
+    "# wavedec on flat\n",
+    "wavelets = ['haar', 'db1', 'sym2', 'coif1', 'bior1.1', 'rbio1.1', 'dmey', 'bior4.4'] # 'gaus1' not supported, 'mexh','morl',  'cgau1', 'shan',  'fbsp', 'cmor'\n",
+    "#wavelets = pywt.wavelist(kind='discrete', )\n",
+    "errs = []\n",
+    "names = []\n",
+    "for wavelet in wavelets:\n",
+    "    lens = []\n",
+    "    shape = []\n",
+    "    fft_layers = []\n",
+    "    to_cat = []\n",
+    "    coeffs = []\n",
+    "    to_del = []\n",
+    "    for key, v in resw.items():\n",
+    "        #print(key, v.shape)\n",
+    "        if v.shape == torch.Size([]):\n",
+    "            print(key)\n",
+    "            to_del.append(key)\n",
+    "            continue\n",
+    "            \n",
+    "        coeff = pywt.wavedec(torch.squeeze(v.flatten()).numpy(), wavelet, level = 0)\n",
+    "        #print(coeff[0].shape)\n",
+    "        array, coeff_slices = pywt.coeffs_to_array(coeff)\n",
+    "        shape.append(array.shape)\n",
+    "        coeffs.append(coeff_slices)\n",
+    "        #print(array.shape)\n",
+    "        flat_array = torch.from_numpy(array).flatten()\n",
+    "        lens.append(len(flat_array))\n",
+    "        to_cat.append(flat_array)\n",
+    "    for k in to_del:\n",
+    "        del resw[k]\n",
+    "    flat_wv = torch.cat(to_cat)\n",
+    "    topk = torch.topk(\n",
+    "            flat_wv.abs(), round(0.1*len(flat_wv)), dim=0, sorted=False\n",
+    "        )\n",
+    "    top10 = torch.zeros(len(flat_wv))\n",
+    "    top10[topk.indices] = flat_wv[topk.indices]\n",
+    "    \n",
+    "    start_index = 0\n",
+    "    state_dict  = {}\n",
+    "    for i, key in enumerate(resw):\n",
+    "        end_index = start_index + lens[i]\n",
+    "        #print(start_index, end_index, top10.shape)\n",
+    "        #print(top10)\n",
+    "        crr = top10[start_index:end_index]\n",
+    "        #print(crr.shape)\n",
+    "        og = pywt.array_to_coeffs(crr.reshape(shape[i]), coeffs[i], output_format=\"wavedec\")\n",
+    "        state_dict[key] = torch.from_numpy(pywt.waverec(og, wavelet = wavelet))\n",
+    "        start_index = end_index\n",
+    "\n",
+    "    reverse_top10 = flatten_model(state_dict)\n",
+    "    flat = flatten_model(resw)\n",
+    "    err = torch.norm(reverse_top10 - flat, 2)\n",
+    "    err1 = torch.norm(reverse_top10 - flat, 1)\n",
+    "    errs.append(err)\n",
+    "    names.append(wavelet)\n",
+    "    print(wavelet, err.item(), err1.item())\n",
+    "ind = np.argmin(errs)\n",
+    "print(\"min: \", errs[ind], names[ind], ind)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 230,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "haar 42.886417388916016 114614.34375\n",
+      "db1 42.886417388916016 114614.34375\n",
+      "sym2 42.55022430419922 113962.6484375\n",
+      "coif1 42.59132385253906 114232.9609375\n",
+      "bior1.1 42.886417388916016 114614.34375\n",
+      "rbio1.1 42.886417388916016 114614.34375\n",
+      "dmey 42.56193542480469 113790.9296875\n",
+      "bior4.4 42.609718322753906 114087.71875\n",
+      "min:  tensor(42.5502) sym2 2\n"
+     ]
+    }
+   ],
+   "source": [
+    "# manual layerwise wavelet with level = None\n",
+    "wavelets = ['haar', 'db1', 'sym2', 'coif1', 'bior1.1', 'rbio1.1', 'dmey', 'bior4.4'] # 'gaus1' not supported, 'mexh','morl',  'cgau1', 'shan',  'fbsp', 'cmor'\n",
+    "#wavelets = pywt.wavelist(kind='discrete', )\n",
+    "errs = []\n",
+    "names = []\n",
+    "for wavelet in wavelets:\n",
+    "    lens = []\n",
+    "    shape = []\n",
+    "    fft_layers = []\n",
+    "    to_cat = []\n",
+    "    coeffs = []\n",
+    "    to_del = []\n",
+    "    for key, v in resw.items():\n",
+    "        #print(key, v.shape)\n",
+    "        if v.shape == torch.Size([]):\n",
+    "            print(key)\n",
+    "            to_del.append(key)\n",
+    "            continue\n",
+    "            \n",
+    "        coeff = pywt.wavedec(torch.squeeze(v.flatten()).numpy(), wavelet, level = None)\n",
+    "        #print(coeff[0].shape)\n",
+    "        array, coeff_slices = pywt.coeffs_to_array(coeff)\n",
+    "        shape.append(array.shape)\n",
+    "        coeffs.append(coeff_slices)\n",
+    "        #print(array.shape)\n",
+    "        flat_array = torch.from_numpy(array).flatten()\n",
+    "        lens.append(len(flat_array))\n",
+    "        to_cat.append(flat_array)\n",
+    "    for k in to_del:\n",
+    "        del resw[k]\n",
+    "    flat_wv = torch.cat(to_cat)\n",
+    "    topk = torch.topk(\n",
+    "            flat_wv.abs(), round(0.1*len(flat_wv)), dim=0, sorted=False\n",
+    "        )\n",
+    "    top10 = torch.zeros(len(flat_wv))\n",
+    "    top10[topk.indices] = flat_wv[topk.indices]\n",
+    "    \n",
+    "    start_index = 0\n",
+    "    state_dict  = {}\n",
+    "    for i, key in enumerate(resw):\n",
+    "        end_index = start_index + lens[i]\n",
+    "        #print(start_index, end_index, top10.shape)\n",
+    "        #print(top10)\n",
+    "        crr = top10[start_index:end_index]\n",
+    "        #print(crr.shape)\n",
+    "        og = pywt.array_to_coeffs(crr.reshape(shape[i]), coeffs[i], output_format=\"wavedec\")\n",
+    "        state_dict[key] = torch.from_numpy(pywt.waverec(og, wavelet = wavelet))\n",
+    "        start_index = end_index\n",
+    "\n",
+    "    reverse_top10 = flatten_model(state_dict)\n",
+    "    flat = flatten_model(resw)\n",
+    "    err = torch.norm(reverse_top10 - flat, 2)\n",
+    "    err1 = torch.norm(reverse_top10 - flat, 1)\n",
+    "    errs.append(err)\n",
+    "    names.append(wavelet)\n",
+    "    print(wavelet, err.item(), err1.item())\n",
+    "ind = np.argmin(errs)\n",
+    "print(\"min: \", errs[ind], names[ind], ind)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 61,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 62,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "resw2 = {}\n",
+    "resw2[\"fc.weight\"] = resw[\"fc.weight\"]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 63,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "resw = resw2"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 64,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "torch.Size([1000, 512])"
+      ]
+     },
+     "execution_count": 64,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "resw2[\"fc.weight\"].shape"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 65,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "haar 31.85331916809082 18000.552734375\n",
+      "db1 31.85331916809082 18000.552734375\n",
+      "sym2 31.85331916809082 18000.552734375\n",
+      "coif1 31.85331916809082 18000.552734375\n",
+      "bior1.1 31.85331916809082 18000.552734375\n",
+      "rbio1.1 31.85331916809082 18000.552734375\n",
+      "dmey 31.85331916809082 18000.552734375\n",
+      "bior4.4 31.85331916809082 18000.552734375\n",
+      "min:  tensor(31.8533) haar 0\n"
+     ]
+    }
+   ],
+   "source": [
+    "# wavedecn implementation with axes\n",
+    "# working on the random initialization\n",
+    "wavelets = ['haar', 'db1', 'sym2', 'coif1', 'bior1.1', 'rbio1.1', 'dmey', 'bior4.4'] # 'gaus1' not supported, 'mexh','morl',  'cgau1', 'shan',  'fbsp', 'cmor'\n",
+    "#wavelets = pywt.wavelist(kind='discrete', )\n",
+    "errs = []\n",
+    "names = []\n",
+    "for wavelet in wavelets:\n",
+    "    lens = []\n",
+    "    shape = []\n",
+    "    fft_layers = []\n",
+    "    to_cat = []\n",
+    "    coeffs = []\n",
+    "    to_del = []\n",
+    "    for key, v in resw.items():\n",
+    "        #print(key, v.shape)\n",
+    "        if v.shape == torch.Size([]):\n",
+    "            print(key)\n",
+    "            to_del.append(key)\n",
+    "            continue\n",
+    "            \n",
+    "        coeff = pywt.wavedecn(torch.squeeze(v).numpy(), wavelet, level = 0, axes = (0,1))\n",
+    "        #print(coeff[0].shape)\n",
+    "        array, coeff_slices = pywt.coeffs_to_array(coeff, axes = (0,1))\n",
+    "        shape.append(array.shape)\n",
+    "        coeffs.append(coeff_slices)\n",
+    "        #print(array.shape)\n",
+    "        flat_array = torch.from_numpy(array).flatten()\n",
+    "        lens.append(len(flat_array))\n",
+    "        to_cat.append(flat_array)\n",
+    "    for k in to_del:\n",
+    "        del resw[k]\n",
+    "    flat_wv = torch.cat(to_cat)\n",
+    "    topk = torch.topk(\n",
+    "            flat_wv.abs(), round(0.1*len(flat_wv)), dim=0, sorted=False\n",
+    "        )\n",
+    "    top10 = torch.zeros(len(flat_wv))\n",
+    "    top10[topk.indices] = flat_wv[topk.indices]\n",
+    "    \n",
+    "    start_index = 0\n",
+    "    state_dict  = {}\n",
+    "    for i, key in enumerate(resw):\n",
+    "        end_index = start_index + lens[i]\n",
+    "        #print(start_index, end_index, top10.shape)\n",
+    "        #print(top10)\n",
+    "        crr = top10[start_index:end_index]\n",
+    "        #print(crr.shape)\n",
+    "        og = pywt.array_to_coeffs(crr.reshape(shape[i]), coeffs[i], output_format=\"wavedec\")\n",
+    "        state_dict[key] = torch.from_numpy(pywt.waverecn(og, wavelet = wavelet, axes = (0,1)))\n",
+    "        start_index = end_index\n",
+    "\n",
+    "    reverse_top10 = flatten_model(state_dict)\n",
+    "    flat = flatten_model(resw)\n",
+    "    err = torch.norm(reverse_top10 - flat, 2)\n",
+    "    err1 = torch.norm(reverse_top10 - flat, 1)\n",
+    "    errs.append(err)\n",
+    "    names.append(wavelet)\n",
+    "    print(wavelet, err.item(), err1.item())\n",
+    "ind = np.argmin(errs)\n",
+    "print(\"min: \", errs[ind], names[ind], ind)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 68,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "flat = flatten_model(resw)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 69,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "topk_og = torch.topk(\n",
+    "            flat.abs(), round(0.1*len(flat)), dim=0, sorted=False\n",
+    "        )\n",
+    "top10_og = torch.zeros(len(flat))\n",
+    "top10_og[topk_og.indices] = flat[topk_og.indices]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 70,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(31.8533)"
+      ]
+     },
+     "execution_count": 70,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(top10_og - flat, 2) "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 71,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "haar 34.37525939941406 19823.703125\n",
+      "db1 34.37525939941406 19823.703125\n",
+      "sym2 34.24169921875 19703.4453125\n",
+      "coif1 34.238433837890625 19669.91796875\n",
+      "bior1.1 34.37525939941406 19823.703125\n",
+      "rbio1.1 34.37525939941406 19823.703125\n",
+      "dmey 35.10240936279297 20091.73828125\n",
+      "bior4.4 34.86445999145508 19995.5078125\n",
+      "min:  tensor(34.2384) coif1 3\n"
+     ]
+    }
+   ],
+   "source": [
+    "# wavelet on flattened\n",
+    "# working on the random initialization\n",
+    "wavelets = ['haar', 'db1', 'sym2', 'coif1', 'bior1.1', 'rbio1.1', 'dmey', 'bior4.4'] # 'gaus1' not supported, 'mexh','morl',  'cgau1', 'shan',  'fbsp', 'cmor'\n",
+    "# wavelets = pywt.wavelist(kind='discrete', )\n",
+    "errs = []\n",
+    "names = []\n",
+    "for wavelet in wavelets:\n",
+    "    coeff = pywt.wavedec(flat.numpy(), wavelet, level = 4)\n",
+    "    array, coeff_slices = pywt.coeffs_to_array(coeff)\n",
+    "    #print(coeff_slices) # should be static so we do not need to send them\n",
+    "    topk = torch.topk(\n",
+    "            torch.from_numpy(np.absolute(array)), round(0.1*len(array)), dim=0, sorted=False\n",
+    "        )\n",
+    "    top10 = torch.zeros(len(array))\n",
+    "    top10[topk.indices] = torch.from_numpy(array[topk.indices])\n",
+    "    og = pywt.array_to_coeffs(top10, coeff_slices, output_format=\"wavedec\")\n",
+    "    reverse_top10 = torch.from_numpy(pywt.waverec(og, wavelet = wavelet))\n",
+    "    err = torch.norm(reverse_top10 - flat, 2)\n",
+    "    err1 = torch.norm(reverse_top10 - flat, 1)\n",
+    "    errs.append(err)\n",
+    "    names.append(wavelet)\n",
+    "    print(wavelet, err.item(), err1.item())\n",
+    "ind = np.argmin(errs)\n",
+    "print(\"min: \", errs[ind], names[ind], ind)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 74,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "not_flat = list(resw.values())[0]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 87,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "torch.Size([1000, 512])"
+      ]
+     },
+     "execution_count": 87,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "not_flat.shape"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 233,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "haar 31.85331916809082 18000.552734375\n",
+      "db1 31.85331916809082 18000.552734375\n",
+      "sym2 31.85331916809082 18000.552734375\n",
+      "coif1 31.85331916809082 18000.552734375\n",
+      "bior1.1 31.85331916809082 18000.552734375\n",
+      "rbio1.1 31.85331916809082 18000.552734375\n",
+      "dmey 31.85331916809082 18000.552734375\n",
+      "bior4.4 31.85331916809082 18000.552734375\n",
+      "min:  tensor(31.8533) haar 0\n"
+     ]
+    }
+   ],
+   "source": [
+    "# wavdecn on not flat, with level None\n",
+    "# working on the random initialization\n",
+    "wavelets = ['haar', 'db1', 'sym2', 'coif1', 'bior1.1', 'rbio1.1', 'dmey', 'bior4.4'] # 'gaus1' not supported, 'mexh','morl',  'cgau1', 'shan',  'fbsp', 'cmor'\n",
+    "# wavelets = pywt.wavelist(kind='discrete', )\n",
+    "errs = []\n",
+    "names = []\n",
+    "for wavelet in wavelets:\n",
+    "    coeff = pywt.wavedecn(not_flat.numpy(), wavelet, level = 0)\n",
+    "    array, coeff_slices = pywt.coeffs_to_array(coeff)\n",
+    "    shape = array.shape\n",
+    "    array = array.flatten()\n",
+    "    topk = torch.topk(\n",
+    "            torch.from_numpy(np.absolute(array)), round(0.1*len(array)), dim=0, sorted=False\n",
+    "        )\n",
+    "    top10 = torch.zeros(len(array))\n",
+    "    top10[topk.indices] = torch.from_numpy(array[topk.indices])\n",
+    "    top10 = top10.reshape(shape)\n",
+    "    og = pywt.array_to_coeffs(top10, coeff_slices, output_format=\"wavedecn\")\n",
+    "    reverse_top10 = torch.from_numpy(pywt.waverecn(og, wavelet = wavelet))\n",
+    "    err = torch.norm(reverse_top10 - not_flat, 2)\n",
+    "    err1 = torch.norm(reverse_top10 - not_flat, 1)\n",
+    "    errs.append(err)\n",
+    "    names.append(wavelet)\n",
+    "    print(wavelet, err.item(), err1.item())\n",
+    "ind = np.argmin(errs)\n",
+    "print(\"min: \", errs[ind], names[ind], ind)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "raw",
+   "metadata": {},
+   "source": [
+    "Wavelet create an array of the entire thing"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Combination of the best"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 16,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "resw2 = {}\n",
+    "resw2[\"fc.weight\"] = resw[\"fc.weight\"]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 17,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "del resw[\"fc.weight\"]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 19,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "flat = flatten_model(resw)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 25,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "sym2 38.345680236816406 100879.03125\n",
+      "min:  tensor(38.3457) sym2 0\n"
+     ]
+    }
+   ],
+   "source": [
+    "# Base case on flattened data, with level=4\n",
+    "# working on the random initialization\n",
+    "wavelets = ['sym2'] # 'gaus1' not supported, 'mexh','morl',  'cgau1', 'shan',  'fbsp', 'cmor'\n",
+    "# wavelets = pywt.wavelist(kind='discrete', )\n",
+    "errs = []\n",
+    "names = []\n",
+    "for wavelet in wavelets:\n",
+    "    coeff = pywt.wavedec(flat.numpy(), wavelet, level = 4)\n",
+    "    array, coeff_slices = pywt.coeffs_to_array(coeff)\n",
+    "    #print(coeff_slices) # should be static so we do not need to send them\n",
+    "    topk = torch.topk(\n",
+    "            torch.from_numpy(np.absolute(array)), round(0.1*len(array)), dim=0, sorted=False\n",
+    "        )\n",
+    "    top10 = torch.zeros(len(array))\n",
+    "    top10[topk.indices] = torch.from_numpy(array[topk.indices])\n",
+    "    og = pywt.array_to_coeffs(top10, coeff_slices, output_format=\"wavedec\")\n",
+    "    reverse_top10 = torch.from_numpy(pywt.waverec(og, wavelet = wavelet))\n",
+    "    err = torch.norm(reverse_top10 - flat, 2)\n",
+    "    err1 = torch.norm(reverse_top10 - flat, 1)\n",
+    "    errs.append(err)\n",
+    "    names.append(wavelet)\n",
+    "    print(wavelet, err.item(), err1.item())\n",
+    "ind = np.argmin(errs)\n",
+    "\n",
+    "print(\"min: \", errs[ind], names[ind], ind)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 26,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "r10_1 = reverse_top10"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 27,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(43.5638)"
+      ]
+     },
+     "execution_count": 27,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "topk_og = torch.topk(\n",
+    "            flat.abs(), round(0.1*len(flat)), dim=0, sorted=False\n",
+    "        )\n",
+    "top10_og1 = torch.zeros(len(flat))\n",
+    "top10_og1[topk_og.indices] = flat[topk_og.indices]\n",
+    "torch.norm(top10_og1 - flat, 2) "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 28,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "not_flat = list(resw2.values())[0]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 29,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "sym2 31.85331916809082 18000.552734375\n",
+      "min:  tensor(31.8533) sym2 0\n"
+     ]
+    }
+   ],
+   "source": [
+    "# wavdecn on not flat, with level None\n",
+    "# working on the random initialization\n",
+    "wavelets = ['sym2'] # 'gaus1' not supported, 'mexh','morl',  'cgau1', 'shan',  'fbsp', 'cmor'\n",
+    "# wavelets = pywt.wavelist(kind='discrete', )\n",
+    "errs = []\n",
+    "names = []\n",
+    "for wavelet in wavelets:\n",
+    "    coeff = pywt.wavedecn(not_flat.numpy(), wavelet, level = 0)\n",
+    "    array, coeff_slices = pywt.coeffs_to_array(coeff)\n",
+    "    shape = array.shape\n",
+    "    array = array.flatten()\n",
+    "    topk = torch.topk(\n",
+    "            torch.from_numpy(np.absolute(array)), round(0.1*len(array)), dim=0, sorted=False\n",
+    "        )\n",
+    "    top10 = torch.zeros(len(array))\n",
+    "    top10[topk.indices] = torch.from_numpy(array[topk.indices])\n",
+    "    top10 = top10.reshape(shape)\n",
+    "    og = pywt.array_to_coeffs(top10, coeff_slices, output_format=\"wavedecn\")\n",
+    "    reverse_top10 = torch.from_numpy(pywt.waverecn(og, wavelet = wavelet))\n",
+    "    err = torch.norm(reverse_top10 - not_flat, 2)\n",
+    "    err1 = torch.norm(reverse_top10 - not_flat, 1)\n",
+    "    errs.append(err)\n",
+    "    names.append(wavelet)\n",
+    "    print(wavelet, err.item(), err1.item())\n",
+    "ind = np.argmin(errs)\n",
+    "print(\"min: \", errs[ind], names[ind], ind)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 32,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "r10 = torch.cat([r10_1, reverse_top10.flatten()])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 33,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(50.8493)"
+      ]
+     },
+     "execution_count": 33,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "topk_og = torch.topk(\n",
+    "            not_flat.flatten().abs(), round(0.1*len(not_flat.flatten())), dim=0, sorted=False\n",
+    "        )\n",
+    "top10_og2 = torch.zeros(len(not_flat.flatten()))\n",
+    "top10_og2[topk_og.indices] = flat[topk_og.indices]\n",
+    "torch.norm(top10_og2 - not_flat.flatten(), 2) "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 34,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "r10_og = torch.cat([top10_og1, top10_og2])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 44,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "models = torchvision.models.resnet18(True).state_dict()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 45,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "models = {k:v for k,v in models.items() if \"bn1.\" not in k}\n",
+    "models = {k:v for k,v in models.items() if \"bn2.\" not in k}\n",
+    "models = {k:v for k,v in models.items() if len(v.shape) >1}"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 46,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "flat= flatten_model(models)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 47,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(49.8481)"
+      ]
+     },
+     "execution_count": 47,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(r10 - flat, 2) "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 48,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "tensor(66.9528)"
+      ]
+     },
+     "execution_count": 48,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.norm(r10_og - flat, 2) "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "interpreter": {
+   "hash": "996934296aa9d79be6c3d800a38d8fdb7dfa8fe7bb07df178f1397cde2cb8742"
+  },
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.9.10"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/random files/plotting_from_csv.py b/random files/plotting_from_csv.py
new file mode 100644
index 0000000..07f89a0
--- /dev/null
+++ b/random files/plotting_from_csv.py	
@@ -0,0 +1,173 @@
+import distutils
+import json
+import os
+import sys
+
+import numpy as np
+import pandas as pd
+from matplotlib import pyplot as plt
+
+
+def plot(x_axis, means, stdevs, pos, nb_plots, title, label, loc, xlabel):
+    cmap = plt.get_cmap("gist_rainbow")
+    plt.title(title)
+    plt.xlabel(xlabel)
+    y_axis = list(means)
+    err = list(stdevs)
+    print("label:", label)
+    print("color: ", cmap(1 / nb_plots * pos))
+    plt.errorbar(
+        list(x_axis), y_axis, yerr=err, label=label, color=cmap(1 / nb_plots * pos)
+    )
+    plt.legend(loc=loc)
+
+
+def plot_results(path, epochs, global_epochs=True):
+    print(path, epochs, global_epochs, type(global_epochs))
+    global_epochs = bool(distutils.util.strtobool(global_epochs))
+    epochs = int(epochs)
+    folders = os.listdir(path)
+    folders.sort()
+    print("Reading folders from: ", path)
+    print("Folders: ", folders)
+    bytes_means, bytes_stdevs = {}, {}
+    meta_means, meta_stdevs = {}, {}
+    data_means, data_stdevs = {}, {}
+
+    files = os.listdir(path)
+    files = [f for f in files if f.endswith(".csv")]
+    train_loss = sorted([f for f in files if f.startswith("train_loss")])
+    test_acc = sorted([f for f in files if f.startswith("test_acc")])
+    test_loss = sorted([f for f in files if f.startswith("test_loss")])
+    max_losses = []
+    for i, f in enumerate(train_loss):
+        filepath = os.path.join(path, f)
+        with open(filepath, "r") as inf:
+            results_csv = pd.read_csv(inf)
+        # Plot Training loss
+        plt.figure(1)
+        if global_epochs:
+            means = results_csv["mean"].to_numpy()
+            stdevs = results_csv["std"].to_numpy()
+            means = means[:epochs]
+            stdevs = stdevs[:epochs]
+            x_axis = list(np.arange(0, len(means), 1))
+            x_label = "global epochs"
+        else:
+            results_cr = results_csv[results_csv.rounds <= epochs]
+            means = results_cr["mean"].to_numpy()
+            stdevs = results_cr["std"].to_numpy()
+            x_axis = results_cr["rounds"].to_numpy()
+            x_label = "communication rounds"
+        max_losses.append(np.max(means))
+
+        plot(
+            x_axis,
+            means,
+            stdevs,
+            i,
+            len(train_loss),
+            "Training Loss",
+            f[len("train_loss") + 1 : -len(":2022-03-24T17:54.csv")],
+            "upper right",
+            x_label,
+        )
+
+    max_tlosses = []
+    for i, f in enumerate(test_loss):
+        filepath = os.path.join(path, f)
+        with open(filepath, "r") as inf:
+            results_csv = pd.read_csv(inf)
+        if global_epochs:
+            means = results_csv["mean"].to_numpy()
+            stdevs = results_csv["std"].to_numpy()
+            means = means[:epochs]
+            stdevs = stdevs[:epochs]
+            x_axis = list(np.arange(0, len(means), 1))
+            x_label = "global epochs"
+        else:
+            results_cr = results_csv[results_csv.rounds <= epochs]
+            means = results_cr["mean"].to_numpy()
+            stdevs = results_cr["std"].to_numpy()
+            x_axis = results_cr["rounds"].to_numpy()
+            x_label = "communication rounds"
+        print("x axis:", x_axis)
+        max_tlosses.append(np.max(means))
+        # Plot Testing loss
+        plt.figure(2)
+        plot(
+            x_axis,
+            means,
+            stdevs,
+            i,
+            len(test_loss),
+            "Testing Loss",
+            f[len("test_loss") + 1 : -len(":2022-03-24T17:54.csv")],
+            "upper right",
+            x_label,
+        )
+
+    max_taccs = []
+    for i, f in enumerate(test_acc):
+        filepath = os.path.join(path, f)
+        with open(filepath, "r") as inf:
+            results_csv = pd.read_csv(inf)
+        if global_epochs:
+            means = results_csv["mean"].to_numpy()
+            stdevs = results_csv["std"].to_numpy()
+            means = means[:epochs]
+            stdevs = stdevs[:epochs]
+            x_axis = list(np.arange(0, len(means), 1))
+            x_label = "global epochs"
+        else:
+            results_cr = results_csv[results_csv.rounds <= epochs]
+            means = results_cr["mean"].to_numpy()
+            stdevs = results_cr["std"].to_numpy()
+            x_axis = results_cr["rounds"].to_numpy()
+            x_label = "communication rounds"
+        max_taccs.append(np.max(means))
+        # Plot Testing Accuracy
+        plt.figure(3)
+        plot(
+            x_axis,
+            means,
+            stdevs,
+            i,
+            len(test_acc),
+            "Testing Accuracy",
+            f[len("test_acc") + 1 : -len(":2022-03-24T17:54.csv")],
+            "lower right",
+            x_label,
+        )
+
+    names_loss = [
+        f[len("train_loss") + 1 : -len(":2022-03-24T17:54.csv")] for f in train_loss
+    ]
+    names_acc = [
+        f[len("test_acc") + 1 : -len(":2022-03-24T17:54.csv")] for f in test_acc
+    ]
+    print(names_loss)
+    print(names_acc)
+    pf = pd.DataFrame(
+        {
+            "test_accuracy": max_taccs,
+            "test_losses": max_tlosses,
+            "train_losses": max_losses,
+        },
+        names_loss,
+    )
+    pf = pf.sort_values(["test_accuracy"], 0, ascending=False)
+    pf.to_csv(os.path.join(path, "best_results.csv"))
+
+    plt.figure(1)
+    plt.savefig(os.path.join(path, "ge_train_loss.png"), dpi=300)
+    plt.figure(2)
+    plt.savefig(os.path.join(path, "ge_test_loss.png"), dpi=300)
+    plt.figure(3)
+    plt.savefig(os.path.join(path, "ge_test_acc.png"), dpi=300)
+
+
+if __name__ == "__main__":
+    assert len(sys.argv) == 4
+    print(sys.argv[1], sys.argv[2], sys.argv[3])
+    plot_results(sys.argv[1], sys.argv[2], sys.argv[3])
diff --git a/random files/reddit.ipynb b/random files/reddit.ipynb
new file mode 100644
index 0000000..b3496c6
--- /dev/null
+++ b/random files/reddit.ipynb	
@@ -0,0 +1,960 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "colab": {
+     "base_uri": "https://localhost:8080/"
+    },
+    "id": "ZMZYcW3itMzT",
+    "outputId": "f2970f7e-cf26-4a67-e8d3-29bcd1a11775"
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "colab": {
+     "base_uri": "https://localhost:8080/"
+    },
+    "id": "2VftlLfttdT8",
+    "outputId": "48b47fdc-853b-4711-ae95-8c0e64510615"
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "metadata": {
+    "id": "ft7BMl1LyWP6"
+   },
+   "outputs": [],
+   "source": [
+    "from torch import nn\n",
+    "import torch\n",
+    "import os\n",
+    "import json\n",
+    "import pickle\n",
+    "import numpy as np\n",
+    "import pywt\n",
+    "import collections\n",
+    "from decentralizepy.datasets.Partitioner import DataPartitioner\n",
+    "from collections import defaultdict\n",
+    "train_dir = \"/home/jeffrey/Downloads/reddit/per_user_data/train\"\n",
+    "test_dir=\"/home/jeffrey/Downloads/reddit/new_small_data/test\"\n",
+    "my_train_data = {\"x\": [], \"y\": []}"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def test_reddit(tmpdir):\n",
+    "    mapping = Linear(6, 16)\n",
+    "    reddit = Reddit(0,0,mapping,\n",
+    "    n_procs = 96,\n",
+    "    train_dir = \"/home/jeffrey/Downloads/reddit/per_user_data/train\",\n",
+    "    test_dir=\"/home/jeffrey/Downloads/reddit/new_small_data/test\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "<torch._C.Generator at 0x7fc21c0c6d30>"
+      ]
+     },
+     "execution_count": 3,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "torch.manual_seed(13)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "metadata": {
+    "id": "hi0N5rB5xBWn"
+   },
+   "outputs": [],
+   "source": [
+    "if torch.cuda.is_available():\n",
+    "  device = \"cuda\"\n",
+    "else:\n",
+    "  device = \"cpu\""
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "metadata": {
+    "colab": {
+     "base_uri": "https://localhost:8080/",
+     "height": 35
+    },
+    "id": "6lO3uYsmxNYz",
+    "outputId": "b170b610-f21e-465d-fcd6-b7e6989e73e5"
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "'cpu'"
+      ]
+     },
+     "execution_count": 5,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "device"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## CNN Model Training <a class=\"anchor\" id=\"train\"></a>"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def _load_vocab(VOCABULARY_PATH):\n",
+    "    vocab_file = pickle.load(open(VOCABULARY_PATH, 'rb'))\n",
+    "    vocab = collections.defaultdict(lambda: vocab_file['unk_symbol'])\n",
+    "    vocab.update(vocab_file['vocab'])\n",
+    "\n",
+    "    return vocab, vocab_file['size'], vocab_file['unk_symbol'], vocab_file['pad_symbol']"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "vocab_path = os.path.join(train_dir, '../../vocab/reddit_vocab.pck')\n",
+    "vocab, vocab_size, unk_symbol, pad_symbol = _load_vocab(vocab_path)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def prepare_data(data):\n",
+    "    data_x = data['x']\n",
+    "    data_y = data['y']\n",
+    "\n",
+    "    # flatten lists\n",
+    "    def flatten_lists(data_x_by_comment, data_y_by_comment):\n",
+    "        data_x_by_seq, data_y_by_seq = [], []\n",
+    "        for c, l in zip(data_x_by_comment, data_y_by_comment):\n",
+    "            data_x_by_seq.extend(c)\n",
+    "            data_y_by_seq.extend(l['target_tokens'])\n",
+    "\n",
+    "        return data_x_by_seq, data_y_by_seq\n",
+    "\n",
+    "    data_x, data_y = flatten_lists(data_x, data_y)\n",
+    "\n",
+    "    data_x_processed = process_x(data_x)\n",
+    "    data_y_processed = process_y(data_y)\n",
+    "\n",
+    "    filtered_x, filtered_y = [], []\n",
+    "    for i in range(len(data_x_processed)):\n",
+    "        if (np.sum(data_y_processed[i]) != 0):\n",
+    "            filtered_x.append(data_x_processed[i])\n",
+    "            filtered_y.append(data_y_processed[i])\n",
+    "\n",
+    "    return (filtered_x, filtered_y)\n",
+    "\n",
+    "def _tokens_to_ids(raw_batch):\n",
+    "    def tokens_to_word_ids(tokens, word2id):\n",
+    "        return [word2id[word] for word in tokens]\n",
+    "\n",
+    "    to_ret = [tokens_to_word_ids(seq, vocab) for seq in raw_batch]\n",
+    "    return np.array(to_ret)\n",
+    "\n",
+    "def process_x(raw_x_batch):\n",
+    "    \"\"\"\n",
+    "    copied from https://gitlab.epfl.ch/sacs/efficient-federated-learning/-/blob/master/grad_guessing/data_utils.py\n",
+    "    Parameters\n",
+    "    ----------\n",
+    "    raw_x_batch\n",
+    "\n",
+    "    Returns\n",
+    "    -------\n",
+    "\n",
+    "    \"\"\"\n",
+    "    tokens = _tokens_to_ids([s for s in raw_x_batch])\n",
+    "    return tokens\n",
+    "\n",
+    "def process_y( raw_y_batch):\n",
+    "    \"\"\"\n",
+    "    copied from https://gitlab.epfl.ch/sacs/efficient-federated-learning/-/blob/master/grad_guessing/data_utils.py\n",
+    "    Parameters\n",
+    "    ----------\n",
+    "    raw_y_batch\n",
+    "\n",
+    "    Returns\n",
+    "    -------\n",
+    "\n",
+    "    \"\"\"\n",
+    "    tokens = _tokens_to_ids([s for s in raw_y_batch])\n",
+    "\n",
+    "    def getNextWord(token_ids):\n",
+    "        n = len(token_ids)\n",
+    "        for i in range(n):\n",
+    "            # gets the word at the end of the phrase that should be predicted\n",
+    "            # that is the last token that is not a pad.\n",
+    "            if (token_ids[n - i - 1] != pad_symbol):\n",
+    "                return token_ids[n - i - 1]\n",
+    "        return pad_symbol\n",
+    "\n",
+    "    return [getNextWord(t) for t in tokens]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "metadata": {
+    "id": "9LpgzEw1s-xo"
+   },
+   "outputs": [],
+   "source": [
+    "def __read_file__(file_path):\n",
+    "    with open(file_path, \"r\") as inf:\n",
+    "        client_data = json.load(inf)\n",
+    "    return (\n",
+    "        client_data[\"users\"],\n",
+    "        client_data[\"num_samples\"],\n",
+    "        client_data[\"user_data\"],\n",
+    "    )\n",
+    "\n",
+    "def __read_dir__(data_dir):\n",
+    "    users = []\n",
+    "    num_samples = []\n",
+    "    data = defaultdict(lambda: None)\n",
+    "\n",
+    "    files = os.listdir(data_dir)\n",
+    "    files = [f for f in files if f.endswith(\".json\")]\n",
+    "    for f in files:\n",
+    "        file_path = os.path.join(data_dir, f)\n",
+    "        u, n, d = __read_file__(file_path)\n",
+    "        users.extend(u)\n",
+    "        num_samples.extend(n)\n",
+    "        data.update(d)\n",
+    "    return users, num_samples, data"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 10,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "sizes= None\n",
+    "n_procs = 1 # why can I access n_procs but not train_x in the load_trianset function\n",
+    "train_x = []\n",
+    "train_y = []"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 11,
+   "metadata": {
+    "id": "QBu1kiw8s-xr"
+   },
+   "outputs": [],
+   "source": [
+    "def load_trainset():\n",
+    "    files = os.listdir(train_dir)\n",
+    "    files = [f for f in files if f.endswith(\".json\")]\n",
+    "    files.sort()\n",
+    "    c_len = len(files)\n",
+    "    sizes = None\n",
+    "    print(n_procs)\n",
+    "    if sizes == None:  # Equal distribution of data among processes\n",
+    "        e = c_len // n_procs\n",
+    "        frac = e / c_len\n",
+    "        sizes = [frac] * n_procs\n",
+    "        sizes[-1] += 1.0 - frac * n_procs\n",
+    "    uid = 0\n",
+    "    my_clients = DataPartitioner(files, sizes).use(0)\n",
+    "    my_clients = list(my_clients)\n",
+    "    my_train_data = {\"x\": [], \"y\": []}\n",
+    "    #self.clients = []\n",
+    "    num_samples = []\n",
+    "    for i in range(my_clients.__len__()):\n",
+    "        cur_file = my_clients.__getitem__(i)\n",
+    "\n",
+    "        clients, _, train_data = __read_file__(\n",
+    "            os.path.join(train_dir, cur_file)\n",
+    "        )\n",
+    "        for cur_client in clients:\n",
+    "            #self.clients.append(cur_client)\n",
+    "            processed_x, processed_y = prepare_data(train_data[cur_client])\n",
+    "            # processed_x is an list of fixed size word id arrays that represent a phrase\n",
+    "            # processed_y is a list of word ids that each represent the next word of a phrase\n",
+    "            my_train_data[\"x\"].extend(processed_x)\n",
+    "            my_train_data[\"y\"].extend(processed_y)\n",
+    "            num_samples.append(len(processed_y))\n",
+    "    # turns the list of lists into a single list\n",
+    "    train_y = np.array(my_train_data[\"y\"], dtype=np.dtype(\"int64\")).reshape(-1)\n",
+    "    train_x = np.array(my_train_data[\"x\"], dtype=np.dtype(\"int64\"))#.reshape(-1)\n",
+    "    print(len(train_x), len(train_y))\n",
+    "    print(\"train_x.shape:\", str(train_x.shape))\n",
+    "    print(\"train_y.shape:\", str(train_y.shape))\n",
+    "    assert train_x.shape[0] == train_y.shape[0]\n",
+    "    assert train_x.shape[0] > 0\n",
+    "    return train_x, train_y"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "test_x = []\n",
+    "test_y = []"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 13,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def load_testset():\n",
+    "    \"\"\"\n",
+    "    Loads the testing set.\n",
+    "\n",
+    "    \"\"\"\n",
+    "    _, _, d = __read_dir__(test_dir)\n",
+    "    test_x = []\n",
+    "    test_y = []\n",
+    "    for test_data in d.values():\n",
+    "        processed_x, processed_y = prepare_data(test_data)\n",
+    "        # processed_x is an list of fixed size word id arrays that represent a phrase\n",
+    "        # processed_y is a list of word ids that each represent the next word of a phrase\n",
+    "        test_x.extend(processed_x)\n",
+    "        test_y.extend(processed_y)\n",
+    "    test_y = np.array(test_y, dtype=np.dtype(\"int64\")).reshape(-1)\n",
+    "    test_x = np.array(test_x, dtype=np.dtype(\"int64\"))\n",
+    "    print(test_x)\n",
+    "    print(len(test_x), len(test_x))\n",
+    "    print(\"test_x.shape:\", str(test_x.shape))\n",
+    "    print(\"test_y.shape:\", str(test_y.shape))\n",
+    "    assert test_x.shape[0] == test_y.shape[0]\n",
+    "    assert test_x.shape[0] > 0\n",
+    "    return test_x, test_y"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 14,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "1\n",
+      "70642 70642\n",
+      "train_x.shape: (70642, 10)\n",
+      "train_y.shape: (70642,)\n"
+     ]
+    }
+   ],
+   "source": [
+    "train_x, train_y = load_trainset()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 15,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([[   5,  953, 1341, ...,  834,  298, 1288],\n",
+       "       [ 436, 1060,    6, ...,    0,    0,    0],\n",
+       "       [   5, 7948,    1, ..., 7654,    1,    1],\n",
+       "       ...,\n",
+       "       [  67,  433, 1465, ...,    0,    0,    0],\n",
+       "       [   5,   13,  119, ...,   12,   17,   13],\n",
+       "       [ 324,  324,  324, ...,    0,    0,    0]])"
+      ]
+     },
+     "execution_count": 15,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "train_x"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 16,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "[[   5   90    1 ...    6    0    0]\n",
+      " [   5   13 1121 ...   75   26  110]\n",
+      " [  27   13 1510 ...   13 4813   21]\n",
+      " ...\n",
+      " [   5 1784    1 ...    1 1026    4]\n",
+      " [1784 4734  489 ...    1    7 3190]\n",
+      " [ 761   75    1 ...    0    0    0]]\n",
+      "24961 24961\n",
+      "test_x.shape: (24961, 10)\n",
+      "test_y.shape: (24961,)\n"
+     ]
+    }
+   ],
+   "source": [
+    "test_x, test_y = load_testset()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 17,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([[   5,   90,    1, ...,    6,    0,    0],\n",
+       "       [   5,   13, 1121, ...,   75,   26,  110],\n",
+       "       [  27,   13, 1510, ...,   13, 4813,   21],\n",
+       "       ...,\n",
+       "       [   5, 1784,    1, ...,    1, 1026,    4],\n",
+       "       [1784, 4734,  489, ...,    1,    7, 3190],\n",
+       "       [ 761,   75,    1, ...,    0,    0,    0]])"
+      ]
+     },
+     "execution_count": 17,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "test_x"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 18,
+   "metadata": {
+    "id": "mAEASHr2s-x1"
+   },
+   "outputs": [],
+   "source": [
+    "VOCAB_LEN = 9999 \n",
+    "SEQ_LEN = 10\n",
+    "EMBEDDING_DIM = 200"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 19,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from decentralizepy.models.Model import Model\n",
+    "import torch.nn.functional as F"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 20,
+   "metadata": {
+    "id": "GPyZ2C8ws-x9"
+   },
+   "outputs": [],
+   "source": [
+    "class RNN(Model):\n",
+    "    \"\"\"\n",
+    "    Class for a RNN Model for Reddit\n",
+    "\n",
+    "    \"\"\"\n",
+    "\n",
+    "    def __init__(self):\n",
+    "        \"\"\"\n",
+    "        Constructor. Instantiates the RNN Model to predict the next word of a sequence of word.\n",
+    "        Based on the TensorFlow model found here: https://gitlab.epfl.ch/sacs/efficient-federated-learning/-/blob/master/grad_guessing/data_utils.py\n",
+    "        \"\"\"\n",
+    "        super().__init__()\n",
+    "\n",
+    "        # input_length does not exist\n",
+    "        self.embedding = nn.Embedding(VOCAB_LEN, EMBEDDING_DIM, padding_idx=0)\n",
+    "        self.rnn_cells = nn.LSTM(EMBEDDING_DIM, 256, batch_first=True, num_layers=2) # not sure about the first argument input_size\n",
+    "        # activation function is added in the forward pass\n",
+    "        # Note: the tensorflow implementation did not use any activation function in this step?\n",
+    "        # should I use one.\n",
+    "        self.l1 = nn.Linear(256, 128)\n",
+    "        # the tf model used sofmax activation here\n",
+    "        self.l2 = nn.Linear(128, VOCAB_LEN)\n",
+    "\n",
+    "    def forward(self, x):\n",
+    "        \"\"\"\n",
+    "        Forward pass of the model\n",
+    "\n",
+    "        Parameters\n",
+    "        ----------\n",
+    "        x : torch.tensor\n",
+    "            The input torch tensor\n",
+    "\n",
+    "        Returns\n",
+    "        -------\n",
+    "        torch.tensor\n",
+    "            The output torch tensor\n",
+    "\n",
+    "        \"\"\"\n",
+    "        x = self.embedding(x)\n",
+    "        #print(x.shape)\n",
+    "        x = self.rnn_cells(x)\n",
+    "        #print(x[0].shape)\n",
+    "        #print(x[1][0].shape)\n",
+    "        last_layer_output = x[1][0][1,...]\n",
+    "        #print(\"last_layer:\", last_layer_output.shape)\n",
+    "        x = F.relu(self.l1(x[1][0][1,...]))\n",
+    "        #print(x.shape)\n",
+    "        x = self.l2(x)\n",
+    "        # softmax is applied by the CrossEntropyLoss used during training\n",
+    "        return x\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "id": "bCgW8ClBs-x_"
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 21,
+   "metadata": {
+    "id": "oBGwcwZks-yA"
+   },
+   "outputs": [],
+   "source": [
+    "import os\n",
+    "from torch.utils.data import Dataset\n",
+    "\n",
+    "class RedditDataset(Dataset):\n",
+    "    def __init__(self, training, transform=None, target_transform=None):\n",
+    "        if training:\n",
+    "            #with open(train_dir+\"femnist.pkl\", \"rb\") as f:\n",
+    "                #train = pickle.load(f)\n",
+    "                self.data = train_x\n",
+    "                self.label = train_y\n",
+    "        else: \n",
+    "            #with open(train_dir+\"femnist_test.pkl\", \"rb\") as f:\n",
+    "                #test = pickle.load(f)\n",
+    "                self.data = test_x\n",
+    "                self.label = test_y\n",
+    "        self.transform = transform\n",
+    "        self.target_transform = target_transform\n",
+    "\n",
+    "    def __len__(self):\n",
+    "        return len(self.label)\n",
+    "\n",
+    "    def __getitem__(self, idx):\n",
+    "        return self.data[idx], self.label[idx]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 22,
+   "metadata": {
+    "id": "U3boC_N4s-yC"
+   },
+   "outputs": [],
+   "source": [
+    "from torch.utils.data import DataLoader"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 23,
+   "metadata": {
+    "id": "sJsrQXkEs-yD"
+   },
+   "outputs": [],
+   "source": [
+    "trainset = RedditDataset(True)\n",
+    "testset = RedditDataset(False)\n",
+    "\n",
+    "train_dataloader = DataLoader(trainset, batch_size=16, shuffle=True)\n",
+    "test_dataloader = DataLoader(testset, batch_size=128, shuffle=True)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 24,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "4416"
+      ]
+     },
+     "execution_count": 24,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "len(train_dataloader)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 25,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "70656"
+      ]
+     },
+     "execution_count": 25,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "552*128"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 26,
+   "metadata": {
+    "id": "e65Izyv0s-yE"
+   },
+   "outputs": [],
+   "source": [
+    "lr = 0.1\n",
+    "model = RNN().to(device)\n",
+    "loss_fn = nn.CrossEntropyLoss()\n",
+    "optimizer = torch.optim.SGD(model.parameters(), lr=lr)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 27,
+   "metadata": {
+    "colab": {
+     "base_uri": "https://localhost:8080/"
+    },
+    "id": "eqOXilqMs-yF",
+    "outputId": "06799a3b-983b-4f51-a7bd-a901c041bd05"
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "loss: 4.976342  [ 8832/70642]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 26.0%, Avg loss: 4.879616 \n",
+      "\n",
+      "loss: 4.882441  [ 8832/70642]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 28.8%, Avg loss: 4.710636 \n",
+      "\n",
+      "loss: 4.665762  [ 8832/70642]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 30.0%, Avg loss: 4.597566 \n",
+      "\n",
+      "loss: 4.593148  [ 8832/70642]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 31.8%, Avg loss: 4.533113 \n",
+      "\n",
+      "loss: 4.442960  [ 8832/70642]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 32.2%, Avg loss: 4.463360 \n",
+      "\n",
+      "loss: 4.288299  [ 8832/70642]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 30.8%, Avg loss: 4.559918 \n",
+      "\n",
+      "loss: 4.191413  [ 8832/70642]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 30.7%, Avg loss: 4.568339 \n",
+      "\n",
+      "loss: 3.979227  [ 8832/70642]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 31.4%, Avg loss: 4.590676 \n",
+      "\n",
+      "loss: 3.857259  [ 8832/70642]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 30.8%, Avg loss: 4.667198 \n",
+      "\n",
+      "loss: 3.840112  [ 8832/70642]\n",
+      "epoch:\n",
+      "Test Error: \n",
+      " Accuracy: 30.9%, Avg loss: 4.786180 \n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "stats = {\"train\": [], \"test\":[]}\n",
+    "loss_mvg = None\n",
+    "for e in range(10):\n",
+    "    #training\n",
+    "    batch = 0\n",
+    "    for X, y in train_dataloader:\n",
+    "        #print(\"grad: \"+str(model.conv1.bias.grad))\n",
+    "        #old = model.conv1.bias.clone()\n",
+    "        X = X.to(device)\n",
+    "        y = y.to(device)\n",
+    "        #print(len(label))\n",
+    "        size = len(train_dataloader.dataset)\n",
+    "        model.train()\n",
+    "        # Compute prediction error\n",
+    "        pred = model(X)\n",
+    "        #print(X.shape, y.shape) is torch.Size([128, 10]) torch.Size([128])\n",
+    "        loss = loss_fn(pred, y)\n",
+    "        # Backpropagation\n",
+    "        loss.backward()\n",
+    "        #print(\"grad2: \"+str(model.conv1.bias.grad))\n",
+    "        optimizer.step()\n",
+    "        model.zero_grad()\n",
+    "        #optimizer.zero_grad()\n",
+    "        \n",
+    "        #resetting the optimizer\n",
+    "        # optimizer.load_state_dict(model.state_dict())\n",
+    "        vals = optimizer.state.values()\n",
+    "        #print(optimizer.state.values())\n",
+    "        if not loss_mvg:\n",
+    "            loss_mvg = loss.item()\n",
+    "        else:\n",
+    "            loss_mvg = 0.99*loss_mvg + 0.01*loss.item()\n",
+    "            \n",
+    "        batch += 1\n",
+    "        \n",
+    "    loss, current = loss.item(), batch * len(X)\n",
+    "    print(f\"loss: {loss_mvg:>7f}  [{current:>5d}/{size:>5d}]\")\n",
+    "    stats[\"train\"].append([batch, e*size + current, loss])\n",
+    "\n",
+    "\n",
+    "    #testing\n",
+    "    size = len(test_dataloader.dataset)\n",
+    "    num_batches = len(test_dataloader)\n",
+    "    model.eval()\n",
+    "    test_loss, correct = 0, 0\n",
+    "    with torch.no_grad():\n",
+    "        for X, y in test_dataloader:\n",
+    "            X = X.to(device)\n",
+    "            y = y.to(device)\n",
+    "            pred = model(X)\n",
+    "            test_loss += loss_fn(pred, y).item()\n",
+    "            correct += (pred.argmax(1) == y).type(torch.float).sum().item()\n",
+    "    test_loss /= num_batches\n",
+    "    correct /= size\n",
+    "    print(\"epoch:\")\n",
+    "    print(f\"Test Error: \\n Accuracy: {(100*correct):>0.1f}%, Avg loss: {test_loss:>8f} \\n\")\n",
+    "    stats[\"test\"].append([e, test_loss, 100*correct])\n",
+    "    "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "128 0.001: Accuracy: 32.3%, Avg loss: 4.716327 \n",
+    "64 0.001: Accuracy: 32.6%, Avg loss: 4.723278 "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "id": "4P-VA0vcs-yH"
+   },
+   "outputs": [],
+   "source": [
+    "with open(train_dir+\"/results:128:\"+str(lr)+\".pkl\", \"wb\") as f:\n",
+    "  pickle.dump(stats, f)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "colab": {
+     "base_uri": "https://localhost:8080/"
+    },
+    "id": "641-b_VCvT2b",
+    "outputId": "cced38ab-5c04-45b2-faf4-e73327126159"
+   },
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "colab": {
+     "base_uri": "https://localhost:8080/"
+    },
+    "id": "F_OKqiiHs-yJ",
+    "outputId": "65786b88-05f4-42fa-a851-03397ef4457a"
+   },
+   "outputs": [],
+   "source": [
+    "lrs = [0.1, 0.01, 0.005, 0.001, 0.0005, 0.0001, 0.00001]\n",
+    "for l in lrs:\n",
+    "  with open(train_dir+\"/results:128:\"+str(l)+\".pkl\", \"rb\") as f:\n",
+    "    res = pickle.load(f)\n",
+    "    print(str(l)+\": \" + str(np.amax(res[\"test\"], axis=0)))#+ str(np.max(res[\"test\"]))\n",
+    "    # print(str(l)+\": \" + str(res[\"test\"]))\n",
+    "    "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "colab": {
+     "base_uri": "https://localhost:8080/"
+    },
+    "id": "rADw-XkfKjOo",
+    "outputId": "06c54a2c-f7c2-4610-f879-3e1c2f98543f"
+   },
+   "outputs": [],
+   "source": [
+    "lrs = [0.1, 0.01, 0.005, 0.001, 0.0005, 0.0001, 0.00001]\n",
+    "for l in lrs:\n",
+    "  with open(train_dir+\"/results:128:\"+str(l)+\".pkl\", \"rb\") as f:\n",
+    "    res = pickle.load(f)\n",
+    "    # print(str(l)+\": \" + str(np.amax(res[\"test\"], axis=0)))#+ str(np.max(res[\"test\"]))\n",
+    "    print(str(l)+\": \" + str(res[\"test\"]))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "id": "HGpNYzG_s-yJ",
+    "outputId": "783622a5-249f-4dd8-d242-fc6dfa47443c"
+   },
+   "outputs": [],
+   "source": [
+    "import torch\n",
+    "resnet = torch.hub.load('pytorch/vision:v0.10.0', 'resnet18', pretrained=True)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "id": "uZFgT6wss-yL",
+    "outputId": "10f8fc51-abb7-4c2b-f608-85229f3de29d",
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "total = 0\n",
+    "for i in resnet.state_dict().values():\n",
+    "    total += i.flatten().size(dim=0)\n",
+    "print(total)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Optimizer analysis <a class=\"anchor\" id=\"optim\"></a>"
+   ]
+  }
+ ],
+ "metadata": {
+  "colab": {
+   "name": "learningrate.ipynb",
+   "provenance": []
+  },
+  "interpreter": {
+   "hash": "996934296aa9d79be6c3d800a38d8fdb7dfa8fe7bb07df178f1397cde2cb8742"
+  },
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.9.10"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/random files/test_elias.py b/random files/test_elias.py
new file mode 100644
index 0000000..1036674
--- /dev/null
+++ b/random files/test_elias.py	
@@ -0,0 +1,177 @@
+import numpy as np
+import time
+import os, random, pickle, lzma, leb128, lz4.frame
+import uvarint
+
+# arr = np.random.poisson(3, 500000) #np.random.randint(1, 20, 500000, dtype=np.int32)
+# arr=arr.astype(np.int32)
+# print("got the array")
+# t5 = time.time()
+#
+#
+# lzfour= lz4.frame.compress(arr)
+#
+# p = pickle.dumps(lzfour)
+# print(len(p), len(lzfour))
+# t6 = time.time()
+#
+# p = pickle.dumps(p)
+#
+# t7 = time.time()
+# print(t6 -t5, t7 -t5)
+#
+# # elias implementation: taken from this stack overflow post:
+# # https://stackoverflow.com/questions/62843156/python-fast-compression-of-large-amount-of-numbers-with-elias-gamma
+# def encode(a):
+#     a = a.view(f'u{a.itemsize}')
+#     l = np.log2(a).astype('u1')
+#     L = ((l<<1)+1).cumsum()
+#     print("L,", L, len(L))
+#     out = np.zeros(L[-1] + np.array([64], dtype = "u1")[0], 'u1')
+#     print("lmax", l.max()+1)
+#     for i in range(l.max()+1):
+#         out[L-i-1] += (a>>i)&1
+#     print("out:", out, out[-10:])
+#     s = np.array([out.size], dtype=np.int64)
+#
+#     print(s)
+#     size = np.ndarray(8, dtype='u1', buffer=s.data)
+#     print("size:", size)
+#     # out[-8:] = size
+#     ss = s[0]
+#     # for i in range(64):
+#     #     out[int(L[-1] + 63 - i)] += (ss>>i)&1
+#     print("out", out, out[-68:])
+#
+#     # out.data.contiguous
+#     packed = np.packbits(out)
+#     packed[-8:] = size
+#     print("packed:", packed[-10:])
+#     print("out", out, out[-68:])
+#     return packed, out.size
+#
+# def decode(b,n):
+#     print(b,)
+#     n_arr = b[-8:]
+#     print("n_arr:", n_arr)
+#     n = np.ndarray(1, dtype=np.int64, buffer=n_arr.data)[0]
+#     print("n:", n)
+#     b = b[:-8]
+#     b = np.unpackbits(b,count=n).view(bool)
+#     s = b.nonzero()[0]
+#     s = (s<<1).repeat(np.diff(s,prepend=-1))
+#     s -= np.arange(-1,len(s)-1)
+#     s = s.tolist() # list has faster __getitem__
+#     ns = len(s)
+#     def gen():
+#         idx = 0
+#         yield idx
+#         while idx < ns:
+#             idx = s[idx]
+#             yield idx
+#     offs = np.fromiter(gen(),int)
+#     sz = np.diff(offs)>>1
+#     mx = sz.max()+1
+#     out = np.zeros(offs.size-1,int)
+#     for i in range(mx):
+#         out[b[offs[1:]-i-1] & (sz>=i)] += 1<<i
+#     return out
+#
+# arr = np.random.poisson(3, 500000) + 1 # elias does not work on 0s # .frame.decompress
+# arr= arr.astype(np.int64)
+# print("arr:", arr)
+#
+#
+# # t0 = time.time()
+# # p = pickle.dumps(arr)
+# # t1 = time.time()
+# #
+# # z = lzma.compress(arr)
+# #
+# # t2 = time.time()
+# #
+# # # From https://stackoverflow.com/questions/68968796/variable-length-integer-encoding
+# # leb = b''.join(map(leb128.LEB128U.encode, arr))
+# # t3 = time.time()
+# #
+# # uvar = b''.join(map(uvarint.encode, arr))
+# t4 = time.time()
+#
+# elias, n = encode(arr)
+#
+# t5 = time.time()
+# #
+# # lzfour= lz4.frame.compress(arr.tobytes("C"))
+# #
+# # t6 = time.time()
+#
+# # print(elias)
+# # print(n)
+# # print(elias.size)
+# # print(elias.itemsize)
+# # print("array size'd:", f'{ arr.size * arr.itemsize:,}')
+# # print("pickle'd:", f'{len(p):,}')
+# # print("lzma'd:", f'{len(z):,}')
+# # print("leb128'd:", f'{len(leb):,}')
+# # print("uvarint'd:", f'{len(leb):,}')
+# # print("elias'd:", f'{elias.size:,}')
+# # print("elias'd:", f'{len(elias):,}')
+# # print("elias'd:", f'{len(pickle.dumps(elias)):,}')
+# # print("lz4'd:", f'{len(lzfour):,}')
+# # print(f"pickle: {t1-t0:.5f}s, lzma: {t2-t1:.5f}s, leb128 {t3-t2:.5f}s, uvarint: {t4-t3:.5f}s, elias: {t5-t4:.5f}s, lz4: {t6-t5:.5f}s")
+#
+#
+#
+# # decode
+# d0 = time.time()
+#
+# arr_dec = decode(elias, n)
+# print(arr.dtype, arr_dec.dtype)
+# print(len(arr) , len(arr_dec))
+# assert len(arr) == len(arr_dec)
+# assert (arr == arr_dec).all()
+#
+# d1 = time.time()
+#
+# # arr_dec = lz4.frame.decompress(lzfour)
+# # arr_dec = np.frombuffer(arr_dec, dtype=np.int32)
+# d2 = time.time()
+# # print(arr_dec)
+#
+# print(d1 -d0, d2 - d1)
+
+
+from decentralizepy.compression.Elias import Elias
+
+arr = np.random.poisson(30, 50000) + 1 # elias does not work on 0s # .frame.decompress
+arr= arr.astype(np.int32)
+arr = np.cumsum(arr).astype(np.int32)
+print("arr:", arr[:3], arr[-3:])
+
+#print("Elias of framework:", arr, np.diff(arr), len(np.diff(arr)))
+eliaso = Elias()
+t1 = time.time()
+comp = eliaso.compress(arr)
+t2 = time.time()
+print("size:", comp.dtype, len(comp), len(pickle.dumps(arr)), len(pickle.dumps(comp)))
+arr_dec = eliaso.decompress(comp)
+t3= time.time()
+print(t2-t1, t3-t2, t3-t1)
+print("arr_dec:", arr_dec[:3], arr_dec[-3:])
+print(arr.dtype, arr_dec.dtype)
+print(len(arr) , len(arr_dec))
+assert len(arr) == len(arr_dec)
+assert (arr == arr_dec).all()
+
+
+arr = np.array([0,1,2,8])
+
+comp = eliaso.compress(arr)
+arr_dec = eliaso.decompress(comp)
+print("test for fix", arr, arr_dec)
+print(arr_dec)
+print(arr.dtype, arr_dec.dtype)
+print(len(arr) , len(arr_dec))
+assert len(arr) == len(arr_dec)
+assert (arr == arr_dec).all()
+
diff --git a/random files/testing_time_offset_dup.py b/random files/testing_time_offset_dup.py
new file mode 100644
index 0000000..6f85c32
--- /dev/null
+++ b/random files/testing_time_offset_dup.py	
@@ -0,0 +1,25 @@
+import time
+
+
+print(time.time())
+
+print(int(time.time()))
+
+intervall = 60*5 # NEW Batch of ports avter 5 minutes
+
+seconds = int(time.time()) // intervall
+
+
+
+# we reset after 200 mins
+
+port_offset_factor = seconds % 40
+
+in_day = 40
+ports = 400
+breath = in_day * ports
+
+offset = port_offset_factor * ports
+print(intervall, seconds, port_offset_factor, offset, seconds %  in_day, breath)
+
+# There are 65535 ports in tcp
diff --git a/random files/top10_Histogram.png b/random files/top10_Histogram.png
new file mode 100644
index 0000000000000000000000000000000000000000..a18d55c04ffaa7dea45dedb550930a1ab38eb57b
GIT binary patch
literal 8419
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
C_8xoy

literal 0
HcmV?d00001

diff --git a/random files/wavelet_bad.png b/random files/wavelet_bad.png
new file mode 100644
index 0000000000000000000000000000000000000000..91693c68727f7e096793307f3be0a1a7af87675f
GIT binary patch
literal 34007
zcmc$_WmHvB7cPA0Zs`(~l9uicN$G}z2-4ko=mzNqK>_Io>4TJXcXxO9-MsHNz8hoQ
z-}lGnYz{kC%=yGzi}24%G8m{Ns2~ss<CCnUDhLEq2^?>c5rJ=}=xHs04?brpZD%z*
zGiNtrM^liZv9rCkowK#Ym$$B_j!qVKwj3;6EbL5g&7Ga?o%mT<ZT|lYSnM3XvCbNw
zw*n7Av6t0x0)f!*UJn>hdL|JF6eRgcQcT@F^C;_^JK59}WTj@mRi~b2pcT?w6}$&#
z<0e;=5a+;t8-$J9_Fa^ON)%UIRu=hv5P>BGEFQ{RKw9b0xf;UAQvJ2@x1NDlJEfah
zovuxitCs1>gW$vA@nBY(fZq1tUS8r~FdGqiNL$FyLb}&8L<uc6*umE`AKZ6Pbi}}p
zQ9Abj_g{n%iAtJ<%YITG=>#LwNkfP|g{Z3yBuONHDM|KAZKB|OI@$BMlaQ1S3&V}O
zWjkWkkt~+ne9wAtj2DNn#v9WyngVodREt-hAqi6fDZ<|<sJhDhe(+>T?UW&(#Geo{
zAk@<hvjUqPwS0&kvMiQ!Cqar1k}Fz*E<oSo^x?$uNPf);Q`fDCJglNV_YZrNmK28B
z_gA5I%n!51j?=}NqorPPAQh39l#|?~qpsGH?3dgm!{IZK<PMh&4tpH5X_1h$#g8ka
zb`+I-W~OeO-j6Na`5^Bk*gwDh;ovrjy85$ZNb`|$_`e&;uN;+g1A8JUnXJ@BwgXCH
zFR?4vZnoLly(Amg&nP&J14mD3)YbFj_rmyb47LZhIB`qU4%`v{tc`lviKxSIz#+oH
zVdw}-NWwBNzAq@~NFgv7P&kSVeMEh<uOI<PD>O}%)}F>bCrrVORD?(tF$B~A6AMa#
z<$!EJj3WNYS{>f_J3;Uu;y-ZRM|Is=t}@FK<+S9OapF9nBajP-H<<l2v)6kBCI&?7
zp53gvul8ebe);L~IX}@7V|_6|ToMzG0;vsd6XpeEh!^)BhY$V_46i;zl0U(Z1qq>$
z4s3!%)oo*n)_eap(P<bBbE-?8x7`DOEJX7c9<U$+u!j%$t4PxaI_6YF-&#jNZ|s8>
zZj+#V(+3z(>joDDQ8a9<sLJ|iH@z3`Q=5hx%vv+vMb8RI0_@-oA@rqmCT;pU6v4xm
z#`fS1ThGxG9@Jp^pdHT5^U&&@?&nxBwEhJDpzLRxR2gfLC`7Ye#>}6I{hD$ZT5<*z
ziI&)L>Nt0yVTagpB(-xa3+HHahmI@ZVVShl^2|<PeBBJvRqjoQYVnZg5?Cmuxy%l9
z2#Q~W4kV|Qp)!xoL&SuKjd@QA8_w_{Kk9@kF0TGgK*On3k@Z2=8gf1qn~ewq_Ny}2
zf@MA!2&hS_dJsz31~@ONO%E#;M2Sft+eTCFaO{zFCHj9YS<~5?BtD5t#zRsdUjAZo
zMb@j#v1hrJXuLzXrPuFtEJU)-*`Ea{Hq;WiF<jFtcoJ0wMhkl7$F@7^n%!-$AkC~c
zmA!&~8|)+M`IAo5WWW^h6EN?-IrZ{$;wGXF27;wc0a5o|adiNlFFx3t`aAp~oUYU+
zC)k!J<^}tdQ~+B-@|;<OaGE_6N*{YBf*%(?eanQ?Sc%r_gL@RpkLW(FOR(QqhR8w?
z$BV;<Z$nY*0sluyGNv+*XF_rl9j6aFP6Eh9c`$dLh~GED;STUFH;}>iAN>$jAx}`%
z)%IsZ#(YbEQh&dna4al{h6g=oFJEk4L~x4gw(WylN<CM3pmfQ^$Flj81Lihc9s`?=
z1iWRy>rwt8ENjRmxtuNff--}z84UxjQ;d(S5bQDd-xlD`!s;8BDZw5~`)zwc{GrOt
z_Lztg4LJFax=gRQ2Hs5~!uT)J#s5ZS!{M8f^IoK;Zt&E}c~8x%eISAtheL4?s`DwA
zN5*FSzc)xKLUeM6u<~r4@gR2LVc)8^8^$~YO&|}uWJ{NH&MeU#0CIlGG`9qE_%q8D
z*~k@{t$Kj7ds97XXPoswg9JD**l|vf3V)ZewDQ+$JvqkSfF*WQf9Z(#!VhDbB(g-S
zVQhw%3;Lp+9?%a?{0E33m9?H>K#1Hh<nJ>D4>D3aGB+KQTUc0dU<zH1?hXzESKXs9
zYLzcmB=!S12rt2jFl+0~N0LEpmDa#cleh5cD-6<TBNt)VKOs@>)i-g{`Rbv6%jAke
z{X=0QA|t0F@ENHcC|<$d4kwOWNGKE>UI5a=jH>(Kae~+uu2k>5!vz+ugg4kZ63WM$
zim5>g`*$RoRe1XGl`*VwxL^trE%D<>A;F?#r+-u}v%(f(N<YiBA_^i3GE?h~1}n7_
zm)#Kq!=7t5X2<A2gqH{OJ}4%vR9z1L=29>qw*uZFC^$KpKu%81+}iqZuZYN#xUaA8
z4L*L{_wS<<YV1VlVz_FsrN4d!MMa@YM-lnAn@dYr=O(U0{oxW56WJU$|3OIsCNmUM
zm=d?PwtmmbI)cn9fg~B!(jxdXjTGG{Dis$D!7)UvNL`VFx92w=na|D+&ZWe2f-Nl!
zkBl^#ueB)ey*^sFTMfke*Wd5REO57(aJPKZ)>~^ak;-Na%fP@;?t(_Zv|HJ(W#|!n
zbubfZ<BKJD3Nq=55|f;5_iMLmRE;3DYl&kw>0vYNf1_EZivaD3CQV~EK~yVHFz$<|
z0oB&mJD&H^sTmnj)_V}&zs*<<361gZKN1qclMtaP@CLW~CnmnptT0?Mo&y@gcl>9=
zeIuHOKYFFjN8nqwhgqSGwV}rr{;=SM0<FSnY2+eT4Bs}<>#t@*=~Kpc3wG^8+d~<1
zEgl>>KG(!6PseU|hczR&y&}&YM$hMjz}R(Q`JTcVdhXFYKi{-F?d7M$r>E~fy$zZD
zQBeED_f0ZZse4p}okW{*dqP=ct8T_{1Gt%eqCnB)V7jc-ur>W%tYAEYT7ms><BqD1
z4hpnXr{)%TDD-upI4y7ol9?}>MmjMCqHx|xJL^90msB|3ZKb@UCiB>gQ`gW?(bSX{
z7l*yNx|*DsN%;O<R6_&5qWzga#mLv=z4Fp1q4{XL&_34Xp&<HGa_SV+_vxO0I%PV@
zB?k|c<8Dd^?<vN@+#C!{7$}O2FCMs!7}6a{*qm(Sz83uWxFdq)-tse6IK5^>ID=zE
zFaeF_4+sLZ_jIQHISEgR*MGsbIojyue&+FR#1HXDTU+*2iPpuK45h=AhE|oU&FORa
zQnMR}v$+>dWnLb&>&f!aP1}tSOZ%f^dV2bQMl#E7xo^bxnu83}$?nYs5sX<F8#^P^
z6V;AZ5?YAD{-(I3q^P)fJqS+;1b%+J(+3(>ezkHx-2mc!zTGG)D#|S`jyOC#v?X_%
ztu*#N?LY!q&s7J<$K&?IQjVCW7)U!gakwpe&~5ZYA562O`@Bg3mF&)W5ZyBa?}4?D
zd%_u!6~I|bR8z`rX~|q)|3cw&sgkpRN&GR$pn1M|?KLO9%J$mwioD#7G#->U|9N?S
zXuRJqA!h#qFY+)q;(k5%t<#G-q|JW}ijLDW>v7LZOiVmEJq`OkDM?C62{V$A6>)X1
zFvr!x1jO2M3Jaq2dt}$q(fMj>T4lc`4ut5DmOD(Q&-I+()ubAIzIKx{1MufJZ{GZw
z_PbpReM3O-(e+S!|KPxZmyDMT6EB=-U>0`Jmz(IX!k{JiDcH{UB17M4h-=aB<%vnV
z5<-{b9S<}#=KkJOI+~;#Xt?ss?B?cIOo2l-U0q%G$Fttn<CEuylbvj@W8;x*A%(P$
z!9av&$x!+vzJ4|=dqx7O_dPv*-nd<k;kfC5B?Z!QJ#W>x882^cW3zSQ_u}<c1SE0N
zZ4M4W##8I|=CPiI-kxoEnM(@|08#wsX4#8@<rt5P-z!M_*+()+B+5VV;fFb`e(UeT
zZzjm`ZR&$Fsn{5Z61OV-z%#;36vEg8$QjJpB!jp4?d$hv0A`~O0!9?LqN=W9klMU7
zq<%U(D>l~%R|AHYx-jCOG|t@rK{M0muX4`Qn~Hiz+G!avkV?`TCYcBI^QiVzLQOdN
zhx!gU4&w^}A)$od*j&Iv9H4<v3n=`m9`(8o^khLaU)2)bp7PYo>Q48EHUk$1FaB+4
z7|}&x$EcnIN+tXK+<Ok0&>oW6b{t)kpIo0gxhm731o@NP`RW{}f@~uugMzD{4z6Iq
z^<iPE#fA)~3vc87pNaV`*e(hAQP?(+B2nvC<z)BfJS4--Q7fsSEDbj_(;q8LnEW*`
zHetg4;ZRp&YQyR8(2m}}p`oD}%;1TwGU@&3d1>x@8b~?1xOnJdZDCPV(vvHqB=Y23
zTwL75nFHWdme)z^%)vR8M980rmo{LY4Cej*+#T8ZEljAf!3Q!!9cA=Rq7e!3bxAI3
zaKNo-`IFz|io&65P-Ut2b52oV`i#_!l3%;qd>-;d`atygyeBOeygQjrvjF&IaNFdS
zmk(R5El*EtqN1S*T)mw4=-IVS9i@jX|Jf_Z&~EkQVr{#n)-rIxS1RQAeKbEm|5unW
zqa3+XcDQ#HE(OsHh3%)m6p|jK+pS6PT0V~f>Ix^Zv`nZo&=OPSt*;{*YSgA`3HKRE
z;am`+x^JAXUZq;hD<UEirG|xd(t1MyFqpo_RuaV4)?>xz=InMO7Qp=xJY~U-xo<f`
zpXjo>4(Dp-0ANp`-J2+_sMsN0xkbdIRajkg8rcea7XwwAqyW<O;pXJq!}U=VrAW3_
zd1FX89^FT`V|@~mORW1i8H%;jPONYHlSP?+&v#Tw?j$0<f@f!Ehb!$lPQ!em#2jX9
z4(pN>zPH9Rsh5||zL!5K*<JS4lbLk>lDjQ-tc6kz|N4~h2N?Y-yzOs8>D`JvOOg%_
z>>ItY-|o)0G64{ZA{R(DdR!+ge-gSF<QUB4OR$(IILkWm4y~`}wr#!A)Z%)PXKC!(
z;kCPHyqeZa1IQBKyS42MyW@Q=bL8X@xiDq_LGh>MTWFp{Ntu7QG;5nVqBs*$4`4QG
zf85jBSM{dOK<=QptFWs=`H9u_bAXe;k6VN0La%LywvY6TN78MN^6&!bIxXBD^jmG0
z_{|1W$BcE%%xF79FiZf(0hQ|3MX<I%#xE}F*W0ZeliW14KSgI|l1*0_jm+0s8I)-W
zzLMgI&<$Cv;5qWjZ4Zw-z<qx%$L0BexcRf4ZUwsSX7%kbi52R(X@7b8p>zN+NavdU
z_ne%OjaU&STU!<k3=A^g+qKuR-rU-9I9(Ns;ax|51~>th&G;|8ZSxT~h^6`P<Ffk(
z#xVZ@69^X%Pp9e&g5TYMQ7Vre1)$R2^YEmM{giQ<P~@p{J25nLUqcYS+r-1g#r^Yq
zf8YVYa^u5sv&X7GlK#{qfKRI~i(4s1%f`Y;m}IL9E6?0UK3DkE<EBm}RPZDpsAy!2
zWH%CkEMeBQrqs4J2dm(LlTRCAw2`}DVj1(N!~c;(QS&FQpeE1>>S~1FqG)^&6MsFa
zUkLWFGmQDyZo+aa--a{!Hn+E3b)V0ADK7#kA3=~$3AF5hgsE7FCF2{XSp-IV4L87Q
zrhJRA{T4w(Lt}Dk%Aud35I%Fj=VqxFU|9)iX~b8Wp#J-GvvRU;TyHhQ!fm&#U}#9;
z;Nb8&VC6O|elI?NW}pB#q3HK-@OoD`3ydq!VK_FA^RKi@nY$lQ1uZA(U61Cwdnx?}
z`;!>?9#1=AmLzOeq5fIhH^<E<_hdW5Ii;mc@d*ic*A4AMY2UK@fP?sS5o76Bt{fU0
zj%*(niFU1d6%*rG)f!x+C4H0XJ~QB&OdA?oZQ)ritCuFA6UJFll!^?h3aM<l3Cbk}
z1tD1iZXeACi2%ta1#nG6Ok85(rYAWe;m$`YLx*nsmh*l_g)IIgx@>pq-~D7fOU`OY
zP76qs-cW&)md<z@d09n8)9F$jPVRkyHh{C%*VjRSklnmLsQA_$fsankp9lcn64$U#
z3})!hPH%Edq_VOy`utQ8KjHR=rIW|ukrm#XyRP2e8tb`_%RV;-1WejcI4nUZfRTi!
zj~GkPX(&kbB9F3bOdXAK1&MAE_Uw~??+u~Cn>;Gj!EB)nfHt!|_ZdWy2p@N4MAjo1
z%inTMwGZ8=n#8QFygc)O4rVHV{2m?5sjI64SbB7Pe0=L!e`;!Kb8{2m%ziB+pYHK|
z`PP`4;3)_U-0zYSv=7+bS#vetYQP<^*T+j}qEb=_0<MRkw^UUA$;ru(jm4splAldY
z>96by1a0gqp8mQcY7&*8`StZ+rigEhhsw8=h~NcBE?MU0kC0*{;5U(}s9PS-2U>2|
zBVUolVWTGwNK^H%OII^SBLJ4aYVCF)6H|E|r~yGCM)@!-aIy)&;p%HwMkTP0#vhf1
zuGDq)^oRkl16ZF?hQj05jKkdA+^e2YNaqY!Q{wA3T}Mks!K1aGF>qrC@UlQ5?QbTZ
z6Fnm%oO4O?t9<RFNx3E8QL?dN281>3D`L%>#BM43-K*`=*&$;nV=&Frc5U-Nky#ZC
zBzxL-N$86!kG%ho>iWSa2tYm{PGpso%m7WC>3!a3z4#}ttE($JTem%z^+ni|+zlfj
zZ3ep7ygEeLG5-Q(Hj+8H9iR;4dBGZPqBI+fU3TzFe|dhRDTE=yxOdKSuPT7A7E=`a
z8DNNTx@=i_c{DkOXCTCh*GzY_YB|k~qRRa9H}`eJhPmy#q`qO+BNAAlOfqAz<M|^?
zL#~KFe*AbkNskd?7!J^it+=|9L6UHtQ;?0Md4vYu7m2~!cIfS^F8Q<f9?F!9uV_5(
zUAdwEC3rd{6(twxwb&=|=ZpcGM-)D*zu>@9B`$BGkcJ%%;vhm_>sEv0UqV2UI(T1v
z1{338|G%rZ;R1IN)&B(Weo=t4vWZF)Zv(??Pu>mL`F3`N<E4ExMFmX51^}W5*TRI%
zx?NGk9I1jHA34khPjyV!NBo|hWTm{}UR5`{{i>)|hjB(k1nTx+TIXz)NgBsD%%r4y
z>hp1VR(62FVg!zPG08^VHuM^7xAG!cP!}@MTR}#!rF5K?sZrvb!fX=o+SOlC>{`x3
zO28+tX*rrJ0cS@9gfikOkcTy9LnPVW=bv8TxnkolGqn8AI_mSo%8RS6@6D1Mhu5_=
zfLDV6BR4+S8q^<D_&qTWq_FM?tlVJ&UZEXipnY53eEgsHLP9=dDP*LUuh12U>3>NK
z<Xuz<d*Ym#Vtkc<QaU=saER#kQ!k`!U{G*ya0{R+GXXL#cZeilUI(}x!CCJ+<;!ia
zLMCrqg0gU$=|D2O)ie{Jdbcb;ddwP!s%ZaS(0u)CNC+ZeIrzyQ0NGnuTbl@IhdAKC
zfdCpfrZ0hx!(#lsZQ~Zf%q+m|woQAq0E+$tx^On7cLd0d8(sI?DJ>(@XYVXQe!pk$
zSLY}?!*6YAnFqL@pdfexR>Q&7jzD4oSL@%D`MEqMT5H&2CsL)BWMk;-mGG%G`9jp}
z1m-qTMf6>%LvRmI)hibo-CD*=JGqUajst^w-sL$0ZY*w#4oHAg+1N}_-UjC8)%UD+
z;VC;OMf8u1?Bu*W(!HuI5E2%}=C1^$bu7PIIG_V8uUQU2HO?zC0WPV$|CpP#^%8fY
zQ2FHZd&1QoQoBtc8}UxsUxa}H{Q>k}&$cl*iBStc|IWomCqP?iz3M$)_tUrC-QA0B
zD?W=3z2uL;Y;F4^Q6S$t(X+C;X{1sLy0dL<ZGj#y3q`hoHWpM?eg{%M1dX-j`%aFZ
z@a_}IJ@T>XFKboDp9is)#c(nK1YivO?}-$xCO7YyuV_)nu!+YfCUhDdX|O~d+3xP{
z^qt3~1kbwg!jMx8T!}{nFVF!}WYVb)nottJ7;UXl0su<1fs$`62v1g47JR<hM}8md
zf6U`Lz}#>e>-YF>RX>^4Xc+Ju|3*gWgoU#K0TmQ0e2+Yu9)Fb51c;J5VE&rDhp7X!
z-PWD92aUJ-lUe|Q&;oe4OyB!G>-pMnz}P|nMMzt^ttf%Dt_aEBmNtSL_+Xi%Tsk^V
zq(<8XnCC|exw!W%EHOGYX0I_utDHRugj^rKmVQT)mSLaHw=5|~$B%@D?o?-I_a&cX
zW$jTwH`ni64{$O7H##hIqyNe((y<ie(|nQ0&8|m|R~JoywfX}b-Z7M%=GdmDrU0FM
z*3_IXN=aGr@m%{GoawQh2Kew7<Bk9XV7;NHydWb)SV6+ni_R=#Qh%1zFfvp*(?%Ds
zj{-Hxs8@-;Rh2ew4x5kLcJUujyD&J>sxTZnUF(FQXJYyV%vJMoQzT<W%g0|&ni?7o
zJ;dMafrND$WbeHtONomUvnf+L1(2PV()X4M(8`5nWznzc0XTgaP~pU$rT;mQ%aMSr
zOU{)Dt@gaK{I7TQx77wJJj$@Az>kl1%Pp7(FQ=g*_CU2I9;iu3NWf7Cbgr?HX!~{8
zn(ZlZ`he?47`;-ta)@xiWmQwr#Cc3m$xU^fIeKb6$xThxg9OP<1gocS)F1!q3d=}p
zM*Jf=xcg;3ET9i)C3YbBXcbbSi41Dm?Y=?{E56NEPc$j|e*uh=C=YuEsJ_y4fB>lW
zU=}E5^Z<nveWB{bMnIMG0p^+y2s8$I`c**xYy)Za6;S(wsqCFJ<^Y9j*IN@O&?>IC
z-Yjp_FW4T`vO?^94)n-eCRJW338-ICcpb8XUS&EU5xW3n_1MXB`*SsYUC{(26aYPq
z0h(<uPbW@*XTJd0)#0q0Fw}WD#4tjcQX7FcD^8@192#eeR!PK8RlmDkSC#lLO7+7B
zthbo6s8O)E{;Uub3X^gqifThYJogSyAEM9Zt=aI0n9ePL_n=n><oAk&j@`P~%0ss2
z<(Q0@C&>q9=CZ=V(RY{ED>6Ah>U4^XOg~(8oCvVIT#B`}v{9cs%{Hr09$b7YYh1*;
zGr2}Ac00H*cy@1ag)9B65|6gzBdG?Lfnu#9XQL*^1vdhBA=onrmtAYf3Nnifqt6%C
zl1tJZn1NxS9<R6$8cAgjeDwwLtgW?$g<sg5vqC;R9S#K{kDbZPxnQd~y0GY$red3X
zhKn@A?!^YDEIi<@A{&_`s+Li!0{-@4sV5VwR8@{^ELOYG(NtNvL(0Iw0QeZyIxGEa
zykQt8%-SL*omJ@r{<P;w!TwD=ikwnACqn#9TsZW^zfpMF2u&Z2&3d+yei*1XgKS}$
znm5kPHGee>$kG&8zz{I1gt=mehKolbH^baCeUf^$){^fj{=s5upF~1Z{0D$Ff>v@-
zhO0`|Vr>SE%$%GP7u*lY{ryA%J&!DZgIF;J%VjAsoU+Ng;!<-Fz73{gm(ed1^}|K}
zr-+Lm7e^f*hB@v&WHM+4^**>lfO^R>&`{4oGoU~XSh<Pc|Fy_M#tUZA48a6UwEZfm
zudm9)Gn`0RF-(PNcj4<D^viINdFWVg3@9=kW$fHy3B)8R^Io_-QJ0R|?Z;0;LpTb!
zY=SsuQ3Tz8FpHol7+X9Xfda2`)ncd8Ka>#>5%dfUXF3Zb*v;?h=+xBJCnqL$A8v8M
zpNN~FcAW63@^JDq=|;dT*kCY)%oj;cAr&NgqPY*4%-Pshkou#wTDuXB9>s5=pr8O1
zzv|{@pdQ?2{u>@XzM7xK4gWGa1Z50$T~>CAwyWnumf!a7jti--i89>5&dTo&aM%Zo
zBz{O|Mx|`Hs!&$}f0+*-nJ%8Xl6i5=qk|WT)|)&WFi`x)=3g$hpZ&Eh)k`_0zpxz1
z)XnVO-fjW}{zobj7&A7azoAAj1X37-wmDxyPZm(7pVFph<-c;jE{_JqLSUKXgxP?i
z!4M6B_?{jKjQ_2##;<>@fFeK-ImH<b(#~D*m5kqRBI2T&wz|k&LJ>gx&r)j;mLDt=
z4Pj>4s5;&pALmqk2DSl-Hu`2jU5_S*JR5AO-KurqRmI=7=(u(-E~2K08Vr(>Co3?v
zhln;31{3M`S$3+PRM3H19kxlb4JEXlb*6$N6uOINoOmTWa4=RxjLt$*0<*P(ggBp>
zBJjcS!X9hgzDvwe(>e{?1o<8G9yZD7U?;&3BfkXPd2o8i0TJy`=Y8;fvOZP3<Db13
zCi9U{9{KgMUV<8`SgTw72gzafBAgiS%c11k035JSV6nlfEaa!%WMA4aH@yLd-b&!j
zNkH@q7c3LDkswmeGrpN2+F7`eP{wn3g&~-G?6>TRvv_1EC^9La4bZPsatKjarFNfN
z(W*mgwRnK0jiK|d_0F>!YAx4X9H5XC|ES};J&V>{73Dnt{v}D2M4R)&_<{>|!Xj7Y
z;_N6?m*mSZk{P_V(T^th>JU$(6k&R9gxO9yXzvYzNZZ&4ny>KMo5=5>@in6B)DPr;
z2+!-nld{2Oz^l>Fqd*6w>PP4AporoIvQl>s!b)`N$B<(34m*=j+nJLak>ODnSQNIn
ze{>uRLre)D=Tq`~;t|ah!a|lMtvDu=#avk@posy6BU3OmV+BQspO17k*og4HY*qzJ
zI@X`C7kQ|RL&t%;HuqN)^yD{V7D&y*Ti;^7gL(>ZHN)U*!$rFKYFqupq@KGrc8*0m
z3SfK>W0rw!0!^G$<5U+{rR};4$B3*I=}$qyx%U(50`xlCPafFP2DMgsk%tMWF6n&p
zs5F}1&pni*imHB3OfkqDZC7AV5D_~`$)lAK_FX`mqG159>Q8LJaZ)xhvN$P8CH%N(
z>S`%T+pB8fPm+d}(|)wn?@G5ksL$KNCd2>1jb%E;su|?vJRvxUUOs{Ap@%py)A$$w
zvb>8~LK~!vBLK5t3=Sa?FmC;d0!5Nh<01(nXCf+q+Gwcp1VemCf2+$y!yLo;+A-U~
z`=Tt8<?mfn6f<EkIfdO^?ZI6+)gpv1y{&Xr20EOJRyn<Wt%*k)_RjIPB+%T%%`_&l
zZ=tP9?);1R;mGzzJ;7%iT2%IcLHK(5{CbA`bpIWH4+@iQ7-iiGLQsvAWTGlkk}Bm-
z1RZOYRy8Y~w!BDdj6<-p1z2d+uLeO&P0_yBm6gJZv+^HKDaff_a(Hve`?E+hl0#Pj
zN>#q0NCtgZ7(4vz)^%H#?zT&mYBBzA#4pXWIqle<yB>I7tRyx|BE7x{Y$Vkzeci-z
zQ!Eo%3BKX%0P2K5Otgo>-_Umvu~F4)-(2?u&AQ>lSxJ2j4lA8)urpFtrV~_8xy4)s
zJ?$j^+0DQvT?*2)sf{%_dUE-3W^o7fS(P5Y1rafBA}FI&?h>;>UQd;lcm3gJDAI<S
zhqf!MiqyUx_dgX!oH+NlXvp^|<%ymE3zQ~)7#<lp*>?7VQ7Y63{`v2QD6|tbKeirg
za0p(V&{RbGH|*dvwv+TeTA{@!Jm2&K=ZXpl>|l8)5tYsF#(EQEp<Vd>XT#BkZd~wd
ztR%ykNPYbk_8xWx-tdCxf`o0w(+B1>Tb13rj_(iFeEM6f)E5UKmFUhTYoa5Q&{BUL
zry+9FJEJ`7^C$#ZjkU_~TEuDZN)u41qMVY*jsF}hQ$23lPt9mUhN%zKJRmfG-c^VE
zNq(G0IPKg-PYic-cU{SP5WYDT5+uwT>7&0S4j)o#Nun-g+1(AYza!MzGmk_@4dX2&
z!uS0b6OD%|(m-tK`tLPfpQk8CUGC7=-f6>ZpUX(ergBcXps(7K^ZcbL^-R|sKq4>+
zA5^g^%=_Oc#K&5IIxpcMTK#Bp<T-#>)C%l1E$J(K%sFkIqiW(Zl8ViN=8_cuSs{!C
zhF~ouqDr<BmWhwF3r7s2wA=(URngMcOHR(O3qRQ08yvD6z!*Lki-pdFVO?>ZCKXwr
zD?1z%B_@Q|6(>~s<N`gb$FdIc<@P6AqXSxLuRXQ)4!=u<^e3$(Ua<MDjrz$rj=Fy_
z=`XDDPf=r!f!tHO5i5IvUT<Nmn+zCjP(Pxwv%`&-K`9c@2z&$Z!K2xOWGLwe{74R>
zFLp)aU-GaqTBAkzz}&!u{4CN$o5>D?SpOdHjaEik4oc13A`k_0R#tA{g6I5urK_oZ
zF2qiRD<}2IEp3f<A4pw^T7eac){uPze>mPB-{R9qnK775?41L7=XIS2Za0~pkh!s#
z_|#U?dTEF;m~c7O_emqbEI;B(WmnW^st8jLQlA9V=74pO)|h=TS0x2DSg}qQ@(XKP
z#lK8(jIaD?L~eLooIx8VInjbkeK0Uk8WNlZj!(6r))<}Ho8;j!R19-{))C=)H!nuU
zP7rJkuWgrK)pLFYkGu*Z$3PYWiw};9k&Ow~FUisHEsR40kbgEPhJh?_Y=0A#aH<E>
zL#aQHHq6O0;@_Bvzf3`Oqk&x<itrh5h`Qgq3MG}pc(XLIWz3qd3Cm<9Q$Pm+C^*zB
zIJ}xDpWp^2Q0`sVmh9Kc(()C5U5t39CnJW*!^`LcrJZ6Tm}$K#Cru!nK{h0jW?V7J
zfspFFS5+eC%ccho1}Z1UXvrWBF*0MiRDjA@oD5U#-s>mrKBZzmlps!zV>{u50X2{l
znl~8ed3w>ETcQ1vVr1CeCe0|7zXqYExrzJc;tJ%z?8sslBO<QNgtT12*6f`Kb?BN@
zq|pHH_bOV>SA?~I3nZmf#29qR{Wl5=6P|}Mh6`qxJ0eLHF_M#SW%+nuD{fsnJr?y8
z?ot8GTY$xkBr?DO8_z%=Q?c>XTp$wdTvXgW`cy`Mez;MslXo+Ag}=j>QiH3h%l@Sh
z7C9sKe(WRFd@Ix%?~9&OGu#4cw5=0DgXQkip?LkXhW54Wi2A&p#psF{J<$B;lOKJ`
z*hrGx-tC1JMLe{U60Fp-WNaCiV)w@%Nz$bfLO=f_dLsnTkM51DoUF}E@#9@b`r_YX
zm~q72on>2T>teJrPHmH<wy-%dma+GVAIMe-Zt=D=C{nNn<td1?r+Dv+Kvp)KuTRdi
z)Ut;m<96kW2~;uP+#9znMU(P;laNMQQpbinmV0@8amGcl=neMyK_X*?_vnG^eO9sB
zP{lQ2IYQv2@>U(jj4o*=F~p5xDA{5`j|Ouz-Kd@WRlx0H)N)%S=>H}mlI)E#e}GzJ
z&=<qJpE?Q{Adq|Jtdz#WV5-A12iKYE(jTsnJ#yD?<J;z9qvxWsL84%PV_fLNrDH!h
zs0}3Fr^<gp1o)edYudn>?b9H4xo4OP+g2lxoy{m?a|CxLJeqZAKf&;+28T03Q52qT
zQl5-&3(EO}_~uEp6)8udP|Hv?f@P0cF)|ck&dO)~(bq-AXLF|ynnzLNOBswvOm8rl
zA`pCR+Ew#1P*m!qcGkfe*trJucNY(T6vBMy!c1PW$w5py&B4kIh*VvPmLem<G*Idv
z{xk&-nBLWjVXakt4?82!o)=f22Le24N{9c8Rkc}CF54oN+DtSbCS8qY1(rhWa?YQ7
z=*@X^w;^I)e|%~c!orD<2qU8CX*rtF*dFGLSW<x%ZWgij<8In6@`VPN??=CP&U=&3
zF2~8AdCZHac(6ws6vAA*{w{P5Ycb+yB<g3W8e3Vm2G2XXZ_sLA$CjV`%<llCM0i*i
z3>Iu5%<E>FfAF!!D~KPGRDs<zkQKcJB~TlR0=yE!v)K`=rFXT|3d+kyXIY$x_7sb#
zGm%f_`}YTEPMiv1(OgF)7?KT{i99gdGf0{kxP?CnY&<=<VxGL5>5ljAA~t%rE(Wxw
z&w*oneERN7dwFeoj!47oRa?tfy~*vpyf$%}kbBhZQ)#nY0@^ine#`O;k<jJz!IpLQ
zEKFPl17)LHZs*77UgWV!s2QwYqUu7T>Jan-Dj3Ut0ii3KL4yG6xzp!6Nveu+MHT+c
z)6aQ5<2Ly3y9KnH$^uwjHKeY=Q#88tU39_q2DJeUhi1vgy}=L?Z38t%0jx>4lUWRn
zBbrEDRcIVGZ<O#{v83HZWQhZBRz#0nnN&BI=Ec9QZttC26~R_#q!f|*sQ$nqkatx{
zL`jbRF!7DwV9!yLlN%b!<k8Zw(}1hA+xP>|f$hw3j>FrJXje|({mI(Byx>H<pPgO;
z)AzlR>_txiPdAP{Ksiwn$Pl^hB!WR3$M+W<#<j7PwJO<z{AZ#iLa~3#+lFYO<`R-w
z9hDIbx)`c=4B4R~5vK;WSHq)&q1<~a{k`XJz+%Y>O>S$_+lx0;8U0qxu8Yai2Jq9<
zEs~|lA7B*1uH7>X7gbGtbTD+vl0!zdr7|UM_x3jKHiFf38h^$+Jzt}wh_pp{VEO(%
zKT3LB$#f7rE2{!^VeltXIV3$^iWr@57B2kc*&83pwf8h%`1)pd=dD8aP?^&6)tr){
zjzNDvxo?oNQ`QL?+in(u&&;Eq9^82kB1_~p+P949)hNX2hX1L@SiK9vN9y+?m-_G!
z9nRu9-MwsdZn#kV;1|N@63ks>>YLdY-v1I+)fB~B-w|N6uyk?UaLSpO9S;tZ8p&jN
zaCwWD_n@DvrS<FO>wqt!T$1mEI-E@zC{yHT*iN}ne4wID>4L!!b0I}PT|;(PbWLyk
z@gxs?Oh<yOX7r%I`z)i@dKUie<9Q+7$Pa={wMW($?%1%_b2Ip4<F(0nWJae@FJD!(
zbW6b9wU*JPs#b2=v6<tNIqJ@Eu{GmHpZQBAE<qkN8vnh@)UYl%9jO1?2C4t0FhE%!
z&bs6ZIh=&YBu?zm=#6?mOeJ{l5LC-ns3sGCWrk5&Rp2zUaOv->7*=MZ)Hbg+Fqy~n
z`f;*6KN`F-57Z`nbl$>DZ%V<{cm-VjHLs0rI4pcyj#@eBV7tR@;*LrA>`sug=!v_M
z#g%^f%f0n4W-jG#gZ`WB_+DZ))Z3*6BZrq}s?B(pVAX+A!eWs8z>IIrJT&(*a{6Q~
zxr^{lZMxmVZ$o(c`1;I;hw}0S?!bn&%jTrB4a0u(>YitQezvZsk{RQEPLfJGaSN)A
zL(D)OzWXC;MzE&^aj?PA2-H%Ts5*Uar>he2&c6y;O+S>8zwm+g%U2f6P&RswG>?gp
z(-ZvW-<6Lz##^g~HkiA`h|~In&%*NAoKvpo>mVEH%Xfke#{#lyB?*i%#2r(;F`Iof
z0@}60k~U+lfGiNj7z{<JDk~ZoGj~xe<7^0F_Z-fv%8yPmI(erzWuAlU+%#K2)18pH
ziqrnpk0r1cB+vUNv|XPw`T~>mZw`UY`f@O7r?3`bvz9;a53rp10v{Rw6Ey^}Ao0uC
zy`yyR30;E=Yg(Vf<5UU(0X^#2^U@^&O#P-Ezo+{-f-TG^1GaZ0Fa#b<Inx+WaWLGe
z-G79$gye92h!Emt_&<Wx7l>Y&%?!*7;xya~LR(>Cg!r^|^UJ|M6_0Y$848hz9s)XL
zRut^zMf|3CII|7Zg0M=0Z42?**rUSC$tG3iue1baXB%o*#$SwSMGQ|7yo#URtY39y
zps;_I$FHF6D%aYu=g0rH+@5OGQcb&Q16O4!LqlAagp7KQHH8+~ILocRCp!QWx_iUb
z93Jare-f<L_}iTxtED|SmPdwuzxvWiXy!9Dw#`R0Sk%fZQ?A2`a+*RLk#WcG2WHz<
z_6B@LM`!0*JX0?9=zs8Xe*1iF?Fjl~_s&`eKGdizurA;e%31J05TFbtRpeUp6G;ja
zNy-xMqw5a2fyM0U1L^$9V7Vf8xuP^+pQY`>bI<%ScK+nTSbELTiz6X;1JTreo$5}o
z?yJ{~H{bK`dg^~oU&Iw6#kpeYHJ3)mGe9MbHx|iyTDlUdErBX<<FXO48x<@3QQMky
zJgt@K+~2+zw3OdM59uY{^rv{m3Bd#PT9r?tLKWpK`At+U!3l)TgP~ASc?g19W<!;n
zjF}nw^!#@Xtg$t0Um-hciE6dmC%^W;#D_a%OmZ&FkWShfwjU@C!0bnmJ=A?hV#&gm
z(fvY()poMB;>3S-GM<Bo_<df!{}c0*Ko^bJnZ~^j+o!uW^Qy-)ls;f{Rb};iYJz}e
z*>=?RF!<wVR<|~%zvh@^)@B|3@uw7(dL-I!;?s@-in86BhyyPvi~78R*5;R{$aKGd
z^3Htji|$w6xvrtB{<;7|fyzA#H5Er!h45u1H%>&N;57a6Z*6KybPpY!+~2%n{hPu0
z*q8i7mS%_2{djiIr;WkHr$=W|h_(M?>OEc8nV(Znm6;otT^WYcUctTre?Ymt?o9m%
zvVOD)&^;xx*;UV+IrU*vndnzRG1oLQ1i$ztZ3w6(Ks2zbLb)pMQE%5hQqM7D8@#W|
zhfxjKsdP!S#ZgCm>k~4J9s^!VQ7>GIQog`zgBG8Rj>*_RrW8r(2v)o6osvkhsh?DP
z8kizd9DL$Ly>D_eIkvYJNNlUQE=>Fa&`biVfUVP76!mbr?mr+8QOgxlyja;XHkp`t
zTkGO1iec2h*|3*c;qPVWWwq25L~#_nvEN-qH`K3UJe3wx)mRx!2L??TN&rsg8x{WM
zH%mgKO_R>w!;|GSi~WkJt!O-+iXoWEOBxu7>P=EB^Dtx*O~wBB=Iu$bk=Mrn(j-mW
z{}pX8(M++wa(MSC!tIpDjd_q|lk{I=TKvKVZ5Mv*LD$B+3OgeL1=TiI-8#sM=GJD+
z%#73DKi+LBi@~I;!eKaI-_z}vY8;$$Azw}b%*l&(7h|Seb%SxPBQ)m<Mu(uU;-$rQ
z+hts)uN?XD#6Onr<s`@P?45k$dCtJ?@C4(Zv&NCTtAm5z#SO5Uf@pX1w+wW3C3*hy
zJ({!xu9HEMK`WU8;Q^&zZM~13_A~UJl<TW>Ls6UQtnZzCy{=(vP&DB#cCTC9FNBLp
zbyIoDzT3UQ+KP;~JZVd1Io+Fvqes}7D2u#;INb9AUdP$J38?2eA&c-`Vb@ds-nrW{
zz-v+}TpyPaF}bD`+1$$)_$;>v!juWXggZfXrEkUJSZ^l1jGo=B{jiiJ$bwVs#{O0)
zJn|dnPSRBK!i0|gQtHz!6j~fgWQ><rgP|#eK*PwN(r;-q9W5i1wTs#WGjCVjv<_Dj
zz<X?1o7HkDdE9KSTS$8R9P!`5bKIHy6iA$$(JvxAU+^-z_M?Ok42t0;|FJ3qXXW%E
z*{)($`DNiBA0Rz01qdCUYD(NUB0r8NY<yC(A6?x4>Sw^Qa5HmZ`Uzjzw<$~H*)Cz(
z{~L!qsfZ%#0vs>DRZ?0X%Hvu<QKCBc>3A_H*nDX~cJ2?nc2dfjaBcT51)sGmI_N&*
zYHaA=bcAv#05@ppxcoPIww;EJC1k_!4E1p+)P{QXt`oA~jJ%aeBB%^6y8l8p*j*op
z$SwH*74(gzBj^8~_Rg{KWogLY?v3~0$-xs6aeUTaRwJDOmyyz6`CpUTkVAFZdwP-v
z51+h@YTGhZ?kqMrk3tTOryKW19t7xsOrUyv>SXq;Jm@JVOvQF%37%=giX9FSp@6Me
z1{t*${S2IGEwww3xi{>!X~GHq%>+|lqI3rB4vou5o?YVD<sgFD4yDm+eQ38{C;L0q
z8~ydF{KE@AtT@%A(qQ&&AA*{kLub3D!<vM=`|1-jFMONdxVGW_v5NO|mUuS#>6;Nl
zoxy+;ilKuQk>p?=@)0Bv;W)ctvYv|px9XC=L%mz_5D%PeEBTUeC*)A{>t{X+KDi8&
zm%Fo>XE=;UR5sQELa($P{ns^VUxl#z9IJ`V`WqPD*~$LAtF27oMo17ZQlmxqU>aLk
zipUB%LFip?#*NeFZ^3oUV;i2{f=&3HNxR>c6(8etem{v(xSdn~WiBM|Z=0v3c)30J
zzH<Zkmd$*c^J%P@jh({Soz{wei^ZydbMz6%0;=y8XqCf&XEQ;QZy*N`-->;1gsToc
zxE4<aktU`MN_9)<R8|L#7bEguFntFNOyy|tMk0HCu}ZA53&iRDd#|;27rB<La(b;?
z>nh~w+G~S50kap6;&A3!rZEC+Uf~GYadkTPL3;;%th_vcGX(HXpY3N@7q84NpW?Fl
z?{UKHa!c@P14(ZrqrAJ<5rr+U1A5L1cgl;tA3Dzvac|UGV^@V9s3gZGHo$q~fi7B1
z^7cX?L%_|X{!`zWiiTlKYk6%*72Jft4y#TWvKF~Oyv+mF`5LVVzWQQ@&ipM$>+MIX
z0FCI*k*r$^MuoPoe4rC+`oi4&Xpf0`##94s!NiEbp_Utso3@86r2RR-4pf<(*CJYF
zn5b35T7i`cr`|E^wU3+|tbOS@CEHdY>XM+eMPmqcaMOT0v8CV1>kN(0#O~$lja|Qr
zMC<#J{V<*Hw34S->)PFryw*&yjzoGhHeQg*VT`SQ1j$^x_fuIaKl9xQQlU4+pS8vO
z81{~f@H3Uv!_#pYhWEi*zF4f=lIZXsT$V?=M|Vd3=VIR+K6s@^kDX*z%+UHbLFVH6
zbv5yBZHt&tDVb;ti-l(h4p^AJsPvnbRG{)juA=1^!HE#F8fQHsIlMW);m;&Gp6e2D
z3mPgT<iH-xe=3cyM&xV$duKARQRM+Y+V_CcH!LEKysUnPf0v)8J(X)R!;;Xp4IqlA
zUxb}^F8dJBhZVNj{pS6>0Dx#GNu`8ICip?!`s8uA0*|550&pt;v=N~V4d{Hn*1~}t
z33qNFjxQN%Rn5g6JNL?^*+#uFb%X84B-%gT#%$|;9*&`vv=1KlI!{o;%x!B-LRwi_
z_iMKmyqQyaV}FLzsXu_}vJZ-Y2_@?@T3#BYiS?Cs@d>j)K<U$ccTR1+qGP0Fs7oD+
z;cQNo%_086YB`|4RTtr?%6C&qCD`swICSM2+w@i;3_G6kFfjT-`~J#*b%J)kzb<@U
zSks$2DjlJ431h|&6>sFM%|I2Bh>i6Di~Hiq&qv9(y3OOeq#D{7_-u~b$BjZ3vd7+7
zI%lA0W5RP0pzi|>xue{Pz4UKN56!^(HB@vv7HI@}6^E@>iPs1ZKin=h+`dKA(on@H
z&*;GR=>7ej;;8CnMLMUoFv$SvOaO8@g;FRJFdg4EC@8yqJ59xdpjX%fGfme9H8#YQ
zHuJr6YG?x9t`3-MkHiwU;0?oms}{Pi0$KCcUW+Fy8#I&*gp_v6Bddd7rLknE2t`s5
z2_%Q(89#F9i7aR=``jk=VD_&D5K9TRewFDB6Q|^C;P>#oV=<%T|DH$IfVO$8ft@or
zlrp#xOQ^JUk)@%3d5U{|e@o`Qp3mVVpOJ9GbG-FS0tt7gKa#AxPJZhU`;y)3Q8ZmQ
z>#)iy2hl`4=m&zfgcE7T&2(O3`4;gTq?^4Lar&vd4mlJQB{(PDmpz|4MSb3>Ch0Uu
zv%u(zM^-yBz7JT10r(5edq@XLK&kouZAruDB&)FvO247%3dURDUmo}kgRCuYYSCCI
zpKDq!-?#Z3%F6W*sANCYS+^u6=xP<ed|!s;6>N0hW{bxoYxCjEMXjWbwH-XZwJI7P
z|G`zkumTTW*vGPP`7oTVIcu>S%n`D#ei|R!lHo;QyLnXSMU<Y=KZMq{JGtMrr|w<t
zBGMa03;{~N6gu^Y$(iK0;#Phmz?ljtY~`_-GFuQ6{<+pX;l&3IZRW_>&j2rlg0E#G
zVtmB-^i7!j>LW11zTInwrN4IqLX#^uM3M6cKce!dVT&wiirJW0HQ!+~;pLg8*>k*8
zB2UMF0(s>|tbmOKPcHW|l}%#Za99j}T6Ebu;!Df@o=IGbSP#}fIq|7W$;n~Q?kL*b
z-S`s(S-9ef0$qr)J+o%)bvnsLIaU5@HtP!Xf*A`|YK~w`(?N@m_OiU|{2M)(#TJHU
zcFU$XKTmjT!{&Z<_VZt)-TIGTp6$(-s!Enw8tz=*QE=W0aK&8|5}uv!FCA7~&|4NK
zy1{Ha`g%1w)pZ`XO7-P$Tda+4(@@);Ao>)FtP>Hj#nfjF5Oc6)p&(?97<WN9&0+?(
zy76hUs8x)#+Y&;B7yD^s&`s8`V!uuQ@%FvX;Ud?~DrGInEp7`o>D{jLa|M##B<Uru
zGn*upF>S6vr-n@+m@$^3V<6`Qb9Uhv5KcsZh&eM^@=X9%S0C~uU{*|eF;|Ud$UfPa
zpzXZ)pd82tUT(RMK?%xMBpd?*0f}({!mLyXn~u)P0Fh><Dfmj`B7G=*F%*XgvT2E}
ztO9jOUS5%R;Yl5qU|@vB6oC<*@}1a1DpWf=m03vr{Jn2W24g0C5JmVo;fd@Wv}JYb
zWojI`<YnvX%PW@G8XKPma;fi8Ruu;Fyjd)E0Fvl#4Xvb4A$+G{M^W1Q2|7^g5f`N1
z&i56NNeYy2WK69-GS+)Ff`And!jS1}kiSbl7y5`i4F}(!=1#^~;<f#kN&oFYU4bet
z4AO<WqXDGtA#dcPM({ExncfeqbV;9Q&JZ43@Nyz-PR<HXMCkd|b6}}`v&4(@fUocK
zxo!-p0Ayh#Th>vW49kE!un`aOtYl{TENn{6wo2pYX(~J1{7?l8rFQ*vf!<^4y&xA`
zWl+EiD&fosiG-Nh#~GoT@xnQ~jcnayAA=5H&JNt)HTWgOIA8u26|phrW;JwsgW~X4
z3X9davDXgB5NrC9wXyDn+qH|Fi}8Nk`Ej(%=!~lj6}hwFkXAAQ+ML8L-rtMmJ`xOk
zw$H8C`rJ6imMR2XQyRMN2=^y{`oj=rY%PwCNgP%2cx}ePnkS{GEZX_Db~Co(2>}yO
z;n~_0X0L-k*S9M7Jaej)31#X~WVQ<TE59-WP=&YF!gH%VpmC;;%L@tweA#Ziv&+{t
zM{ih9Y`;k8V6+R^p~8(nZSEiHO!$T#bRwB?@DF?ne3t~|`eEin@)%#DuYrZ)=WU4$
zb~p}RV|`&|<~cF761}WXb}ra9-bo4P({kNCMqDxHb-FbJ#C`qsW9Z*WhDo=Yx3~5Z
zkP?!KdfUt1uf4YLI4vovUwNZLz90ddG$IH1XyDYTClS{7VjA)J{@6@-t~y5o(Ugtt
zU84}F#{drQ#Y|Ee1HHC_9s(MWQ(TR^>sFs?us@n$Y@NRJHrvC*-5}TB)tTy0Mu-7g
zr+vEgvu{N9)k<uLl*rxAd=t1^1_bA=-SS#(JJWVK56|gykI&<7H|uR@p{|-$>G*|#
zk!C00#kLhHZM%wHMPs(`l;mb|KDo#oIm)SUmql~&1~SlRX67U0mCYf5Z7jGFLcX#C
z#Vw?ag;}EC#3eO~h2P+F{TcFS9ai7I=xF>$a?iLph}}Uc?slzEtK<1hB9cNz=ZO-A
zm|)huJYidLDxO*O<csDpr8xL)0QsqZ>_@0+U9tL0q8Tg<^2t3%$GZufC~|jFB(94t
z`$gBA5cfto`Ta-o*%li#Kcn=&JQ0z#tR0kI)6mtv`!BmRsAE~T+x*ql7uwe@2$4J|
zJGTzDZs`E|REMfAjs6{u@MPf^<jh%ah$Zjaie=r1X6@%);r6=61Ao$4?u;cZ@k!Y{
z*NQe7Au%xcySBPw8pw-D<Y-UMw){|zyTNB=Nmb#a(hn3V9jEXHK1I2m&OUYuSY)F(
zU_LvJamKHcJ&v7=8Mq9}wpJ$~nxR#GScxk#<f^2qyn;K~SW4AS?e-y5+-mx!=`bK~
zbiNZ=&{#XzRG?}2?9KB{iD5UBsM#xt;MBvU<=9Qu6_wR@hraxF$MN}O<=&5jo+BKu
zXUl1FS1^Wx1M;`@>+*voYYxjIs)qg3ic#V1pNZdsvr))LFS-5XY*1!F!IIx<kp9Fx
zCQI{QeQ|P7Hbk5w<&s5;(+dkr8xu7TW-Usd2x864y?*kfXSn!%M$x*vH{gr`E03F!
z*3w0lzGCtuvdVE{$scUF{s-%p*!kY+a5Kl{W_|T=kB65M20YTWoX(|6coKlyL8y4H
zsAj!#nqsL~P@pus>!_#L4FQ#)>cW)>&JHTR7!Dzk3L(UNF;NvfVKI_7zE<${FoQ@=
z6zKk*MOAAr@)0pDfs3jzhC;;9Efm(4Uu-u2RKd+FT2XBMnhwQ=t_?ewAhEfE`D1+^
zxpovO^KMpvtrZn0V>0sig?QJc!9|2sjV;LyH(TTB>5`AfNlkVMSS(Bw{eWX~xQ3%t
zTUqRJnxW_$)jx6Tb}dQhaz`3rUFrT5syi=j)0kaBj!CZY@}W5?!t2t&EEluF?ou^;
zB~XnH-~M9JVez3|F^V*?<3?#xd@pIlO>Jhf-!!{}^aodEfJM`JB-Z(Og8T9OJDnB_
zN)segHhz(^1QgfnTd~YUCtSfx`GRjejw609E7ioEPX9(^$G7i`$=O_$9;9_7a*Ka@
zcvz}%mze)jqCp}6gBsuEdK*BEGp;9J^}Tv(_xHm$h^DkvjxsbUlw5yrr0cIb<gt7G
zn`nn04|+N4_=)-6M(c#4f4x7oHbWnwVrI|Yd48nL%j9QRkkLz(A+UQV#E@+_>>R0X
zYZ0b{2W;D-n0;oQF<{?~)V<SvYMO5b$t#6zR2t7QElo#%<cii1+k%uWYjoda8*~GP
z?^y5~u2T<IUU^Y4PzTvh*L7$U{I2E{T*Jy65hdD2_Yf=S9?_PHGzv8@rDCyT65;h=
z645!OL7Pc(+J7%^a!OD4KPr36pg6wpT@V=D9YSz-cMlE;kRZWf2=4Cggdicfy9IZL
zL4v!xy9RgI&hP$r_rtxlRm&Hso*KIQobGd8d1QAD#Eg5=yO;H9hL+`{m!sIcma4Tx
zZB{Q^+B~hc{dDF0AR+uITwUn;kKbQo{ij^qqTX%h<ig{n2gAoIYnlC`YM1p7q;2kk
z(_y>!B<J>sog!|W^Tc8ilMji1OO~fE##ZMb&oryNUk@G5x+$hvQUt<tC)R}=P}7Ev
z?}1Pz@?G-S3Q~|euu#&X4H~E7?e6E6OIsClRU$R50~L9tG~EriNKL~xKHMVC<2EA?
z%fZ`Q8z8v%7_mLG$Xbq87CfP%V~K4GHf7X_Lmaw_=fdXgC?ECl4gRZrd?(}~hfgVS
z@plD+=Vp!5MgV<#yCee4jmNH6zw@hZz?P(JH?3yPrd4$6T=RzmV3l3FuZaXAmdP)*
zb~gWJ<s!fXh!@l!T)aw%Vp_%AqKOmwTc(aG?!G&+A??5w;3~5%j)h?OAVYw%z#kJ?
zbTj*}oJR1b_6t?S(eKlg6_lW<ejU+|pl|ukplcEeYYAnhSuG2-dG;Ljd9N8t5+-Ez
zk-armw-fm-iHqw7kRN}vB213WKQENrS?LM=8J9Ydxp0yb;PSWgVFvP?f?00PJ#KG#
zeDyhq_TuPBC7M*kzt=F#3a3WLK7x+28(7A+V~2k%``|#^^XKci2h2e@;Tt;}>o3HK
zl8fffu)$rk7Pwev&0u8JA2m&fA+!HFaR#R)yHix5Zs@v;t@>`Yw}=}DoD2ejekFzR
z@{%=8`++6t?%^&MjW248w%XvYv9J0f-qOuTqbFAAm%hSg!RXOQ8+5w0t*Mba?xA}}
zZ<E)X0zfV4e&hkP6qMbTjJbYa6VCyfPSM_Z2|a6)&x3Mz-`pp8>BLv|&V57CAQh_F
zj!5iF=An?0_Wv$d5zdSqJ33c8Us@MF(%5H>ANycC>_<h}DwS^~vLOjp^(eP{)0q35
z1!R`v2*-i=h4Jg;(Lsvk&woQ^pD$-!h=oj{?AF|wRU_JBZZt5eaZC&jcE(1!l_>7@
zEq({&qi$^zuL$2^@}8G(?~b!%N$Iv#gd3Pyfpg&Oo8o|=@Q*C&b_Uw+%Kgf|@Jj&i
z=9rf?i>lv?n9R!w%UF{i2QceOs@^Rz?4Dw@z4z4ZV_e~R-Ynrkik9?3Oh@(XjEr*x
zHaaMGUGcdmkXISM`zgr3>W{Cg2B*{Cm!V%cTkboT-#FuNnoeh3jH&y*M!k+*QSg+d
zyxmM)$DwPhc`Px+G!yf_gIK<2OtZDcS|RyE`Bu5KmZqpB?_zJA`Lbu-vr{C_b6)}-
zxAa50R2~Y&^UlH}s2J9>WE8FGg>ImI>d?0X6Y9Q}+`!#yjLjvb3~I%5*I?kmcc1rM
zhsGL&^MxaZ9)b1Ur9IGZOq5Q~$`sAS@bmsA`!=7+)`eARbD=Kev$spk%beEheu{wd
zPUzFhkMCt$V6J`Pd!$OgFGHhF{TIMaJE(M{>LBO?{tIJ0PDG!a%SP=gYi2;vSFZRt
zHj9m1q)0TfL!q_OXs-H1V)O_uW+?*tPb^PI$=uZ3S2;pgF+^PhZQLF7CEbR*{gKR!
zJLwi7x^CU(@qq>%Ezz=xWROL*9y6W0dMnfN(WSaAHhNl~###*EWCQPe`h}bi9xt{p
z4dtr!8@)`D#%ahET;?Fy(>Ld11_BIrd?FvHxx9?PrkpWjY_xw`JmeIwb0<&q3&f_=
zV>9Mm5>Ux9QuK(D(>nV<vJ#3Tqs^2UcQBVAdkZg9YaO;)YXNyOnwMqDNg<0O{Qxz?
z8kV^K>1=mz9_4_J)zD|;vGlFoLI|xq*>Uft{PRuwC<$XhTa`5d&}`FnS}7h|uICk(
zutu&je}L>k*OtvI!;nEWx<?AYY39fOhQf@MhLk{@6iN!_YRpGwy)q!rk}fmq!ykO+
zt<thr<dnjVfR#4UcNGqLk0o_v3kVt)+8U$jDumOu!eC=Jvqa^r@S&}r>*^06QB)Q6
z4Jg?G9%{J+lRky4Ue@o%Syu<u`=gx`;vOxPS!|SMP0&!U;cnW~%nte9^k7S;9<Kg`
zwa%?O9_5s+>Wz-^C2i2F>s}2!?Vu430Exr)mV8NmpdZ=KMoVHKn43uPt}zj#LdZXC
z)l<(GoBp-?;lZ~>N;Rqjv)Kwv8BprLt@h#UAbNNU=jQG+NjlPG2C#l;K29$hQ$ICv
z$NN@{hHXBxnc_n#Ofr%*Z0Gr;&Irsjc%q{de+JKa9?2WtR2)G*sHI3h_CaFc8=Bjq
z_r98it=oNT3o4Ob%z#Z+iQt`;DXmSITT;>Hy0oxZSnn8F9QtVWmD5uWMbSY>v%N87
zufa5RDRn6;W0YGXY2sH(H0pAA-m6uG$EnfYr=h%(`VfM7TeAaxci*QX;r8;7uVzf6
zHlua?I_B~gxdj$DEOy>;_(f}X<y>~V$rSzfZ^Vz#0AwjBUgef$juf)YW{tS<TFP9V
zcq43L(48E&d=6Xc>WK%=9u4>NaO0XqW66Na5o_DM(rjyY#n?vS48qaR_R$(D0pW5!
zKd0Q;O%+ymCH5@fgF76%bbX6&#cryN;O(yugh{>qP}cdq=?~up8Ln&Sp>O>C-pELN
zfO3}KgAt;!d1n^6QC(lYa<d1o@An2(2@~aTcz=zazvt3+Wmg=0q*piE6fxc*3=s&^
z5);EJ4}nA6Il!+VuIeI5La;2^8a^SG;;dz>QSo`U)gh|KI5~LVT4#`DtWA_`cHg8I
zvX&9qMeb0icADE!k{UV(f0TA?{u6)52`oJr_UYa;O@B>WS<(s=RUSo>wM<mP#+;vX
zZ9}AQ@X-kP2oMXJK7<WO<duHZr0X;w8*eudz=Wk!I#Sg!x3w|atBpnv{J3eFFbJ<N
zT(aG!dcB=y2Yb(a>1eqA)VtfoN+Vp$3LVxv9Z#K4OIKSXoZ>Dkj1&#KMRGwci2Yqd
z=@-d`G4=kh4LNcO)_^*3Jo!f?LmV*WB|7`U@b9eF&MyiKSQo1Ai*%ft@SE_#3sttb
zy)OL~IGXGQtKMJgagd8VNPK}T^YwYmG|^A5YcS_t(%T&D_51xl^ak1JJA&tq6)&d;
z9B>5``bYo8S&+9hrRQN^S$&nHz<!sqyY<EVGr14uOhT=%8(zxb1@3O}VBKapc6*e~
z6meR&MZcoypIc=8r*oYu1mDX(R~ZePy$B;2=Z+k?(PKiTcG;(<20<Ces^%!8epGV<
z4Q>!`M@f*V_ez^HiUxXe|6RhbQyq|#V0&XSG|7Mi*oxn**vEhDYtq|C25BQ5s`}A-
z?mFIyJ?lJ0EsSHA(%RVqJZ_;h3kxfUb~|gU{ObDHzCt~2)5590gKQSCz$;)594&D{
zP#k>6-Qj?xSgy#LqbBB!INC}8xjG${dB;hpiBh)PPv(-|Ku+CH7l)lCq2P@?=rEX1
zO&z<kG~gc(eLB2dZ~s~0VzB{aEuh(dh!Yk_lTHlOnsQ^^_)fO(OC;$>6r`mD5#xht
z{OCk&ppgEo)2?ADr}th=7J}LyJp|mw(z-WB)Uda)<s&~*Gq4Wc2u{Yz{R#{gQ>MKL
z*7+>^@{{Y_AW-G!FG6J}tM@-DguA>fTGw&KFPiNy?Yf_Q?x4GAA@M47PXIq-mr^A=
zo)IS&2C~fZYP&QV2_<c=YDDkkPUudU-PFV{EHO3qMkL&<2fD&iz-UQV`qozQgYXyB
zRZaklZV{Vxk>ahZ-3AC)&3qSYW%gqhkV-D(wdH{A+1uGDlb1V9l@@&~_Rn&Yrz@$&
z*jLxHwb9=0mA@%IKIUNYqQH(nRE`XpI<U$gCO5iP?#5_I_1dD&$4PtY`&(0%PZAk#
zGdl6|FAPV)QjGkTbvo3)hcOzE`yQW5+(`V0k}J`dGt1Rh28m$|{AN6wrGM0h0BEfv
z=`ZUl<6VhC#MUAMz^|Fc8P#Rok2X#$Jfl1n^Yu@ixrO%Z^;YLaXFt4(tt#@=L)KOo
z-w&o7QlEP#<p*=CY^lmce55WZ|Gsk{fGYP+Ttyd~;esK*ujp6HCYp*mafz&V*v!3}
zigv1;&-UAb=n3}O0)Jvrg>d2*k7m}cc-*9!2e<n^#TKE<1ivf6tgElS-N8}_o&1-@
z=)+9tyjOE!KL|<O=+{|DS3P<f{ZK;sdnnfJSv;>#V^WfNqU{s~dH*6%AWi6Ed>?#%
zJdxLZZQ?C|J!>0W3rSLGiI4vW_W37?usU~Ds^7;9>wApf#6fUx;as>MCIWDX7*vJK
zUV^9S=z2MfG?flquz=yVt7I`cfjIY}qUz$Uhv<k%b;kQZgXj(pKBRGrL6hrqv!|u)
zlXmCckX@{wMqC9PU1p33J4*d^LYFd1xYcv-(E)&pj2CqKBRi=3>}S4DOukQZ8bIwd
z84JXGrC^yk#${O&*2~Q@F@333r%Gqwh8WKvjEcF?PRR)~QUsp}dgAq5&9AOVKWgIt
zt;WUUm8iO?DQ{v#gBOKIY`&yqVhV$2r>CU;v3$<iI;yCi!@TR?8zl1$KIMCgG4Je8
zW#T;eQF0NEjL2S8PHZkYWjQ(;(GXZ!7<32B{ctL!B{C!jBvuwG4%S%MFyAcVq)(3C
zobo1CKl_zJ?b@Nj(tl&<R->JXp_;D2hv_XjsI+#@iPj<|9o{|h0gOH&ltTL_0#Nbq
zu>$+1EHKi<2YR#w{b|gl^auc=;%#MW#-wDcO_>Lu?}4#nZZ#>Y-gs{R1QZ$<^+v~)
z@AUr^;0&fzte*j~lYo-~G*g3y<C&po8$<cmnF4v^XnHr$8-A=ENXXv~DqN1kK11cm
zvOp~)d<BWQv7xz#C3~B6;~TlUl!Cu(f=Z+8w_Fn!lM}mz7)j!A#OSF4xix!YG_UVg
z!cdEn_G-3WUuto%K421WO>ARH1vB)J2-h^llO%WzD$Tn2p<feb`?M`PUgQRxR$6@n
zBH9)E+`C^QqDV6S3<YcpnWHz)((I2%eUWEeF0a>=_}<muueK?MwFY}B^e{FKyiY6%
z`6r(Qm+AIN70wG;ltu=(GJ(;#UOjIf5`jLQ<wrkrL#mn!h`aYzEkKvM5SDq(iM<M%
zJ)0!R*<p@XQRDvlSzALPh5Pefagp`nYW!@%7uTvtP!vM3#qXTza;#9a02bwgu=k4&
z3_H}czn15E|Bh_3;%GUh^A^yY-^b@yiqYCk!R1GZgwz2q<hH8(M>#4Micy+uY+_r}
z`7pB&LlpMUtD7QjLMQ9(<q?el;JA!Z^G?C*=Pwr{b#{BG?+)ld)OkyGieMWXzD!}F
z9j3l~J3G0sWn2@3xC9g^+=1#3eSx5*tLt@z4&qCiRb33v!ixBKdfyXks*L2vv~k<L
zI&Fb8j?@8SJV3)t5NhPM#v9JQe)*|Cpuaux3F&W~+}Pw^bJY07c>UW+6FZLksql*+
zn)xCuTh^wVn1#{i$ov`d;X*W)q(hr~F23~^<S=-qI%5BhrfS0gecn+=vn4nipwv}&
zm?K7$ux%A<mff9JXXKT`4a!Rp@siu=?JXtsYHXQ{hBLP<)r;w{3;kBGM<s@0I`6{D
zTIq<YAMYckOG7x_G5aOkd?mRi_W93#7PSlJ+}YDL?iS)H%&JW%Wgt}tmh7^x@n~L#
zEfH~fl$@zxbWKdGu~nMLNBjJuO?tgZ;(OvSenLJ=rg6Ik$U*G(_c;E1L%!%4T;nH+
zd`tf5mdeE}0c^8N_!_4S@0!-!?R_D4?r4&a4)K)|!gk`q`^OC{FHaZG#M&9<)|HE6
z4H0Y$g7)OguU>FErHv}5YhS6DLS{zURFm}wHtM>Fe|aG;$}bv|l#yHg5gQbJ{aO<d
zP0hscqb**zCa&iDdOhl^2T}SxdE~|YF#{Z#2r^GSrWlk=CjJUWUE!zsa8$m-AZIbA
zy9P!e7{kiwH^U34m0mYD!9T#oC8wYXx(IQA*6D>Jaq1F&UbHI1XY5cB2Z~0Ue-db{
z#XgS@K-+d<-$of|w?cWn{7{Jq+lSRqgQ`pDFRw6@NY88E%i%l81pyOptsw7VKbGu7
zPpTHFf^6nQGM3a4mFf&_gEQ7$l3qNXC3E_Wy07IYlXJ~kpj(+SBo8Dvt!uin7va`Q
z8Qcr?x(p#W$65kH*5@mAnEPut{4pJUJZAv%sl>)|?^#|_cUvT8)<R5k7~@2uUf_!s
zl@Lj*VtvlhZEm`fnj`wyJ@w~<T?eGPhWhOEQIdu)3Y*p?(trB5tyf|Km7dh;v1{II
z&c;ijJuQB2MpiEo92++3INSf$=|*-=N%iiCuZxjPk?_jV@LcxMFfI#$$#?x#^oy9S
z-bur1w)g#I<=j27`9u1QVb)b+rGI4`2_4?6(E4!1SzH2rB>Wy~R!?!+7t~Qgg|4|j
zsILbx#;@i~zY^yi0Lr1nDTw`=n(%}|^O=S#$#;#FT-ej$A-`PxNrnq#&Z|ekx^`r^
zR}o-?ARBnMz1XG3)5-#EI?E^b$;|RguI==eTJOX0?miuXHPGh(x{@TN`AwUd6DR8a
zTC}|^fLs-jUo~doWs{Z&Q8=5xFTrU>(sI6s-s=LcC~~Og7o3|n@(mjM9y6gsgnok;
zmG=WJsz8@r^kiBV^RBoBN|LU-u06t94a|}X_z?q2uk5ZXX>D_9Th?KCL{d@=>mBO(
zE0K~XR4D11#|wg6&ym~aa*Wkg%4nFMKfq9AB0KZeXguIuxWv?b`ZeA|T5Lsmh|%LA
zc4I%*@>nvle;S~IJp1|kRc36lfZK-fWs4FYl+v!$Dj(K<{15xgd)4+)ug<RKTbdcP
zVcqVkOE3<B@HG-p(e1A9kLlK`2kqAq<eI*zoL{}P-YYJZ&lKW2?hD`up)7!w?K@t5
z()-tfi9Ec+(vXWBT`_l9H*Hzm{4kmlh3wgxoe1;vA6c6{!YGSG7B4`>3m~OZg&##w
zwRt%0a1O?rv`ls|)~myU7>r(;MYaQ?B~0_sRPR2dc1!%J<#O6ZFSqa*HgX<^V`2=Y
z{pe3)!d_1wQj~ZCUhWX=dps`8jL%UV(0A;bOZ>`}Lq1&uMVyhPWa=o)<fi6qjeYzj
zWc!9~2s2<BG!t|p?r3U$h*ADkiwURK@F188X0p7h(2M$84MrBKVESu^8}AqO^^;D^
z&?vq5*>97fj=*j@P3LkE$Z@5uc?sqHSE%VkEMr~=kM8eDPP}c%6xj;GBB{;iR7;<)
zgAIcpm2)Ya*y)VF!YbvX!(e?#wR9Owo)Hee`l7)>A-T^`py^vaXDT=1e|<Y{XAVy+
zR`UyEZtm|gm+Y3@P(UL7=Znv(5tdF>b=Jguqa@=q&(#?*9QJ~3jyN-F5>0VZR=3>)
zI6`c0b|qWivsONA#nmwk=j~uCSiDUZ<J=@i*mRAKk0t#GhBrN*7XfY~%<YPziKn3s
zyFRUaBe&PN5PepA`bbax6^`)WMZ<XplCJdUaf)ax?Mw)6b`!G@WBibKVDn$N-S%q2
zAR9db)J+ig+KtJ|1H3mmDf$Ybxc+#*RPTTEN!lY_I>{V438RwT&B0}U5*%m=M^h(Z
zm9nd3$fKtVk=H{DmQx5b@`ch_ztP{#KKV$Zb@;tBJw8c1ntaI#D*uyk)X3_O%?nlM
zf|#?d%7ln0vkwMjhIeMl@4GWoWfE;FC$buQ56PoNtcu47KfZS$KFxgFjiyqPr8+}*
zBA5LbWJ_~i9v0u3$QY%r9d|i9z)@RO3$@&i{M)TN|Eg{d=VY}*gf$h&ZLw<=9TPhQ
zs^R`|v(0Awou}fq9%_0&I+!Ut%DPTL8p!zN^i-`N*yewFoEFsd=d11Sx_p+x5`K1v
z)@V1J3Js*FN<Oy*o(!FIBeDl6-+C|V(@p#XstFOGf{!Mcf%QQ6{uRIB1a0CEo}ijq
zv4!>KHp`QM&D6%(?iUi@dL<>_w?>jAKDDDCnjiKP(N3`<^?#)VO+cXdcN^``dLE-6
zbGA2L*6YKbTtg~=N@0k%GO5_lnO=T<J-y$Z^J+{4K(&ikK;~yG?l`U=L1pecZLia@
z2lsFFS%>i;_*b3Z3w$CSzEmmtf?SnPF}ExvjxD14Kr{XfR3RYq0c2G+2mMab<x%JY
zKLGL3yEbBlo1LWhg9H%(Gq;d4{mX+@`qBBm^^bOG*lIo$o^hd$Z`HV4%c|x~LhGxT
zowt@kx+Fh~8j6BrgVM2mTATsEwTgU%0Eh)?E3T85-+2$1*BIQQi(YRGe80A~o1WSj
zyxZT%i(X7P+&W+I5YnD^)|xE90EVilK+(ZcV>FESyM;E&@~!BJ=2XW@dq@PGD-XII
zk!D=h(b-uzWah_4=&s<Wx1QEbvVO05*r2Xi6abWVg_w7j%Th?&$K}>dzNW1z<5a4O
zQYB)QlM|?Hg~I<$jr8I*w<8qyII!>5j1XP7kj@T<Sx4*%D8KTEj}lFN0rKnm2m2B0
zc0GFaV=Dy;*6Q{c?IwrOf)Ot~Pvx43B@|@td0<%hukUzW%z57rS++M&ABvC3t%@v`
zvv&a~Wa>U4LZJaKsIbwQ+<z!SMmMf+tNL<eJDg;sT&CjtwsQf06S22q@Jl!BB4q%s
z*4_`F_s+!?MTuK2Pgj)z(14^L=31)<{{E-;-2l35cSp>}T)p6y9(!w2VfU2Bi!eQ9
z#85wVE#%WhW4+d25Fg7(ZE(EMEAk`nEIb{=dI}!$5YzpK?Wpyrf3Mq1kKS#23R2?}
zBR_Tm$mK|GjHdAhABEzJF4ZZIPaa9UIOsw5M<dw>u+}g-#xviEvEu3yX@=8EVbnU&
zS(o?mR-fwUcm*p8&kO2*=-+<IFiKGmW0!!d*K=a98Hc{w1qDSDX{wg<rs#ZP87gcZ
z9n>&^W+uCRU3~^yxoL3u+K0YPxRA3jWM06%D_i&?58#D>T;g-R9bYMWuhWXic`X3d
z<q8^oaqNHf<AJk~v91o{|Hg$eg2--g-#TE1fnqLE_wHwAFBxn4(8qO=h?5zq3O`r8
ze`Fe)rxoqA=6V$Y03jKccI$AI-?jF!KUm=#Be7Q;D^uO-k#Vb8RLAn&6i;F>?y14w
zIhBHHT7H~dy6wI0yTtB$F2jrVoDd{QO@MLPA59{zWC>I0`{nmBk#=l=L5U&p_VAlY
zoK`VgLqVw|e*o0|G-M0M<%YoS191R1``y?`b{@ty_9iCN`EY_bu@t?JVu`I6Hp9xk
zr4@LQ$~$J9aY~&{o2U+cZ?3~QVitxb``u(78&IXJ2P*Z1#wgiao6XDsiABDVZ3lo3
zZSXfGm7^VgVi?+*H&fnuJ`89rb?eqqf9JRGeS|~%dk-)q@jfM^*qP;w5KHSrvGATa
zAoTZm2{meZDMKn-)B3~U_Zq(5UJqcO6VXlb*Vdbo3cu17DI(|G8j?p;&Jgrt_!g}{
zA#YU4kKg44z!CIrCgh`*qcNHt6!!L6ia%TVH9)B<h^2a4fr0M$Sh5O4=y=#dek#P{
zjt2KvYHUw(z^kIHfAktEuO}O!<=p`o)nHG+fJGg~`L8Vja_j0ynA4IN!SX(SBvN(5
zCjiSD@u{)uZRk{+{DCR;<OrofXC11=0t}D_20nh=`5_)ad>G`SR+@m)06Ye%eRKW*
zzzM|^7r>d3cX)N1lXkjer>KmF(0$ssOBw;cPEtMZ=R8mv<K!Z3vAY|MCkYD7Z0=GG
zk^asY8NJDvf1nT@>%!}g+yQFX4rhjv?(P@7N^N(NuZ>ef$%<op|6ZV<nNk<w>|ceI
z<tDWkZvRw0kSug^_(Q#)(E_P5-jkyn;F472y}J4mExDor5EhRoR_kB2bz*r1`fnu}
z<-Q@OZ5EQ|<`zae?Hx{f(<(qw0v?utJC2Wtv0L-7y+Sw5!zUxF^54D_pctMFw@@)&
z=P|}h7Kq1@guf76thU2b)yus)0Sr$XW^LFLpN8pT&UI_u_ZdYH4pt$q3EUin7~KZw
z(pS}gMIkq!$rn!Hrv4$z%C@(sioQuLwB4JgPK7Hm3oNf(&fSMIro09O9zueQh+@fn
zmt4R8_2b$e+l>G$RkzWPub`@msjjE@caB57AM{$iuKFXH>JE?V&yRn!HX=%;akCL=
zer(6b%(;gM%PWKhmQ*=em@o5ul~nNm5g}69cXTV(nbkZ-nAih!w7;HB`vuIh^zeH+
z|Aa<v&Z~PEGAP>lT)ev7c^cK2$mq(1*GVhYNFL?FW@XdEnuww;Zj2ABWNKSBx9&&H
z!)|_VxW|St0&I=Cxd5wBkX)H0b#$-YW#$1T9R}FLgtA`@F3=5EHpuJjm33V(B@e_m
z(ULHjrT)n=ps_M`&bhkSy|N(+#*1RAM$~B8uTHKwr$;|O4W<c|*x916IEiUu|JrOK
zt2Zd~&Uk;&DmP9qB^Kf>`R#tPh1{0j@ZeRuWT9!jdCAXLY?+_9TT2y1t3hL(zD%PB
z1faeh%N1CBwWq?Q^qSq?lA`#aO&e7%iUR)79j3+p&S*KASrEwR?2HVA?B-jOY2^dN
zea`YWZa;vW{w~Dd9C}V|zAG4!-A5B$p)2<Wy6&S8!6$~flM2(7Y}8*{tv|ibzl7us
zJO4qz&mwN#NY#(V0<Tr+6yHy&{NvqR1$p#rVn#Dh_$AlIBtr(b0nvs5MD9<p$-d3E
zKd1|jF~1q)qs<U}y3@sNO;8~JfE{iqd&D|XkcH40RaqEy*7SPMbK1=d(cM>M+KHP(
zYTFWyu1Vk8K&e>rowR@Gg0Tb(WYmlJndGkwG6zT59lEl_jUBhGaRn^AZ-`-55dc>-
z;~w?iB?fgkL9DlM>M<%?@>MYr4wN==kU5*(Hfi5BuLY>Gn-eo=TJNoO;KE}5ZmV90
zee`$H0M**E2i^wo^p!ne0=vG_V$zaE+<9J@av%8A8H3|z58d3KL!qKi`;!lUUax+(
zNP1(ZKVhcddcD0;-#M!A`g#V0^s<+J*oek_2EVp&ECZ7SZzuuF?`#h*5EOB5c;%KN
z${UQn*5Gk0P6(^1^W(PYaT;<$j(&HI^4}d1=Z<DvFtFd^vK^z;LEU^hwWkAuI}&w*
zfnda?NKMt;Abw%k<Q@tD19NdwVYzWg<Lk&<{=T_r?Gb?0Z+hi4u+~)LyqyXURcwVH
ztHrLd0eUTIy{Iz&9%kc2t51U(j@eX7281mZ63&yKOP1xG`#W)&sbbDo$R}`G)8kvo
z${6@_Fn`uTvxA9Gbg|vb6y=CCU7mD7h$2{qYuqHL_Mft!+1#*I>l-l9(MDb)K^9;e
zMG_{{dvpIKBq3~vl@%pZUY`|-jAXs@q8%;8I@sj2(0`Y&?XP}1LzJB4^iPm7nk;GD
zV0~G_r9EZ{KQViyb(_i8{&HdB2){*D1D&B6GYQk(np}c`ZgvT?R(=FvX1kqWtGo`7
z;)|k<%&|XPNKf`QY|Bc3K;<E)&z}gM&_aKDgVk+mdm-Jozo<elUgG-LkAGtN5H#m?
zQ$tRaMqa(a`a|+?<pEj}T_TSYBtr3PS?{VF)C|(8d~%#)97oV4sKyvAD@~FQME-6S
z6_F?a90CmAsz1k%ea<APoGk4TOwqSSUooWgJnn$VE>j@t)!ZU-k=iu;7ZgscE|wNG
zWm>seWvD4uie1zqGv!seNeSg;VYoL9<*^j?$SGK)m}Oo}#_t1q_8V9)QsP7^I|6yK
zk2k2v3cQKD1w}G2sfOk?k3hOS_xrpGgv5S#P)-i)=!+%apUuxGI)v69DectUB@V4v
z*5$M5r49%Ibrg7BSM*QG`>WoFwu2+Sfh3kgl;>}OxAgsW-s^A?LXm8aG&x?gtN|Br
zDd}SE;dG*lV-*o&7Hly-4Pl%K!-vvQ)O~K-j+%{)tJiCK!lgs^c?F`TRG1W=L<{AR
zR)vykNbB4adbk|xU#1O2FzsI^z7KAdDo39;*f$8VkZMA#393N+&%5#gvmY&#-6LAy
ze-~rg=<enZEhjYx@^^#x>R!NI!P5w;A)q=}%%mC85PF9$J=j)-Gy3wJP;K?zxX(Zg
zA|4H>Qgp>_zE`%WE#iB=L8~ociE4YmTpG>jy6?;ui6?cwAtd{U@(+h(;k#IeYHQCz
zK<73&tR{#-%YpPoyD>ptJw*W_TOcbQK!*ZM3U)j4!shQEPFD4oRwzL(P@}0r<X2}<
zuZ;I36K9x3ErV(KoJS)ENOfpQLeJ{QlnY(+qA_zQ(lxoVQ)v6qixEU*50VzLeeHsE
zgjF4w@8fOf{%ZB%{ouqF0Q8?v1Z{~uFX@N?>Q#E`9jy{e9S4t0bm};pjKsVp9xXHK
z*}$%Z4!E1_e@@Qm2D;NbyW?)Pu5PWSS80vB8)^~Vu{eS^a41Lxx*^^@5^}V?fIdMk
zguEdB1!EE9{!|zSb;jF_ZIyz8H3&Z@VdW4@;l=;y<tsR9!1k69o$H(3G$h+eprlZn
zWoD~;0;Db#Hhr$UCH9E6^fu7tEec4Y7|%YRfy1WA4hr8@+s3$T-flm;S%7U}%5oI^
zXjk#3F1{}r?|%eYSxxeB#sa!%R4{-<?KB&TZCgeR5+EeT`;Rc3J_GA}cMBh{;@x5*
zX6LKbcT?N<lh-|Rj`Os;DQ8NzNYP_;6uMS^47EHyo`b@b49i1SYR=PR#EGoPnc)^n
zg9S*`5Hdk$8VVjanLh^VDQhI8zMd@a7ZBR8f9enqOGW6OUEo9o)R8Q}*;H7o|70V2
zw%=;rxyGyWnzz0=bfsdRazyd?9+QWnwPISkfdnjv+wY*A`gJg6vpH3Aety|lM)=x_
z@Og3)0u|l)PG%I@)*6t0L2Qm8M^78sfwfH+NmOni-dIKRYJRzKK^;}x1ZY;4<KIyy
zC<p0oqx7|#V3T$9#>MM+lgXp)v*QJ|7<dMUx7D+CrI4Y@%-9mXEuuBuRk771E()Vs
ze^q!{9499Is({B-5OH<Yv-9~zdJmK2acxyjD&{L=d+2olNt!nAY-s<R3D>jv3o(7V
zC^gQvLV&2-4Ff!2PvtE}o-pMBaGWAECgxe001t`S82>R^!g<$U`U40BueBZv*2T$X
z5Ub}O84hi{{F|x=NvE(;Ao^Ohk8OZ$p|>GQmAwU6KIPO!1T;Bi-hGe<`A;X#dqbVg
z2p`5tnz|o(E!m1iQtAw*#-B{a_xA_vr0lnuRUV3#dX+=<{9U&hNQ=(Ed>p_QO$R-6
zNz6fVjU`}9i|uf^*|AE~)zqJALWkHb!9hMragOSn;lJSV8C}1uLlF^*11N>8bWg-6
z79}OZr15m5xu~FzX=huba!r61Td;}}V;@dR&&C8|L~DTGkAcPj5(poZR6b#o5`#;<
z%5Mp&GuRWQ05{Fy2>&dQ0d#4Z<t7Gw0cq6KiccJgr%r+r?0a+)n<<2&ow<gur+3H=
z@13gniBEmm{a~j@rf3B|j&recToMr;psepn>#eUHqKbNs))puj;h_>P-x#&VeJL&t
zsN+4fWI4MwMMGWUsUi>38cWs{-wsiVCflF$Am>p=fdCY(3W*NG>wtg`ER^_;38Li>
z#9y$$3MC+jHQTTTltyd2AF=z2(I=z{AtrTGG_>}b7P_ubN!heIZ}CGEoj!1RK!{Mh
z=fan&!_FnOL#D98YQg)T?yZ4<x~%(XM#lh2!FfkJZX8;~BS`xRJwG4-U>f%X6IQH8
zmg~(XxG9lWFw7nzy?Q#`P=n}>#%U1&O6E-hkTZC&&iGbU$i&YjSh)pO`r77vTla=T
zF0iwj?93v>2e;>6OOnxeC7;#L;AfiziFua8n_9p%_=sVfHiMtRXzGs`B%kW^923WW
ze3!vQa2AVSo3jm^gsgZ4!c8mC;OaJm^+&>8sfO3IPrdhe?0bgJG^z*Rt)Y==Hg{|~
zIp;*Q^Zg3srs#8L!ULpeyo@ns$L7Rm+g=Q<z^{VGx3CqCDv3}iZkPz-UEDAGS9A~w
zqyc*}0^s{@fQnukcyrwO%YnE+*hF=Kf+|{e_xljUHNSoyllFOU#3h0ZeE89R+tMxP
z&<>l`wZADC6z*i2rFge?-0YG`h_VLk8u5CrZe{@4ayS3>Fg0Y<5Pb_OBZxbH!H-;)
zJ~i~oj1Uj!8-e6uLZF7-1WC=lNO8~yn9Vg6nicKVPDhpcf_6TCs`Q=637D?-$4^x=
zr)UO<B25o~0|)qPJb*t9Wi`}5Jy0T-t@6ppjcNsS28s-1B}(7<##i`$OZt6DO^r5U
z<2%VtL2Gh=qEQTU(k^5;+PRr;0GY9aZ&Y+_cx6tv*_>Zeb*#%8=1S3G_z3y|2W`3<
z>HLS7c#M%4(_6z-=wb;7^!2)D=i1&AX-X!zLWSi?sq)Kzn%``8@#^{a;u*>w29~uZ
zdKi#>0@%*xX_#He1sI#Tjayk&_c81~qQq`af0qk(poSE1il>IV3+jIyh+~gCszj*^
z4zUo0czdN*>;*EINdF4`0{SR7Y0?doipfHjEN{%~{5{y%XMdIit*o(Lr5bB8HUQx+
zr157Zourv1^w}`RoI05%Aj1N#S4WycXt1DYd+=j7MNhvdnt-8NDRpS#t~$Y_CGsEX
z9s~B#BhcLY0n$Rhu$;X>p09_#mYcX>%C3aCnjrp9l(jj-#x7h0WqgUTHS+I^d8+Jh
zVXmkdBpWL(5~49baeV|fK;{9PmXBw0<;~n=*J8GJjP4i6BvlTZI63q2&UPi(NSzik
zAI#835_*Y2M4GyRw%?ux4K@;vbDUl5mz#gv2TukgcHv#SNK+7zCFhhHW1MCpRsVNB
zGII-X0}_XXZ^5Rl<e=li-_VLPyLo>ri<#&fFb}(1ts$U;<4T<?Hmy3VbU!csQxJ;P
zx7td;=!`|3G6xVl8)<*dBuOAdAtHqEy%n@3RC>XYib9j7p;+OITh*T1=&JK~7YBT>
zXHf?P+p)l_v|h;_2d*^F_@2%1rt0~25!o218$YLA?7LBtAU-&o7<rqAPMaA9hc{iw
zKxUkAjXKFg5%~7`QTa7jtmh-ay`AnM#$CiUTEdbnw$i$+X+X54Q|ECE4GyKb&Etqz
z*IRj*s&A3qn*Jj%ppjJO-TlPd{sHvE5E{Q+Mdc-_EN2NG&{wRt-|qW;JICA}1#tGT
z!+iS57@&DC`I}tm;wyt{X6Lq1?jNbzMVSW1Wu@LObdH3Qq#|$wBo3FgZ%AI6R4Lwm
zR*?0#(<PVJhjBG8B%pkqt5}>(v@GWk<?!x5M9DYq`7+;wHQzPowwdR(8I=Y;h-Lpf
z5pATGaL}VGEG&R?>s9J;779FQFlEaNIoGqTEwm8NdU)Q?vWQE2)pC|R-%Hr9?O&=a
zY^IjVNw$bl2U7$E__e9c4u7<<LEqklJ<@_N;Z}vBS=3H|?e@(SSdmQF?c01w%4HJU
z@xnlTV*%ZV_HTw&2fR%?>m>a%305}zD<Oy{Et#+ODVU15xjCf^OR6RWo=7)yUm1B_
zeY!z9(35B^dGg-B&{Z*LB)9~aJohBu`>7w!zseTLMW#%*8}-s1qNq!%8~bv(ipbo_
z^)5}V>4i{f=kIo1hy{+K7%n4_%r6RnH(Bcwa3hf>m5ihH&_)oe&VF&Jgsq>g6FxSy
z*8}ByJ-rPG{;ArTP0s6@-0(cn7w$olT|NJL-mcJj!{?OE=7EJ-exl#qe*Nd=>1t(G
z;IolubYrxjx0l?!&ZiCi^^oFLNykK1@{P)|-%POru0CL&jfk0HdAZQG>MApvgXP;f
zi4I;@WA)wn*ekz~G*v$gvlp6{{t=RbAA-xGNNFtR;;KBKjtU<p`T!BxG20PdBnHnn
zSAmi_+EN_A8VKq|Ozc6U$_&l>LE`DM<?=6}AJmH11>`#QAJW()6$cMw38C@P;gzSL
z5p$+=0HJ|}=);D+gS6e2A%BhxlGE5e^#ot9{#`4Bz<6Ck7YX-hqdQm>Gd@!{PUI!U
z@CI@&B26Kj@#)v9yR%@^VQ+#n;DWp2<1D|Q>Vp9(HFrX8q~C6?C&}+o+v|T;0$qu-
zayTDZ&@ob5$P^zLkh1p#dkD(&66YIBN=lm#t^y(4gssHMX%w>;Oc-cyt)Tw2z;C*Q
z4B<{%4uq0R*^ULC!~#?PVxs&ZWn6o6qP~k6`!JV0O3Ary^WZ1FgMy_+M~U%WE}7^&
z`1^;r>#Mb!9Gm%ncNSjvCXkmvxI%D&uh4m6b838Udz~Z1u=sT!gqO1ZsW1(G?{~K$
zcNKahKRmh!j_51b$#QX?bC1^dwZ3+yTA=9pO)!`=w<us0xveyw2&K)c{oFr%2c{Dy
z8p;%=(-Fsc{j-8194+(%B;-qqOBHGZtY)!q)!I_jBFS>3IXC-y{*Jk7PAino)2})6
zP!hbg?K(}GQp(%_yrb;khOd189x<i#XRA{`&nwwSAL>uxUFP6&8PJbJs5As&i+11t
zErr1oXE0e0?FD`JzpU{YkNuL(#=2`Iv0TvzXqi1_)mGj^JR{mBPo;g{Ga6n|o^l~+
zB<UX<Fhzx9SXa%_qo2(ZX?i=J-;Cc<gZjiT)T^eCj0li$zI_(0k^vGB=kyN>3_@MT
z7#pYW$zYlY@BjcPG&v<oK)X0g6}iOK2@&N|B%vj_tes84R`et!kjhQXi{`3w4b}|h
zlb~2z|G`8R*YbREg%KUse7pr3a~}EggW^jFj;#d&r$|9SJ$J7&qDb%;|L+4rlr?k1
zMww6i1@XBkMDZ#|xY<y0FiMvkVgIihr-oAAF={62?s2^lpQfi36Q0|NSkXnm1D#uZ
z1<}-0F$!ca(w}0w$15`23T(TZZ#ncW57|dU{ykK!@9($HSoT_4xJ|(5ApDTp6fqAd
z31^hWr|#@tFn(sGgoB!^ZKN~+6r6M200rkeBW{?=T*Y5&dw>6L)n>AQ9SJ|w)MCHS
zIoCKxqk!7{R3sEi#LA?9;3|{zL$UmRn1PoAfp+W+#B#Wdk+|<|Hz}_oEUoc?(|nVb
zRi7{6rWB|pIlp5F&qTW5fkZQ=$KXq3GQ;jg$VKC|aS&+IQy$uOvyt+H?irDt(9wjj
zIdH`^?O3Ty;%q;Ke=rQ2Vtb9dr3zX0MkFQDg!NV}0XdTlrmCohP-#+X9q==#(se)O
z7OVlfONab!ASb|w)V}716pH~rRu(#51rL$|aXfYit7k@YSCs02{hC+b7?#U@zA-4K
z)_93XgIx_MuFCj7{6Q~Rf2??AK~2YeHCm8hV&&i*^9ln^AsjpZY@m$;%}rCA!LbAC
zgl$M1j68CHc&q=Seqtq5g{#*a|KFzmWXBDAPa&j1cCfX10C9VBLd57qiv4xeW-0BY
zf&8cq+YR?&-~g=H0-w;}Vk}C<0JHxp)3U*P&*+^Ia_p2Sq)ALxc*Vd=-$I~9*|j1R
zWXJe!c)_$+eqY-3O+H1?lING{eq>im3oId8SrO7q!Xh;QI>7%5uQ=n=70AG_YgzE^
z()tlC&$Men)mcfC+Md76m18k>QOp@vTLyHj_3UEeDp;Sw*LMZ^))?tP4KP&1k}9WZ
z%$^M!RSr)-5QlE0_~`7!#QwrrT#sy>P#`02-X?^JOFvvj*t0aXfK8^*1)hVf;dyu<
z0B`?Und8QJT=X-Qp!sE)NK@O_nCb*IpqhuhK=4WUbWVgLbHEx_lYfwYg6AUeBB)ur
z#8}o*CiJy0-cHK(&DG2l7}6_hlcNaMa(xAvdTkiyJ|6aM5DFb-OO+ja&b2FzXI{WN
zPaIdy+LG?ct9vH8*>A9fz@qI7j8gl1n56h4ln`&U>aa<OCk89@-XDxTPKs1|DM|i!
z+=Gk^^`mc19TN(FFukZvAUk#tilV#gPpGfl>>8M|*82hP$TR_Ro4{?^<oD4IcB15*
zM#onw5fKomsb1~ERHAHtoJ0S6k2!d=kCg$hm{Qijyx<$)dx;K|#DP%vf?kRW(yb`L
ziAqSok6q1HrveCji-fI8&6Ofe!a4xD4Y7t3y&K%@+i!r?WXIq6gysfavG+K+6ep;e
z#tHGiuSE*~=S#BRQe9=;Ex`p@J*{pBLt<Jzo~E|#uv8ELV$YXM#!{98C~<NF{{-t$
zSLwH-knj`Q>dVF!fy?$VVILsn3sh*W$~bAIg1R=y?gBe*@cxd#wS=D+u%&z(PG)}`
z_{pI;U%I?qB;+KSz(GNT3jemiqOMJ}(QGF%tJL(2Hz1Z@WH!eX9sy5F*-Tj@C&jBX
zu5Sal0jv|%YDw*RX}zU}2T$0ShGAZi4FC@c2T^ht_^+&E;%z~vGtY@O{JsckPt4h&
z)(ugviA3A~nRUW?Ahjc$%_=yJ1`48mVr4MVE&)6*!E$4PdRbi>b`XZnknj7~*O8uh
z0QmktbwXvBefM`x$W?L->N)YhVez4hV8Z1D|N24nVzVrh3Aw-QTM{oUd1Nr`Sg{iZ
zb}5;P9>Mb;J!WQnWTVy=tpXfpIgf8h!9SBYB>nYl&p(!#K)J#A!5&fZ_SkbRpzmm+
zJZuYAaGB%-_A%_Anh`m}4n*xkm4X%jt;zn4_!VMqetGdKl(`ZM=iJ~rl_OfLcUa()
zdPqG~Pw0)kZ?K+<<-SU?vwpuz;m^u0Fk<Kzx`VJTCIF|dP!i`;juY#M#qe1n;kz7k
z)%<YPDulW5P8xy$`66B&Zr!*i^jS*uv%=`*0%^fa52ObQZ~^&%G8m4Tm47-r{F?LQ
zajdP-C*z+VUr^4n)G)#=5m**)3_<^f)0Bc;L&~viBdQr9Q82TfpaRH=VL_@Pw07O4
z8jfS@n?JcW%F_%F*O!yt|K}6i0@R)tRw2Y#i>T?=?Xpr4(mP+E3e@11=Id8HR}5K>
zTYKrcLX;u*wHuv{-E?=yyD}iaJ15i@CxINjU<Ml8khII>U%I*`hAw<&Cbk?PkCpsw
zCtNug<rV3z86N)yJDp`h*Y4kp!b|dTB=F~c(1l6Aqvzjp!5X{nTJkpkUmqoLz%Xm~
z{^@Ccn~*s9u}|)%raV6I&jOZP#$OsomUzSqQ^nDxnE|l4Wp{oD?7~r0=t?g(%H#j6
zz8{7Akc|F0ev1M&(f^s+#sTJ)|9=mJtB5S~GO2_Qh=OGa_{gA6Ft(i^k@wn+Vl+kE
zoYp$tRm2a)^clB&?8F1FevtY~Ul8HtNjlk=?skGzx^Fwy>IeQ5{=c1l&7-M^ZbCBo
zDq7^*&C0099Vimxf2_!X1?=ApDr0lOe3Bw1h;0XUdmF9);k-FT*Xv5{`2Mq11k9_Q
z8*TP<w)uVxJZJJJeMY=!!@!HBp`4<o<nub&2i!W$eP|nHo`fZ6dapWqA2a8}2Z|^;
zXKm76z1ObFuJl;|N5LJ<Mw`de^A($yP0A@oN`fYq<Hmg!%37)XrN<799|M5i+;z!%
zGfIKlCt?5XfJ2COqsbjqqjseooUdKGD2e-f%ni8>E-Me#s!`9eYJK31Y!10-Ljc0j
zPH0=#_hbmxa5B)}Aq0@%OwmU6%)80kJH+(8Tc5kTE2W~<D0aB}A<xxHzkS>FQ!j`P
z1g_eC4Z^&E#`bjJ)amqu#YL2?azvHgZFKRUabp}rz;-xGCAC1jAsiQ~2<iv0S1Xh#
zfU)c?d+FBEBm@BUK>dOl$Lv2w&!50QR4mg}e!p{HTav8=#^814Q4~56Mtbh})pyNh
zs3j2E!vCek;BAbh1EUT0#6<@mW&bov^iHVp`#b2pp#Nt*xbZ}+8n)5>UOzH_*%4ZK
zbt}!Bao0Gx#McY)_%YB-d5QOz);^)W$snsS92I&D?)8kL1Ni&T7s|_!@HQ4ooN^PN
z+cqOT|K_SQDI-?u>2x<CN=Hg<|J5m~xCofc{qlHEEe03*N7k3I%v6p13;uI4P$PXo
zx(Hw1!G^<H>4ZscA&eiK{$Ytn$PY~d@NS|7=J6sg-3feXOB7R0;)C|u{9l)~j)Oa3
z>Qwz@13Z9o+}xJ0-x_ZsgJpa;YW7=}8^_-^Kzp1O>Xnvqe`0)Ghe16r{&%f@Cmi+l
z&AHGV+=7)qi3K;A`>f5w?pN-uSn>LTUu^#?;9BIG*Pi?D44UYX|9Na6dQUIO8uT0k
z_s_l|1~E}6QMBEDdh&?D!m8F+M)>6qy1rU(R<X=iu?$wRgsp;V(r36qetB+_Hm+K}
z6T$I$5fe9f&A4;Mm9Ha(IElX#6wiURVH^Uj!SRC5p_=D3p-H7=_sXCnR&Sl~s{VND
zE>7>`?Ol;tN0mVT{%3mLG992eXLfm&DO$;%b(bejQ?=w-X1}cLCwi{q?=mOA1|1z0
zvfkY9stlH<xV^iAx2@_pXPf9!kZnCJQhpgb4J+w2{BJRkFG~YlP60z`S-_7RST|68
zu>W~}0SD;*PX{LUv0`~kTW+<nJibV&cy*<lejk`zU6IWRXGU~L1Kud;;~N)BM-R6>
zF#EMB(4xOa0Alp%c$GMR(~TA|FLvxb;+O?~%aG56`<N_)`tSG_$o#!HP{~zM5Sg7l
zMGIX6`ociW^9>vso=!uV^?hKU@-jMnAw<`XAht+)2WP_q>m3E<4{76s8~!CCzK>F(
zxUm}2#%bXzEG>2moRdC1GCJFr(mOO*TDBt5Sg}~<6rOPf?@0G;(i<O|vch>9>*tPv
z3l*chG??_sJac&ORuFED9cu#NupPD|D6LFWciAQ>{dvsT`0%!nI-W#%X=SCA8s26R
zrN=}`Aia~uN!TJ!eJ+j`TKvs|y$JdZP82>`4Io%G6Wt^IrLsDJb)NkWKfJ;(%P>n%
zX*8LD7E$h?8gOyoinsia4!|Y7gK*$VEC%}uvr-iQxWFi1|CxbDUy2mwC|>1G+vzE3
zpWkYoWDjQpw+K26S`i|H^}sZN{7jS#tp+*=WqB>$YHip87U`6~Q2C{dS=sSdl_dS=
zrFPuO$>`M;G7LvWm>_Map`=}i?2>-u(o$b_DhWU_&|y$);jE^qh~B5XuRMH)u~5R~
zl+*sa;PmCD-66}56qGsvZ(76iP;}ar%J8(BG<#5-($uTN#4k}^EQp(Me*uq|rPOgx
zFh4ugy*NYtxb|yczW_PqI|v}hISi#xB4Y)3WwndxY!u|dEq&XFp}h2R2KD~=Ffs}b
z7yRb~4?<HYu{c9vKHX7PD4CZs#<y=>J_@p}w1XL%TuKC)JL}Bv+%6s7uE{_7^#{yd
zuQc{3e#Yu;3d#)f*$~a*ZFzgc+i+7T@pIPB`SFyAzCuHJ&RB4Euvd*5T4e-i^}j0M
zpR!QwArNX5I@=WwPn^z5Zu*%!Q9>osB78<MhUKVe^@dL;r}Uuw1*Ll+AkLtU5+82+
zE-;*0t8h95qTWDDPbn#7oE?q}bE8mV<}a45GY1qS00$4$mxSd20%>EKs`c@vPUtJ3
zc(Cy~a6Z)97B-@sJp86kR=fi}-3r0s{@pwaGtU0$f#qcu)O&B#cGRXXKnf)a2hUXS
zitvo0Nl9rnQ7+BtKM3I*W`1JYsIVWI1tanm61D%ciGQU2FO-0n%<2WOl)#Z|dEg!T
f7bpCG9C#&DpVsvByQ$@a0)FJBm82>pz=8i4oX#2`

literal 0
HcmV?d00001

diff --git a/random files/wavelet_bad_approx.png b/random files/wavelet_bad_approx.png
new file mode 100644
index 0000000000000000000000000000000000000000..093529b6ead27ab067bc452ee474f286c1e27ef2
GIT binary patch
literal 32727
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
TG#Yyw2K<o{lNT)$hWP&vXHGCC

literal 0
HcmV?d00001

diff --git a/random files/wavelet_bad_approx_good.png b/random files/wavelet_bad_approx_good.png
new file mode 100644
index 0000000000000000000000000000000000000000..408957a1593494209dafcd7e8d6232de5a52fbba
GIT binary patch
literal 37790
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
SywMMUf#P_=)vgRfy!9WDU6Awu

literal 0
HcmV?d00001

diff --git a/random files/wavelet_bad_approx_partial.png b/random files/wavelet_bad_approx_partial.png
new file mode 100644
index 0000000000000000000000000000000000000000..d2791df7ccdbbdc3214ca9969d8ec99754559010
GIT binary patch
literal 27962
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
bZ|@u={64E<uFe4Wm|>_q)l@8l!aw{k#Q?V%

literal 0
HcmV?d00001

diff --git a/random files/wavelet_good.png b/random files/wavelet_good.png
new file mode 100644
index 0000000000000000000000000000000000000000..408957a1593494209dafcd7e8d6232de5a52fbba
GIT binary patch
literal 37790
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
SywMMUf#P_=)vgRfy!9WDU6Awu

literal 0
HcmV?d00001

diff --git a/src/__init__.py b/src/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/src/decentralizepy/compression/__init__.py b/src/decentralizepy/compression/__init__.py
new file mode 100644
index 0000000..e69de29
-- 
GitLab