From 5bba9ea5d1df12f67d9b52598e77ec7b2e65ea86 Mon Sep 17 00:00:00 2001 From: JRMeyer Date: Tue, 28 Jan 2020 07:13:15 -0800 Subject: [PATCH 1/6] Transfer-learning support --- DeepSpeech.py | 117 ++++------------- bin/run-tc-transfer.sh | 120 ++++++++++++++++++ .../russian_sample_data/alphabet.ru | 34 +++++ data/smoke_test/russian_sample_data/ru.csv | 2 + data/smoke_test/russian_sample_data/ru.wav | Bin 0 -> 181372 bytes evaluate.py | 24 ++-- util/checkpoints.py | 115 +++++++++++++++++ util/config.py | 17 +++ util/flags.py | 16 ++- util/helpers.py | 11 +- 10 files changed, 337 insertions(+), 119 deletions(-) create mode 100755 bin/run-tc-transfer.sh create mode 100644 data/smoke_test/russian_sample_data/alphabet.ru create mode 100644 data/smoke_test/russian_sample_data/ru.csv create mode 100644 data/smoke_test/russian_sample_data/ru.wav create mode 100644 util/checkpoints.py diff --git a/DeepSpeech.py b/DeepSpeech.py index d25c192b..ba4ce998 100755 --- a/DeepSpeech.py +++ b/DeepSpeech.py @@ -22,13 +22,14 @@ from ds_ctcdecoder import ctc_beam_search_decoder, Scorer from evaluate import evaluate from six.moves import zip, range from tensorflow.python.tools import freeze_graph, strip_unused_lib -from tensorflow.python.framework import errors_impl from util.config import Config, initialize_globals +from util.checkpoints import load_or_init_graph from util.feeding import create_dataset, samples_to_mfccs, audiofile_to_features from util.flags import create_flags, FLAGS +from util.helpers import check_ctcdecoder_version from util.logging import log_info, log_error, log_debug, log_progress, create_progressbar -from util.helpers import check_ctcdecoder_version; check_ctcdecoder_version() +check_ctcdecoder_version() # Graph Creation # ============== @@ -222,7 +223,7 @@ def calculate_mean_edit_distance_and_loss(iterator, dropout, reuse): # Obtain the next batch of data batch_filenames, (batch_x, batch_seq_len), batch_y = iterator.get_next() - if FLAGS.use_cudnn_rnn: + if FLAGS.train_cudnn: rnn_impl = rnn_impl_cudnn_rnn else: rnn_impl = rnn_impl_lstmblockfusedcell @@ -397,30 +398,6 @@ def log_grads_and_vars(grads_and_vars): log_variable(variable, gradient=gradient) -def try_loading(session, saver, checkpoint_filename, caption, load_step=True, log_success=True): - try: - checkpoint = tf.train.get_checkpoint_state(FLAGS.checkpoint_dir, checkpoint_filename) - if not checkpoint: - return False - checkpoint_path = checkpoint.model_checkpoint_path - saver.restore(session, checkpoint_path) - if load_step: - restored_step = session.run(tfv1.train.get_global_step()) - if log_success: - log_info('Restored variables from %s checkpoint at %s, step %d' % - (caption, checkpoint_path, restored_step)) - elif log_success: - log_info('Restored variables from %s checkpoint at %s' % (caption, checkpoint_path)) - return True - except tf.errors.InvalidArgumentError as e: - log_error(str(e)) - log_error('The checkpoint in {0} does not match the shapes of the model.' - ' Did you change alphabet.txt or the --n_hidden parameter' - ' between train runs using the same checkpoint dir? Try moving' - ' or removing the contents of {0}.'.format(checkpoint_path)) - sys.exit(1) - - def train(): do_cache_dataset = True @@ -494,76 +471,29 @@ def train(): # Checkpointing checkpoint_saver = tfv1.train.Saver(max_to_keep=FLAGS.max_to_keep) - checkpoint_path = os.path.join(FLAGS.checkpoint_dir, 'train') + checkpoint_path = os.path.join(FLAGS.save_checkpoint_dir, 'train') best_dev_saver = tfv1.train.Saver(max_to_keep=1) - best_dev_path = os.path.join(FLAGS.checkpoint_dir, 'best_dev') + best_dev_path = os.path.join(FLAGS.save_checkpoint_dir, 'best_dev') # Save flags next to checkpoints - os.makedirs(FLAGS.checkpoint_dir, exist_ok=True) - - flags_file = os.path.join(FLAGS.checkpoint_dir, 'flags.txt') + os.makedirs(FLAGS.save_checkpoint_dir, exist_ok=True) + flags_file = os.path.join(FLAGS.save_checkpoint_dir, 'flags.txt') with open(flags_file, 'w') as fout: fout.write(FLAGS.flags_into_string()) - initializer = tfv1.global_variables_initializer() - with tfv1.Session(config=Config.session_config) as session: log_debug('Session opened.') - # Loading or initializing - loaded = False - - # Initialize training from a CuDNN RNN checkpoint - if FLAGS.cudnn_checkpoint: - if FLAGS.use_cudnn_rnn: - log_error('Trying to use --cudnn_checkpoint but --use_cudnn_rnn ' - 'was specified. The --cudnn_checkpoint flag is only ' - 'needed when converting a CuDNN RNN checkpoint to ' - 'a CPU-capable graph. If your system is capable of ' - 'using CuDNN RNN, you can just specify the CuDNN RNN ' - 'checkpoint normally with --checkpoint_dir.') - sys.exit(1) - - log_info('Converting CuDNN RNN checkpoint from {}'.format(FLAGS.cudnn_checkpoint)) - ckpt = tfv1.train.load_checkpoint(FLAGS.cudnn_checkpoint) - missing_variables = [] - - # Load compatible variables from checkpoint - for v in tfv1.global_variables(): - try: - v.load(ckpt.get_tensor(v.op.name), session=session) - except tf.errors.NotFoundError: - missing_variables.append(v) - - # Check that the only missing variables are the Adam moment tensors - if any('Adam' not in v.op.name for v in missing_variables): - log_error('Tried to load a CuDNN RNN checkpoint but there were ' - 'more missing variables than just the Adam moment ' - 'tensors.') - sys.exit(1) - - # Initialize Adam moment tensors from scratch to allow use of CuDNN - # RNN checkpoints. - log_info('Initializing missing Adam moment tensors.') - init_op = tfv1.variables_initializer(missing_variables) - session.run(init_op) - loaded = True - + # Prevent further graph changes tfv1.get_default_graph().finalize() - if not loaded and FLAGS.load in ['auto', 'last']: - loaded = try_loading(session, checkpoint_saver, 'checkpoint', 'most recent') - if not loaded and FLAGS.load in ['auto', 'best']: - loaded = try_loading(session, best_dev_saver, 'best_dev_checkpoint', 'best validation') - if not loaded: - if FLAGS.load in ['auto', 'init']: - log_info('Initializing variables...') - session.run(initializer) - else: - log_error('Unable to load %s model from specified checkpoint dir' - ' - consider using load option "auto" or "init".' % FLAGS.load) - sys.exit(1) + # Load checkpoint or initialize variables + if FLAGS.load == 'auto': + method_order = ['best', 'last', 'init'] + else: + method_order = [FLAGS.load] + load_or_init_graph(session, method_order) def run_set(set_name, epoch, init_op, dataset=None): is_train = set_name == 'train' @@ -682,7 +612,7 @@ def train(): def test(): - samples = evaluate(FLAGS.test_files.split(','), create_model, try_loading) + samples = evaluate(FLAGS.test_files.split(','), create_model) if FLAGS.test_output_file: # Save decoded tuples as JSON, converting NumPy floats to Python floats json.dump(samples, open(FLAGS.test_output_file, 'w'), default=float) @@ -811,7 +741,7 @@ def export(): saver = tfv1.train.Saver() # Restore variables from training checkpoint - checkpoint = tf.train.get_checkpoint_state(FLAGS.checkpoint_dir) + checkpoint = tf.train.get_checkpoint_state(FLAGS.save_checkpoint_dir) checkpoint_path = checkpoint.model_checkpoint_path output_filename = FLAGS.export_name + '.pb' @@ -891,14 +821,11 @@ def do_single_file_inference(input_file_path): saver = tfv1.train.Saver() # Restore variables from training checkpoint - loaded = False - if not loaded and FLAGS.load in ['auto', 'last']: - loaded = try_loading(session, saver, 'checkpoint', 'most recent', load_step=False) - if not loaded and FLAGS.load in ['auto', 'best']: - loaded = try_loading(session, saver, 'best_dev_checkpoint', 'best validation', load_step=False) - if not loaded: - print('Could not load checkpoint from {}'.format(FLAGS.checkpoint_dir)) - sys.exit(1) + if FLAGS.load == 'auto': + method_order = ['best', 'last'] + else: + method_order = [FLAGS.load] + load_or_init_graph(session, method_order) features, features_len = audiofile_to_features(input_file_path) previous_state_c = np.zeros([1, Config.n_cell_dim]) diff --git a/bin/run-tc-transfer.sh b/bin/run-tc-transfer.sh new file mode 100755 index 00000000..eb127b99 --- /dev/null +++ b/bin/run-tc-transfer.sh @@ -0,0 +1,120 @@ +#!/bin/sh +''' +This bash script is for running minimum working examples +of transfer learning for continuous integration tests +to be run on Taskcluster. +''' +set -xe + +ru_csv="data/smoke_test/russian_sample_data/ru.csv" +epoch_count=$1 + +# Force only one visible device because we have a single-sample dataset +# and when trying to run on multiple devices (like GPUs), this will break +export CUDA_VISIBLE_DEVICES=0 + +echo "##### Train ENGLISH model and transfer to RUSSIAN #####" +echo "##### while iterating over loading logic #####" + +for LOAD in 'init' 'last' 'auto'; do + echo "########################################################" + echo "#### Train ENGLISH model with just --checkpoint_dir ####" + echo "########################################################" + python -u DeepSpeech.py --noshow_progressbar --noearly_stop\ + --alphabet_config_path "./data/alphabet.txt" \ + --load "$LOAD" \ + --train_files "./data/ldc93s1/ldc93s1.csv" --train_batch_size 1 \ + --dev_files "./data/ldc93s1/ldc93s1.csv" --dev_batch_size 1 \ + --test_files "./data/ldc93s1/ldc93s1.csv" --test_batch_size 1 \ + --checkpoint_dir '/tmp/ckpt/transfer/eng-cudnn' \ + --n_hidden 100 \ + --epochs 10 \ + "$@" + + echo "##############################################################################" + echo "#### Train ENGLISH model with --save_checkpoint_dir --load_checkpoint_dir ####" + echo "##############################################################################" + python -u DeepSpeech.py --noshow_progressbar --noearly_stop\ + --alphabet_config_path "./data/alphabet.txt" \ + --load "$LOAD" \ + --train_files "./data/ldc93s1/ldc93s1.csv" --train_batch_size 1 \ + --dev_files "./data/ldc93s1/ldc93s1.csv" --dev_batch_size 1 \ + --test_files "./data/ldc93s1/ldc93s1.csv" --test_batch_size 1 \ + --save_checkpoint_dir '/tmp/ckpt/transfer/eng-cudnn' \ + --load_checkpoint_dir '/tmp/ckpt/transfer/eng-cudnn' \ + --n_hidden 100 \ + --epochs 10 \ + "$@" + + echo "#################################################################################" + echo "#### Transfer Russian model with --save_checkpoint_dir --load_checkpoint_dir ####" + echo "#################################################################################" + python -u DeepSpeech.py --noshow_progressbar --noearly_stop\ + --drop_source_layers 1 \ + --alphabet_config_path "${ru_dir}/alphabet.ru" \ + --load 'last' \ + --train_files "${ru_dir}/ru.csv" --train_batch_size 1 \ + --dev_files "${ru_dir}/ru.csv" --dev_batch_size 1 \ + --test_files "${ru_dir}/ru.csv" --test_batch_size 1 \ + --save_checkpoint_dir '/tmp/ckpt/transfer/ru-cudnn' \ + --load_checkpoint_dir '/tmp/ckpt/transfer/eng-cudnn' \ + --n_hidden 100 \ + --epochs 10 \ + "$@" +done + +echo "#######################################################" +echo "##### Train ENGLISH model and transfer to RUSSIAN #####" +echo "##### while iterating over loading logic with CUDNN ###" +echo "#######################################################" + +for LOAD in 'init' 'last' 'auto'; do + echo "########################################################" + echo "#### Train ENGLISH model with just --checkpoint_dir ####" + echo "########################################################" + python -u DeepSpeech.py --noshow_progressbar --noearly_stop\ + --train_cudnn\ + --alphabet_config_path "./data/alphabet.txt" \ + --load "$LOAD" \ + --train_files "./data/ldc93s1/ldc93s1.csv" --train_batch_size 1 \ + --dev_files "./data/ldc93s1/ldc93s1.csv" --dev_batch_size 1 \ + --test_files "./data/ldc93s1/ldc93s1.csv" --test_batch_size 1 \ + --checkpoint_dir '/tmp/ckpt/transfer/eng-cudnn' \ + --n_hidden 100 \ + --epochs 10 \ + "$@" + + + echo "##############################################################################" + echo "#### Train ENGLISH model with --save_checkpoint_dir --load_checkpoint_dir ####" + echo "##############################################################################" + python -u DeepSpeech.py --noshow_progressbar --noearly_stop\ + --train_cudnn\ + --alphabet_config_path "./data/alphabet.txt" \ + --load "$LOAD" \ + --train_files "./data/ldc93s1/ldc93s1.csv" --train_batch_size 1 \ + --dev_files "./data/ldc93s1/ldc93s1.csv" --dev_batch_size 1 \ + --test_files "./data/ldc93s1/ldc93s1.csv" --test_batch_size 1 \ + --save_checkpoint_dir '/tmp/ckpt/transfer/eng-cudnn' \ + --load_checkpoint_dir '/tmp/ckpt/transfer/eng-cudnn' \ + --n_hidden 100 \ + --epochs 10 \ + "$@" + + echo "####################################################################################" + echo "#### Transfer to RUSSIAN model with --save_checkpoint_dir --load_checkpoint_dir ####" + echo "####################################################################################" + python -u DeepSpeech.py --noshow_progressbar --noearly_stop\ + --load_cudnn\ + --drop_source_layers 1 \ + --alphabet_config_path "${ru_dir}/alphabet.ru" \ + --load 'last' \ + --train_files "${ru_dir}/ru.csv" --train_batch_size 1 \ + --dev_files "${ru_dir}/ru.csv" --dev_batch_size 1 \ + --test_files "${ru_dir}/ru.csv" --test_batch_size 1 \ + --save_checkpoint_dir '/tmp/ckpt/transfer/ru-cudnn' \ + --load_checkpoint_dir '/tmp/ckpt/transfer/eng-cudnn' \ + --n_hidden 100 \ + --epochs 10 \ + "$@" +done diff --git a/data/smoke_test/russian_sample_data/alphabet.ru b/data/smoke_test/russian_sample_data/alphabet.ru new file mode 100644 index 00000000..6dc0e3cc --- /dev/null +++ b/data/smoke_test/russian_sample_data/alphabet.ru @@ -0,0 +1,34 @@ + +о +е +а +и +н +т +с +л +в +р +к +м +д +п +ы +у +б +я +ь +г +з +ч +й +ж +х +ш +ю +ц +э +щ +ф +ё +ъ diff --git a/data/smoke_test/russian_sample_data/ru.csv b/data/smoke_test/russian_sample_data/ru.csv new file mode 100644 index 00000000..18aeb63b --- /dev/null +++ b/data/smoke_test/russian_sample_data/ru.csv @@ -0,0 +1,2 @@ +wav_filename,wav_filesize,transcript +ru.wav,0,бедняга ребят на его месте должен был быть я \ No newline at end of file diff --git a/data/smoke_test/russian_sample_data/ru.wav b/data/smoke_test/russian_sample_data/ru.wav new file mode 100644 index 0000000000000000000000000000000000000000..668084e69b2337f8b5a84f64c57c1bc275870bf4 GIT binary patch literal 181372 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

3$|IGdw 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

    |5*&b7~B{Y7-um& z`_KJ9^Pk1P(tqFoRsX;AUyq@m;Sj@D1`S3{#={J`3}Fn-496H&G3YZ){;&66;6L|& z|NqA5|K|S#|M&b~_5aL&afSqjI)+&c>ln5% z>|&V8P{Ux)@cTa>!{7gx{y+S$z>vxi%V5kP4qmm*%dqr6&;O(Uw*5Q#@8Q4u|Bn4T z`R~QQn*Uu4IgF!@vL6{!jm3_CNf8=>IeSr!d4Y zf@Zeb8UHb8F}VI;`p^BJ-oI7<48f-xEcjpXKlK0n|98PBPUZAKQxLkztPVGMu&XZ(NjZ|}bo|Fr*a{V&d7&tT19#E{O=$56`Gy>EMb_%kiekM06K}!ogtOMjN$nI{QtB6b1-x={AM`A5X12I|Be6V z4C@&FFt9OhW{73rWtjWl@jt`=cmMAG7K15+Aj60M-~V$l z1TZXOc*gLWVG;u;gUA2V|JMKe`LFxGEJFc7bP!2mkN612-il;QLLOaI?P;fw!||L^^O?Y|X6J3}bLssB;` z?f&Qg-}(Rhe)q2mWvVKjnYb|Em8R{+lrzVo+x^ zW@Kc%!Z4K~p23sBkHL;Xk^yw;3h10dNrspIkATbY0*1v5n;B{uv>C4aulyhMKOEe% zW?+zD;A8my|I+_8|9Aa=`u`pHe7HmZXZ+9p?*TrmBjJDR{}uoD{=fMD#Q!7zKm0dh zC}qfE&|&!h|H}WB{}=r~{Qt{;H3mBdZ-#t^UWSPbl?;iX-P8=l3=Is;3@Hpc47>~+ z3=#}_4Biao44WBlFnnU*WqiU=!SM0_ivR2X-}?XVKQn_c!>j)%{_g;tN$~$I_@pn; zIbs|B$Nrc4|M%aYf6@Q<{+DA=VOaCu`@iG={{J`rgGv;21}=sd|8M<2{(tHJ>i@a_ zr~d!_Kb)b4A(cUf;mZFl|M&cV|6iU#mqDE2!~f&|xBOrE|LlK01{;PbhI)p21|J3^ z1{v@Nd~a{sme=lwtX--@A) zp`W3OA)6tD!IVLc;rsuG|3Ca^W?*5s{(r&$?*9}1&-;JzKPX*rGd%i#`v08&pxn~? zf5ZPv|JVO7|L^(V;=kMfivLglCos%lSi^9M;U&WzhLsF?49*Pv44~E7$NpdY|M36S z{}2B&GRQG_Ff=lpW4On#f}xTjhQWzJn?Z&_gTahJje(2dFZev)H{kOY-~IpfUztIU z;otvb|EK+*@qhXMHUAg;KvRJO6k5&-&l+f6D(^|F`|W z`v30#U;h;uK&Q$mfzKpkXSn`<#sB929sk$;KlfjlA%r23A(kPTA(VMFwI+Ok<{!jZq?f-G8y|xTG3_t&${(toUf&YvC*Zt4`U;cl_|3&{7{Ga;2;(z)7 zj{m#=%Q8eT1T$DL@G^i-(*f-rV`KpB9o1w=Wthy+!BD`^#;}LsI>Tm$I0k-(tN(ZW zKLkDz?eYJI{{~=|Mh=v22F-AhJ_5586GnnVpzy9fgy##fkBGl z{{J2Sm;7(~-}e9Te?|s7h8%`@4BHqcGx#!m`+xNRj{m3r-~E66|CaxA|L+5*h2Q^$ z8H^ab82lIv7*77r{IB%?{Xa?YSoFgGcmMM;h%*R+Prl`0Pz3LH6J~hxfA9Z||M&j? z`QMfyfFXsUl%a!RF~fX@dWKL2D+UDy4)Dp@OboC7-}-;@|2A;_U&pY5VJ1T|gB-&- z@M%cr|L^<1^8cj&9slS4-}Ha=|2_X%7+e^#8JZZ17}Ob#{_ptT|9|!WYyUy#TiyA8 z=l_%cfB$PTSTQ&=1Tn-h_%KK_Jo>-u|7!4#vycBJ7&I898Q2&k8O#}+7)%&U8NwJU z8G0C689-rw^8bwgbN+AmfBygL|BwG)`+xEO#s4?{KmY&ZKj?%$&^er-npg%rQl-pb z!eGx}!l1$+!0`G1b! z7(nOCi7}{x_i?5%6f-n2Oat!>T*y$yV8x)sV8CFj{lE18CHRCXZNf{);m(Gu-@t?En7%$Ns;K>UXJ?RL5M}_K%goE5#NY%T zQwE*btjA!%;K>lf;KHE7pa~w!jb{jAFlLZrP-Kv15Muc8|LXr!|4;mX{-1&2_kYmI zl%Sm@ir~}4WEoT$G#Qi`G#KOe|L6Xn0iU6D^Zx_z ziK(~#U;6(9e2VOI@ag66|33wvF8TOBH-j;Q6@wwz?F0*Z!XapG$o5 z|Iz<9|3CQ;I=2yY3&4;6AOFAjfBFCM|405G`G502Xgpn;!I{AWJmL=8nSJ;Fga5z( z|M?F(mH*X$&`H^#Q`*1%{{%j(7If|;$PGXLgHG@SojxuOPE9Hdp!t6Z2GFU(pmT*m zC-E_X&jS_!pD74B+xt8Ctm=2*)B1k@=Vy>&5N2Rw5M)qe0F})i48{z~3_J|K!RJbT z|Nr*?eek)X*Z<%Bf93xPaN7Ft|Lgx(|L=p#xXJ(Lf=g7;snL)BKLXzZaQ*+~|JVLs z|9|!WmH+4epZp8LAlS zz_p|ggDrywgDit211H0;|Dbb2*%^cwR2j?}bQrW43>j>}v#}}+U;khHfByfo|G)o( z&Ya~3pGL^Vz|SBFK6esyCh^z*XZ~;ezxe;s|2zJl|NjU)FUto$&l7b1@N@8e0*nkF z{)5g}1jY5=|Dp__Gu2=IfB65>{}cbu{=fDA(f_yqAz^VIECRaI;Mad126YA-25Sam za47*gixzYmD(Dn`Y4EKHTnvf~77PvyP7HbskW*?w=kbDWYT#ht0H0kd#2^TE2`d9L z1L*dFTmM0)2Y&*eHOa#8>Hp*ZH^HUBrT@>sXIg?zO$X)EGyiY?zyBX}5;f=)PzDCj zIi;X8fVseDY6~zhF@Ww+0G*5Z;XmkPO>qV(20;eUDVK~4|Nk>EfKCYh@&EsS(CLU@ z|33uRaA*IY2eCuxGt)dZag4LPm#{r`vmZ-R5fz5h4=zxw|bn(9E|^bLIa`TPH% z8xB7HXJSxfkYnHhpQsKx$sBYqg9d{pgBF7(g93vP_^f--$@OC3b~pnA3xhC&0t0B) z$Cbf{!GXaLT-u5<=zvcy@L+IaFa@9T3rg3Zysgfl#301*=l`GoT;Q{&l^Ki}+!!nw z6d0r#KqpXx&RGYY0r}@Y=w^dk|L^^O13o1hbmlkcY<7@OF8#m!|K|V4;Pdi9w+;LT z-;nU-Kj`dDZU#_41ytjL?%VkMA9UL7@BcjDQ?|vxF5zWh0*_gO&gTc6A^Qq^PBk;Q zX5wTJV2}cztq!`$19U349)l}`4TC;|A%g*f1_K}X+*8oK8lcm6dBG&i^&WpcCdnWihCgdguRj@c!~= z|3RxW3>dV*dHK_S&^;ZX7LPE4B7+fwIfE{P9D@LOHW_p>`LF+M4AKlL494Ji(qhnO zFk^6MFk=v8U}oTE5M|I}uw^h{kO8-6T^YO>tQeHRXVc0vsDo3tGJ_O@0)r$2F9Ybt zj|cy+|Gxu1zxm#O&`mBN|K9@d*nj#TbXxr%@O>7{44|IcSMUk3pp$k%XWer#fbJbp z2cM(~y2Aj}?%-hHWZ-82g(~PQT?OztyP&p$0)rs<#AMK!^Pm&wL1%V~fX~_modOR! z5nG5s37nrmDT|ARv5%>TXr5B&#~Bya!!{tr3t{tvjO0fjZ_^j-yU z2!Yz>pz?_koU1|SF@sLPWo7`y1?cXUGvIo3@Ba(`Ux06R0JS{1!8dY%PPGT!yZ}0v z9h8#+L#gypz}Utz$2|c z!MbgIXeQ!FNzR{C^vK_BW^n@$o-M zw-|#oxK3eV0G)acIx84-J~2B3sCEb4Q}OcuWAJ&q58)vJI$<4jk}s%5`u+d6|Df`T zk3p3|1zOAg_zyaHA9Nee*Z)8NgYF{u{U21KfyOM%87vu07_`7A6ALi#GKey0GH5e^ z@`*l!41*v8=rmr{O$iY;JY23{r~*`-~Zp>@`w|Bii0_W34wnPAMxaqWP@O2m0BZMuPQ?e^wF7cF=tdvV4MLzhAV9SN zsI<89|Hl72|6l$8_n(UabP|a!gCV$I0csV1?vMc82k;wwn-Ay?BG8>dm;WF9e-2!0 zUjBdK|H1#q{$Bx~Vhqa1pTKRS8{m5iK=b{N{@?fyS_`uKKj>^-P(A(we6I#*b=24Y zPyXNh|KdL*gCO{(1khQ_pu0KV{Rf>94r*b@fb+04gD?ZE)&|v6pb-1_pA+26HUgia z;mKgipuwQZpv|BSE{Q-V@`Bcg7&0g^@G^V^pFR%q<=y{p{xdL$F=#QEGUziXgKwt+ z-G(3lKI0s8zA`8sy#N0dd|weOxU>-j_dr2qILLp${yxk0@#&^ha0|1&d4f^T;MolP&rAjKffAkCo0V8CF;V8)=sAPT83_k-Xd_);QCw#MlPqx1K{{pyu3u;S((l_WX0nkkWpmX@I{6F*m z`u`{Yzy4=u0No2B1ioSA&wo%^1-b_UbR!a|ZT}8@hXlw5ZU#`x6*PkO5!~AYm1&?h z80c=EkN=d^_^MdZz0M$S2 z44@loeuM7{0oA{tv;%5G{rms%{{!%y51_L4{Qq;{HX`U&pS%B0{y+Zz(tprNM<4z} z&MXJ@twFaMfNpj9_5U^a-WkxHA)wRE&;19ToAD5OQyDh{F9WER54yt%RGWix3MT_2 z1L(FfP>V44}K*%)n>o=`w(N6S@pq43gkpE$E&DP|xGrf6!fC zpmGLOzB5Bx2rvHM{eR~_D7S&eK0x)wW<62x=}w^j2dESRozM@uj{uZM7{GT(f$m5748E-j)P?}v z7zXO$f^=zu%VkhX1hsjXz;{$IFo5zU=*<2<;8Th~z5HL`G6EE9p!5ss$$;9ypnHx$ zBM-O1WBVN7R1Fye0+oH744~TfH@J=km4IvvpmXs-H3+B_VPoJ0-!HX~14!TthluALhFKA@x&Hp$5LG5GEod%%$pFlM% zXaoRsy9ekN7|=b1pjHZK90qjb38+Ua$si3LQ50ej0@v5944`)3r~jaG4OAn5Mz%od z33TfP$j-0e+5%)E69cIC4(h3bZXe-b0NoM+YOOFZ{QD2;YySHG?f>uppuP;KRR+3^ z5Htb;avP{F0+ni@6bi~4pm7aQ+5)BWZ~sAeC4ffL9{&g3&mzR2$e_<)&tS`72|lr3 z6FhPRx@813+Na2%2OgWWWdPmsW&l2;jg#T;|Ns9%_Xqw1-$VD}Kj>7G>;IpEZ&COL zzQG5S&qcwiL1WM#!1KJIaS48Kz60G`qYbXdLE{-;{xgB^I04;dqrf1`pvVB~Lx5^~ z1qRTK4xpM`6?_K?=)M>}@Er`GxCPzm1?oqE%2-gD0=j7fbms>Tc>EGnSAs^SLANsq zGq5nc|Nj`ACP8<1fJUG}pgQK|e^46%G`8^fKPNc$xxsx# zW(H8N2b4oWeFFgoWd;KVLk1ZJ(2aM$!1tPf?tA(MF6(~&2iqUf^TYq+{OmFMdvt;8gM%Tqphl%YxcAp#BwTv!x2EKa; z#0K5}rNE%bAj1IaS%c~s7Vzncpgaz$VL&@TK=j1TuWf(x?8lVvk z$n4p(|9AdB`_I6@&j4!QLRv1ManZNnFiU58fcUgRMH*$zvutX|A+pAZV$Zx z9_Iqx&jY$u?!kXhD+F}sDd=_)P|XP{|3M`S$j_jjAE>?k;{PY`EpwnYB&eKV0;fDs zuSyC$@&LLc40OjR=$1YKmC94|FQq){-6DS`u}GGk{9ezu=o-L1ic?y|FQXMyWxzfLeE;+kQU%fBFBx|HuD7{RfR1 zfZFk(eJY^4bU-(jvM}&42r#gMXZr8`|MVZ!wgA-=ko&Vh{Vh=c@Y8?L{VJe4RQ~=4 zwcbGO0nm+ipgac}(*fNO2D(EDRGx$G5&8n|OMq^c<6;2yTS51if$ox(VE~nUp!p2Y ze4z|@+z51+6KKvw2|V`&ngNqx0NqdpQmYBR3lY>~RRfPFf=VOM&4Hl%GeI>7=$0AK z{LA70yZ-P0fBgSB@JRo?|M&l20Q1iNKLs8&yYe5@PP+@fr}iFrqy}{B7ig9n6gH2* z?WU*yLE!9KqQ=TgwJ@?dxI*AojW)Q| z2Wl;WX8%F)EdyRr0qRS>2j8=(4la8@V_K37pcDh@4T8#iP+9`@FO?W{88jIr7(nKO zat)|`3`%bb;2Q~*89*f^XuJhf4#+Y{Gf0BRs{j25^<=mhKsV=t_AG(=<^RF=8-q#% z(Cx~gTYErr8=%(Yeen3i`~S=g-@vzlf=Z7s;QJ9jg6}-O1fIPFwK+j$DCoYq$N!)G z2i+KB2=b3wH>AGDMQ)x@AXI6?QJg2shFr8&supj*N~wJPWiDo{Iy zg8_8+BPY161)5z3wIV-*NAf|pF@Z4T9>!g1 zd!QRyL3dAq${$dB6;uX%1mAQ9xbHc;zD5ZvZbVNeF&s;k4G z!T`GWRFDDG#sc{t(q09Pppkmet#aSMl#39OOP7S*b!*V0(4(2=pJB5 zjSA`mzxn?HeBb%|{~!N@Mh8JWkQWU5? z0ZOT$SsBP2GpNn*3Va7Ls04)EstGDdK)3Eb0k0qgjXZ;T`Jgfdp!S<25HZO#<-XmK)D6f_XE|Kpj%5t z8HB)VaX@1#pqK*9j)D3ZpplpF|3SCLg31$6?1JXpL8C9Ac`DF7=g+~T&DX%UE`nOP zpmrfB_X{(CdYvo`k__4mf()SEJSa7=g6C~Owt#wtAX`EA(S!PBpj!?>r2@qE@8G-9 zLE{Eo;Qlg4$f?BPh)s`T&AR9q5W6%CS z29NxLN=DE)0BE!lG@byu9}_h92+9+nvIUeUKy?{tJQ9@qK;u)O5(Cs90hNrP+W@Z z-=H?^pZ}ot6lmrJv>xEbf6(|DC?A085zq_@C`_J#*P(!JBL>aO{{0Ucz2XLsD}D#h zbb{`aehf|{ps^EB?f4p;lR)DZpjmOy2n;KO82C0*P>muD9zz9iG6FeRXYBPXFAYcD~@c+vHtN*Wq@23Tg>puMt>b-*IRY1L7(Cwk1c>-1j zMh4KxGbrvrH6N(&4w_2@-AE5=jego#k7Dvz=CTMOP)L!Ic0F}?6Q7q6HI%pmPbpJXie~B=tG8i)GGJs|*L36A; z;F=xO)AD0=mf()OTZI0L?#u+Qgu`6V!(Wor(`?+k@H^px6eDH-O52PUwsT zBg32j5C7i*ug(FDhC*&&fAjz6e^B2Ulx9J-1gJa%-P6g%0I6X?BcGtM2-Kzqt$YKu zc|heV1H+&H|NnzpQlORzDF1?52cS|HG0-ikYwOu_z51Vdi(#u|JVOP=>~NF zF=*`X`+ra?`Q?Am%;UxXr@^;7-vZAdUj2XdKd6QUxe#>EC#cN31D-*+^Zyojl@?@m z1t>N_cSeJ5dW7^#LH(xB;PFTv2GDp1=$2f52GAH0sO$jENPx;VcJNFGsICWL(7FiF z9r2*~d(hqSpct2D0QDF_-O?|*jiC=95c1oeVJ=@E4MxGMPGVvt!NS3zn&&}b5#&r- zy)iNH&E%lgBxLO13;5P^(8_AioFGID6o=dlppkmet*4+KJg77Ujc0+zNkOY$Ky$fI z|G)bG6ugEFbV>kdoEtRnf9F4Fqyn@@0F)x0{lD@5^8XwEL2X9R4db8^3^X4C%9)@U zC{PH1ZjuJI%R&AG)fu1|0+pYjauhVD2I_}_+Dx3_F?~oG4Jye%bqHuA9n>BG^{$v1 zKqG>nTY^D%OoLj3pt1-wMh$A`fkwwcc?i`12K7}ytsXW8&}=^|18AHB)LRDC(x5aC zYBO+y@0|s$Y67ip5@i6@cc8v0XnqIe3s8B-#{kN^iVT_zmJGHG`V4yDwIB8jRtyGU zwjP5V1E^&V>K%j9IcViFsJ8){#R9eIK;wNNdm!~Is7(Z!w*j>UBgGOcl{|C)zLsm;b#)d)R4Z2erB>w$BD4z&|@8SlfsPF$lqdcGz z8q~S~t)cn&A2cTn>Mwrz4;m=|m0_Tj`=C1V*MHDxE@<8s)QSSd5oj(PWG={#PvDi& zpnHq1|G)MB^#A?fGvrj|$X|6=ndo*7>iL1jLw|v9k!E24%^iT!GH5&t)B**KaK8oT zBG7yTsQv@hC!jb1wJ2B^K%;iN44|=LQ11|wE_oOv89+TGDtGWGN^!O zutBQ^LA5Vv%mZ{oya>2-1GU^itI$BB3!pgu@gEd|ptJ>QiGpUSU;e-Q|Jwh{{~v(I z*Fd9npcy;R+BndpISjgM9yHSjYLkLi3A_W}Z4O#bd;ULYKIHv>&?q!$ z<`^_HBMM$S4H_!~joX9TksrY`lAs>+@Bg52tC#;-z&Fi?i+0>m;xJzyBXJulW5xC|*FL){nrmeW3OcXq_!+ZVNQ_^7cPy z{PoX&P{{=v!v)nepj+BOEgR5iDX7*2rFGCuHE0eOR1$(lF+lo2r5h-AKz$t0{MLW) znq1HhAz|g6}E^^_oEQ zVxZa0AOG1HK=bXOb&R0-En5aN1_cID22f8Cw8r2ccx4Z$CCkA8s*^w^254>`6cV7` zDaaL|b_b{x4Y~;)l-5Cg4v-H(J>8H0@BV)T9sL1?7^qAHjU|Ix7NB?s?L-5ujRfWR zkKlPp(C8>=904@qBmlmd3$*SI)V>4R1seGT#WkpH1DX&0{vR@W1R677WB{dm(7ZUP zO(Fo^F`&#K!oa`)TETYh|I`1VJ6=HJ6>tB)`~T%XsD1(UA|dPEAY)*R4Ezkr3}y`G z3|0)FnF`SOB4`yps3!&*X92a|LG#q0^<1D8V4&9a8}Q00P>BW_O9G{ZC*al0XaAr4 z4_e(1YR|p;52{B&ITBQpJ_4_=Is5-Icn<#g|4-mKN>GUcTD1%s^-^H~jXXlq0_bjf z(99C#bTCjF0gbVM`Zu7_0?_y}XfzGfml9@BVbEqU29Im1Ge|Ii)-!=xKA_ebFL?eR z)K>$I34zAVK{LXjcCIkEYyq_o#lYiCppi6Cc?Oy{GK)rNO9S+LPpZ~x84{Ak##zsLU6lf+6)NccgC4=${ zsAUEjlLfUNL3KGO75)4F5}MlUM(YdCIr+z292Qo_z#(v293vpTC1QO z0xJ7K`4H3&28{)R`mUfB9%z&Wcg-@vN}U;cjrzG?6;_`ELA7$c}W z0o7Nao4)V=zxE%r`{C06yZ>*2@1BRGZ_t?W-T(LhKlpzeJO&8L-=KU1T3G~Y@qy;I zKqFy){)0xIKCt6SXHa2~X8`3HP`x0;0Ger)2d@_c&9;a#$b#qdBp4LIDG-zkKx@E3eMun(4)Dwu z$VSkZ2xwg!XaoR~#zAc_P>ToD-UYR0Kr`l23>*xgRwHN?GpI}ejj(~ni$U`OpxzH? z1Ot>NAZ-H{20;eU3M9~4W>BsJrFc*a4zvmzqyjWv2AUZF&8~y$CrTK5B5hYqSOfBpxpQ+W?wLkHSz@$o+>jzM(;sFVejj-atd zP+blRQBeC1G_nCI7eK3wK;zb+SxiuF`S$+_c$5G%F81L+sD}!g1qY4vf@&^M3+?lN zP{|L`e0kwBQVF3zNP~HK}U4dp{L9?Tv z)dk`VlHi^IsP!(wpbXv<4jRt@t&W!luaO3g;)3!xD5ri0=MB($BG4)&P;Uve_XMD5!J*jYEURyFhk;!V%O92Bl@lC_czcP?-X1t%BAXfND1p22jr#v;Ko_5fxCM1~el8>ZkF8&$k1O z+Jo{GXs3-DxNi*VK}axw>U7Y`DbO4+XigVY6M;v@(Kz)DETIy%u@(VJe`{zGsG#6Adf%5(>@QPp1T_T{KGpOwani07C z|JeTn|4)MF#IOH9{~uICf>v6A#za7K(4e{w)cXOIk^jMKcR_6m(3l4(P4P1*Fvu`~ zb_#;l+3PT9g4f!E!dwMBuL@dWEz2Or0Gek7&Fz6!tcWszdZwV-Re%9hzJS*IfmVls z%B{EmLE#J<8v^ak1I;1+{|{Qr4cgUm>HnGk=fLIe{r^w@gF+87b_bdZ1Fawjjnsff z0zlynYKenXfJ_4IDg({ff!Z^mbxNR~BdEO%>LWwiY@kszP-zGn!3NDrfJ#Kr{10fg zE@%xmsNW~R0IK~#V_$3xpfzR844}~n(0CXJ188IsG=>MtqoBGPw6YUatAgf=K`UKA zB?TxxL8TgKh8C1|K`j~3EI%miKt>Qjtr^e?8_--BWNrwQ_L&(#qeq~X51_t2D8GVo zB`X7@4hGG_fqE36TnfrnpmGtE!$7M7Kq=?_e^9Fvly^Yu06=S5K_dj9{?IFM%K~)z z;rstDz$=hIH<*Ifc7t~HgYq*218AKAsLlk9&Vp98g327wYAVp40+8E5eVc3GQBTMk zSdgDU?Lklr1yp*2=7m502hC7I*06z2I{=Lb-uw@mEBgrU-+^{*f!f!g+M9;~lmkG$ zDbQRLXigo}Lj|R7eg;s_2-E`u%{GF@0zhpiQ27B`mjxP^6=wjgRt2qe1?|RGU;y<@ zLA?@126^y`2GE={2Lq_R#|9q32lZw_^Yoy#yP#1@&_1NE|3TwZpfN*G9s`YlgGOjU zEg?|rA2dn@8Xo|yS_X~%fBz2}D+jHU0p0%k?*DD@SmC|@FaQ7l4_Zyc58g2bDq}!v zD1&B^ z^_oGmv>-Qv+AE;ly`c3upnYq<|AXoe(C$Rgs%+5eB2e!T6c?b890h0;8C0f%=4jshe*hju1YIYnKFIH&{>`iZum6K`C8!4o+Tjf9 ze?JA+si0B?)HZqm?umeQ_JQIQ6m~4&{XwAiD*Ja|tCD9l0g z(V&@2P#FQLuR(1HZUzwsIR+i@O|hVPBaj-94?sB)luJQ-4MFJ{v?3AI(gv0ApccjV z|DgF*(5e7X-_dp{Opw)?>5facoLCDGmPz&SJe^7jZRzHKznE>rocnTgD z0qvFpmG7Vsegv)yK|2Z|CCIP;Z~udC%YOJD)Gq^-bfCQ_pcV|M^Z>0=1hvUPZBBg# zP4I}D8G|l^HiI>T6@wOo8iO{2E`t(-G=nmO8hDQS$2v2dxhUu|YM=Kk)k0pZ`Ji4rmq$)Q$(WoK0J%7_?FVG#UV!=K;0MK;<#04FSrvkP-|uQV9xCP+10QO@Vf! zf>JERpNtHkbvK|E4`>7f)E)%2QbDO5lrKReEuiv~k3kZ=ZwgeagGM_g!07X2NW-$ zHFzJv>vupsZBSbiG@A@+@qv16ps|q8;4}{^B|szDpnf^1y#}g>L8C2@wR)hPtEvp3 z)e4|}RiL%Zpw*3U|AXo_P^|%4&jDI90ou<6>hpn4o&n9&!$u=P;lsOIk)moRpb4;Lm15{Rl z=EOm}qCk7#Ky4JzIL>?UdN$CyCQym?`adYPA>#r6|3hjj(3m^OMWD6Rpw+LS&<4%8 zf!YY5HX~@>9aL9?#^pi#4M252XeACPc0r{YXivpQ@NQ~QX#iT&0a}L+sgpo;DQL_Q zG@=9Qhk$yCpuQ_;JPb4k09sEE+S3Hu{R1jHv=|h@Gc%x-a-bO+Q0oJ<0t8fgLuw&V zo(HvdL2Vb%C?=@w1PX7^JQ*mBfqVfPa|g}Kfm%$UabD1z3uycU)DnLM-q*(sPHjRA zkdYuz%Nyit(1-&lJ%UP0(2NDBg$7y44qDX+8Z86O?1S2+pixrL%q1j!f?BI03_{?Q zWS~-(j{($^Rc4T30JUG$7(i(S)KdhtB|v=`K?cy?I(Y_A>l#$Af_jjg3``85HZUkO zKY{npg8F@5|AX4xpjli{-wU(@3pDx<8i5Dx`T(tAd;mV(0kkFq)Jg-X0`&(#D*-_> zC?KDKR!W2B6hM7_(7Z4xK0tfDUV_&Sg7*G`ax=(G&?*Pei3XsReV~!gkN-ib>i&OF zjS8xfL8%86zMxgqptZh`u?f(cT2OBmG^PP6cR*zsXnh1I&4Jbyf!2|LT7ID14#J?i zN`(QmqXX2B2aSeK_jh#;8P|*>n}lOgGvy{ zEG%drD9G)Qdg~2%cPMBbA}BS3b}4}7{y^ z2T02YR9k>jC1};EB7-Ue=!6MV26F~S273kz@JR%q)6PJv=s@lRjs1dFwt`|Cv`0jd zL5)ENyk8yE`T>nmflg!q^#(wzx0M-m7(io?;@}b-RELA=QBeH@T3rqqX9LZ-K*nJ~ zJ3>I~XF#R3H@HO%vIVqj6trFu)cyvoqXU(fFaF>A585{aYPJ9V4=RE98CV%Wt;e_j-~N9D z9(@Om1cT;DK_iBsdH}TNk_UYL2k4vt&^$k=#|j#)0FCj0Y8O!Z2-I2u_0T{&XF#nM z&{{pv%sr^Z`1e0(M-nK;K)onXpBSVXw3ZRH78lg}0*wMd($$y$klw|k|2O|%2d@nW zt(F6|mqFu$pj~~S8CK955m5aOT4@0)89*a^pgtHVw}ED9Kq(J2p9~tygQO?WDp^kO z>IYEVg2r4y?J`im^3Q+J_{WR?AOC~a`anv4P+bigDFe+TfZ9W#{RW_x0Hlm$1+VM_ zodmTAE=09k!325C9q{Ie| zm~u0KW*I>%sz9R;pt1%uCh_$@XgmqB;sG?D4mw2xG_DI8uLtEz&gRy^L7-7)P#+7l0tl2cI2b@<7ND7B&}liK@*Fhh3+ji0 z>SWN4-dq1~|G)Pi)B*+7ydV`U4B!5P*3?6GnS;*3c=rDpc(niR|7-tGfOmAC_<#QY zt^bd~vp=A-EI{XufX)a4&3fPZ4=No&XK8`ft%63fKx43=5lhf|HBdSMjpKs)6QI@^ zX!akpssNP#A-x1pJ^2f~b`n(nfl3!h+Y&Uw56ZQmauU=R291z`>Uhv7&2R9U9nktV z&}x)#;1!Xem6wnn?!*6}73rY8prHA8P<{f{*U!LfzCmsQwf`Vt0#XlZ=e`2(iUIBW z0QJ;Bv&W!v0JQE3w2lL`HbR*}7Q8M7G$Id*C28=kD^UD`)<=S7Awe^vpi%(TrvaTl z11h_p{D;g|L)xaGb{%ME=@)Qb2aUnK_z$WnL3^q}bK#IZTcB}1&^{kf3lOyC9#mR@ zT2}x5gGT>Y82A`KZBS6&0?jLedS9RsG*G$%wd6pfs-PAjNEK*S1hhvBv?f*>y!Ic| zss-&J2Zag5G*B-JG#d)4eL?x~4>*)Sbvme3FV7&uAiw|$FG$-9REB`o8wi5yP*86l z6wja$Fi^?|jaY;B%Yja)0FC&9Mw>w^{y^U2YR?olyGVA$&P<;ql%>-(jeE5I+ z|CRq2|AY2Kd;`z6f<|9Jd%!?v!+?4x@BV|%(gEdY&^}yHOPHGhGHwW}MPMsnKx;NZ z?HSOhGH4$SsFkV(J~K!YJdyxvIf2?2ppiztYm%4N{(-@E@m!Tan$ z=>#+b3MxSb!D~H0xe}DWSQtR#XP`c!9C%GXXium*_{=2{@G5Ii4GtQ+2aO?uQVuB8 zLF;KiXSad!0BFVyv|=9AiU-X%fNEAy-2-axfI{TQf6)3P(3lkH%r-s-P$~wsd_gTU z(EjyT;Ij!pVGNpI0F_-o|Fba&fqN>Tx*b$cf?BemS{zi1fku`G<>;b5y0Xn+@RJVclHcEj{ssp)Df&p~0hYSN~{0THG0cuTv<}yHY zL68xe=l?@BhE||Iz;^;29{;T*6)OnRuYn3_#^4sH6t9@jRK7sfW|{X>l8ry%|Rnjpnde9{qCS0>7Wr3P?-c8g#@)d zKywFAz&&TsJS}Kc85A3!mJg`K$-n@b<9hd>odLAA33Oi)D3^jtE_nt$1`Y5zlnM+g z44`xd+NY<_pbp+WEytkB04i^dz-JqR`l*mzwV)OfsISNeUULcRDT78SL2I@^V@04+ zA5`;zT3B!YgZk2-@O%ND{RfSp{reB<>wrcWKXwD6^6BaZR1WFMK;9d5hb2>ri#eil_q!>UgQ)vcJ z?FH)RgU*ovjbMYua6z>K=+ppEJq?Z2I|4+dyAweY! zD3^f34b)cv)mNY~4NzMEG*$uH{R1iiK;z_~{0K@B+zg;}02-b83f_$dsrx|d>Ogb< zpg9oGY#V4DHYiB52$j)FuU$TcB}O76wqPfmTX^+KQl6 zHlVdepm9vli8`P?51@H9&}=%W?E)$lK)o_h`vJ834OC`8MyNnLY(P6jK&n7vr=S&N z{Ls_;v>D78Oc?YSKs`bQ1`w15pK+nepwD0eo~H$^6;Nj|V6bMeWiVmT1)mNBnhgb= zaSA$l4|L{%5rYwf3b@4xnkN9Q!v)O@gI2hLLJgD;K)wLAuR&u?pqdbrazK7%V*s5N z2ikWE>H&cAASfMx^6@+HSn7lS5C6aT|Ls4h#{ilY1??0C&AWldL?yuck3j3xLGw1C z@lDW)8lc%ZP;CcV=LD*QxEMfvG02q^7~fX{p21eb20@n_JuJ!scF zXzU6!;{Y0e2i51G_yf%~f$CS#_z`GVI%vNtXdDPMR{=UD=Q_AY^Avn89%v0UXiN(< z5)3JWKr<Wl&!b5;LIr22eQy8r=ZpPf)v$p8+)P3W`I}NEgUF z(0Ldv44_@Rpt)~Q*)It`K^e4H6jZNqGDtG$GgvU#GZ-_-Fz_;f$^>o(3GnI7puHlX z^#S4xpm_{XD<3ptAj|+-(FB@_1Fa?pBm5jZhY6~~pF>Z$0-ZH+ z4SaG2DAYl<8mPzh7`&zwbRq(1?;a?|1sOm)+d*Lnnpp&$>;uXdpt=XNDh|}=mjs`b z0b1n&@;j(z0F{p#jJOa&tgVtw*`Wc{IuAq}~KqFD0RxxOd>?L@m z0;oQ{^8X6>fk1PEpnYMWmI~E$1g!!B^(a1r$XwDZjrUM!y0OcA`O$Ule z(CSx6iv!g6fP@w(tw35Vppit-F6$5fL7@d|gM&t%A-NDVPXrn*1N$dH8qn%3(CQp92GA%369YE`s9g?P zy9e2~16rp68hZwbg4XeZ&i4V0mGCiu<|shxmq2rjpt%1%%mf=Y5wJb~ILpc$jP z;PMExXBrZ6H~)j?nL&Lq(2VTY|DYTKnk5B|w}aMYg4VTy{0%BgKy72tY$mA13EJHY zIu{sJwt!aXfWjM8MuWzzLA45K+#WQ40_r7zdOVi{ZiK&P&P_F#beNub&hG}j4gje=In zfkw4K%T7?E`9WjGX zMFZt6(1@BG_#9CQ2GD7#pk2kFb|z@95#$3928AOiSAo(dsLlqt5>&!)F@Q$!-~Yc2 zKK%)_iykzh4VriT^#9R+(0Bo;W%l4dD7QZU4_fK^8N7}WG+zWNM?mc+(CThb?F6db zL2U|9Xn=APBY3tIw95h1lLw8yf>zIg_BcT1YeDN$L8%H<`f)RW_B?_{|K-3lr$51` zG2Q{6MgZ#DgVykMZfSiv8N@Jjr4bb^zcfsfWfOfZm+WerEsi3`l zpwo^)eK1ff7c{m98gT%P<$+FW1&!H(asjC232K9Z){!%UPxS)jbx^+_GSdf2A)q<- zC*To3(7DXd!FLOQ`j()!C}^iGXkHL>t^sH@@5BH1!DkIW0-q}as>ea)BIwLl(Aq7~ zY8+Va71Z+wjr@boThjusaRBuTK=}nU|04(9p9dNn1C8N>#=0Q+7&N*CYC(YZ41m_E zfl4P(z5%%bRC0jEA3&)DR91r8GoZCSpz%Xc`3IUA0Qm~k_6F50pt2LTRtnVT`1T)U z52!o>%|e34u|PBWpgt35?I38Z64V|7m0X~`p`g+W6ibjbnV^-Apj`@}@n6tf38*~- z+IIwM=Ynz)Xq5%1+yM0oKqn7@=6OJSXFw$$NFAu14eIlNd5 z>Y;&J*`QnpYD<7tEJ0RegLW(Y1+M`GjrxFA?|}Mwpj8&2ya}2u1j)VupTz=N84sz2 zK_wQ*MWFT(Xs-y!C7^Z+Xgw}yyc0Br2f?6m5YYJvpz#yX7#pY_0oB5w@e0t~8b}P( zYX_CQps)g!OrZ6mpq2<|dFe!|AE>LpixZFS~^fHgHk`FL}KK>9#COs<1ZiUI8by$9a81*#`O zGv}a_aY3Vfpi@Ldz&m0k!KXohR+NIyh7<&!>!k|b9|CH#fKKrN?f(Pi7f`+dt*Hf# zK!R30gJx$yJ99v%D}#1VgGRMLt9L;@0iB=)8XEzffDKx41*%=H{J-@dbS5&WeE}+A zK(pwe5$Lb~K|Lu@S_kzGK&SqKcD#W4vLIVP=?yYNEXp9y026G3fe&~6XV3>nCkpt({|I|Gy+K`k8t1{nr5aGeP<7j&93=!`Yc z92ICB57Zk5&8dQV-JlbfK=WRpJO(PaA)`*9JOavxpp_P&bMQc;@Sq$H8Y=_sHwB%l z1R8z60Up7B{vWhI3RI?n%3sj@6{tM`%Ilyq5i*7iiX+gf3(#yTXyi_r!I;66!I;4a zy#5z-Y6oZq4Cu@xBk;-4pt)1f_>Tnm4p&g^3Th#NPWI$v0L`m_#)3h4091Os_z$WV zKxr1VE)29H@)kG^fo7~gxgIoz4eHs0%0AE@IZzw_@&7mA722ScFrYDc(E1Y4Ip!C^ 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 aQmGMzMeYfA=3WOLXTy^{KqtyURtAFB=z(r> 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ⅆ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

    ;J^lC9-^_m>|4sb={(l97F5?!) zJf<&9oy;~YM_F80_p>UnWw7mH<7IbY4`mNyPh&4)4`!EOU%{ruHk0)ciztf;vmp~J zBR_-T|FD1S{xbdz`t$5}>u>Gf_kWfD(){)2=l-7?eop^c{4?|Cf}ekW#{4?`i|2Rr z@BP2I{!IA8{MYwy|KBrzHU8!QyZX=Uf9(Hd|G5~t82A`#8AX{^Fsdot)mSgGl(3kx{AFIi?8^L(X)==}Qw8H)h7g7W|C#@X{G0yw z?jN5&KYmaAE%JNjuZUmezgGP^`)lW~W50xc_y2zI`{nP`zt{Yp_xtegN57x{X85D= zXT~3kzx)5P{G0I4>%Sz!cZTbXpxbQ(Sgx|PvOZ$9V%y8+&Ax*DHM<%|1jhu9EgY*k zmT;7CuyYi#uVy>Kx|XGjIhDzWQH_D=|F6F+f9?KE{Qcoq%&+%9cl})XbIH$%Kl6Wv z{>=Y5@8|NLi+`T_srPH!Fa6)Mel!0`{&Vk7;NSUw&;9-S*XQ5*f1mz6|M&Qx_5bDn zB^eqSJ}~4m{%736RKP68vYaJ`)r##lTLSwz_W$fs952}?vs#tkCLVsWW9r)++pQOLP|4#ZR z`+wbkHHKn_r3@b#A{Zwy&R}d{oWgjK@iF6PMk}UiOkbGHnM;`OGP|%$VR^w~&6>>G zz`BTaI%^8+KbB?|J(dm3jLgAIvl!1XC^1a=f8w9qzuv!3{v`cj|I_vR=dbi%cYo&o zl>7Po$Ic%ce;oY5{IljK*RP4cbbnv|?f+-XpTB=J|JwZ3{mb*0{#=ihI?*Zf-WllkX?AE$pj{UQ4^{^zux2Y$Z$$@fe0m)0-4 zU%9{b|8o5O2I={Msi zhTH#*|8MxG_ixYNsK1hbkNk1@ll^=9FY8}PKZ}1n|Gw$__U~7}8~yn6nz`vdBO9%1NYvSr!I`iAW?dlttzj`JLO93R*# z*&W!`+11#~*fltAa@26Da&>df)1cBzh&=dXJ&6_OJ(b0+s-D$zLGtR;|E6+=RD2|&Q~1V9P8Qsu~;&f zGA{Uk|8LHpz~4>3KK`8gv+ift&;FmaKjVL@|Ge;{?1#aRkKfOK=lQYdNA=H*zr_E< z{$2d<>VHl~UZ!JA^2}9iz{xdM_V^Cq7!RXC&gh`n>miamJOJ-%}JxnZ2ri|+u?*GsDulRrOzuEt~ z{^|Yu_xIdir@y{`GJo&+_2Xyi&!0cG|2Xy|`lsx#Grx*|`~MODJMZtCzbyYm{=NU( z`&Z=e`#(Z|z5jOo75%6Ae<1@GlM=Hoiz{ma8wa}wyFU91wrOmJY)@I2v#w&5VB5-O z!v27L3ddItdCo5!=^PW;quF+|{AbExJoP{5pT=L~KefNbe&6`D`q$!LIlowcE&Unx z^VyG-A3wgI`hMg)(~lWHN`E%|TKxOXAJ2c~|LYhU8D*FXnI;6ajH{Y+&pS?enehB^u`myZC z;-4kIbbkN&ed$m5-^#x;|3>{a{QLgT&OdAa9RFkb_w(OZ{{$J57>_csvPiOiWUXa8 z#rBu&B3m$9D4Px2dDbVaTx_Lmy6lVCH8`?3ayhIyj8W^`k;Wei}fWGrONWz1ldWn9SM!EpP3^MCvQ*8f}n zpZmX7xlN} zPwVgMUl~8cejNT@^}X`@rtbki@_)|$wd?oIKga&o{5$pU$iKdSdjFpO-S)TV@0Py` z|1SJ{`u`_`3{wbmGK(hbJl378%UIjMXMAmDS;VrEsQw0Y})LZ>|N|L*u&Tt zv+ZVG&(g_U%T&$S!Z7jw)_?E*YX5Ed^YwT3@5R5~{LK9M`A6dqo*zfQAN$VrqxXm5 z&sRU+{8InZ^!L&~DTXx0ex@vDK9+u#l`M@cb}UbrE0{kpRWhkD-DaG@n8)bB_?n@e zL4{%If8GDH{|Wuu__zLV(%*)^-~X=sSNcDUA&W7G$&vXLGw3uLPnK`Y-OSgRESat_ zb}}k4zGt|_FqgrG;lzL2|I_}>|J(Ja@VEP~?4PH8O#9LE{(Jrh?O0C!m+^1iKjZ(0{?{?&GukjcW{P8;%e<7ijoFX+AJbW;-Au2U zY?&u8e_&2xdCn5Yx|{VUs|=e0+b`B7tk$gSSza;!Vd7y@X4GJ?{U7(Q;_r$-KYqvl zzWyuYm(Z`{KMQ|~{5c8@TU;a7&=h`2>zoCEE{bl(V`)~ihpZ|paOaK4$@7%ws|D66Y{X6w{+27{Bb${pm zz5Cbx-?D#-|F`|uXPCpl%9zNwlaZ4thG_?rI`cecA(lFpzbsj-$5?-{inFP)v9aA^ z?Pt|z-OJ*@vWZ!gxq|5uqXpw?1~!J&|Cj!`{M-CjJvAHl!&e+&Lj|9kQ;-@n9vtNy+Fr~g0w z|LXr=|2r`BF{Qs`~1&x<9{w@An^0)i%+`lXTuKl~^@BY6> z{vQ2%^zWI!*Z;oy%luFFpXtBAf0_T<|1JEt>)+*nul@=A_X3w;It<+m?-&9YS26x! z3}Twjbb#p&(|0CrW+i4z<^<*m%v+dmF*CBLvAD2=vv{zmuzX}*%N)(j&Af&wkco|H zCu0Gl7UMgH#SAeFk_=b=&-fqo|NXy~f8zhv|8@O)=}-0_hCl0nH~)_O?eN?EcjE7k z-$#B6{K@=t;E&MXl)r2LzWOWk&*5Lrzxn@8{`>vU>VM1s`~PhirZT)^aA0g<+|T%y zk(r5|iHV7U=`Z7V#-EJ88M&CGn6#LTm@Js|ndF#$F`i(Y!I;P>$9SHhjlqXOp5fR3 z>;E@{&Qkc_^}qIi{D0T~CjS-xOZ}Jm&;OtK|J#2T|Ly&^@!#x!4gd20Mg4RBXZTO< zpU^+ae{%mc{(1aM{WtO7#eY2i-Tv48-}V33e-DOv4DT8I8P_rLF{LoAWqQdZz^uh= z%52Q6%q+vK!Ys`!#4NAm;0aAKR56y z-97(a{}cLe{6F-6`u~#uP5*2E=l&1*@BZKBzv+Lw{~`bL{!jmZ@xLTPEW>h!rwoFO z7K{Om{*3;N35-RIt&CF`7c=f;JivH@@jT-J#*K_?85c9QF{UuuFbXi5cW#VFb&v>431!D(e5~Bel1LIkS1q>+++6)W~H~w$?588_cTDMvI zzxV%y|I_|2`@iA;_WwKoulv9B|N8&y{?GkC z{jd4o^*?BwZwlxflmA!$|N5`U;KfkNFqvTs!wrVN4DyVYjJ}M?j75xjj1`QN8RsxA zW8BGjgz-G%ZN~eIHyBSd?qS@_IE^u$(TI_S@gzepLnwnX!|VT>{ulo@`~UafiGNf6 zCI2({_vi14zmxx_{B`@Q`&a3&#$S!U>VJ*@2K~+d+wphh-wS`={N?$l|Ih7T_P-hb z4*a|G@5eud|Mvf5|F`^~_kZ{Q$Nza5%otJ``WX%~{9rISg%l=;Z%l*&sU;V%R|Cs)}{_psI z(lLuOItXG~j| zCNhC`OzAUmGreRy%D9lRjxmeTl~IK80mBl8R0b`EcmFs4uljHO|Hr>||BC+E{S*E7 z;qS4(TmG*4JMnMj-=x3(f9?KS{q_1A@HhBx#NUFy6aVi0`{}Rgzv_R7{z?9C`v2s= z2g7`Z7Yyc%&5Rcrg_yjUnwWMmePz;Sj$`g+Udz0n`55zd=H<+jm~)uTnYoxRFtsyz zGVwAUX3S@lWIWDL&Y-}s|G)qLkN>9pv;Oz-?~=bkfB*kE_GjLovOk`G?EcvP(fp(F zNB@uZAHzSse~SLB`19`?@*mT`Gk@p)&Hn5D*ZQyK zU$wu6e_j8k{;mJJ^zZ4vU;k?TOZYeE-=lwu|6~47`hW2M|NpKGoeX;zUNWdNCNfTA z+{<{2@iQX}lQ@$WlR1+OlRc9QlPQxblPnWI6D!jP#+!_X8K*GjGTJcyV>rmr$q>$< z%y9qz#Q&lHMgL#;*Y(f;pW?swe~+vPXFTmHT_%gZ_mHS|2Y2Zg7@R~{a^Nf)Bl72ul#@cUxdMzp_ySD!xsik#stPm zjJp}1F)}d;GRZKhGHEdxGFdS>GC44LF?ldqGZ`?+GYK;>GreQH$#{lw9b+w{Kcgz+ zUk1?47R3yv3}5~q`ak)9!GEv+ivPL(zx#Ld-|2tb|IPZ>_pj&QjDL&%-TtTeU-iGp z|6l(;{(JxL*FX0E>i+}(r~EJbU-Q4@fA;^l|DpeV{=5D6`=9iG;(u9&CWb@?euk?5 zzyBTo$MApIe?2K%T`iz;3&5V;6XEN?!lwfLPn##1Csf@{liG}Gm<3Gk%jJFxjG5%zTL~vj3w03;#X-yZi6_zcGK`{OSE;|A+C<9^^hC4c_@G5$O4uiU>C|8)P)_;1Yco?#wi2$LxDA?9e7Yb>&?-mGP;lUQf7 z_ON=h{$)AAQpEC*Ie}T4`6p8)Q!C?ch609i1_lPP|H1#x|1J3|{`b(IwSOl43IAjJ zNAHi+pTEBq|Cs*y_xs-O@4tioEd6uf&(A+*e}n$!{9XC?{ojv&_5bz%JNr-n|Em8^ z3`ZEwF&t-LWsGFp!D!92p6L-2GqV@-EaoH3Czy9LA7yS}j%Kc5UdcRLhI{|j|4aUR z`G@7tso#r#3;*8mYum4Pzj%J1`?dDhvtO*gKmHQ?-S%7S&x1cIe}(_*{*C!t@HgYH z_uq!U(*LUe?fIAbUjcLj0K+kczYMb(gPCNQmojf<-o^Zo`3v(C<}J)~nSV0du!ynf zuvD>Bu>4~dW7cOn!8nyMj8TH|B11I8_5Y6l*Zzz9XZ`Q(-{!xifA{@0{Fn33zk}P(<}Z$44}M!tb-c zm;8S4+yBqbKQVt_{#E>^^zZH88-Hv5W&E#UIL8>o1nM0rGoNKnVA;%ah~)>%E0$9% z&a4@%$H3`}R-sAJ;#h ze?R}t@yGg)`yZ*lNB`FR4f(tOkHFs>e;5Bf`8V^Q)c&K=iof!IdH)Lf_3GE7-+_NL|JeM||MTV#!@rmRd>P~zI~c8*o-<8j&S9})J;18U z*2i|4O^4lr{R7*7w&QFuZ02nDSWQ@cSxlMznAS0xfNx!5_^G2eo6l}_rIqzr6&;FkWe*XB${7dN9l3y&pyMIsrbNuh?e@FgLW{71pVG?CN z!hD(K9BVk640|E_I`)_B``MSVx3aghKWC3;cV^RIz0I7#EX911DTVR({|Wyy|IPgS z{*T?Cft-t(!W&Yy%J@t3gAFaO|{$Brk z`ftF$WB-!=>ofE*JYaap@QERs@g<`flNwVLQyo(m(yMJx}_2?Jd?+?Gu|2p#P z(Xa5|oPU=6k^Q^&Z}30P{}=wRWXNWeV_M4O!K}mboTZp`5$jD>O|}rWb8H;!f7$M_ zHM0F<4P=#LUBohl`5}`clQZLb20Mn7{}%sh{(kyX^e6I<>Yv@egMYLA-u|z@83V0{|*0V{onTg+5g}Fg&B+)oEY>NL>bH& zY#G=Y-u&PEzwm#+|D6Bx{?GZp=|AX{djp0hhC2*ij3*eqnR=Q2F-0-gFt25P%k0E5 zkL5hed6si5Pg$O^EMaM9iDqGCIl$b??8|(H$)4#lqd((D21$mt|DXSr{uBAP?QhZF z(7(U`toT#^C*+UjpGUuU{hs%`_jf<|=CbF%fBbg&Q}^fTpX|T?|1SKe`hUuQZidMW zI*gYXeV7h1$uOrd&t|^QEXg9k!o%`{c|LOrvoP}>rb;Fmrdf=d;M4i9{_p;;_W$X> zGyfL<>;D(}Pwk)AKh1wK|HA)O{_FTx{;%m@rnEGp%JxWl~_; z!x+uT#kh%~lEH-G`Tu4ABmWEjfBx_Azpj6+|GNJb{EPXQ^RNBi&VNk*?f!TE-}V3I ze+~v)hHmhBsznUD8ICioVd!SCXZY}c{r`;r7XN?zTl25>pXI+de-HoN{&)W0%D?G< z!~TZ-&HUT;cl+O4e?R}_|EKaV;or`G9REZ9PyWCC|K0x#42le%4Al%P87?!tVffAP zli?-9BZfx|uNW8@*%@ClJYd+!P|c9a5W--|z{~LK|Ly;q{%`)j8@x|$%l}p2{@~pI z8~^Y7f8hV||0n)G{m;pu!QjbI&M=?hEW=L*MMihVG{#28GR8v2dd7Ul5JpQzIYv(K z`jvJDKL%q4L57$APyFBUf6@Ob|J(nU|8M`l=>LKLPyRD8a4{$|_%I|fv@`5vxWVv` zL5b0wF^_Q)<4VS@jOQ6IFrH^T!?=%eA!7lf6Qele6Na4(%?vgS%nYahxBd6{FZ=(? zzYYJ&{ssKg`={`a|KE?lkN@8Kd;ag?zeoOF{d?{2!@nH=jQKJO7^lWBkwZU+lm2 z|KR^M|F{2t_Ft00ouQbamtiWyc7|IFml$p_yl42x@C_ViyBL-*lruy#gfpl!{P_Ry z|GEFY|2zJdf!E5}{Wti}`(OUQ&VS|qZ2wLF$New*Kl%TP|C|2r`G4jA_5ZK`|M)M> zz|Ww@Aj2TRAjk0g|G)pY{~!9l;s37xv;P|Hc2a{a5?1_@Dj1 z?0)CdNaIM;Na$K4Lt|xSeqtV>@FRV=1EzBPZiGhUX01 z7)lx38UFmg{(r;&zW;Im4gY`oxBK6sf7AYz{j>gO@K5`n?my{&?*ID#P5w9Q-|>HU z{~iDL_@Bss>HiG>)&FPz&;FkP&Ku|d|M<_#z{0@JAjKfVAj2TW;KJa{5Xex+Fpt5Q zVa0!DhFpen25*KmhGYgChD3%X3>z8x7)~(UWmv#4k>LWvMTUh8eGJzaelZ+nILc7W zV8h_Wpu+Iz|GWR!|4;s({9o$7<$tCB5C2{KxBcJZe+&N|`?ug<%fAW#4*$FJ@5R3# z|9<~d`5*j$>HkCjzy6nGNMP8_aFF2;!#@T;#%#vPjB6R!Gp=V`!?=-g3*&Ca^^DDo z8H_cIfsDqCe2n)QJ~A9(n8VP+kinqFAj$CJ|AqgD|4;v4_&@W%$^TdXc>aUdt&08s z_3zQYEC2reQ~Iy;U-iHF|FHk5|KtC6{4e<*{C~m!lmEB>-~Rv8|84)v|DXJS`v1cJ z%l<$4fByf3|Fi!0{O|pL<^Sscz5jRpKl%UE|Fi#J{$KyU>%SF4F9Sb=5JNhHDT5uu zX@f9d~m|G)lU@xSB$;s3Axzxi*%Aj{y$kigK+(9598V9)S~VI6}ZgD*oG!wQCE zhJJ=(hAake20I2@24#kM3^y5k7&iUSXJBDi_5bsKeTL)z3;u&Q zAO?1DZna{_XK-ckW0=n{gW>!CbN{#e*J4oqKjXgxL&ATx|7HJq|6l!=%CPtU;(sUq zvoSmZo&Cbl^Z(+%1_qV?4*yIU@)&0Q`}lVY!v%)(|E&Mt`ycgx!T&`Ji43p)z5D;3 zLGb_e|DFt&K|RI)^BFuC1OM|g6f<6A;Ac=}JjRf~@QC3pgA3!a|63UX7|$>mF!V6k zGR|fA%)rhN#L&sW&bWo)%l}{oPev^UHn4g zT0lMGe~AoM3{U=X{{Qq(`o91}Bm*PEt$(5afB(PsfBFAnhBk&r|EvG|{GZOakAa2Z z$bV&qJq(8!_A~G>Y-IStpuu3x(93Xy!HV%JLjuFT|80x`jOq+djQ)%w45kcmjLeLS z7!EO5GF<*|#>C0U{a>8%=l}fw0t_Yp=l^T}XTdP_-{-%R{we34AKl444^YymiSVH49~2ATiv4D3vQ8CCx4Fz_%M zGbl68XE0$*I$|6^n*`EU6z z@xR7@>HiP^U;fwoujF3|gUJ8#e~Jt~43`)({{HzpoAEE>W`@82L90?(8B!SUGsZJ= zGM!}n&tSnI!?c5G38OrtJfkYpYQ`X@8iu<6`xw0#+Zj|Cr!!3azw3YT|EvFX7^E0# z{`US?{IB&d{NLO^+W*h~Q~4|PSMJ}rzq0?%|DF6-=^w}cfBz2r-T6=Uf6l+Se@FjG zFf9Fl@4r3+>;I(x)BiU!)G*#6KK^%>HTq`}@!F-_Cz~|C{^|{(tCS(ZBeAfByF} zbp97+*z;fL|CawtK_|R0R5FM$-eXW;e8ISa(Sm`4;TYp0#v;bsjG#J-pCOdt1VcRI zGzLM22mi1C(`UHBaPt4Le?R}t`oHGC-~X-u^8aoBH~;^we+~cq|3CZZ@lWla%>T3h zI{tP4zx{v7zbXHU{+s{*_kS}(5W~Cwr~j|{-~B&|VI_kDLomZyhCs$S43P{a47>i{ z`=7z^fMFfObp{TG_LuX!x;`RL^J&P|M0&f!)u1G3?CT684ocu zF>o-tGA?8^XWYW@has6Eh9Q-q5`0SoKLb0%+y9IVA`GkyoBv1tPhi@p~PXFEhum3;qf8PIs z|I7a01-I8E8CVz?8E*bR{{P_rBmZCj-~L~R!Gl4O!Jc6PLlwhphQkbB84fa>VED^0 zm*F_W35MMa84O1l|4;ls{lCk9 z?f=dHHUIPc7ySS3-@boK|DF4{^WW)z7yteFclY0~f3N;={kQs`@xKy$`n3=PGXrSG z_5J^M|En2xGqfb4!IVLW zL7%~c!GOVtfsJA1|F8e$8UFrfXLtxY-Rl3+|9lLg43GZ5{(s_s-~ZnKtNyR~zx@BH z|HuBX`M>)Ag#Y3HgZ{_;&;M`uKluOJ|KNP$-~O-o|K$Is|5N^-`2XYo>Hi1*|NVdM|F!>u4B!9X`v2np&;RTU zObnI`-VERWKmO0dkid|_V9k)q;Ksnl@bmwJ|B4J63@`tG`hWKSmj4_6-~NB)|Mve= z|1bal`v0!~%m1(VzwZBh@M!zb|Cj!s`(OP(?*E?uY7C&=E5HBqFr5AW=)WKX2g95H zzy8NF6fk%){QrOI|GWS9{`)axGMF(qGpH~GF(@ zp^?FdA%MY?A)FzZA%el1p_O3+Lm7iUg9<|+gA#)bLpVbSgBXJtgAv2O|6Bi`|9}7g zwEwgJ@A*IDf6V{X|Ed3t{zv@p{lEBs)Bh>|=l`$&zx)54|9AeM{D1%di~pDZ^D`(h zh%gv2Br;?(L@|UhG%=JiR5NT~n8GlRVFtqthH{2Th75)lhI)oL26qNshX4Ox{byrf zWe{bMW%&I6?*9w_FaF>4|M>rl|F8dl@PFt3$^Ym5fAD_?xV`=2|H1!<{-623{D0^F zwg2z_zyANi{|o=W{one({r}GYd%8|MGv(zLqEd|NMXV|I`0}|DXMT z`v2YkFaLl3S79(?&|=VM&|$D)@L@<}2x0)O<8NiiW5{6$Wk_PkU`PR&%(gKz{k3pZohQWqGmqC?5i~-a}Q)N(Q&}2|z`1hZm zL6YI${~!N9{^w=jWO(}j|NjU7um8XHf8YNL|8M;N^#3CGw3Ye)*Ztr7f5rbj|BwF% zotFoS)93%M{6G31lsoVI|NCE_L4(1FL61R~A(SDPA(X+G!H1!aA)g_NA%mfWAs!r; zDGU`1l?(|Cb_{+D(cnB9&*0AB%uv8!$iT#)%^=C}{r~;{>I_m0NB>{?|Lp&<|Cjz> z`G5TX`TvLiulV2ff7kz`|JVKB@_*(3ZU0yPU-N(K|C#@{{9geM!JYr_{6F^pDme5$ z{QvR)-T!z0xfysEe*BkVaAz=JkYuo72xN$7NMi_QFk^6HaAxpeC}hZH$Y6+Kh+}AC z$Y#i8$Y2Oy2m!m;ib0pbm_dL+jKPpWlHu3?|Nog8uKz##|LXt!|9AgC^8fJvga1J# zcWiVn;VQ^&#W3XUQU~pwHV31-^W3XXRWsqdB zU=U~c_W!~E2mjCgKk@&;|Fi%1{y+ME@Bh8vFao9DJO5Ar-~WI8|84)z{6F{q`u~gn zum1n`|LXs%{~!Fn`yaHQ>(Bq6|L^|)_+OYol;PWdK?Y3*4h8`R1qOKrWd?2rIR*s= zEe2}_H3nS<1qKNQRR%o<69zs8Wd=tEZUzws2?imCpZ|aU*I?jfU}pI8|Lgxh{}~yC z8JHQq{r~#^{{L_P-~505|L*?-|6l$8@&CjBr~jY-fBXOb|NH-$82B0Z818~gsXhPi z{Xg^nA~;rG{r~#^>;L!vfBxqH_bvDsY#B@#co>wxX;hv;jzNgw*Z+V2r5Q{aG#F$V z6d9NqBpCD=@l{AXm~0jmM! zmS6v68Dtm~8H5==|Nr%0nn8&{fx(Euo*{~%m?4b8hQWow51e-l8O#{?7(hEf|NMXc z|I2?Kh8O=|{eS)c=>N_Cm;FER|LFfCp!>T1U;2Oa|MveY|DXK->i>CgJU{yn>YHEv z&&a^Zz|X+L@bdrH|LhFk{(t_@%OJyG!w}2h#bC%F!@$cR$iU5@!(a)nnamiB8H5-< z{eSx(1YZ1q^8fFDPKH1KAA{l3|1bYP1n0v?|8M=j@c-2R%m3g1XJJrg&|#2Z0Hwt( z|BwEE1|I1F)svvJwm89Y^cy_>&CKxo|E>R*{@?x2$zaN0%V5Kx$soxf&S1zO%<$(w z2=X(iFo-d5F{mg+F+?#KGcYpz`2X+!zyGiQfBVnO@ag~e|4;wl|9|`c@&Eh& zZ~edO|E&LW|1bSN`Tz9)GyhNh-}b-kfB*lU|1{jdF>_doW3#{ZiCv;MF7zy1HN|GUAdWyk-G|4;n?@c-xk@BdjD zK=&P+GiWooFvKu;G59hBGQ=>%FnBUVFl2!D8mBPCFhnv$Fa$8TGdMALGXyYrFxWF# zGuScMF*q=IFo4pFHiHasY|BwDZ@c-ohBmX!3U+{k#IDM}CzwH0~|0n)G|9>Cs zj!XY<{|B8o`}e;XgFHAVf=Z6R|Ns9NXOL%*Vh~{fr4fE`xC%1JGw3tuGpI6XF<3De zGpI3`Fjz3?GKew!`2YO>GcbJp|L=b$@Q%5&{}27&|9`{(75{hrzx@B?|IPom{@)8u z1=qnba}zusclZCN|7;A*4FCRfGYEoCqGk|gPzC!)o5761oxy{_n!$p>fx(Nxoxz8} z8(bG8fI}yYA%el5A%Y=_!I43pfsNtUe^6Y2+DlLWfBpaI|F{2N{=fPE z7ym#1{|$CKs10%9|LOlX{=fYH<39_70D~ZdB!etCgv7zMfiZ(BgE)gMIL^fwco;Ys z*ctx(|Ms7qL6AX|fs^6)|JUHPny>ytYUv-~F~$e~FaAIO|L*^%;MU-g|Lgy6{eS5H zrT_2#3p1!O2r_``i7)>_XOLe1fBOH`|IhzF|9|8E>HmkpwG$|{KKy^<|Ed2w{_pvJ z7~G0{@&D`pU;qF7{|_!9g&5=+Oc`t#^cW-=1R2B_#2G-XCm{w&25AOy25E50$KOg@8`_IfE#$d)^!=S<-$iTt?DszAS|NQ^Qeq~|JwgI|3NEOK%tQjmBtQl;XJ42lf$3=#|+;QHtLf6)CWf(*P2 z9N_-Zmj64zsp#1M8~bw_|KI+9;s2Tcpj-l4RsHz?)&B?n@A`k>|B3%+ z|L^;MPn_1Q|ee00RRk{r>s?_WvVr4g{rWP#GxBzyo##7Xv2)2LmUAID-~wG=hPR zfq{XOfsKI^+;ZV$`1_xg0hHQ=89=Ql4F)p?P_I^%K^0tMsxwG}OXMHmbgRsu550%o zgh8D_hCzfultBo*ikgw(^Z(c266xvxNB>{`2dyIq<(*Ie@BP2=|Mh=naBk;kU;(%H zv>0?4Y#DqQ{21&RR2d`~xWRSO+y8(5|NVda|L*_0{~!8)_5bbvH~v2Ww*%h({|P>C z4ix4;|1&axS|6|efBMhCAO>#bDl(`t7%*ru2!eAXC&Q=z@4$8YoByBw|Nk$^pv)l5 zAi^NX0169GdkR!O{`&v<|EvGcz$xzG|5yJ(=OsumC@?58h%yK;fO0Gw1E|Ij0@uu- zItx@Xfl5?R@6d)p1{}Vh{(l6gji3Mj{^w&51&0Yc0~dohg9rnt-S^@DhyPE&t$dJs zL8bD~|1baF`+p5wvt9Xr>;H}aXZ|1lf8_t!|JVON|Nr^_yZ_JrzXtpF(|>00+zT56 zXnu`>0n{FP0SGsrOrfY8Ju$ zp~WD_Aj-hP0P2}AF$gh8Gbn)lA_&d}pni}ngERvlnD-T2K65j$GJO00>i?_%AO64j z|Kk70|9}5;GsuAJB~VSq11=pvWgI9SGK0qezWrxl0M%X63{niBnJ6X(Q0@KdKd4jy zwdy1ogu&&=M{qeJ%OKC7$e;jr*Ps6^3``7P|9}7g3EVRQl{DN8{0ty-*%41|#kU@|^fPt0aFE}TGT6*9AfBygE z|KtD9z^$Zr|3S8aY8jB3&;LLE4{Go5fql;dE)PL{E|5z>JqFNtArk{1gE+V(1%)5T zg`hs*m;Z17Kl}gi|D*r6|K9?qq?h3S@5BE$|3Ci!=|3xj6oV>*F1Q^83Vj|176wq> zW@q4M;0DJbs4W0$HGyhRE(TEQlw(i>mu|ugLJT4diVVsON(^e?wu=>mBLnCjIz8}6 z2&fD2+3MTgAV@aq#y)sEy18F4edg7#KkHJr4t@CSqd{1CN5qGH5WUGVp?Z z^!NX-|4a;=;MxKd&!S)-vNA9;`~sIQx552rP6lCcYeERz&H;r1D6T{pl)$B67=Hc#`v2qqH{ja*`~P46 ze}H4-#sAm;--64dKmS4L?>>0s@h-Rw{RVECz5o9hT;kmO|K|VS|I7@`41fQB`~U4f zCj+Q<1l4)W3_t#VftEq;SYHH1(cRREk;l%eE9$I{~vJc4dgmd+4lGUoBuDt zV;Q^*5)8ZyU;e-R{}No%gW5)*Rsv|80aW^b{QvboD1~z{u!2(^sK#PpU}azfw`YF; z2c;2E{~k2D#t0sv;|8ZTJ_cq6CI--58zB7s|BwHma)g(Gk%5^(1U$}S#o)kT!l1{X z&Y%G9iK~H0Z3a~a&?tx~gCK)21E_}n|DO$aY^_|5;v|KI%o`2YR?AOC-YXL|V=_`&%}fPszS6IdKn z4}s$C-+xX9Q11EvA5@BiT0)=_7t|^O_1r*l%g-Rpz{9`_9=`$QZ6XmMI^&BnRagUhqhrG=mC*5rZa!ID-^}D7d5s^-4hVK%iatF%*oj^4@XzT)1x3hptStbS+us%@V3sjo?1GlR{ zqXFMeJJO9uBzxMy-|NH+Tt+9LmAN+s%A5`|e{||~6P&o{0!+=`1 z&;EnbA_K#}|B%po`~Sm#P`+Yh0F6oi{tqhqKUT!(>T0%W=%gDit2gD`j`8`R=c0QY-9yCnq}xEPqgeLc{) zs3?Odg9w8>xKvYRP-Ku}&}2|ykOz`0EhCzuzo&i+9 zgHkdh122OR11N0?fZJ!1;8j)%3@YGpUQi7H3SZD11SqCn{s*<@KzSe3MtlAL9oToE ze(UT1H~+u*{~p}O1-TIv-k>^}fdS-JP|Fh38@}`Z;{W5|G2qMpPlMOyocw>{|Nj4n z{vQF)(tyVMK_h;k(N<7;{__9Je^4p(??0%dgp~L{zqu z(D*)Ryc5*hQU?1+nL!>r`U9Fd0?it!fX53#Jw4Fa1}N@8qq3mVpOpbrvw&I%|G@bO z)V^f~k1l}H4XA|xY8QjjENG+(R42Xr|NB3vwgBZ>P+flS|IPmo{@?n41w38@Dg{6N z2jwD^~OOt2NV*v407?c<^!E<(647v=4;2x?ogC&DGxDEyNR%96z7`Pbz{0Egrk_ay2LyJ@|k1{~7R@r6buNVU#13Sb2|DaJUP@5igYu0mg9L*h13v>NxRuEQuC+iVnh;nIq|{+%0F6EHFo=NXFF6>57?>D9r7~!Y z|J#31%iz`joB!|qfBzpex&Z2{zx@CFKd9cn{r~0vU;jbv2}uTi25AOG1_1^U1}X5E zF9*Zl|KI zc0VfvsJ|ou?rDQsU7$5rY7A1~`L;j*fBolWkYoV0A3<{g3JkK~5%Aytzx@C8A5{B; zY6;LN86&tI2WqW~F|ady2bWx+nT03+-~4|EZY@9he-%8_1R6~M&0~Su)VIKMo}dxS z*Z-e^M;LGZzyBZ94}A6i-G9&s2WaFPR1bn&`VQQN0L>+W>d=qikx-D2Kx2}iPyx*x zfL6MIN_Ef(rXqtngEoT{1E@U)TA9cWE~i25K~PJK4csbaVF2YeP!F6BT;hSsWYB0A zXp|pP#)EoJptSzt|I7cN**Z|30kz0L{XdY6pt&Yc2!h7IKp_iiUx8{aAqGwcNInCV zdZ2n&09;mpdPSgdD^Sh-13b3;8629w|Gxsaj2?l@w-4Zc6sU~{Y7a1jXEH%^u^=-+ zB{C?l3p0S~GEkcxl$Jp4Hqgj7sDCNPAOW5O1&us`W-LJMZBSnXWDaQTjvMR}P`NC@ zAjKff08%dwE-CpLKxq;*-XR3;Pk?&T0t_Gr z8N?Wb8Mqi2!F34}18B4XmJYuDhq&+qxMcbBAC${Mc>vUx0+q#}F=tS%0P0tM`v3U< z^ZyJC9N;#d2zZW4hyj!vc^Cv3q!^^YZ6i<#!UN7z>i#s=VAc0 zen2Vt|NpQ5K`lp6s|VCR1+^GJwIQfo2@0wI|3N7S)LI6OR0)H}(?IQ9P)h?8;-HaV zP`~Tj|G)o582G?F7hwj_2otC`11e`gHoXPU%|S{e(3&972ry`dK#oBbJjV)}VF8U) zgYp2VzbguE#ewQd1qNvb8E`)Xl-6Xx^AC`825KLHN^DSi1C4fo)*XOG13y0?U|`?|w=hBD7$CKb;28>LaElZ)=LYJtf%=|b{)6(>M{t|_H#ofc z7(i(bRHlRGKtMVmsTkBQfV5vf{eKBAuik;%`>+0k#yUXbj!(erG@ktb0`47vX5u*+ zKrIVF29PPB*7^JY|G;$`Xg(P<0`%kmr~e=tL9-N~))8oY60{BhG~NyxaR-%oppi5g@OlXr2GEEh zXxt7|`awbi)E@%%U_kXKDF1^})@N{U161~d#;rg-2+#-$XoUhJ!+U5-{rvyye=hKf z5KtWm>eqnU`~UufQr`dnp!q9M41;>Up#Hxwc$EeybwGN9pt>A13MtGW!vJb+g67dc zr3EMzfJzfky$BjX0JUO3Eq+j65X1+~mVo>N%2}Wh7*K8ot!DtK0rj>(Igy7!6g)o$ z>MebP&f5J1uWx%3(GJ&?p9|WeF*LKq&##{s*nJ0gb%;`wwc1{QeJ$A<&EwXq2B1Jl817 z@E<&v3TkcfFo4n=Xp9yV=OA^UkrdFVAE-nFrM1uhzy1II|1EfR4ruNGRKJ2oIzVfS zK(>R*8IZq0BkG_PJ)pD+8W#fj{2O>J$mRcM|DXF0noGa+|K9)C|G)qL_aBrxLFF)L zJ^(bs1X@i73U$ypFlZbS)br&7ufJen`1}9wf6#mxXjX}X0o2a|mBXM`jwAzUMWZ2u zI)glTG#)gQpvR!cpat$Hf<`Am<%k@EID%>f zC`E%-NI=F}K`nex8xYh!28|Vi)+62j|MWko{s*$D8@i5q%;}S7<9nvH&wyw zRzQ2HK=rL2c%=krR?2`u7rbi4iouWpq#86|0V)+i>vMjBXMI8adS-Cx$HV}dV*$-s zJ^TOo{}b?PSJ3PnXiOD!!Zj#uurh#JJD{1HPv9|J&=@sn6bLl;51Jpm3+{b^#&zxfa9%isSG@*Sw{{}k+h(8`lj|IhzF_y5fQQ~$U8U;BSQn0*DjI`R2`P)iQv zVo)guTGaq*bAiS`AtffHr48zlfYx$6`Ty@fF9WD-WoH1DJfI%jXYd#|sQv_{RnT0{ z@Bg4yHfZDxR2zWI0p zoWnu0>!AKJXwLlMf6%xdNH?gY1jPzyg#8Y9^c*yj0h;By2VRSH2i&6p&Cr7S{-Dud z&?pipC4$Oe&@2b2hYQL}pm^Z{&%=T0C6Et5Yu-Vl%%E1hI0LBv1{&>$)K8$a37TsF zm2$k`(KFE8GiZbYRE~ny&ImFD2jtgoNfW~=2GlHNM1`oig^$vJ7254l7fdMp<2x@(S<_bV#ji8p~ z`~QFbgWC6k;L$5k-#`q!>I}4M4KxZZ0Ul!pwSYl;?^GF7z@r+VnE+7F7_`bq8r)k2 z&|0VFML(se* zsDBKaEB*BU8F&rl&Hrz~>!d&<(7*n_{|{>Ofaaz^{S#0c0?k+c_z!B`gW?D@zy9q% zC{2P^ae_w2Bp3u3K=l~N*PxsQ>KpPgfacghvmBsy4#*9R44^s|qy{uT0BU`MS_q(A z^Z!2|18Dp~i$R$|lmXN`0`(O@?KLiNp9nNZ3mVS_)%+~rJ|-wHg3g}<)qK3*84*w_ z0Hq#K*$J9O2h~xaaWK%jCp^7*sEr32rvufIpjDGx44~N@&`8Z4aQVQ_Aj|;D z`JnMvaRzSi+FDHp3kF99TLyLTT)h&w4GUT|1S%;&C#`~7>Y({*(2NLZl^iHdgZ%my zoFhT=51@JkG!x0qAPg=^L2d=DE&%lbKy#}q4B8CB3=H741|Snbx;YsP7;G3M7~cN> z_1}QOo52b^;|^L8C(QtwZ_{MZVc=u<{U6j40nNi*`+xTT+5ZRrulhgz|HS_b|AWr2 z+W3Fn|7HK@{a**(XYlm@m;aydpTP`!CCXLGaG0g#RV~=YdxVfB$d75W*10P{J^sVF$x0h6fB^ z7(^L08I2g77%dp}87&yi8MPU;8KoG1F}z^7!f=jZ2g4$UsSM=|G2nG~EDTTnp9Zg6 z+W)`(fARnM|0n&I_`mI+6nOnR!~X~Wn*VS3ukru$zp(!s|1bKV`#r4%^2+%D;S#?T^RWoH5daK)fqoB@Gz<}-es7=u#n+4!w!Z_2GDv< z8HP9iSs2tAKK!5lzxaRse~g{{QEH7{hYVZZ1Z5#wNx&jE5LMGyY^`V{&Dx zVv1%8W2$A!W3pfpX5wdJV%o@9!C1=Z%P7kz#>mMS&9LhK_5WQAi3~jdoBjp-=Vj3S z|Mjo$zqJ1q|NH)_|113W;NRtcCI5o{wf^JyZ~cG&zu14<{)PNE{eR>i>;L-yCI5N< zi~sNbzy5#v|M357|DXN8_5ZB@hd?(BF(fd!Fyu14W#DGq&ajEWmGLa&3`Tdx)r|T~ z{7mZ@Z!=mj@i5I{oWOXVaSvl5V;$oJMg_(N47(UUF|1)wWVrF4i{bnKS^rDHt6>BG z^ZY;i@7lkI{~rBY^)LLN@jr!sod5p)W%&2@@5;Xwe~bSX{EhgV{&(Kr1%LPaeen1H zU-^Fp|4#k;{Lkb6vH#u-#SB#p-xzuscQT%5{KKfv)W&p+={D0brq@hz%nHo2nCzMS zn4Fjdn0_*X?sxBC>|_Z3-}C<~hLnE^|3E9pwEq43>-K-`|16oWp4Aw&0nrvDM(nXRP%PyQYKx9VT^zl47! z|Kk6#{oDI@?%%?{K7VWfZvA`UZ|mP3f5rbr{_Fnt?O*|26+p{`3C7{?GD% z<$r_!xBi{@x9Z=ze>?we{rBVFuYZsKUHNzFAM^jI|G)m1W=LnKWZ2BW$QZ@An(-3j zRYq1OH6}48ZKe>WawbhCb|x(*4W>MJI|Kssz{-4)>X8(!$lljNwZ{A5O_zy-bx%-AwAt`y5l)BQj5|GNK~|4#kc`M3Um{J;6XqyF6d8}V1- z&*R@y{>1(9`}6kCfj_~29{maWm-R2>uk+sv|9BaU{vY|r!!U>O2!kBsI`Bz%(oDCQ z?3wkLHJIEP4=|K4MY0qyZ(&eoG-ozo`ucw{!wsfxrgIE}4Cfh+{D1qejA09-8bi*% znE$W->-<;w7x(`ngCv9RKc9c4|9Aeg|M%kG@BjM$FZ^x)8~)GdU-e(te+~aa{%!p` z^KbY+hW~N@m;TphIP^dD|KtCc8J00@Ww^$u&E(5;hf$yD9+NS%Kl4oH9_EQmc1&xT zM43V7e7$4pVA{&~g+YU{jByELDPtq!C5BJ`Js6fUgfYzh4?3r{@ZW*IfB(AwJNwt} zuhid^zwiEJ{yF&P?4OT+j{I5jr}vNIpFe*V|Go3q|Y=*0Mhp`P(1(^)19rnyXwOzun; z%&9EqEIP~%Oq@)7%(=|dnOK;9F)nA!Wh`P0W_-L|Bn5O z`WN~4!=G(`8~>gAJLiwvAJ;!e{`~q=^!LY~j6cnP=KTHr=lAbte@*_^{EPeh`|qBA zNBpz`j`K&_h06Jq5tRpHveArXD!16 z2HC&*f6o35_;>e@?B7TKWd2Y6H~p`|f3^RWe_#Cj%;?IL$nfz0Duzf#Ri+{)F6MX4 zFPN?|tz_0=@nu=a@`U98%QcoK%+kyy%jVX|ZT!qCW&%4o}UnDO%e3I9I* z3;197zx02~zxjU;|9$lL&YwTOegC}tEAy}V&yQbxzdQc4{;mEy}quCLQLfj0ucQOzO<)EdQ9Wc<6ulzcYX5|CeBbhS0`uAb+kf5o757KtFWX=4za@Wp{{8vO@bAGtzrQ(uZvInaoWb;#al?O$ z{|1biOcR(lupDI8VP3%ehj|Z6E9)1QFxDnEKeksa2F!BIwk##A`&srgEoCfYyu&ES zsLKHAeK!4f`M>XA7=c?$jdCkGJ|;*<0FQ9jQg10F&<&?Vc7TI>c1_+Jcg71J^y9@&HlURkJF#8 ze+n4xGc5Ss|LyU&w7;!P&i}c8N&H&;+u*nF@7;g+|NZ!P;%~{{cYkaDbpM(C-<|0$ zlP&Xq#%hN73=&L>SXB<+E^{Gs8A~{eILi;F zn+&J_1^k=xpO-=CztdltzwLjUfB*ma{nv*-!hhfX_WS+tm;dkj-$(xJ|9k#V*x!SH zZT^P+-Sdx?!Tvwf|0Dm+7(lxauQ7BmzG3KPh-S26tYMI4JkIoiiIHg)qbyS#(;}uy z=A+DN%tlO;m`s_kF&Q$sF->B+#kiX>mqG5o!GGKTk_;yqlK$KOb^o*I_r2d4zg2!! z{_$rtVA%I#?#Bn8zW(uM{`G(9?;Af(eSPwc_0Mc3HfGy@bAKQBd;fpP|6ayJOoGhT ztcmQu*$y)|GJasrde-!=) zGaIwsXF1M1m$8b$fay2uM2-^ngDkt5>X^8h9a(}{e=r*}9br^un!#wq;Pb!nzc0g1 z23yAW472_>{=4&U$A2%z^-Rr7O^lfga~KXWykqcZ2>h?X@bCYV|EvtUe-nSP{`C63 z?7P?>O-4ROwIA=_On=?+RfAy;^TYqQzsG&z_}ubCf+2>*kwuItk|F*7FNSW`PIdwI zIqc`T*7K_K#B-RjJz-Oac9Nqmj^T=lu>TlufpKRsUT8iZhln1uzFQX)|8^@BQ!o@5?`YzQ6gN z^F8ZZ@|WN5*MG47#`Tlqd%!1+k8{5M`jPSL(BJz^)0pr6KlRUo@h9sEPJZsS+;Q9r z+!{OwxMy(sbMo;p^IqZd9HJR6lSRUU%+sR@g7qHQv-wjzr%mDe*gK^@#o>+hyVWmb^UYkSHSOr-^stN z{#5?S_*?hS_OIFBs=uXwuKk|zL-w2J_uGH0nSI&bGW32A{ZjH>>c1Xq6nixLJ(gky zgTF5St}-UDzGGj?UeET6HHOuJrIG0%qbBnl*6D2gY};A>Fy8*#^XuVH&ObZ;zhvCQ zDF1)y?~tGSesKKy^(U5LB@-jFA5$OGOy*P;4b}iwWtJ_>FPO}jUNhGI5Ba;{kLcgs ze<%FC@jLWq#SitLr+&Wu@%vlF*K1$dew6*P_$S7w&8W-}{9lYQg=HIi5!V6kPVPfo z^SQQjg>rFmE#rL1K9?<)jh}T1)BFFk{>J`U{9FI`>t9cQ^8bkYw&5%Lw`t!Bzx({W z^GorM(O>Vs*Z#`|Gyb;uqJXm zhVB|JO_h82$gB`d7^Gh*^jumwO|RA@2=7NdZHFt$b$O?Hp|E3T$C)GOXT={(lU= z`+kZ2()6wChxm`+Zy8^rKCk}#>5JZX&R>iF9R6>@(#_t^k;*Q{dW!ix^L-XW_OtBP zY^$07{15#5_4kb5U4JJ3x$!IMXW);R?^@q)e6{+_`N`+Y(_g_%hggM~FaFK_E%#54 zWiRIhzF2{$yvm%1S%O%+Svy%yGDk5VWENnZ!79mW!&LWo@6Rhge*U`mFO|uLxq|We zztn%+3|)+EOsAN{nbtA<|6jn!#j=@|nU#zA3FAwKwG8JOxETKbYx(=>_lI8%zpnl| z{p-!o|38y{NB_5A^krD^|LNa(|9t*M{<-)^>W}E}iN9|AO8mR&{}o0y=F^P#z~|?F z_RZJDkk62{b4A~vnOj#B%+Wc?*SM~4xzwiGH{yG13 z`SbVp&)*(@RR8Av-Te3JKac;>{}=sR^Y`}O?!S-!%=#1m$M$#J&u`y9eQ)|P_ovXG zi2vG*QH-FpS-|v{@h77=^B$&1=3M4AEd8v)EEcRjZ1Xs-v!7?$#bEMR_V2QPng5P6 zo@1!^zx&^l-~0Zk{*nCi_iyR{Gt3?w{M?^;*m=ab#5ta`nX}(yujj~M?_!}S~5u+3u$XIk_B%Ab!vb$_sZKk(h<=ha`fe+B<_|C9P3{NI4#F~dhj zcb0TENe*|;d7LtwN*sRd-`JelquDdq1=*cg&oTKiwEk`TegCKP&wW2n{p9-<|EvGk zRnKT&R{I~w^@R#lHg+FqCYX5lsne(^qPt@%sBoo1Z*x8s-b zFZtj5{yh0B@ORE{kzY|iC4c?-wez>(pH+W&{@wX+$HdI?lVv$e4l^(FET$byYnbF2 z6aOdw4f=E9&z!#+|8D$U{%7ki`=953too7oL*oa-PmSNHfB*k;VtBy7%eaowglR9c zDC;L?DW*t<2mdtx<^22juY{qV(VX!;Qyhy8%OU2Y40Hb~{xM;}#;(kf%5KYcge8QD|Nqb5_kU*m%=yjnSMBeY zKi_^``g!2z=ARq>nEW^SKl}guf0zClGl+m^4J`lJ|KG|mfq4b%9G3q~!i>THOa8h1 z)BZR0Z^fVIzq9@>`2T~Ul~JGZ2ty&mJ_d89z04e}LahEQJD5wDell)g%x5V2|M{=X z-_3tR{;B;x{_oA-r~l0Vz5e_2@Am%+j5&<% zjIaM+{$IfGlF^H~m)V@9g!va!0+TGG5M$wg-oHG*#eRDJ-1g(a52ar*zdrw7|9kzP zcmIPKCoyxg{AB*fBE|BG`6=^CW)YTDmgg+2Y_Hf}v7KW5$lS)XkMRV<`TsNiZ~X7d zki@W*;S{3~QypU^!_)tc3?&TJ49*P346O`(4A~4!42%Ce{(tw+{NL8U_x|?$tNL%t z@RGrRaSns}|AT**{W<=7Gx+|n-e1|j_x!&8+x5@(Km7mv|FbZhVkl+oXL4t{%6Ng1 zgVBSrm4T6gpYbq*K4T7(GV@s$GgfI9BW8Za$N#4OUG?YvAC76heBgP(0bRe%5bqw_EK|F-`H|3m-(`PcdXH)y35LkS~0(_^NY zOgorFm{=HRGR*qV@jv$8y1(oG{`Ho`rPyT)Qe}=)4F_>`?gC0Zt|Hc3G{x$tg``h&Q!QXZNr2ZF!&zE6mxXU2H z#Lc{v`6Tl~unDIbMHy!?s4#%$=9C$dLH%F`Glp~jbN;LSSN^Z{|J%Q<|Kk3g|EuzM z!Jk!sl>h4dYy9ucaGK#2gEa#$!^Qur{}(eHU}$1AWO~mS&FISD^?$~{@_z^ZN&i3d z|MCAT|5g6)`K$Ez!k_hjPW*ZLciaEZjNB|IS#GgRU`b+@Wm?Zr^Z)XHcLoV26J}#3 zR>p$=JO0mSFkoE3XzwQ5C{OkL#&Ty8Yl+lhcm_hu%%D>rv z&;OnBZ~K33#$cvTOghXvm?9XJ8IJv9{CDy1rN8q3Wf&3}cKi?fx9P9j-&=pJ{$FQk zXVPb8V!p*Vfg$$);(sCkeE#kE=lg#G!#u`RCNHLSj4g~$7%nsHVVKRZpTUrUlcAl# zgYgt&8zUp*MTV~olNtM%0+{zOD=@P#{bXqWKkMJ+zb${S{}uc9``?cLU;eNAzyII= zzlZ;F{M-9)+JDelNlX7{{5SnC_y54Zz5hc0J2O-=MlnrdGGIz(lxJ}Hul`^8|Lp%~ z{?Gbf^#94fIsc0Pnf$Z*=l$=izyH%2ZZdplc+N1BA)Y~>VebFG z|DOCy``^THkg=WV3zHD@2c|1bRZKS-eHp(nEM<7Wu$YmNNuOypV;V#D|Ezy{|JMFX z`R~N=jG>P40iz<59+L@U#sAxXIse-Kwfe{ZA9OB})&G6}CjR^WFXR7#|C$Vw7{nPp z81opZ_mFq|Caur!XV8!lVRh3#s8-NkN;oA(9C#)F`2QK z;nx3^|CJb)F+67QV%)(f!sN{Kf-#&ipW)R1CI5LC_AvZo;9{J}z{W8Dzu157|J?t- z{S*Hm^8fmOX@*n(+5YSN%l)hMci-Q}e-8h5{=f2H1AMdf?*GyM)&7V4Z~XuGzXZdf z{|x{4{=M_(!k>u0>i>@Z)BNA`pNSy=e470h1~x`D#z~CqOw*VSGSxFVF#Tr~W{P0i z$n>4*KGQ)kJi}zh6v&v$aPt3w|8M{2Gu&k0U=(M(&Ctdm$FSjl;eXfv$^Xy)Z(-nL zyv-oXVD`WCAICqHf6M=c{y+Tx2Iv&Q|K9&y|2h6$`sc`>qQ6=H`v1!_-2SipzxiL+ zKY{;K{@?u1&S1g7#xV1L-2c@74gYuj|N1|YVJ$-~LnOn;{~`Z1{%8J|U^vJi#@No- z$|%9OfZ^-^OaH(Amtr`|kjglPF@mv$;mQBD{|5i<|Ihi)#h?S;-Tm(W{{M0R8UFwJ z_w?U^f9wCv`8VNT(Z7a&T>s<$xBs91-}wLae}DeP{pVrW#Bi741;ca(Ck6(F*8eI0 zGyYHiufni{A&PM_V*+CeqaEWx26u+%|Ct$r7)~){F|sjDWLnE~is>HHCME@@EXI2b z4GakklNr<*=P;gQ>|lJtz|Wxazx`j~zuW(k{$Kk4@Bh62H~)S5oA;Of?~Okye;57D z|0nW)`G3$ZgSG#q{$Kic=HKyuU;n-OclzJ8fB*h9{1<1aVVJ=WZ1@Vi(xy1 z3&R=koKM$3w}1WrB>pe@|K~qwMXfPI62nRcW=1VWSH>_#Pw-te*BCMxF8<&9U!P$f z0~4b@BRk_shGqsI1{VeehWG!E{onfk?Em}!Z~R~SzyJU2|2O`tGh{FWb2a~G z{*V4|_do7`^8b$im;SRe*fIn#q%)K-a4A%8%{{O=N zh5s}BfBWyw*T}0&-=gY{}b@a;3xm*{}27o{eR29%zw)Nr2aYm zYx=kE-?M+x{|)~8{_p*N>AxaFI>RysPDXFWLdG8O%}-s7O^lU{#f+JZsf;m<){H!i z2O07ioWSSa+AwH>calqi&(Hv!>G9_OzW;syZU2MrbzAjs7i6$Kb}G#_;z4z5k$n z{2~mXm5yo*whSH&77RQL5C1>@58C?%T04FJKj@UP4d9*cKmPyw|MR~Pg8~C&-7jeM zhzx^2LnFfqhJJ=f@VRfI;FCk%{(tcQ;Qv|w8~$hi_xx}7-}`^#|MUNu7*rVK7+(Ir z@c-d|HHLcdX?1A~HsEtRd>O15e*QoCA9T9U%Kz*C@A|*^fA)W?|EB+A{!Yw{=fVG{{Q?86%6MY{xJMxc*Jm-;UdFzhVu;T z8TuI}F)U+P$*_Q74nsRb5`zZA)BpSbPyJu=KmULE|AzmK|I7cU{LlJd^uP80{{KJz zOEKs&NP>6RU--ZB|K$IR|L^~Q2E4EL;r|o=m;PV)|H%Kp|1B5-83Gw>7!<+lpPz%* zyB+?&`TyMibN~1J&-x$rKjMGd|IYsl!KYg`{;&RD_kZ#Kli+aGXQ%*|k#88@F+5>- z%)rE`#%RH4#mL0CnjxLRh(Uni#s4k;`~P?TpZkC1|DONp|HJ;f{8#+1`9Jc1+y6!X z=Yr2%Jp2Fue_MuThJy^B7z7w47?~L_GxRaIG4L?_`Y*zu#bC@J%y9qz_WzsyAN~L0 zKWJql=)BJ7|4;p2_P_6c+yD0e%l}{a|L4CoLokCigA9WzgA+pt_`Dq(@L4#Zv&}aA zU-*CT|JVOn7$m@ZJ2k-jg!LJ88GIO`8A2Is7^E29{a^pTdH+H8_8j@Y`hWBP zr2pRk1OCVTPx+tvKlXpz|D6AA|L6Z-^Z&wsNrnuD1q^E$`WONk_!*x5zxMy!f6!?u zp!2KF{D1Qwv_=-Rzd(l}m7$Gc8pAAxUWSPbix^fiYy{uCR?LvfP|ncJPzGK*k;E{8 zVH?94hDQwV8Qw8mWjMmHouQM#gF%ep4S4VBx&O!iFaKZg-~GSJf4Tq0|2_UY{Wtip z`2X*}$N!lAoBogbU-p0c|2^QdEFVHP+YvtPH9Q9t=qg-3;p(jxd~LIK*&};RwS%hTROC7^)bI7{2^J z{(s&7>HlZ^pZLG!f7Ab}|MmZu{y+Ht^#9ZU&-_33fB*l@|5yLt`hVyDW8n2)r~Y61 z5862lI&0>^|2zMm{QvPEv==Zlve=8WS1fR;j>Hot2Q~uBU zKmY&2|EvD*0-qNs!QjB)!XVG^9$eNG{V({R`aj^m(|?=)VgIB42mcTGpY*@s|HA+0 z|1&cvg3qaPX2@h%!ElY?9m6+<7Yx@K4l*oaXko}@2xf3*aAAmG2xHJ-`1t?8|CRsO z{Xg&@bXwrG|7ZTc{4c}c#1Oy`%n;5H%TUD7#!$nM#^BGO!ypdcQKG=W555!g!2cEh z=l!4kf7Sn$|2zJ7gLB26|EK?7{(tp9=;S5m>N#OI|yct{=3>kPC zKx?Ew{%2!QVz6Y80`F4=t?mY$!6U=K!te}y+7D>Y;|uV*!H@rW7!<*)D%lwx{y+48 z$NwGwm;LYjU;n@5fA|0C|Cjs+o$ zrq5u`;LPC7;KAU-;0Qi-3v`+YXib+Ec>R$-Lli>@Lj;36gCm0jcxNE!G$U;WJ@Bq5 z&^aIm3=ZJ40)rX67?c=3{(t!Y-G9(|qhbsU3=jVw`@i@9`v1%RuLG|~0-ekE;y-Au zENDF-=p>?h|1bYP{(sm1?f=jI2kj^L_W#NMqyP8(Kk)y^|8xIO{@?L`@&Bp+7ye)U zf7Smb|JVFK@c+SoE(SFQ1%@yGul+yy|Mq_t2GBVfpuM)T3{nj23~US%42ld^4518> z42}#k41fQB{{Q#C6oV5(BtsHI6oV6k0t4tYEzl`FpmI5kA&J3*L6bp%;V*diJ{S0e z#aI7N{onb2{r~m<5C6aR|K@+tntf&lAqHgzQwBGN7=}ECHijt-9SpS$H4K#uSqw1@ zi3}MGc?^jR?hINCoD85HcK83^`hWHR#s63S-vH;6r~e;-*JIuWpR;=T|8?*Qo;&`p z`M>A?CGalaxBu_|2km3s`hWZX9sgJUpYng%|HJ=}|G)YlbSlWv|6BfV2Dh$XgIBh5 zflr+H{vWi)9&{p=Aov7G9q{Q0YTzB6whTcGsSNoH1q@jXkqo{JJ`C;*4h%sIMGSQe zB@9X6lXJrvf*5=mY`~{og7&_F*35$Hke&bc{67jl>;BOHt^YUvU;TgM|4sjQ{y+Nv z+W!yW70#fOH;fsg8JZcUGAv?P#L&c$#9+q&TKCKZPS2oQ84mqF@PEhu1OHEfa{_2x zHE2a3Xomynd`)HW>2;tJvGf`A7>pQn8KfD0{6F`9#s4|r+gG~&7ygg^AM`)wf64zY z@QI3`I-&bN=oIRe|M&kt`hUm&o&PWVzx)3Y_#6k&3OW%6B?dDFZw5~WI|gTl0ESS8 zG=^@5#SE(%Rx(Uy=w_JA(9KZEP|i>Qt{Xxad>Kr^XH0-jp5O$pO9$;bdiDR({}bS| z#y~5z@BKdpKC$iC|HJ=J|G)76z<7by!$)Hm|KqrBL&cQwS z|M344{}28@0L~9b{-6AR5q!$mmH!vOIb-qvZT~O-|L~ui0knQpoxzSFhM|a|ilK&~ zf}xP1ilH9t-#&&8u#c<2rzz$zBr}9CI5B85a54P){{g&r0dykk^Zy^fJBC2Jdq8VG zL1`7Vs#KIg9Ne>FW_Sq>=cnMbc=rExa2ulM|MdT}{!jlu?f+WvS$5~ZY5ng1_x~jr ztQg!Gd>PysK<9Yafp-#%GcYrNPP+u{YXY6-cJu$9|9k&m`2XcUXt%rs_}rI2|G)g_ z0n*=|GWPmf=?E^`TykqUH{kqpZkCI|4sid|342tRrcb4&}k>2a{(k6 z>=;5B!oe}?%K$1{O&E;9XGVH}Q@ zgU<5;?J<>R5CEU3^Z;LclzX0CteCYq)|2zM${lEVI zG4Q#vpz~K>{Rf?c0O~n__O8GFe*>JRK=mo8TmhYx3)%~P2Ar}k{lEDC?tjpZe$ehb z&0M%(;Pr6 z!9lxRK&J{k{SP`B;uZKTC6L_@{$Kll;s1sIcmBWq584;;|Nr0r@BTmd4?1=7%>Qd( zzuyAy1qbbmIr4ws|5N{Oflpm}^B=T(7PQ*@-+#!CK+s9c;tX62BH+_n#K3!=85ux3 zf0!6R>$!!&C**R^Efw&VoXkn*p@X4Rms*1Ow>A70|j`&>Cc3@Hv_@pV&DssqraM0fNbN|o(2c2;YYA1nC-~z2L{|!Dl9CV%}XyyN# z|DZD~K&Kk~`VTta1+-5cvKJ7vtM$)+(0Lx9oob-HW`Dr@#HARt8O#{Wz$b1hfzNvd z^=q^l%o$u5d>DKg%)w^>gHFN$o%{(pg#whTpMlQ=1l2H4z-Iy8{C^j`*939`E~s|| zDvv;C0fWxD1?|8F^_0H;fAIeb_~c8_nX#b#cA!(wK_`BLPOAm=s@TA1kGuq%e*OQ; z|L?$OM=*hR6@%90gW>{Ij)7{U&)|G}_x~I4>A#>g>!356gu$&Q&}!));CAr$j%7e}gcmY0pJl=Bu&t6Kurcc1~Ue220jMRX%e7)#-REHWH)I4%$@(w|ATh+fKJ$W z4c-O%;yE>D&LHmIA03_ynAaLHn#egHPB1ok8&#yr%}V5+8IDpbWTe3)*GC z%>YsdN|7J`gH9lM20j7hGx&TUkV`@9+d+H6L3=}m!8@Np_JH>0LUvSr{r?qw8YAeu zHPA^pZ@?#wfOb)W@&f3b7*Ht#I@J#pYoOiQpc?2q_!GytpL4!dJeCD=4! 0: + # This transfer learning approach requires supplying + # the layers which we exclude from the source model. + # Say we want to exclude all layers except for the first one, + # then we are dropping five layers total, so: drop_source_layers=5 + # If we want to use all layers from the source model except + # the last one, we use this: drop_source_layers=1 + if FLAGS.drop_source_layers >= 6: + log_warn('The checkpoint only has 6 layers, but you are trying to drop ' + 'all of them or more than all of them. Continuing and ' + 'dropping only 5 layers.') + FLAGS.drop_source_layers = 5 + + dropped_layers = ['2', '3', 'lstm', '5', '6'][-1 * int(FLAGS.drop_source_layers):] + # Initialize all variables needed for DS, but not loaded from ckpt + for v in load_vars: + if any(layer in v.op.name for layer in dropped_layers): + init_vars.add(v) + load_vars -= init_vars + + for v in load_vars: + log_info('Loading variable from checkpoint: %s' % (v.op.name)) + v.load(ckpt.get_tensor(v.op.name), session=session) + + for v in init_vars: + log_info('Initializing variable: %s' % (v.op.name)) + session.run(v.initializer) + + +def _checkpoint_path_or_none(checkpoint_filename): + checkpoint = tfv1.train.get_checkpoint_state(FLAGS.load_checkpoint_dir, checkpoint_filename) + if not checkpoint: + return None + return checkpoint.model_checkpoint_path + + +def _initialize_all_variables(session): + init_vars = tfv1.global_variables() + for v in init_vars: + session.run(v.initializer) + + +def load_or_init_graph(session, method_order): + ''' + Load variables from checkpoint or initialize variables following the method + order specified in the method_order parameter. + + Valid methods are 'best', 'last' and 'init'. + ''' + for method in method_order: + # Load best validating checkpoint, saved in checkpoint file 'best_dev_checkpoint' + if method == 'best': + ckpt_path = _checkpoint_path_or_none('best_dev_checkpoint') + if ckpt_path: + log_info('Loading best validating checkpoint from {}'.format(ckpt_path)) + return _load_checkpoint(session, ckpt_path) + log_info('Could not find best validating checkpoint.') + + # Load most recent checkpoint, saved in checkpoint file 'checkpoint' + elif method == 'last': + ckpt_path = _checkpoint_path_or_none('checkpoint') + if ckpt_path: + log_info('Loading most recent checkpoint from {}'.format(ckpt_path)) + return _load_checkpoint(session, ckpt_path) + log_info('Could not find most recent checkpoint.') + + # Initialize all variables + elif method == 'init': + log_info('Initializing all variables.') + return _initialize_all_variables(session) + + else: + log_error('Unknown initialization method: {}'.format(method)) + sys.exit(1) + + log_error('All initialization methods failed ({}).'.format(method_order)) + sys.exit(1) diff --git a/util/config.py b/util/config.py index 3cd23566..0e3a719b 100755 --- a/util/config.py +++ b/util/config.py @@ -124,4 +124,21 @@ def initialize_globals(): log_error('Path specified in --one_shot_infer is not a valid file.') sys.exit(1) + if FLAGS.train_cudnn and FLAGS.load_cudnn: + log_error('Trying to use --train_cudnn, but --load_cudnn ' + 'was also specified. The --load_cudnn flag is only ' + 'needed when converting a CuDNN RNN checkpoint to ' + 'a CPU-capable graph. If your system is capable of ' + 'using CuDNN RNN, you can just specify the CuDNN RNN ' + 'checkpoint normally with --save_checkpoint_dir.') + sys.exit(1) + + # If separate save and load flags were not specified, default to load and save + # from the same dir. + if not FLAGS.save_checkpoint_dir: + FLAGS.save_checkpoint_dir = FLAGS.checkpoint_dir + + if not FLAGS.load_checkpoint_dir: + FLAGS.load_checkpoint_dir = FLAGS.checkpoint_dir + ConfigSingleton._config = c # pylint: disable=protected-access diff --git a/util/flags.py b/util/flags.py index 9f31aae4..5b5fee0d 100644 --- a/util/flags.py +++ b/util/flags.py @@ -49,7 +49,6 @@ def create_flags(): f.DEFINE_float('augmentation_pitch_and_tempo_scaling_max_pitch', 1.2, 'max value of pitch scaling') f.DEFINE_float('augmentation_pitch_and_tempo_scaling_max_tempo', 1.2, 'max vlaue of tempo scaling') - # Global Constants # ================ @@ -84,9 +83,8 @@ def create_flags(): f.DEFINE_integer('inter_op_parallelism_threads', 0, 'number of inter-op parallelism threads - see tf.ConfigProto for more details. USE OF THIS FLAG IS UNSUPPORTED') f.DEFINE_integer('intra_op_parallelism_threads', 0, 'number of intra-op parallelism threads - see tf.ConfigProto for more details. USE OF THIS FLAG IS UNSUPPORTED') f.DEFINE_boolean('use_allow_growth', False, 'use Allow Growth flag which will allocate only required amount of GPU memory and prevent full allocation of available GPU memory') - f.DEFINE_boolean('use_cudnn_rnn', False, 'use CuDNN RNN backend for training on GPU. Note that checkpoints created with this flag can only be used with CuDNN RNN, i.e. fine tuning on a CPU device will not work') - f.DEFINE_string('cudnn_checkpoint', '', 'path to a checkpoint created using --use_cudnn_rnn. Specifying this flag allows one to convert a CuDNN RNN checkpoint to a checkpoint capable of running on a CPU graph.') - + f.DEFINE_boolean('load_cudnn', False, 'Specifying this flag allows one to convert a CuDNN RNN checkpoint to a checkpoint capable of running on a CPU graph.') + f.DEFINE_boolean('train_cudnn', False, 'use CuDNN RNN backend for training on GPU. Note that checkpoints created with this flag can only be used with CuDNN RNN, i.e. fine tuning on a CPU device will not work') f.DEFINE_boolean('automatic_mixed_precision', False, 'whether to allow automatic mixed precision training. USE OF THIS FLAG IS UNSUPPORTED. Checkpoints created with automatic mixed precision training will not be usable without mixed precision.') # Sample limits @@ -97,10 +95,16 @@ def create_flags(): # Checkpointing - f.DEFINE_string('checkpoint_dir', '', 'directory in which checkpoints are stored - defaults to directory "deepspeech/checkpoints" within user\'s data home specified by the XDG Base Directory Specification') + f.DEFINE_string('checkpoint_dir', '', 'directory from which checkpoints are loaded and to which they are saved - defaults to directory "deepspeech/checkpoints" within user\'s data home specified by the XDG Base Directory Specification') + f.DEFINE_string('load_checkpoint_dir', '', 'directory in which checkpoints are stored - defaults to directory "deepspeech/checkpoints" within user\'s data home specified by the XDG Base Directory Specification') + f.DEFINE_string('save_checkpoint_dir', '', 'directory to which checkpoints are saved - defaults to directory "deepspeech/checkpoints" within user\'s data home specified by the XDG Base Directory Specification') f.DEFINE_integer('checkpoint_secs', 600, 'checkpoint saving interval in seconds') f.DEFINE_integer('max_to_keep', 5, 'number of checkpoint files to keep - default value is 5') - f.DEFINE_string('load', 'auto', '"last" for loading most recent epoch checkpoint, "best" for loading best validated checkpoint, "init" for initializing a fresh model, "auto" for trying the other options in order last > best > init') + f.DEFINE_string('load', 'auto', '"last" for loading most recent epoch checkpoint, "best" for loading best validation loss checkpoint, "init" for initializing a fresh model, "transfer" for transfer learning, "auto" for trying several options.') + + # Transfer Learning + + f.DEFINE_integer('drop_source_layers', 0, 'single integer for how many layers to drop from source model (to drop just output == 1, drop penultimate and output ==2, etc)') # Exporting diff --git a/util/helpers.py b/util/helpers.py index bc143463..cd4f4b03 100644 --- a/util/helpers.py +++ b/util/helpers.py @@ -1,3 +1,7 @@ +import os +import semver +import sys + def keep_only_digits(txt): return ''.join(filter(lambda c: c.isdigit(), txt)) @@ -8,15 +12,12 @@ def secs_to_hours(secs): minutes, seconds = divmod(remainder, 60) return '%d:%02d:%02d' % (hours, minutes, seconds) -# pylint: disable=import-outside-toplevel -def check_ctcdecoder_version(): - import sys - import os - import semver +def check_ctcdecoder_version(): ds_version_s = open(os.path.join(os.path.dirname(__file__), '../VERSION')).read().strip() try: + # pylint: disable=import-outside-toplevel from ds_ctcdecoder import __version__ as decoder_version except ImportError as e: if e.msg.find('__version__') > 0: From f32fd7a33fb3ec6e69b9881831ed64d37c95902a Mon Sep 17 00:00:00 2001 From: Reuben Morais Date: Sun, 16 Feb 2020 19:22:57 +0100 Subject: [PATCH 2/6] Add transfer learning test --- bin/run-tc-ldc93s1_checkpoint.sh | 2 +- bin/run-tc-transfer.sh | 117 +++++++++--------- taskcluster/tc-transfer-tests.sh | 65 ++++++++++ .../test-transfer-linux-amd64-py36m-opt.yml | 12 ++ util/checkpoints.py | 4 +- 5 files changed, 140 insertions(+), 60 deletions(-) create mode 100644 taskcluster/tc-transfer-tests.sh create mode 100644 taskcluster/test-transfer-linux-amd64-py36m-opt.yml diff --git a/bin/run-tc-ldc93s1_checkpoint.sh b/bin/run-tc-ldc93s1_checkpoint.sh index 0602dada..9dc4e84e 100755 --- a/bin/run-tc-ldc93s1_checkpoint.sh +++ b/bin/run-tc-ldc93s1_checkpoint.sh @@ -23,7 +23,7 @@ python -u DeepSpeech.py --noshow_progressbar --noearly_stop \ --learning_rate 0.001 --dropout_rate 0.05 \ --scorer_path 'data/smoke_test/pruned_lm.scorer' | tee /tmp/resume.log -if ! grep "Restored variables from most recent checkpoint" /tmp/resume.log; then +if ! grep "Loading best validating checkpoint from" /tmp/resume.log; then echo "Did not resume training from checkpoint" exit 1 else diff --git a/bin/run-tc-transfer.sh b/bin/run-tc-transfer.sh index eb127b99..c315e749 100755 --- a/bin/run-tc-transfer.sh +++ b/bin/run-tc-transfer.sh @@ -1,13 +1,19 @@ #!/bin/sh -''' -This bash script is for running minimum working examples -of transfer learning for continuous integration tests -to be run on Taskcluster. -''' +# This bash script is for running minimum working examples +# of transfer learning for continuous integration tests +# to be run on Taskcluster. set -xe -ru_csv="data/smoke_test/russian_sample_data/ru.csv" -epoch_count=$1 +ru_dir="./data/smoke_test/russian_sample_data" +ru_csv="${ru_dir}/ru.csv" + +ldc93s1_dir="./data/smoke_test" +ldc93s1_csv="${ldc93s1_dir}/ldc93s1.csv" + +if [ ! -f "${ldc93s1_dir}/ldc93s1.csv" ]; then + echo "Downloading and preprocessing LDC93S1 example data, saving in ${ldc93s1_dir}." + python -u bin/import_ldc93s1.py ${ldc93s1_dir} +fi; # Force only one visible device because we have a single-sample dataset # and when trying to run on multiple devices (like GPUs), this will break @@ -20,101 +26,98 @@ for LOAD in 'init' 'last' 'auto'; do echo "########################################################" echo "#### Train ENGLISH model with just --checkpoint_dir ####" echo "########################################################" - python -u DeepSpeech.py --noshow_progressbar --noearly_stop\ + python -u DeepSpeech.py --noshow_progressbar --noearly_stop \ --alphabet_config_path "./data/alphabet.txt" \ --load "$LOAD" \ - --train_files "./data/ldc93s1/ldc93s1.csv" --train_batch_size 1 \ - --dev_files "./data/ldc93s1/ldc93s1.csv" --dev_batch_size 1 \ - --test_files "./data/ldc93s1/ldc93s1.csv" --test_batch_size 1 \ - --checkpoint_dir '/tmp/ckpt/transfer/eng-cudnn' \ + --train_files "${ldc93s1_csv}" --train_batch_size 1 \ + --dev_files "${ldc93s1_csv}" --dev_batch_size 1 \ + --test_files "${ldc93s1_csv}" --test_batch_size 1 \ + --scorer_path '' \ + --checkpoint_dir '/tmp/ckpt/transfer/eng' \ --n_hidden 100 \ - --epochs 10 \ - "$@" + --epochs 10 echo "##############################################################################" echo "#### Train ENGLISH model with --save_checkpoint_dir --load_checkpoint_dir ####" echo "##############################################################################" - python -u DeepSpeech.py --noshow_progressbar --noearly_stop\ + python -u DeepSpeech.py --noshow_progressbar --noearly_stop \ --alphabet_config_path "./data/alphabet.txt" \ --load "$LOAD" \ - --train_files "./data/ldc93s1/ldc93s1.csv" --train_batch_size 1 \ - --dev_files "./data/ldc93s1/ldc93s1.csv" --dev_batch_size 1 \ - --test_files "./data/ldc93s1/ldc93s1.csv" --test_batch_size 1 \ - --save_checkpoint_dir '/tmp/ckpt/transfer/eng-cudnn' \ - --load_checkpoint_dir '/tmp/ckpt/transfer/eng-cudnn' \ + --train_files "${ldc93s1_csv}" --train_batch_size 1 \ + --dev_files "${ldc93s1_csv}" --dev_batch_size 1 \ + --test_files "${ldc93s1_csv}" --test_batch_size 1 \ + --save_checkpoint_dir '/tmp/ckpt/transfer/eng' \ + --load_checkpoint_dir '/tmp/ckpt/transfer/eng' \ + --scorer_path '' \ --n_hidden 100 \ - --epochs 10 \ - "$@" + --epochs 10 echo "#################################################################################" echo "#### Transfer Russian model with --save_checkpoint_dir --load_checkpoint_dir ####" echo "#################################################################################" - python -u DeepSpeech.py --noshow_progressbar --noearly_stop\ + python -u DeepSpeech.py --noshow_progressbar --noearly_stop \ --drop_source_layers 1 \ --alphabet_config_path "${ru_dir}/alphabet.ru" \ --load 'last' \ - --train_files "${ru_dir}/ru.csv" --train_batch_size 1 \ - --dev_files "${ru_dir}/ru.csv" --dev_batch_size 1 \ - --test_files "${ru_dir}/ru.csv" --test_batch_size 1 \ - --save_checkpoint_dir '/tmp/ckpt/transfer/ru-cudnn' \ - --load_checkpoint_dir '/tmp/ckpt/transfer/eng-cudnn' \ + --train_files "${ru_csv}" --train_batch_size 1 \ + --dev_files "${ru_csv}" --dev_batch_size 1 \ + --test_files "${ru_csv}" --test_batch_size 1 \ + --save_checkpoint_dir '/tmp/ckpt/transfer/ru' \ + --load_checkpoint_dir '/tmp/ckpt/transfer/eng' \ + --scorer_path '' \ --n_hidden 100 \ - --epochs 10 \ - "$@" + --epochs 10 done echo "#######################################################" echo "##### Train ENGLISH model and transfer to RUSSIAN #####" -echo "##### while iterating over loading logic with CUDNN ###" +echo "##### while iterating over loading logic #####" echo "#######################################################" for LOAD in 'init' 'last' 'auto'; do echo "########################################################" echo "#### Train ENGLISH model with just --checkpoint_dir ####" echo "########################################################" - python -u DeepSpeech.py --noshow_progressbar --noearly_stop\ - --train_cudnn\ + python -u DeepSpeech.py --noshow_progressbar --noearly_stop \ --alphabet_config_path "./data/alphabet.txt" \ --load "$LOAD" \ - --train_files "./data/ldc93s1/ldc93s1.csv" --train_batch_size 1 \ - --dev_files "./data/ldc93s1/ldc93s1.csv" --dev_batch_size 1 \ - --test_files "./data/ldc93s1/ldc93s1.csv" --test_batch_size 1 \ - --checkpoint_dir '/tmp/ckpt/transfer/eng-cudnn' \ + --train_files "${ldc93s1_csv}" --train_batch_size 1 \ + --dev_files "${ldc93s1_csv}" --dev_batch_size 1 \ + --test_files "${ldc93s1_csv}" --test_batch_size 1 \ + --checkpoint_dir '/tmp/ckpt/transfer/eng' \ + --scorer_path '' \ --n_hidden 100 \ - --epochs 10 \ - "$@" + --epochs 10 echo "##############################################################################" echo "#### Train ENGLISH model with --save_checkpoint_dir --load_checkpoint_dir ####" echo "##############################################################################" - python -u DeepSpeech.py --noshow_progressbar --noearly_stop\ - --train_cudnn\ + python -u DeepSpeech.py --noshow_progressbar --noearly_stop \ --alphabet_config_path "./data/alphabet.txt" \ --load "$LOAD" \ - --train_files "./data/ldc93s1/ldc93s1.csv" --train_batch_size 1 \ - --dev_files "./data/ldc93s1/ldc93s1.csv" --dev_batch_size 1 \ - --test_files "./data/ldc93s1/ldc93s1.csv" --test_batch_size 1 \ - --save_checkpoint_dir '/tmp/ckpt/transfer/eng-cudnn' \ - --load_checkpoint_dir '/tmp/ckpt/transfer/eng-cudnn' \ + --train_files "${ldc93s1_csv}" --train_batch_size 1 \ + --dev_files "${ldc93s1_csv}" --dev_batch_size 1 \ + --test_files "${ldc93s1_csv}" --test_batch_size 1 \ + --save_checkpoint_dir '/tmp/ckpt/transfer/eng' \ + --load_checkpoint_dir '/tmp/ckpt/transfer/eng' \ + --scorer_path '' \ --n_hidden 100 \ - --epochs 10 \ - "$@" + --epochs 10 echo "####################################################################################" echo "#### Transfer to RUSSIAN model with --save_checkpoint_dir --load_checkpoint_dir ####" echo "####################################################################################" - python -u DeepSpeech.py --noshow_progressbar --noearly_stop\ - --load_cudnn\ + python -u DeepSpeech.py --noshow_progressbar --noearly_stop \ --drop_source_layers 1 \ --alphabet_config_path "${ru_dir}/alphabet.ru" \ --load 'last' \ - --train_files "${ru_dir}/ru.csv" --train_batch_size 1 \ - --dev_files "${ru_dir}/ru.csv" --dev_batch_size 1 \ - --test_files "${ru_dir}/ru.csv" --test_batch_size 1 \ - --save_checkpoint_dir '/tmp/ckpt/transfer/ru-cudnn' \ - --load_checkpoint_dir '/tmp/ckpt/transfer/eng-cudnn' \ + --train_files "${ru_csv}" --train_batch_size 1 \ + --dev_files "${ru_csv}" --dev_batch_size 1 \ + --test_files "${ru_csv}" --test_batch_size 1 \ + --save_checkpoint_dir '/tmp/ckpt/transfer/ru' \ + --load_checkpoint_dir '/tmp/ckpt/transfer/eng' \ + --scorer_path '' \ --n_hidden 100 \ - --epochs 10 \ - "$@" + --epochs 10 done diff --git a/taskcluster/tc-transfer-tests.sh b/taskcluster/tc-transfer-tests.sh new file mode 100644 index 00000000..f0a963a6 --- /dev/null +++ b/taskcluster/tc-transfer-tests.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +set -xe + +source $(dirname "$0")/tc-tests-utils.sh + +pyver_full=$1 + +if [ -z "${pyver_full}" ]; then + echo "No python version given, aborting." + exit 1 +fi; + +pyver=$(echo "${pyver_full}" | cut -d':' -f1) + +# 2.7.x => 27 +pyver_pkg=$(echo "${pyver}" | cut -d'.' -f1,2 | tr -d '.') + +py_unicode_type=$(echo "${pyver_full}" | cut -d':' -f2) +if [ "${py_unicode_type}" = "m" ]; then + pyconf="ucs2" +elif [ "${py_unicode_type}" = "mu" ]; then + pyconf="ucs4" +fi; + +unset PYTHON_BIN_PATH +unset PYTHONPATH +export PYENV_ROOT="${HOME}/ds-train/.pyenv" +export PATH="${PYENV_ROOT}/bin:${HOME}/bin:$PATH" + +mkdir -p ${PYENV_ROOT} || true +mkdir -p ${TASKCLUSTER_ARTIFACTS} || true +mkdir -p /tmp/train || true +mkdir -p /tmp/train_tflite || true + +install_pyenv "${PYENV_ROOT}" +install_pyenv_virtualenv "$(pyenv root)/plugins/pyenv-virtualenv" + +PYENV_NAME=deepspeech-train +PYTHON_CONFIGURE_OPTS="--enable-unicode=${pyconf}" pyenv install ${pyver} +pyenv virtualenv ${pyver} ${PYENV_NAME} +source ${PYENV_ROOT}/versions/${pyver}/envs/${PYENV_NAME}/bin/activate + +set -o pipefail +pip install --upgrade pip==19.3.1 setuptools==45.0.0 wheel==0.33.6 | cat +pip install --upgrade -r ${HOME}/DeepSpeech/ds/requirements.txt | cat +set +o pipefail + +pushd ${HOME}/DeepSpeech/ds/ + verify_ctcdecoder_url +popd + +platform=$(python -c 'import sys; import platform; plat = platform.system().lower(); arch = platform.machine().lower(); plat = "manylinux1" if plat == "linux" and arch == "x86_64" else plat; plat = "macosx_10_10" if plat == "darwin" else plat; sys.stdout.write("%s_%s" % (plat, platform.machine()));') +whl_ds_version="$(python -c 'from pkg_resources import parse_version; print(parse_version("'${DS_VERSION}'"))')" +decoder_pkg="ds_ctcdecoder-${whl_ds_version}-cp${pyver_pkg}-cp${pyver_pkg}${py_unicode_type}-${platform}.whl" + +decoder_pkg_url=${DECODER_ARTIFACTS_ROOT}/${decoder_pkg} + +LD_LIBRARY_PATH=${PY37_LDPATH}:$LD_LIBRARY_PATH pip install --verbose --only-binary :all: ${PY37_SOURCE_PACKAGE} ${decoder_pkg_url} | cat + +pushd ${HOME}/DeepSpeech/ds/ + time ./bin/run-tc-transfer.sh +popd + +deactivate diff --git a/taskcluster/test-transfer-linux-amd64-py36m-opt.yml b/taskcluster/test-transfer-linux-amd64-py36m-opt.yml new file mode 100644 index 00000000..dc084c98 --- /dev/null +++ b/taskcluster/test-transfer-linux-amd64-py36m-opt.yml @@ -0,0 +1,12 @@ +build: + template_file: test-linux-opt-base.tyml + dependencies: + - "linux-amd64-ctc-opt" + system_setup: + > + apt-get -qq -y install ${python.packages_trusty.apt} + args: + tests_cmdline: "${system.homedir.linux}/DeepSpeech/ds/taskcluster/tc-transfer-tests.sh 3.6.4:m" + metadata: + name: "DeepSpeech Linux AMD64 CPU transfer learning Py3.6" + description: "Training a DeepSpeech LDC93S1 model with transfer learning for Linux/AMD64 16kHz Python 3.6, CPU only, optimized version" diff --git a/util/checkpoints.py b/util/checkpoints.py index 837470f9..753c5fde 100644 --- a/util/checkpoints.py +++ b/util/checkpoints.py @@ -56,11 +56,11 @@ def _load_checkpoint(session, checkpoint_path): init_vars.add(v) load_vars -= init_vars - for v in load_vars: + for v in sorted(load_vars, key=lambda v: v.op.name): log_info('Loading variable from checkpoint: %s' % (v.op.name)) v.load(ckpt.get_tensor(v.op.name), session=session) - for v in init_vars: + for v in sorted(init_vars, key=lambda v: v.op.name): log_info('Initializing variable: %s' % (v.op.name)) session.run(v.initializer) From cedd72da9b74fc926cd4d764c3a56b3893e2d0a6 Mon Sep 17 00:00:00 2001 From: Reuben Morais Date: Mon, 17 Feb 2020 10:46:40 +0100 Subject: [PATCH 3/6] Force UTF-8 IO encoding --- bin/run-tc-transfer.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bin/run-tc-transfer.sh b/bin/run-tc-transfer.sh index c315e749..164e1b0b 100755 --- a/bin/run-tc-transfer.sh +++ b/bin/run-tc-transfer.sh @@ -19,6 +19,9 @@ fi; # and when trying to run on multiple devices (like GPUs), this will break export CUDA_VISIBLE_DEVICES=0 +# Force UTF-8 output +export PYTHONIOENCODING=utf-8 + echo "##### Train ENGLISH model and transfer to RUSSIAN #####" echo "##### while iterating over loading logic #####" From c46d8396bc8fc4ffc820feefc8b67e7fa23cd203 Mon Sep 17 00:00:00 2001 From: Reuben Morais Date: Mon, 17 Feb 2020 12:45:37 +0100 Subject: [PATCH 4/6] Respect --load when exporting --- DeepSpeech.py | 62 ++++++++++++++++++++------------------------------- 1 file changed, 24 insertions(+), 38 deletions(-) diff --git a/DeepSpeech.py b/DeepSpeech.py index ba4ce998..27f801b9 100755 --- a/DeepSpeech.py +++ b/DeepSpeech.py @@ -21,7 +21,6 @@ from datetime import datetime from ds_ctcdecoder import ctc_beam_search_decoder, Scorer from evaluate import evaluate from six.moves import zip, range -from tensorflow.python.tools import freeze_graph, strip_unused_lib from util.config import Config, initialize_globals from util.checkpoints import load_or_init_graph from util.feeding import create_dataset, samples_to_mfccs, audiofile_to_features @@ -733,49 +732,40 @@ def export(): if FLAGS.export_language: outputs['metadata_language'] = tf.constant([FLAGS.export_language.encode('utf-8')], name='metadata_language') + # Prevent further graph changes + tfv1.get_default_graph().finalize() + output_names_tensors = [tensor.op.name for tensor in outputs.values() if isinstance(tensor, Tensor)] output_names_ops = [op.name for op in outputs.values() if isinstance(op, Operation)] - output_names = ",".join(output_names_tensors + output_names_ops) + output_names = output_names_tensors + output_names_ops - # Create a saver using variables from the above newly created graph - saver = tfv1.train.Saver() + with tf.Session() as session: + # Restore variables from checkpoint + if FLAGS.load == 'auto': + method_order = ['best', 'last'] + else: + method_order = [FLAGS.load] + load_or_init_graph(session, method_order) - # Restore variables from training checkpoint - checkpoint = tf.train.get_checkpoint_state(FLAGS.save_checkpoint_dir) - checkpoint_path = checkpoint.model_checkpoint_path + output_filename = FLAGS.export_name + '.pb' + if FLAGS.remove_export: + if os.path.isdir(FLAGS.export_dir): + log_info('Removing old export') + shutil.rmtree(FLAGS.export_dir) - output_filename = FLAGS.export_name + '.pb' - if FLAGS.remove_export: - if os.path.isdir(FLAGS.export_dir): - log_info('Removing old export') - shutil.rmtree(FLAGS.export_dir) - try: output_graph_path = os.path.join(FLAGS.export_dir, output_filename) if not os.path.isdir(FLAGS.export_dir): os.makedirs(FLAGS.export_dir) - def do_graph_freeze(output_file=None, output_node_names=None, variables_blacklist=''): - frozen = freeze_graph.freeze_graph_with_def_protos( - input_graph_def=tfv1.get_default_graph().as_graph_def(), - input_saver_def=saver.as_saver_def(), - input_checkpoint=checkpoint_path, - output_node_names=output_node_names, - restore_op_name=None, - filename_tensor_name=None, - output_graph=output_file, - clear_devices=False, - variable_names_blacklist=variables_blacklist, - initializer_nodes='') + frozen_graph = tfv1.graph_util.convert_variables_to_constants( + sess=session, + input_graph_def=tfv1.get_default_graph().as_graph_def(), + output_node_names=output_names) - input_node_names = [] - return strip_unused_lib.strip_unused( - input_graph_def=frozen, - input_node_names=input_node_names, - output_node_names=output_node_names.split(','), - placeholder_type_enum=tf.float32.as_datatype_enum) - - frozen_graph = do_graph_freeze(output_node_names=output_names) + frozen_graph = tfv1.graph_util.extract_sub_graph( + graph_def=frozen_graph, + dest_nodes=output_names) if not FLAGS.export_tflite: with open(output_graph_path, 'wb') as fout: @@ -784,7 +774,7 @@ def export(): output_tflite_path = os.path.join(FLAGS.export_dir, output_filename.replace('.pb', '.tflite')) converter = tf.lite.TFLiteConverter(frozen_graph, input_tensors=inputs.values(), output_tensors=outputs.values()) - converter.optimizations = [ tf.lite.Optimize.DEFAULT ] + converter.optimizations = [tf.lite.Optimize.DEFAULT] # AudioSpectrogram and Mfcc ops are custom but have built-in kernels in TFLite converter.allow_custom_ops = True tflite_model = converter.convert() @@ -792,11 +782,7 @@ def export(): with open(output_tflite_path, 'wb') as fout: fout.write(tflite_model) - log_info('Exported model for TF Lite engine as {}'.format(os.path.basename(output_tflite_path))) - log_info('Models exported at %s' % (FLAGS.export_dir)) - except RuntimeError as e: - log_error(str(e)) def package_zip(): # --export_dir path/to/export/LANG_CODE/ => path/to/export/LANG_CODE.zip From 0e2f34f8cfb499538dad9aa55617a75ef24b0815 Mon Sep 17 00:00:00 2001 From: Reuben Morais Date: Mon, 17 Feb 2020 12:46:00 +0100 Subject: [PATCH 5/6] Synchronize TensorFlow logging with --log_level flag --- DeepSpeech.py | 10 +++++++++- util/flags.py | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/DeepSpeech.py b/DeepSpeech.py index 27f801b9..96a8ba5c 100755 --- a/DeepSpeech.py +++ b/DeepSpeech.py @@ -6,7 +6,8 @@ import os import sys LOG_LEVEL_INDEX = sys.argv.index('--log_level') + 1 if '--log_level' in sys.argv else 0 -os.environ['TF_CPP_MIN_LOG_LEVEL'] = sys.argv[LOG_LEVEL_INDEX] if 0 < LOG_LEVEL_INDEX < len(sys.argv) else '3' +DESIRED_LOG_LEVEL = sys.argv[LOG_LEVEL_INDEX] if 0 < LOG_LEVEL_INDEX < len(sys.argv) else '3' +os.environ['TF_CPP_MIN_LOG_LEVEL'] = DESIRED_LOG_LEVEL import absl.app import json @@ -17,6 +18,13 @@ import tensorflow as tf import tensorflow.compat.v1 as tfv1 import time +tfv1.logging.set_verbosity({ + '0': tfv1.logging.DEBUG, + '1': tfv1.logging.INFO, + '2': tfv1.logging.WARN, + '3': tfv1.logging.ERROR +}.get(DESIRED_LOG_LEVEL)) + from datetime import datetime from ds_ctcdecoder import ctc_beam_search_decoder, Scorer from evaluate import evaluate diff --git a/util/flags.py b/util/flags.py index 5b5fee0d..6f3d1bea 100644 --- a/util/flags.py +++ b/util/flags.py @@ -119,7 +119,7 @@ def create_flags(): # Reporting - f.DEFINE_integer('log_level', 1, 'log level for console logs - 0: INFO, 1: WARN, 2: ERROR, 3: FATAL') + f.DEFINE_integer('log_level', 1, 'log level for console logs - 0: DEBUG, 1: INFO, 2: WARN, 3: ERROR') f.DEFINE_boolean('show_progressbar', True, 'Show progress for training, validation and testing processes. Log level should be > 0.') f.DEFINE_boolean('log_placement', False, 'whether to log device placement of the operators to the console') From bd8b96c19dc1b640705279401a8d8fa17263e022 Mon Sep 17 00:00:00 2001 From: Reuben Morais Date: Mon, 17 Feb 2020 12:46:32 +0100 Subject: [PATCH 6/6] Remove unneeded Saver instances --- DeepSpeech.py | 3 --- evaluate.py | 3 --- 2 files changed, 6 deletions(-) diff --git a/DeepSpeech.py b/DeepSpeech.py index 96a8ba5c..dabb3143 100755 --- a/DeepSpeech.py +++ b/DeepSpeech.py @@ -811,9 +811,6 @@ def do_single_file_inference(input_file_path): with tfv1.Session(config=Config.session_config) as session: inputs, outputs, _ = create_inference_graph(batch_size=1, n_steps=-1) - # Create a saver using variables from the above newly created graph - saver = tfv1.train.Saver() - # Restore variables from training checkpoint if FLAGS.load == 'auto': method_order = ['best', 'last'] diff --git a/evaluate.py b/evaluate.py index 6a8149be..d0ce3231 100755 --- a/evaluate.py +++ b/evaluate.py @@ -81,9 +81,6 @@ def evaluate(test_csvs, create_model): except NotImplementedError: num_processes = 1 - # Create a saver using variables from the above newly created graph - saver = tfv1.train.Saver() - with tfv1.Session(config=Config.session_config) as session: if FLAGS.load == 'auto': method_order = ['best', 'last']