aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar A. Unique TensorFlower <nobody@tensorflow.org>2016-05-05 08:36:05 -0800
committerGravatar TensorFlower Gardener <gardener@tensorflow.org>2016-05-05 09:41:47 -0700
commit8bf6ef1337359993a8be057c0dc90da8f5a6e4fa (patch)
treec7367050bf36d6f4b17a93d06700dc7169012ac1
parent931e848c28e97e8cae410af242f8e09d75663ee4 (diff)
Merge changes from github.
Change: 121586635
-rw-r--r--README.md6
-rwxr-xr-xconfigure71
-rw-r--r--tensorflow/contrib/BUILD1
-rw-r--r--tensorflow/contrib/__init__.py1
-rw-r--r--tensorflow/contrib/copy_graph/BUILD42
-rw-r--r--tensorflow/contrib/copy_graph/__init__.py26
-rw-r--r--tensorflow/contrib/copy_graph/python/__init__.py15
-rw-r--r--tensorflow/contrib/copy_graph/python/util/__init__.py15
-rw-r--r--tensorflow/contrib/copy_graph/python/util/copy_elements.py261
-rw-r--r--tensorflow/contrib/copy_graph/python/util/copy_test.py110
-rw-r--r--tensorflow/contrib/ffmpeg/kernels/ffmpeg_lib.cc2
-rw-r--r--tensorflow/contrib/ffmpeg/kernels/ffmpeg_lib.h6
-rw-r--r--tensorflow/contrib/ffmpeg/kernels/ffmpeg_lib_test.cc2
-rw-r--r--tensorflow/contrib/learn/BUILD17
-rw-r--r--tensorflow/contrib/learn/python/learn/README.md197
-rw-r--r--tensorflow/contrib/learn/python/learn/__init__.py2
-rw-r--r--tensorflow/contrib/learn/python/learn/datasets/__init__.py4
-rw-r--r--tensorflow/contrib/learn/python/learn/datasets/base.py39
-rw-r--r--tensorflow/contrib/learn/python/learn/datasets/text_datasets.py46
-rw-r--r--tensorflow/contrib/learn/python/learn/estimators/base.py422
-rw-r--r--tensorflow/contrib/learn/python/learn/monitors.py20
-rw-r--r--tensorflow/contrib/metrics/BUILD4
-rw-r--r--tensorflow/contrib/metrics/__init__.py1
-rw-r--r--tensorflow/contrib/metrics/python/kernel_tests/confusion_matrix_ops_test.py127
-rw-r--r--tensorflow/contrib/metrics/python/ops/confusion_matrix_ops.py86
-rw-r--r--tensorflow/contrib/tensor_forest/core/ops/count_extremely_random_stats_op.cc2
-rw-r--r--tensorflow/core/common_runtime/function.cc2
-rw-r--r--tensorflow/core/common_runtime/gpu/gpu_tracer.cc2
-rw-r--r--tensorflow/core/common_runtime/gpu/gpu_tracer.h2
-rw-r--r--tensorflow/core/distributed_runtime/master_session.cc2
-rw-r--r--tensorflow/core/graph/optimizer_cse_test.cc2
-rw-r--r--tensorflow/core/graph/subgraph.h2
-rw-r--r--tensorflow/core/kernels/cholesky_grad.cc10
-rw-r--r--tensorflow/core/kernels/eigen_activations.h2
-rw-r--r--tensorflow/core/kernels/eigen_backward_cuboid_convolutions.h4
-rw-r--r--tensorflow/core/kernels/ops_util.cc10
-rw-r--r--tensorflow/core/kernels/range_sampler_test.cc2
-rw-r--r--tensorflow/core/kernels/stack_ops.cc1
-rw-r--r--tensorflow/core/kernels/tensor_array_ops.cc1
-rw-r--r--tensorflow/core/lib/core/arena.h2
-rw-r--r--tensorflow/core/platform/default/build_config.bzl11
-rw-r--r--tensorflow/core/platform/default/build_config/BUILD29
-rw-r--r--tensorflow/core/platform/load_library.cc18
-rw-r--r--tensorflow/core/platform/load_library.h3
-rw-r--r--tensorflow/core/public/version.h2
-rw-r--r--tensorflow/examples/skflow/iris.py4
-rw-r--r--tensorflow/examples/skflow/iris_val_based_early_stopping.py4
-rw-r--r--tensorflow/examples/skflow/language_model.py1
-rw-r--r--tensorflow/examples/skflow/mnist.py3
-rw-r--r--tensorflow/examples/skflow/mnist_weights.py2
-rw-r--r--tensorflow/examples/skflow/text_classification.py17
-rw-r--r--tensorflow/examples/skflow/text_classification_builtin_rnn_model.py12
-rw-r--r--tensorflow/examples/skflow/text_classification_character_cnn.py12
-rw-r--r--tensorflow/examples/skflow/text_classification_character_rnn.py17
-rw-r--r--tensorflow/examples/skflow/text_classification_cnn.py12
-rw-r--r--tensorflow/examples/skflow/text_classification_save_restore.py17
-rw-r--r--tensorflow/examples/tutorials/deepdream/README.md27
-rw-r--r--tensorflow/examples/tutorials/deepdream/deepdream.ipynb1380
-rw-r--r--tensorflow/examples/tutorials/deepdream/pilatus800.jpgbin0 -> 108340 bytes
-rw-r--r--tensorflow/g3doc/api_docs/python/framework.md2
-rw-r--r--tensorflow/g3doc/api_docs/python/state_ops.md2
-rw-r--r--tensorflow/g3doc/api_docs/python/train.md6
-rw-r--r--tensorflow/g3doc/get_started/index.md2
-rw-r--r--tensorflow/g3doc/get_started/os_setup.md160
-rw-r--r--tensorflow/g3doc/how_tos/adding_an_op/index.md4
-rw-r--r--tensorflow/g3doc/how_tos/new_data_formats/index.md2
-rw-r--r--tensorflow/g3doc/resources/index.md1
-rw-r--r--tensorflow/models/embedding/word2vec.py8
-rw-r--r--tensorflow/models/embedding/word2vec_optimized.py8
-rw-r--r--tensorflow/python/BUILD18
-rw-r--r--tensorflow/python/client/tf_session_helper.cc6
-rw-r--r--tensorflow/python/client/tf_session_helper.h23
-rw-r--r--tensorflow/python/framework/gen_docs_combined.py3
-rw-r--r--tensorflow/python/framework/ops.py3
-rw-r--r--tensorflow/python/framework/ops_test.py2
-rw-r--r--tensorflow/python/kernel_tests/conv_ops_test.py19
-rw-r--r--tensorflow/python/kernel_tests/one_hot_op_test.py204
-rw-r--r--tensorflow/python/kernel_tests/pooling_ops_test.py28
-rw-r--r--tensorflow/python/lib/core/numpy.cc28
-rw-r--r--tensorflow/python/lib/core/numpy.h46
-rw-r--r--tensorflow/python/lib/core/py_func.cc29
-rw-r--r--tensorflow/python/lib/core/py_func.h5
-rw-r--r--tensorflow/python/ops/array_ops.py106
-rw-r--r--tensorflow/python/ops/batch_norm_benchmark.py2
-rw-r--r--tensorflow/python/ops/linalg_grad.py2
-rw-r--r--tensorflow/python/ops/sparse_ops.py2
-rw-r--r--tensorflow/python/ops/variable_scope.py2
-rw-r--r--tensorflow/python/platform/numpy.i2
-rw-r--r--tensorflow/python/training/adadelta.py2
-rw-r--r--tensorflow/python/training/session_manager.py2
-rw-r--r--tensorflow/python/training/supervisor.py2
-rw-r--r--tensorflow/stream_executor/cuda/cuda_diagnostics.cc101
-rw-r--r--tensorflow/stream_executor/cuda/cuda_diagnostics.h6
-rw-r--r--tensorflow/stream_executor/cuda/cuda_dnn.cc62
-rw-r--r--tensorflow/stream_executor/cuda/cuda_gpu_executor.cc18
-rw-r--r--tensorflow/stream_executor/cuda/cuda_helpers.h2
-rw-r--r--tensorflow/stream_executor/dso_loader.cc73
-rw-r--r--tensorflow/stream_executor/dso_loader.h5
-rw-r--r--tensorflow/stream_executor/lib/static_threadlocal.h2
-rw-r--r--tensorflow/stream_executor/lib/statusor.h2
-rw-r--r--tensorflow/tensorboard/components/tf-graph-common/lib/graph.ts2
-rw-r--r--tensorflow/tensorboard/components/tf-graph-common/lib/hierarchy.ts2
-rw-r--r--tensorflow/tensorboard/components/tf-graph-common/lib/layout.ts2
-rw-r--r--tensorflow/tensorboard/dist/tf-tensorboard.html6
-rw-r--r--tensorflow/tensorboard/http_api.md2
-rw-r--r--tensorflow/tensorflow.bzl4
-rw-r--r--tensorflow/tools/ci_build/README.md2
-rwxr-xr-xtensorflow/tools/ci_build/ci_parameterized_build.sh29
-rw-r--r--tensorflow/tools/dist_test/Dockerfile2
-rw-r--r--tensorflow/tools/dist_test/server/Dockerfile2
-rw-r--r--tensorflow/tools/dist_test/server/Dockerfile.test2
-rw-r--r--tensorflow/tools/docker/Dockerfile2
-rw-r--r--tensorflow/tools/docker/Dockerfile.gpu2
-rw-r--r--tensorflow/tools/docs/tf-doxy_for_md-config4
-rw-r--r--tensorflow/tools/pip_package/setup.py2
-rw-r--r--third_party/gpus/crosstool/BUILD14
-rw-r--r--third_party/gpus/crosstool/CROSSTOOL92
-rwxr-xr-xthird_party/gpus/crosstool/clang/bin/crosstool_wrapper_driver_is_not_gcc2
-rw-r--r--third_party/gpus/cuda/BUILD87
-rwxr-xr-xthird_party/gpus/cuda/cuda_config.sh99
-rw-r--r--third_party/gpus/cuda/platform.bzl59
121 files changed, 4004 insertions, 556 deletions
diff --git a/README.md b/README.md
index d398b035f1..8de20f671f 100644
--- a/README.md
+++ b/README.md
@@ -33,9 +33,9 @@ and discussion.**
People who are a little bit adventurous can also try our nightly binaries:
-* Linux CPU only: [Python 2](http://ci.tensorflow.org/view/Nightly/job/nightly-matrix-cpu/TF_BUILD_CONTAINER_TYPE=CPU,TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON2,label=cpu-slave/lastSuccessfulBuild/artifact/pip_test/whl/tensorflow-0.8.0rc0-cp27-none-linux_x86_64.whl) ([build history](http://ci.tensorflow.org/view/Nightly/job/nightly-matrix-cpu/TF_BUILD_CONTAINER_TYPE=CPU,TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON2,label=cpu-slave/)) / [Python 3](http://ci.tensorflow.org/view/Nightly/job/nightly-matrix-cpu/TF_BUILD_CONTAINER_TYPE=CPU,TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON3,label=cpu-slave/lastSuccessfulBuild/artifact/pip_test/whl/tensorflow-0.8.0rc0-cp34-cp34m-linux_x86_64.whl) ([build history](http://ci.tensorflow.org/view/Nightly/job/nightly-matrix-cpu/TF_BUILD_CONTAINER_TYPE=CPU,TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON3,label=cpu-slave/))
-* Linux GPU: [Python 2](http://ci.tensorflow.org/view/Nightly/job/nigntly-matrix-linux-gpu/TF_BUILD_CONTAINER_TYPE=GPU,TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON2,label=gpu-working/lastSuccessfulBuild/artifact/pip_test/whl/tensorflow-0.8.0rc0-cp27-none-linux_x86_64.whl) ([build history](http://ci.tensorflow.org/view/Nightly/job/nigntly-matrix-linux-gpu/TF_BUILD_CONTAINER_TYPE=GPU,TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON2,label=gpu-working/)) / [Python 3](http://ci.tensorflow.org/view/Nightly/job/nigntly-matrix-linux-gpu/TF_BUILD_CONTAINER_TYPE=GPU,TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON3,label=gpu-working/lastSuccessfulBuild/artifact/pip_test/whl/tensorflow-0.8.0rc0-cp34-cp34m-linux_x86_64.whl) ([build history](http://ci.tensorflow.org/view/Nightly/job/nigntly-matrix-linux-gpu/TF_BUILD_CONTAINER_TYPE=GPU,TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON3,label=gpu-working/))
-* Mac CPU only: [Python 2](http://ci.tensorflow.org/view/Nightly/job/nightly-matrix-cpu/TF_BUILD_CONTAINER_TYPE=CPU,TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON2,label=mac-slave/lastSuccessfulBuild/artifact/pip_test/whl/tensorflow-0.8.0rc0-py2-none-any.whl) ([build history](http://ci.tensorflow.org/view/Nightly/job/nightly-matrix-cpu/TF_BUILD_CONTAINER_TYPE=CPU,TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON2,label=mac-slave/)) / [Python 3](http://ci.tensorflow.org/view/Nightly/job/nightly-matrix-cpu/TF_BUILD_CONTAINER_TYPE=CPU,TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON3,label=mac-slave/lastSuccessfulBuild/artifact/pip_test/whl/tensorflow-0.8.0rc0-py3-none-any.whl) ([build history](http://ci.tensorflow.org/view/Nightly/job/nightly-matrix-cpu/TF_BUILD_CONTAINER_TYPE=CPU,TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON3,label=mac-slave/))
+* Linux CPU only: [Python 2](http://ci.tensorflow.org/view/Nightly/job/nightly-matrix-cpu/TF_BUILD_CONTAINER_TYPE=CPU,TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON2,label=cpu-slave/lastSuccessfulBuild/artifact/pip_test/whl/tensorflow-0.8.0-cp27-none-linux_x86_64.whl) ([build history](http://ci.tensorflow.org/view/Nightly/job/nightly-matrix-cpu/TF_BUILD_CONTAINER_TYPE=CPU,TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON2,label=cpu-slave/)) / [Python 3](http://ci.tensorflow.org/view/Nightly/job/nightly-matrix-cpu/TF_BUILD_CONTAINER_TYPE=CPU,TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON3,label=cpu-slave/lastSuccessfulBuild/artifact/pip_test/whl/tensorflow-0.8.0-cp34-cp34m-linux_x86_64.whl) ([build history](http://ci.tensorflow.org/view/Nightly/job/nightly-matrix-cpu/TF_BUILD_CONTAINER_TYPE=CPU,TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON3,label=cpu-slave/))
+* Linux GPU: [Python 2](http://ci.tensorflow.org/view/Nightly/job/nigntly-matrix-linux-gpu/TF_BUILD_CONTAINER_TYPE=GPU,TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON2,label=gpu-working/lastSuccessfulBuild/artifact/pip_test/whl/tensorflow-0.8.0-cp27-none-linux_x86_64.whl) ([build history](http://ci.tensorflow.org/view/Nightly/job/nigntly-matrix-linux-gpu/TF_BUILD_CONTAINER_TYPE=GPU,TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON2,label=gpu-working/)) / [Python 3](http://ci.tensorflow.org/view/Nightly/job/nigntly-matrix-linux-gpu/TF_BUILD_CONTAINER_TYPE=GPU,TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON3,label=gpu-working/lastSuccessfulBuild/artifact/pip_test/whl/tensorflow-0.8.0-cp34-cp34m-linux_x86_64.whl) ([build history](http://ci.tensorflow.org/view/Nightly/job/nigntly-matrix-linux-gpu/TF_BUILD_CONTAINER_TYPE=GPU,TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON3,label=gpu-working/))
+* Mac CPU only: [Python 2](http://ci.tensorflow.org/view/Nightly/job/nightly-matrix-cpu/TF_BUILD_CONTAINER_TYPE=CPU,TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON2,label=mac-slave/lastSuccessfulBuild/artifact/pip_test/whl/tensorflow-0.8.0-py2-none-any.whl) ([build history](http://ci.tensorflow.org/view/Nightly/job/nightly-matrix-cpu/TF_BUILD_CONTAINER_TYPE=CPU,TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON2,label=mac-slave/)) / [Python 3](http://ci.tensorflow.org/view/Nightly/job/nightly-matrix-cpu/TF_BUILD_CONTAINER_TYPE=CPU,TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON3,label=mac-slave/lastSuccessfulBuild/artifact/pip_test/whl/tensorflow-0.8.0-py3-none-any.whl) ([build history](http://ci.tensorflow.org/view/Nightly/job/nightly-matrix-cpu/TF_BUILD_CONTAINER_TYPE=CPU,TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON3,label=mac-slave/))
* [Android](http://ci.tensorflow.org/view/Nightly/job/nightly-matrix-android/TF_BUILD_CONTAINER_TYPE=ANDROID,TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=NO_PIP,TF_BUILD_PYTHON_VERSION=PYTHON2,label=android-slave/lastSuccessfulBuild/artifact/bazel-out/local_linux/bin/tensorflow/examples/android/tensorflow_demo.apk) ([build history](http://ci.tensorflow.org/view/Nightly/job/nightly-matrix-android/TF_BUILD_CONTAINER_TYPE=ANDROID,TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=NO_PIP,TF_BUILD_PYTHON_VERSION=PYTHON2,label=android-slave/))
#### *Try your first TensorFlow program*
diff --git a/configure b/configure
index 75098c17ee..3f9a53b573 100755
--- a/configure
+++ b/configure
@@ -89,6 +89,8 @@ done
# Find out where the CUDA toolkit is installed
+OSNAME=`uname -s`
+
while true; do
# Configure the Cuda SDK version to use.
if [ -z "$TF_CUDA_VERSION" ]; then
@@ -104,15 +106,24 @@ while true; do
CUDA_TOOLKIT_PATH=$default_cuda_path
fi
fi
+
if [[ -z "$TF_CUDA_VERSION" ]]; then
TF_CUDA_EXT=""
else
TF_CUDA_EXT=".$TF_CUDA_VERSION"
fi
- if [ -e $CUDA_TOOLKIT_PATH/lib64/libcudart.so$TF_CUDA_EXT ]; then
+
+ if [ "$OSNAME" == "Linux" ]; then
+ CUDA_RT_LIB_PATH="lib64/libcudart.so${TF_CUDA_EXT}"
+ elif [ "$OSNAME" == "Darwin" ]; then
+ CUDA_RT_LIB_PATH="lib/libcudart${TF_CUDA_EXT}.dylib"
+ fi
+
+ if [ -e "${CUDA_TOOLKIT_PATH}/${CUDA_RT_LIB_PATH}" ]; then
break
fi
- echo "Invalid path to CUDA $TF_CUDA_VERSION toolkit. $CUDA_TOOLKIT_PATH/lib64/libcudart.so$TF_CUDA_EXT cannot be found"
+ echo "Invalid path to CUDA $TF_CUDA_VERSION toolkit. ${CUDA_TOOLKIT_PATH}/${CUDA_RT_LIB_PATH} cannot be found"
+
if [ -z "$fromuser" ]; then
exit 1
fi
@@ -138,25 +149,41 @@ while true; do
fi
# Result returned from "read" will be used unexpanded. That make "~" unuseable.
# Going through one more level of expansion to handle that.
- CUDNN_INSTALL_PATH=$(bash -c "readlink -f $CUDNN_INSTALL_PATH")
+ CUDNN_INSTALL_PATH=`${PYTHON_BIN_PATH} -c "import os; print(os.path.realpath(os.path.expanduser('${CUDNN_INSTALL_PATH}')))"`
fi
+
if [[ -z "$TF_CUDNN_VERSION" ]]; then
TF_CUDNN_EXT=""
else
TF_CUDNN_EXT=".$TF_CUDNN_VERSION"
fi
- if [ -e "$CUDNN_INSTALL_PATH/libcudnn.so${TF_CUDNN_EXT}" -o -e "$CUDNN_INSTALL_PATH/lib64/libcudnn.so${TF_CUDNN_EXT}" ]; then
- break
+
+ if [ "$OSNAME" == "Linux" ]; then
+ CUDA_DNN_LIB_PATH="lib64/libcudnn.so${TF_CUDNN_EXT}"
+ CUDA_DNN_LIB_ALT_PATH="libcudnn.so${TF_CUDNN_EXT}"
+ elif [ "$OSNAME" == "Darwin" ]; then
+ CUDA_DNN_LIB_PATH="lib/libcudnn${TF_CUDNN_EXT}.dylib"
+ CUDA_DNN_LIB_ALT_PATH="libcudnn${TF_CUDNN_EXT}.dylib"
fi
- CUDNN_PATH_FROM_LDCONFIG="$(ldconfig -p | sed -n 's/.*libcudnn.so .* => \(.*\)/\1/p')"
- if [ -e "${CUDNN_PATH_FROM_LDCONFIG}${TF_CUDNN_EXT}" ]; then
- CUDNN_INSTALL_PATH="$(dirname ${CUDNN_PATH_FROM_LDCONFIG})"
+
+ if [ -e "$CUDNN_INSTALL_PATH/${CUDA_DNN_LIB_ALT_PATH}" -o -e "$CUDNN_INSTALL_PATH/${CUDA_DNN_LIB_PATH}" ]; then
break
fi
- echo "Invalid path to cuDNN ${TF_CUDNN_VERSION} toolkit. Neither of the following two files can be found:"
- echo "$CUDNN_INSTALL_PATH/lib64/libcudnn.so${TF_CUDNN_EXT}"
- echo "$CUDNN_INSTALL_PATH/libcudnn.so${TF_CUDNN_EXT}"
- echo "${CUDNN_PATH_FROM_LDCONFIG}${TF_CUDNN_EXT}"
+
+ if [ "$OSNAME" == "Linux" ]; then
+ CUDNN_PATH_FROM_LDCONFIG="$(ldconfig -p | sed -n 's/.*libcudnn.so .* => \(.*\)/\1/p')"
+ if [ -e "${CUDNN_PATH_FROM_LDCONFIG}${TF_CUDNN_EXT}" ]; then
+ CUDNN_INSTALL_PATH="$(dirname ${CUDNN_PATH_FROM_LDCONFIG})"
+ break
+ fi
+ fi
+ echo "Invalid path to cuDNN ${CUDNN_VERSION} toolkit. Neither of the following two files can be found:"
+ echo "${CUDNN_INSTALL_PATH}/${CUDA_DNN_LIB_PATH}"
+ echo "${CUDNN_INSTALL_PATH}/${CUDA_DNN_LIB_ALT_PATH}"
+ if [ "$OSNAME" == "Linux" ]; then
+ echo "${CUDNN_PATH_FROM_LDCONFIG}${TF_CUDNN_EXT}"
+ fi
+
if [ -z "$fromuser" ]; then
exit 1
fi
@@ -168,18 +195,16 @@ done
cat > third_party/gpus/cuda/cuda.config <<EOF
# CUDA_TOOLKIT_PATH refers to the CUDA toolkit.
CUDA_TOOLKIT_PATH="$CUDA_TOOLKIT_PATH"
-
# CUDNN_INSTALL_PATH refers to the cuDNN toolkit. The cuDNN header and library
# files can be either in this directory, or under include/ and lib64/
# directories separately.
CUDNN_INSTALL_PATH="$CUDNN_INSTALL_PATH"
# The Cuda SDK version that should be used in this build (empty to use libcudart.so symlink)
-TF_CUDA_VERSION=$TF_CUDA_EXT
-
-# The Cudnn version that should be used in this build (empty to use libcudnn.so symlink)
-TF_CUDNN_VERSION=$TF_CUDNN_EXT
+TF_CUDA_VERSION=$TF_CUDA_VERSION
+# The Cudnn version that should be used in this build
+TF_CUDNN_VERSION=$TF_CUDNN_VERSION
EOF
# Configure the gcc host compiler to use
@@ -187,13 +212,17 @@ export WARNING=$DO_NOT_SUBMIT_WARNING
perl -pi -e "s,CPU_COMPILER = \('.*'\),# \$ENV{WARNING}\nCPU_COMPILER = ('$GCC_HOST_COMPILER_PATH'),s" third_party/gpus/crosstool/clang/bin/crosstool_wrapper_driver_is_not_gcc
perl -pi -e "s,GCC_HOST_COMPILER_PATH = \('.*'\),# \$ENV{WARNING}\nGCC_HOST_COMPILER_PATH = ('$GCC_HOST_COMPILER_PATH'),s" third_party/gpus/crosstool/clang/bin/crosstool_wrapper_driver_is_not_gcc
+# Configure the platform name.
+perl -pi -e "s,PLATFORM = \".*\",PLATFORM = \"$OSNAME\",s" third_party/gpus/cuda/platform.bzl
+
# Configure the Cuda toolkit version to work with.
-perl -pi -e "s,CUDA_VERSION = \"[0-9\.]*\",CUDA_VERSION = \"$TF_CUDA_EXT\",s" tensorflow/core/platform/default/build_config.bzl
-perl -pi -e "s,(GetCudaVersion.*return )\"[0-9\.]*\",\1\"$TF_CUDA_EXT\",s" tensorflow/stream_executor/dso_loader.cc
+perl -pi -e "s,(GetCudaVersion.*return )\"[0-9\.]*\",\1\"$TF_CUDA_VERSION\",s" tensorflow/stream_executor/dso_loader.cc
+perl -pi -e "s,CUDA_VERSION = \"[0-9\.]*\",CUDA_VERSION = \"$TF_CUDA_VERSION\",s" third_party/gpus/cuda/platform.bzl
# Configure the Cudnn version to work with.
-perl -pi -e "s,CUDNN_VERSION = \"[0-9\.]*\",CUDNN_VERSION = \"$TF_CUDNN_EXT\",s" tensorflow/core/platform/default/build_config.bzl
-perl -pi -e "s,(GetCudnnVersion.*return )\"[0-9\.]*\",\1\"$TF_CUDNN_EXT\",s" tensorflow/stream_executor/dso_loader.cc
+perl -pi -e "s,(GetCudnnVersion.*return )\"[0-9\.]*\",\1\"$TF_CUDNN_VERSION\",s" tensorflow/stream_executor/dso_loader.cc
+perl -pi -e "s,CUDNN_VERSION = \"[0-9\.]*\",CUDNN_VERSION = \"$TF_CUDNN_VERSION\",s" third_party/gpus/cuda/platform.bzl
+
# Configure the compute capabilities that TensorFlow builds for.
# Since Cuda toolkit is not backward-compatible, this is not guaranteed to work.
diff --git a/tensorflow/contrib/BUILD b/tensorflow/contrib/BUILD
index e3ef641704..196e949f70 100644
--- a/tensorflow/contrib/BUILD
+++ b/tensorflow/contrib/BUILD
@@ -14,6 +14,7 @@ py_library(
visibility = ["//visibility:public"],
deps = [
"//tensorflow/contrib/bayesflow:bayesflow_py",
+ "//tensorflow/contrib/copy_graph:copy_graph_py",
"//tensorflow/contrib/ctc:ctc_py",
"//tensorflow/contrib/distributions:distributions_py",
"//tensorflow/contrib/ffmpeg:ffmpeg_ops_py",
diff --git a/tensorflow/contrib/__init__.py b/tensorflow/contrib/__init__.py
index 7ad9d0a09d..ba8533ba8d 100644
--- a/tensorflow/contrib/__init__.py
+++ b/tensorflow/contrib/__init__.py
@@ -35,3 +35,4 @@ from tensorflow.contrib import skflow
from tensorflow.contrib import tensor_forest
from tensorflow.contrib import testing
from tensorflow.contrib import util
+from tensorflow.contrib import copy_graph
diff --git a/tensorflow/contrib/copy_graph/BUILD b/tensorflow/contrib/copy_graph/BUILD
new file mode 100644
index 0000000000..5a775c2022
--- /dev/null
+++ b/tensorflow/contrib/copy_graph/BUILD
@@ -0,0 +1,42 @@
+# Description:
+# contains parts of TensorFlow that are experimental or unstable and which are not supported.
+
+licenses(["notice"]) # Apache 2.0
+
+exports_files(["LICENSE"])
+
+package(default_visibility = ["//tensorflow:__subpackages__"])
+
+py_library(
+ name = "copy_graph_py",
+ srcs = [
+ "__init__.py",
+ "python/util/__init__.py",
+ "python/util/copy_elements.py",
+ ],
+ srcs_version = "PY2AND3",
+)
+
+py_test(
+ name = "copy_test",
+ srcs = glob(["python/util/copy_test.py"]),
+ srcs_version = "PY2AND3",
+ deps = [
+ ":copy_graph_py",
+ "//tensorflow:tensorflow_py",
+ "//tensorflow/python:framework_test_lib",
+ "//tensorflow/python:platform_test",
+ ],
+)
+
+filegroup(
+ name = "all_files",
+ srcs = glob(
+ ["**/*"],
+ exclude = [
+ "**/METADATA",
+ "**/OWNERS",
+ ],
+ ),
+ visibility = ["//tensorflow:__subpackages__"],
+)
diff --git a/tensorflow/contrib/copy_graph/__init__.py b/tensorflow/contrib/copy_graph/__init__.py
new file mode 100644
index 0000000000..1b15f3eb73
--- /dev/null
+++ b/tensorflow/contrib/copy_graph/__init__.py
@@ -0,0 +1,26 @@
+# Copyright 2015 Google Inc. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ==============================================================================
+"""Functions for copying elements from one graph to another.
+
+@@copy_op_to_graph
+@@copy_variable_to_graph
+@@get_copied_op
+"""
+
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+
+from tensorflow.contrib.copy_graph.python.util.copy_elements import *
diff --git a/tensorflow/contrib/copy_graph/python/__init__.py b/tensorflow/contrib/copy_graph/python/__init__.py
new file mode 100644
index 0000000000..1dd1cb72be
--- /dev/null
+++ b/tensorflow/contrib/copy_graph/python/__init__.py
@@ -0,0 +1,15 @@
+# Copyright 2015 Google Inc. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ==============================================================================
+
diff --git a/tensorflow/contrib/copy_graph/python/util/__init__.py b/tensorflow/contrib/copy_graph/python/util/__init__.py
new file mode 100644
index 0000000000..1dd1cb72be
--- /dev/null
+++ b/tensorflow/contrib/copy_graph/python/util/__init__.py
@@ -0,0 +1,15 @@
+# Copyright 2015 Google Inc. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ==============================================================================
+
diff --git a/tensorflow/contrib/copy_graph/python/util/copy_elements.py b/tensorflow/contrib/copy_graph/python/util/copy_elements.py
new file mode 100644
index 0000000000..9cfff05756
--- /dev/null
+++ b/tensorflow/contrib/copy_graph/python/util/copy_elements.py
@@ -0,0 +1,261 @@
+# Copyright 2015 Google Inc. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ==============================================================================
+"""## Functions for copying elements from one graph to another.
+
+These functions allow for recursive copying of elements (ops and variables)
+from one graph to another. The copied elements are initialized inside a
+user-specified scope in the other graph. There are separate functions to
+copy ops and variables.
+There is also a function to retrive the copied version of an op from the
+first graph inside a scope in the second graph.
+
+@@copy_op_to_graph
+@@copy_variable_to_graph
+@@get_copied_op
+"""
+
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+
+from copy import deepcopy
+from tensorflow.python.ops.variables import Variable
+from tensorflow.python.client.session import Session
+from tensorflow.python.framework import ops
+
+__all__ = ["copy_op_to_graph", "copy_variable_to_graph", "get_copied_op"]
+
+
+def copy_variable_to_graph(org_instance, to_graph, scope=""):
+ """Given a `Variable` instance from one `Graph`, initializes and returns
+ a copy of it from another `Graph`, under the specified scope
+ (default `""`).
+
+ Args:
+ org_instance: A `Variable` from some `Graph`.
+ to_graph: The `Graph` to copy the `Variable` to.
+ scope: A scope for the new `Variable` (default `""`).
+
+ Returns:
+ The copied `Variable` from `to_graph`.
+
+ Raises:
+ TypeError: If `org_instance` is not a `Variable`.
+ """
+
+ if not isinstance(org_instance, Variable):
+ raise TypeError(str(org_instance) + " is not a Variable")
+
+ #The name of the new variable
+ if scope != "":
+ new_name = (scope + '/' +
+ org_instance.name[:org_instance.name.index(':')])
+ else:
+ new_name = org_instance.name[:org_instance.name.index(':')]
+
+ #Get the collections that the new instance needs to be added to.
+ #The new collections will also be a part of the given scope,
+ #except the special ones required for variable initialization and
+ #training.
+ collections = []
+ for name, collection in org_instance.graph._collections.items():
+ if org_instance in collection:
+ if (name == ops.GraphKeys.VARIABLES or
+ name == ops.GraphKeys.TRAINABLE_VARIABLES or
+ scope == ''):
+ collections.append(name)
+ else:
+ collections.append(scope + '/' + name)
+
+ #See if its trainable.
+ trainable = (org_instance in org_instance.graph.get_collection(
+ ops.GraphKeys.TRAINABLE_VARIABLES))
+ #Get the initial value
+ with org_instance.graph.as_default():
+ temp_session = Session()
+ init_value = temp_session.run(org_instance.initialized_value())
+
+ #Initialize the new variable
+ with to_graph.as_default():
+ new_var = Variable(init_value,
+ trainable,
+ name=new_name,
+ collections=collections,
+ validate_shape=False)
+
+ return new_var
+
+
+def copy_op_to_graph(org_instance, to_graph, variables,
+ scope=""):
+ """Given an `Operation` 'org_instance` from one `Graph`,
+ initializes and returns a copy of it from another `Graph`,
+ under the specified scope (default `""`).
+
+ The copying is done recursively, so any `Operation` whose output
+ is required to evaluate the `org_instance`, is also copied (unless
+ already done).
+
+ Since `Variable` instances are copied separately, those required
+ to evaluate `org_instance` must be provided as input.
+
+ Args:
+ org_instance: An `Operation` from some `Graph`. Could be a
+ `Placeholder` as well.
+ to_graph: The `Graph` to copy `org_instance` to.
+ variables: An iterable of `Variable` instances to copy `org_instance` to.
+ scope: A scope for the new `Variable` (default `""`).
+
+ Returns:
+ The copied `Operation` from `to_graph`.
+
+ Raises:
+ TypeError: If `org_instance` is not an `Operation` or `Tensor`.
+ """
+
+ #The name of the new instance
+ if scope != '':
+ new_name = scope + '/' + org_instance.name
+ else:
+ new_name = org_instance.name
+
+ #Extract names of variables
+ copied_variables = dict((x.name, x) for x in variables)
+
+ #If a variable by the new name already exists, return the
+ #correspondng tensor that will act as an input
+ if new_name in copied_variables:
+ return to_graph.get_tensor_by_name(
+ copied_variables[new_name].name)
+
+ #If an instance of the same name exists, return appropriately
+ try:
+ already_present = to_graph.as_graph_element(new_name,
+ allow_tensor=True,
+ allow_operation=True)
+ return already_present
+ except:
+ pass
+
+ #Get the collections that the new instance needs to be added to.
+ #The new collections will also be a part of the given scope.
+ collections = []
+ for name, collection in org_instance.graph._collections.items():
+ if org_instance in collection:
+ if scope == '':
+ collections.append(name)
+ else:
+ collections.append(scope + '/' + name)
+
+ #Take action based on the class of the instance
+
+ if isinstance(org_instance, ops.Tensor):
+
+ #If its a Tensor, it is one of the outputs of the underlying
+ #op. Therefore, copy the op itself and return the appropriate
+ #output.
+ op = org_instance.op
+ new_op = copy_op_to_graph(op, to_graph, variables, scope)
+ output_index = op.outputs.index(org_instance)
+ new_tensor = new_op.outputs[output_index]
+ #Add to collections if any
+ for collection in collections:
+ to_graph.add_to_collection(collection, new_tensor)
+
+ return new_tensor
+
+ elif isinstance(org_instance, ops.Operation):
+
+ op = org_instance
+
+ #If it has an original_op parameter, copy it
+ if op._original_op is not None:
+ new_original_op = copy_op_to_graph(op._original_op, to_graph,
+ variables, scope)
+ else:
+ new_original_op = None
+
+ #If it has control inputs, call this function recursively on each.
+ new_control_inputs = [copy_op_to_graph(x, to_graph, variables,
+ scope)
+ for x in op.control_inputs]
+
+ #If it has inputs, call this function recursively on each.
+ new_inputs = [copy_op_to_graph(x, to_graph, variables,
+ scope)
+ for x in op.inputs]
+
+ #Make a new node_def based on that of the original.
+ #An instance of tensorflow.core.framework.graph_pb2.NodeDef, it
+ #stores String-based info such as name, device and type of the op.
+ #Unique to every Operation instance.
+ new_node_def = deepcopy(op._node_def)
+ #Change the name
+ new_node_def.name = new_name
+
+ #Copy the other inputs needed for initialization
+ output_types = op._output_types[:]
+ input_types = op._input_types[:]
+
+ #Make a copy of the op_def too.
+ #Its unique to every _type_ of Operation.
+ op_def = deepcopy(op._op_def)
+
+ #Initialize a new Operation instance
+ new_op = ops.Operation(new_node_def,
+ to_graph,
+ new_inputs,
+ output_types,
+ new_control_inputs,
+ input_types,
+ new_original_op,
+ op_def)
+ #Use Graph's hidden methods to add the op
+ to_graph._add_op(new_op)
+ to_graph._record_op_seen_by_control_dependencies(new_op)
+ for device_function in reversed(to_graph._device_function_stack):
+ new_op._set_device(device_function(new_op))
+
+ return new_op
+
+ else:
+ raise TypeError("Could not copy instance: " + str(org_instance))
+
+
+def get_copied_op(org_instance, graph, scope=""):
+ """Given an `Operation` instance from some `Graph`, returns
+ its namesake from `graph`, under the specified scope
+ (default `""`).
+
+ If a copy of `org_instance` is present in `graph` under the given
+ `scope`, it will be returned.
+
+ Args:
+ org_instance: An `Operation` from some `Graph`.
+ graph: The `Graph` to be searched for a copr of `org_instance`.
+ scope: The scope `org_instance` is present in.
+
+ Returns:
+ The `Operation` copy from `graph`.
+ """
+
+ #The name of the copied instance
+ if scope != '':
+ new_name = scope + '/' + org_instance.name
+ else:
+ new_name = org_instance.name
+
+ return graph.as_graph_element(new_name, allow_tensor=True,
+ allow_operation=True)
diff --git a/tensorflow/contrib/copy_graph/python/util/copy_test.py b/tensorflow/contrib/copy_graph/python/util/copy_test.py
new file mode 100644
index 0000000000..68a3f90d26
--- /dev/null
+++ b/tensorflow/contrib/copy_graph/python/util/copy_test.py
@@ -0,0 +1,110 @@
+# Copyright 2016 Google Inc. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ==============================================================================
+
+"""Tests for contrib.copy_graph.python.util.copy."""
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+
+import numpy as np
+import tensorflow as tf
+from tensorflow.contrib.framework.python.framework import tensor_util
+
+graph1 = tf.Graph()
+graph2 = tf.Graph()
+
+
+class CopyVariablesTest(tf.test.TestCase):
+
+ def testVariableCopy(self):
+
+ with graph1.as_default():
+ #Define a Variable in graph1
+ some_var = tf.Variable(2)
+ #Initialize session
+ sess1 = tf.Session()
+ #Initialize the Variable
+ tf.initialize_all_variables().run(session=sess1)
+
+ #Make a copy of some_var in the defsult scope in graph2
+ copy1 = tf.contrib.copy_graph.copy_variable_to_graph(
+ some_var, graph2)
+
+ #Make another copy with different scope
+ copy2 = tf.contrib.copy_graph.copy_variable_to_graph(
+ some_var, graph2, "test_scope")
+
+ #Initialize both the copies
+ with graph2.as_default():
+ #Initialize Session
+ sess2 = tf.Session()
+ #Initialize the Variables
+ tf.initialize_all_variables().run(session=sess2)
+
+ #Ensure values in all three variables are the same
+ v1 = some_var.eval(session=sess1)
+ v2 = copy1.eval(session=sess2)
+ v3 = copy2.eval(session=sess2)
+
+ assert isinstance(copy1, tf.Variable)
+ assert isinstance(copy2, tf.Variable)
+ assert v1 == v2 == v3 == 2
+
+
+class CopyOpsTest(tf.test.TestCase):
+
+ def testOpsCopy(self):
+
+ with graph1.as_default():
+ #Initialize a basic expression y = ax + b
+ x = tf.placeholder("float")
+ a = tf.Variable(3.0)
+ b = tf.constant(4.0)
+ ax = tf.mul(x, a)
+ y = tf.add(ax, b)
+ #Initialize session
+ sess1 = tf.Session()
+ #Initialize the Variable
+ tf.initialize_all_variables().run(session=sess1)
+
+ #First, initialize a as a Variable in graph2
+ a1 = tf.contrib.copy_graph.copy_variable_to_graph(
+ a, graph2)
+
+ #Initialize a1 in graph2
+ with graph2.as_default():
+ #Initialize session
+ sess2 = tf.Session()
+ #Initialize the Variable
+ tf.initialize_all_variables().run(session=sess2)
+
+ #Initialize a copy of y in graph2
+ y1 = tf.contrib.copy_graph.copy_op_to_graph(
+ y, graph2, [a1])
+
+ #Now that y has been copied, x must be copied too.
+ #Get that instance
+ x1 = tf.contrib.copy_graph.get_copied_op(x, graph2)
+
+ #Compare values of y & y1 for a sample input
+ #and check if they match
+ v1 = y.eval({x: 5}, session=sess1)
+ v2 = y1.eval({x1: 5}, session=sess2)
+
+ assert v1 == v2
+
+
+if __name__ == "__main__":
+ tf.test.main()
diff --git a/tensorflow/contrib/ffmpeg/kernels/ffmpeg_lib.cc b/tensorflow/contrib/ffmpeg/kernels/ffmpeg_lib.cc
index 4fb3f17cbb..065e928fa6 100644
--- a/tensorflow/contrib/ffmpeg/kernels/ffmpeg_lib.cc
+++ b/tensorflow/contrib/ffmpeg/kernels/ffmpeg_lib.cc
@@ -17,9 +17,11 @@
#include <errno.h>
#include <stdlib.h>
+#include <string>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/wait.h>
+#include <tuple>
#include <unistd.h>
#include <string>
diff --git a/tensorflow/contrib/ffmpeg/kernels/ffmpeg_lib.h b/tensorflow/contrib/ffmpeg/kernels/ffmpeg_lib.h
index 532a449fb4..51b7f752c8 100644
--- a/tensorflow/contrib/ffmpeg/kernels/ffmpeg_lib.h
+++ b/tensorflow/contrib/ffmpeg/kernels/ffmpeg_lib.h
@@ -29,8 +29,10 @@ string GetTempFilename(const string& extension);
// Reads an audio file using ffmpeg and converts it into an array of samples in
// [-1.0, 1.0]. If there are multiple channels in the audio then each frame will
// contain a separate sample for each channel. Frames are ordered by time.
-Status ReadAudioFile(const string& filename, const string& audio_format_id,
- int32 samples_per_second, int32 channel_count,
+Status ReadAudioFile(const string& filename,
+ const string& audio_format_id,
+ int32 samples_per_second,
+ int32 channel_count,
std::vector<float>* output_samples);
// Creates an audio file using ffmpeg in a specific format. The samples are in
diff --git a/tensorflow/contrib/ffmpeg/kernels/ffmpeg_lib_test.cc b/tensorflow/contrib/ffmpeg/kernels/ffmpeg_lib_test.cc
index 9bd15ac5d9..86339a75b0 100644
--- a/tensorflow/contrib/ffmpeg/kernels/ffmpeg_lib_test.cc
+++ b/tensorflow/contrib/ffmpeg/kernels/ffmpeg_lib_test.cc
@@ -131,7 +131,7 @@ TEST(FfmpegLibTest, TestRoundTripWav) {
} // namespace ffmpeg
} // namespace tensorflow
-int main(int argc, char** argv) {
+int main(int argc, char **argv) {
tensorflow::ffmpeg::ParseTestFlags(&argc, argv);
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
diff --git a/tensorflow/contrib/learn/BUILD b/tensorflow/contrib/learn/BUILD
index 1eb488b05e..4fde317f10 100644
--- a/tensorflow/contrib/learn/BUILD
+++ b/tensorflow/contrib/learn/BUILD
@@ -33,7 +33,6 @@ py_test(
deps = [
":learn",
"//tensorflow:tensorflow_py",
- "//tensorflow/python:framework",
"//tensorflow/python:framework_test_lib",
],
)
@@ -46,7 +45,6 @@ py_test(
deps = [
":learn",
"//tensorflow:tensorflow_py",
- "//tensorflow/python:framework",
"//tensorflow/python:framework_test_lib",
],
)
@@ -59,7 +57,6 @@ py_test(
deps = [
":learn",
"//tensorflow:tensorflow_py",
- "//tensorflow/python:framework",
"//tensorflow/python:framework_test_lib",
],
)
@@ -72,7 +69,6 @@ py_test(
deps = [
":learn",
"//tensorflow:tensorflow_py",
- "//tensorflow/python:framework",
"//tensorflow/python:framework_test_lib",
],
)
@@ -85,7 +81,6 @@ py_test(
deps = [
":learn",
"//tensorflow:tensorflow_py",
- "//tensorflow/python:framework",
"//tensorflow/python:framework_test_lib",
],
)
@@ -98,7 +93,6 @@ py_test(
deps = [
":learn",
"//tensorflow:tensorflow_py",
- "//tensorflow/python:framework",
"//tensorflow/python:framework_test_lib",
],
)
@@ -111,7 +105,6 @@ py_test(
deps = [
":learn",
"//tensorflow:tensorflow_py",
- "//tensorflow/python:framework",
"//tensorflow/python:framework_test_lib",
],
)
@@ -124,7 +117,6 @@ py_test(
deps = [
":learn",
"//tensorflow:tensorflow_py",
- "//tensorflow/python:framework",
"//tensorflow/python:framework_test_lib",
],
)
@@ -137,7 +129,6 @@ py_test(
deps = [
":learn",
"//tensorflow:tensorflow_py",
- "//tensorflow/python:framework",
"//tensorflow/python:framework_test_lib",
],
)
@@ -150,7 +141,6 @@ py_test(
deps = [
":learn",
"//tensorflow:tensorflow_py",
- "//tensorflow/python:framework",
"//tensorflow/python:framework_test_lib",
],
)
@@ -163,7 +153,6 @@ py_test(
deps = [
":learn",
"//tensorflow:tensorflow_py",
- "//tensorflow/python:framework",
"//tensorflow/python:framework_test_lib",
],
)
@@ -176,7 +165,6 @@ py_test(
deps = [
":learn",
"//tensorflow:tensorflow_py",
- "//tensorflow/python:framework",
"//tensorflow/python:framework_test_lib",
],
)
@@ -189,7 +177,6 @@ py_test(
deps = [
":learn",
"//tensorflow:tensorflow_py",
- "//tensorflow/python:framework",
"//tensorflow/python:framework_test_lib",
],
)
@@ -202,7 +189,6 @@ py_test(
deps = [
":learn",
"//tensorflow:tensorflow_py",
- "//tensorflow/python:framework",
"//tensorflow/python:framework_test_lib",
],
)
@@ -215,7 +201,6 @@ py_test(
deps = [
":learn",
"//tensorflow:tensorflow_py",
- "//tensorflow/python:framework",
"//tensorflow/python:framework_test_lib",
],
)
@@ -228,7 +213,6 @@ py_test(
deps = [
":learn",
"//tensorflow:tensorflow_py",
- "//tensorflow/python:framework",
"//tensorflow/python:framework_test_lib",
],
)
@@ -241,7 +225,6 @@ py_test(
deps = [
":learn",
"//tensorflow:tensorflow_py",
- "//tensorflow/python:framework",
"//tensorflow/python:framework_test_lib",
],
)
diff --git a/tensorflow/contrib/learn/python/learn/README.md b/tensorflow/contrib/learn/python/learn/README.md
index 1abfd962de..f557999828 100644
--- a/tensorflow/contrib/learn/python/learn/README.md
+++ b/tensorflow/contrib/learn/python/learn/README.md
@@ -1,159 +1,148 @@
-|License| |Join the chat at [https://gitter.im/tensorflow/skflow](https://gitter.im/tensorflow/skflow)|
+# TF Learn (aka Scikit Flow)
-TF Learn (aka Scikit Flow)
-===========
+[![Join the chat at https://gitter.im/tensorflow/skflow](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/tensorflow/skflow?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
This is a simplified interface for TensorFlow, to get people started on predictive analytics and data mining.
Library covers variety of needs from linear models to *Deep Learning* applications like text and image understanding.
-Why *TensorFlow*?
------------------
-- TensorFlow provides a good backbone for building different shapes of machine learning applications.
+### Why *TensorFlow*?
+
+- TensorFlow provides a good backbone for building different shapes of machine learning applications.
- It will continue to evolve both in the distributed direction and as general pipelinining machinery.
-Why *TensorFlow Learn* (Scikit Flow)?
------------------
-- To smooth the transition from the Scikit Learn world of one-liner machine learning into the more open world of building different shapes of ML models. You can start by using fit/predict and slide into TensorFlow APIs as you are getting comfortable.
+### Why *TensorFlow Learn* (Scikit Flow)?
+
+- To smooth the transition from the Scikit Learn world of one-liner machine learning into the more open world of building different shapes of ML models. You can start by using fit/predict and slide into TensorFlow APIs as you are getting comfortable.
- To provide a set of reference models that would be easy to integrate with existing code.
-Installation
-============
+## Installation
Optionally you can install Scikit Learn and Pandas for additional functionality.
Then you can simply import `learn` via `from tensorflow.contrib.learn` or use `tf.contrib.learn`.
-Tutorial
---------
+### Tutorial
-- `Introduction to Scikit Flow and Why You Want to Start Learning
- TensorFlow <https://medium.com/@ilblackdragon/tensorflow-tutorial-part-1-c559c63c0cb1>`__
-- `DNNs, Custom model and Digit Recognition
- examples <https://medium.com/@ilblackdragon/tensorflow-tutorial-part-2-9ffe47049c92>`__
-- `Categorical Variables: One Hot vs Distributed
- representation <https://medium.com/@ilblackdragon/tensorflow-tutorial-part-3-c5fc0662bc08>`__
-- `Scikit Flow Key Features Illustrated <http://terrytangyuan.github.io/2016/03/14/scikit-flow-intro/>`__
+- [Introduction to Scikit Flow and Why You Want to Start Learning
+ TensorFlow](https://medium.com/@ilblackdragon/tensorflow-tutorial-part-1-c559c63c0cb1)
+- [DNNs, Custom model and Digit Recognition
+ examples](https://medium.com/@ilblackdragon/tensorflow-tutorial-part-2-9ffe47049c92)
+- [Categorical Variables: One Hot vs Distributed
+ representation](https://medium.com/@ilblackdragon/tensorflow-tutorial-part-3-c5fc0662bc08)
+- [Scikit Flow Key Features Illustrated](http://terrytangyuan.github.io/2016/03/14/scikit-flow-intro/)
- More coming soon.
-Community
----------
-- Twitter `#skflow <https://twitter.com/search?q=skflow&src=typd>`__.
-- StackOverflow with `skflow tag <http://stackoverflow.com/questions/tagged/skflow>`__ for questions and struggles.
-- Github `issues <https://github.com/tensorflow/tensorflow/issues>`__ for technical discussions and feature requests.
-- `Gitter channel <https://gitter.im/tensorflow/skflow>`__ for non-trivial discussions.
+### Community
+
+- Twitter [#skflow](https://twitter.com/search?q=skflow&src=typd).
+- StackOverflow with [skflow tag](http://stackoverflow.com/questions/tagged/skflow) for questions and struggles.
+- Github [issues](https://github.com/tensorflow/tensorflow/issues) for technical discussions and feature requests.
+- [Gitter channel](https://gitter.im/tensorflow/skflow) for non-trivial discussions.
-Usage
------
+### Usage
-Below are few simple examples of the API. For more examples, please see `examples <https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/skflow>`__.
+Below are few simple examples of the API. For more examples, please see [examples](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/skflow).
-General tips
-~~~~~~~~~~~~
+## General tips
- It's useful to re-scale dataset before passing to estimator to 0 mean and unit standard deviation. Stochastic Gradient Descent doesn't always do the right thing when variable are very different scale.
-- Categorical variables should be managed before passing input to the estimator.
+- Categorical variables should be managed before passing input to the estimator.
-Linear Classifier
-~~~~~~~~~~~~~~~~~
+## Linear Classifier
Simple linear classification:
-.. code:: python
+```python
+from sklearn import datasets, metrics
- from sklearn import datasets, metrics
+iris = datasets.load_iris()
+classifier = learn.TensorFlowLinearClassifier(n_classes=3)
+classifier.fit(iris.data, iris.target)
+score = metrics.accuracy_score(iris.target, classifier.predict(iris.data))
+print("Accuracy: %f" % score)
+```
- iris = datasets.load_iris()
- classifier = learn.TensorFlowLinearClassifier(n_classes=3)
- classifier.fit(iris.data, iris.target)
- score = metrics.accuracy_score(iris.target, classifier.predict(iris.data))
- print("Accuracy: %f" % score)
-
-Linear Regressor
-~~~~~~~~~~~~~~~~
+## Linear Regressor
Simple linear regression:
-.. code:: python
-
- from sklearn import datasets, metrics, preprocessing
+```python
+from sklearn import datasets, metrics, preprocessing
- boston = datasets.load_boston()
- X = preprocessing.StandardScaler().fit_transform(boston.data)
- regressor = learn.TensorFlowLinearRegressor()
- regressor.fit(X, boston.target)
- score = metrics.mean_squared_error(regressor.predict(X), boston.target)
- print ("MSE: %f" % score)
+boston = datasets.load_boston()
+X = preprocessing.StandardScaler().fit_transform(boston.data)
+regressor = learn.TensorFlowLinearRegressor()
+regressor.fit(X, boston.target)
+score = metrics.mean_squared_error(regressor.predict(X), boston.target)
+print ("MSE: %f" % score)
+```
-Deep Neural Network
-~~~~~~~~~~~~~~~~~~~
+## Deep Neural Network
Example of 3 layer network with 10, 20 and 10 hidden units respectively:
-.. code:: python
-
- from sklearn import datasets, metrics
+```python
+from sklearn import datasets, metrics
- iris = datasets.load_iris()
- classifier = learn.TensorFlowDNNClassifier(hidden_units=[10, 20, 10], n_classes=3)
- classifier.fit(iris.data, iris.target)
- score = metrics.accuracy_score(iris.target, classifier.predict(iris.data))
- print("Accuracy: %f" % score)
+iris = datasets.load_iris()
+classifier = learn.TensorFlowDNNClassifier(hidden_units=[10, 20, 10], n_classes=3)
+classifier.fit(iris.data, iris.target)
+score = metrics.accuracy_score(iris.target, classifier.predict(iris.data))
+print("Accuracy: %f" % score)
+```
-Custom model
-~~~~~~~~~~~~
+## Custom model
Example of how to pass a custom model to the TensorFlowEstimator:
-.. code:: python
+```python
+from sklearn import datasets, metrics
- from sklearn import datasets, metrics
+iris = datasets.load_iris()
- iris = datasets.load_iris()
+def my_model(X, y):
+ """This is DNN with 10, 20, 10 hidden layers, and dropout of 0.5 probability."""
+ layers = learn.ops.dnn(X, [10, 20, 10], keep_prob=0.5)
+ return learn.models.logistic_regression(layers, y)
- def my_model(X, y):
- """This is DNN with 10, 20, 10 hidden layers, and dropout of 0.5 probability."""
- layers = learn.ops.dnn(X, [10, 20, 10], keep_prob=0.5)
- return learn.models.logistic_regression(layers, y)
+classifier = learn.TensorFlowEstimator(model_fn=my_model, n_classes=3)
+classifier.fit(iris.data, iris.target)
+score = metrics.accuracy_score(iris.target, classifier.predict(iris.data))
+print("Accuracy: %f" % score)
+```
- classifier = learn.TensorFlowEstimator(model_fn=my_model, n_classes=3)
- classifier.fit(iris.data, iris.target)
- score = metrics.accuracy_score(iris.target, classifier.predict(iris.data))
- print("Accuracy: %f" % score)
-
-Saving / Restoring models
-~~~~~~~~~~~~~~~~~~~~~~~~~
+## Saving / Restoring models
Each estimator has a ``save`` method which takes folder path where all model information will be saved. For restoring you can just call ``learn.TensorFlowEstimator.restore(path)`` and it will return object of your class.
Some example code:
-.. code:: python
-
- classifier = learn.TensorFlowLinearRegression()
- classifier.fit(...)
- classifier.save('/tmp/tf_examples/my_model_1/')
+```python
+classifier = learn.TensorFlowLinearRegression()
+classifier.fit(...)
+classifier.save('/tmp/tf_examples/my_model_1/')
- new_classifier = TensorFlowEstimator.restore('/tmp/tf_examples/my_model_2')
- new_classifier.predict(...)
+new_classifier = TensorFlowEstimator.restore('/tmp/tf_examples/my_model_2')
+new_classifier.predict(...)
+```
-Summaries
-~~~~~~~~~
+## Summaries
To get nice visualizations and summaries you can use ``logdir`` parameter on ``fit``. It will start writing summaries for ``loss`` and histograms for variables in your model. You can also add custom summaries in your custom model function by calling ``tf.summary`` and passing Tensors to report.
-.. code:: python
-
- classifier = learn.TensorFlowLinearRegression()
- classifier.fit(X, y, logdir='/tmp/tf_examples/my_model_1/')
+```python
+classifier = learn.TensorFlowLinearRegression()
+classifier.fit(X, y, logdir='/tmp/tf_examples/my_model_1/')
+```
Then run next command in command line:
-.. code:: bash
-
- tensorboard --logdir=/tmp/tf_examples/my_model_1
+```shell
+tensorboard --logdir=/tmp/tf_examples/my_model_1
+```
and follow reported url.
@@ -161,22 +150,16 @@ Graph visualization: |Text classification RNN Graph|
Loss visualization: |Text classification RNN Loss|
-More examples
--------------
+## More examples
-See `examples folder <https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/skflow>`__ for:
+See [examples folder](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/skflow) for:
- Easy way to handle categorical variables - words are just an example of categorical variable.
- Text Classification - see examples for RNN, CNN on word and characters.
-- Language modeling and text sequence to sequence.
+- Language modeling and text sequence to sequence.
- Images (CNNs) - see example for digit recognition.
- More & deeper - different examples showing DNNs and CNNs
-.. |License| image:: https://img.shields.io/badge/license-Apache%202.0-blue.svg
- :target: http://www.apache.org/licenses/LICENSE-2.0.html
-.. |Join the chat at https://gitter.im/tensorflow/skflow| image:: https://badges.gitter.im/Join%20Chat.svg
- :target: https://gitter.im/tensorflow/skflow?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
-.. |Text classification RNN Graph| image:: https://raw.githubusercontent.com/tensorflow/skflow/master/g3doc/images/text_classification_rnn_graph.png
-.. |Text classification RNN Loss| image:: https://raw.githubusercontent.com/tensorflow/skflow/master/g3doc/images/text_classification_rnn_loss.png
-.. |PyPI version| image:: https://badge.fury.io/py/skflow.svg
- :target: http://badge.fury.io/py/skflow
+![Text classification RNN Graph](https://raw.githubusercontent.com/tensorflow/skflow/master/g3doc/images/text_classification_rnn_graph.png)
+
+![Text classification RNN Loss](https://raw.githubusercontent.com/tensorflow/skflow/master/g3doc/images/text_classification_rnn_loss.png)
diff --git a/tensorflow/contrib/learn/python/learn/__init__.py b/tensorflow/contrib/learn/python/learn/__init__.py
index 98e8ddb73d..215cedb882 100644
--- a/tensorflow/contrib/learn/python/learn/__init__.py
+++ b/tensorflow/contrib/learn/python/learn/__init__.py
@@ -25,6 +25,7 @@ from tensorflow.contrib.learn.python.learn import datasets
from tensorflow.contrib.learn.python.learn import ops
from tensorflow.contrib.learn.python.learn import preprocessing
from tensorflow.contrib.learn.python.learn import models
+from tensorflow.contrib.learn.python.learn import monitors
from tensorflow.contrib.learn.python.learn.graph_actions import evaluate
from tensorflow.contrib.learn.python.learn.graph_actions import infer
@@ -32,4 +33,3 @@ from tensorflow.contrib.learn.python.learn.graph_actions import run_n
from tensorflow.contrib.learn.python.learn.graph_actions import run_feeds
from tensorflow.contrib.learn.python.learn.graph_actions import SupervisorParams
from tensorflow.contrib.learn.python.learn.graph_actions import train
-
diff --git a/tensorflow/contrib/learn/python/learn/datasets/__init__.py b/tensorflow/contrib/learn/python/learn/datasets/__init__.py
index 1472f7efb5..ec8180e30f 100644
--- a/tensorflow/contrib/learn/python/learn/datasets/__init__.py
+++ b/tensorflow/contrib/learn/python/learn/datasets/__init__.py
@@ -25,6 +25,7 @@ import numpy as np
from tensorflow.contrib.learn.python.learn.datasets import base
from tensorflow.contrib.learn.python.learn.datasets import mnist
+from tensorflow.contrib.learn.python.learn.datasets import text_datasets
# Export load_iris and load_boston.
load_iris = base.load_iris
@@ -36,8 +37,9 @@ DATASETS = {
# Returns base.Dataset.
'iris': base.load_iris,
'boston': base.load_boston,
- # Returns mnist.Dataset.
+ # Returns base.Datasets (train/validation/test sets).
'mnist': mnist.load_mnist,
+ 'dbpedia': text_datasets.load_dbpedia,
}
diff --git a/tensorflow/contrib/learn/python/learn/datasets/base.py b/tensorflow/contrib/learn/python/learn/datasets/base.py
index b934ff8ba3..7f78b2dced 100644
--- a/tensorflow/contrib/learn/python/learn/datasets/base.py
+++ b/tensorflow/contrib/learn/python/learn/datasets/base.py
@@ -31,20 +31,24 @@ Dataset = collections.namedtuple('Dataset', ['data', 'target'])
Datasets = collections.namedtuple('Datasets', ['train', 'validation', 'test'])
-def load_csv(filename, target_dtype):
+def load_csv(filename, target_dtype, target_column=-1, has_header=True):
with gfile.Open(filename) as csv_file:
data_file = csv.reader(csv_file)
- header = next(data_file)
- n_samples = int(header[0])
- n_features = int(header[1])
- target_names = np.array(header[2:])
- data = np.empty((n_samples, n_features))
- target = np.empty((n_samples,), dtype=np.int)
-
- for i, ir in enumerate(data_file):
- data[i] = np.asarray(ir[:-1], dtype=np.float64)
- target[i] = np.asarray(ir[-1], dtype=target_dtype)
-
+ if has_header:
+ header = next(data_file)
+ n_samples = int(header[0])
+ n_features = int(header[1])
+ target_names = np.array(header[2:])
+ data = np.empty((n_samples, n_features))
+ target = np.empty((n_samples,), dtype=np.int)
+ for i, ir in enumerate(data_file):
+ target[i] = np.asarray(ir.pop(target_column), dtype=target_dtype)
+ data[i] = np.asarray(ir, dtype=np.float64)
+ else:
+ data, target = [], []
+ for ir in data_file:
+ target.append(ir.pop(target_column))
+ data.append(ir)
return Dataset(data=data, target=target)
@@ -73,7 +77,16 @@ def load_boston():
def maybe_download(filename, work_directory, source_url):
- """Download the data from source url, unless it's already here."""
+ """Download the data from source url, unless it's already here.
+
+ Args:
+ filename: string, name of the file in the directory.
+ work_directory: string, path to working directory.
+ source_url: url to download from if file doesn't exist.
+
+ Returns:
+ Path to resulting file.
+ """
if not gfile.Exists(work_directory):
gfile.MakeDirs(work_directory)
filepath = os.path.join(work_directory, filename)
diff --git a/tensorflow/contrib/learn/python/learn/datasets/text_datasets.py b/tensorflow/contrib/learn/python/learn/datasets/text_datasets.py
new file mode 100644
index 0000000000..8f29a4520c
--- /dev/null
+++ b/tensorflow/contrib/learn/python/learn/datasets/text_datasets.py
@@ -0,0 +1,46 @@
+"""Text datasets."""
+# Copyright 2015-present The Scikit Flow Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+
+import os
+import tarfile
+
+import numpy as np
+
+from tensorflow.python.platform import gfile
+from tensorflow.contrib.learn.python.learn.datasets import base
+
+DBPEDIA_URL = 'https://googledrive.com/host/0Bz8a_Dbh9Qhbfll6bVpmNUtUcFdjYmF2SEpmZUZUcVNiMUw1TWN6RDV3a0JHT3kxLVhVR2M/dbpedia_csv.tar.gz'
+
+
+def get_dbpedia(data_dir):
+ train_path = os.path.join(data_dir, 'dbpedia_csv/train.csv')
+ test_path = os.path.join(data_dir, 'dbpedia_csv/test.csv')
+ if not (gfile.Exists(train_path) and gfile.Exists(test_path)):
+ archive_path = base.maybe_download('dbpedia_csv.tar.gz', data_dir, DBPEDIA_URL)
+ tfile = tarfile.open(archive_path, 'r:*')
+ tfile.extractall(data_dir)
+ train = base.load_csv(train_path, np.int32, 0, has_header=False)
+ test = base.load_csv(test_path, np.int32, 0, has_header=False)
+ datasets = base.Datasets(train=train, validation=None, test=test)
+ return datasets
+
+
+def load_dbpedia():
+ return get_dbpedia('dbpedia_data')
+
diff --git a/tensorflow/contrib/learn/python/learn/estimators/base.py b/tensorflow/contrib/learn/python/learn/estimators/base.py
index 04cb794fb6..10755ce1aa 100644
--- a/tensorflow/contrib/learn/python/learn/estimators/base.py
+++ b/tensorflow/contrib/learn/python/learn/estimators/base.py
@@ -364,6 +364,428 @@ class TensorFlowEstimator(_sklearn.BaseEstimator):
"""
return self._graph.get_tensor_by_name(name)
+ def __init__(self, model_fn, n_classes, batch_size=32,
+ steps=200, optimizer="Adagrad",
+ learning_rate=0.1, clip_gradients=5.0, class_weight=None,
+ continue_training=False,
+ config=None, verbose=1):
+ self.model_fn = model_fn
+ self.n_classes = n_classes
+ self.batch_size = batch_size
+ self.steps = steps
+ self.verbose = verbose
+ self.optimizer = optimizer
+ self.learning_rate = learning_rate
+ self.clip_gradients = clip_gradients
+ self.continue_training = continue_training
+ self._initialized = False
+ self.class_weight = class_weight
+ self._config = config
+ self._output_dir = None
+
+ def _setup_training(self):
+ """Sets up graph, model and trainer."""
+ # Create config if not given.
+ if self._config is None:
+ self._config = RunConfig(verbose=self.verbose)
+ # Create new graph.
+ self._graph = ops.Graph()
+ self._graph.add_to_collection("IS_TRAINING", True)
+ with self._graph.as_default():
+ random_seed.set_random_seed(self._config.tf_random_seed)
+ self._global_step = variables.Variable(
+ 0, name="global_step", trainable=False)
+
+ # Setting up inputs and outputs.
+ self._inp, self._out = self._data_feeder.input_builder()
+
+ # If class weights are provided, add them to the graph.
+ # Different loss functions can use this tensor by name.
+ if self.class_weight:
+ self._class_weight_node = constant_op.constant(
+ self.class_weight, name='class_weight')
+
+ # Add histograms for X and y if they are floats.
+ if self._data_feeder.input_dtype in (np.float32, np.float64):
+ logging_ops.histogram_summary("X", self._inp)
+ if self._data_feeder.output_dtype in (np.float32, np.float64):
+ logging_ops.histogram_summary("y", self._out)
+
+ # Create model's graph.
+ self._model_predictions, self._model_loss = self.model_fn(
+ self._inp, self._out)
+
+ # Create trainer and augment graph with gradients and optimizer.
+ # Additionally creates initialization ops.
+ learning_rate = self.learning_rate
+ optimizer = self.optimizer
+ if callable(learning_rate):
+ learning_rate = learning_rate(self._global_step)
+ if callable(optimizer):
+ optimizer = optimizer(learning_rate)
+ self._train = optimizers.optimize_loss(self._model_loss, self._global_step,
+ learning_rate=learning_rate,
+ optimizer=optimizer, clip_gradients=self.clip_gradients)
+
+ # Update ops during training, e.g. batch_norm_ops
+ self._train = control_flow_ops.group(self._train, *ops.get_collection('update_ops'))
+
+ # Merge all summaries into single tensor.
+ self._summaries = logging_ops.merge_all_summaries()
+
+ # Get all initializers for all trainable variables.
+ self._initializers = variables.initialize_all_variables()
+
+ # Create model's saver capturing all the nodes created up until now.
+ self._saver = train.Saver(
+ max_to_keep=self._config.keep_checkpoint_max,
+ keep_checkpoint_every_n_hours=self._config.keep_checkpoint_every_n_hours)
+
+ # Enable monitor to create validation data dict with appropriate tf placeholders
+ self._monitor.create_val_feed_dict(self._inp, self._out)
+
+ # Create session to run model with.
+ self._session = session.Session(self._config.tf_master, config=self._config.tf_config)
+
+ # Run parameter initializers.
+ self._session.run(self._initializers)
+
+ def _setup_summary_writer(self, logdir):
+ """Sets up the summary writer to prepare for later optional visualization."""
+ self._output_dir = os.path.join(logdir, datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S'))
+ self._summary_writer = train.SummaryWriter(self._output_dir, graph=self._session.graph)
+
+ def fit(self, X, y, monitor=None, logdir=None):
+ """Builds a neural network model given provided `model_fn` and training
+ data X and y.
+
+ Note: called first time constructs the graph and initializers
+ variables. Consecutives times it will continue training the same model.
+ This logic follows partial_fit() interface in scikit-learn.
+
+ To restart learning, create new estimator.
+
+ Args:
+ X: matrix or tensor of shape [n_samples, n_features...]. Can be
+ iterator that returns arrays of features. The training input
+ samples for fitting the model.
+ y: vector or matrix [n_samples] or [n_samples, n_outputs]. Can be
+ iterator that returns array of targets. The training target values
+ (class labels in classification, real numbers in regression).
+ monitor: Monitor object to print training progress and invoke early stopping
+ logdir: the directory to save the log file that can be used for
+ optional visualization.
+
+ Returns:
+ Returns self.
+ """
+ # Sets up data feeder.
+ self._data_feeder = setup_train_data_feeder(X, y,
+ self.n_classes,
+ self.batch_size)
+
+ if monitor is None:
+ self._monitor = monitors.default_monitor(verbose=self.verbose)
+ else:
+ self._monitor = monitor
+
+ if not self.continue_training or not self._initialized:
+ # Sets up model and trainer.
+ self._setup_training()
+ self._initialized = True
+ else:
+ self._data_feeder.set_placeholders(self._inp, self._out)
+
+ # Sets up summary writer for later optional visualization.
+ # Due to not able to setup _summary_writer in __init__ as it's not a
+ # parameter of the model, here we need to check if such variable exists
+ # and if it's None or not (in case it was setup in a previous run).
+ # It is initialized only in the case where it wasn't before and log dir
+ # is provided.
+ if logdir:
+ if (not hasattr(self, "_summary_writer") or
+ (hasattr(self, "_summary_writer") and self._summary_writer is None)):
+ self._setup_summary_writer(logdir)
+ else:
+ self._summary_writer = None
+
+ # Attach monitor to this estimator.
+ self._monitor.set_estimator(self)
+
+ # Train model for given number of steps.
+ trainer.train(
+ self._session, self._train,
+ self._model_loss, self._global_step,
+ self._data_feeder.get_feed_dict_fn(),
+ steps=self.steps,
+ monitor=self._monitor,
+ summary_writer=self._summary_writer,
+ summaries=self._summaries,
+ feed_params_fn=self._data_feeder.get_feed_params)
+ return self
+
+ def partial_fit(self, X, y):
+ """Incremental fit on a batch of samples.
+
+ This method is expected to be called several times consecutively
+ on different or the same chunks of the dataset. This either can
+ implement iterative training or out-of-core/online training.
+
+ This is especially useful when the whole dataset is too big to
+ fit in memory at the same time. Or when model is taking long time
+ to converge, and you want to split up training into subparts.
+
+ Args:
+ X: matrix or tensor of shape [n_samples, n_features...]. Can be
+ iterator that returns arrays of features. The training input
+ samples for fitting the model.
+ y: vector or matrix [n_samples] or [n_samples, n_outputs]. Can be
+ iterator that returns array of targets. The training target values
+ (class label in classification, real numbers in regression).
+
+ Returns:
+ Returns self.
+ """
+ return self.fit(X, y)
+
+ def _predict(self, X, axis=-1, batch_size=None):
+ if not self._initialized:
+ raise _sklearn.NotFittedError()
+
+ # Use the batch size for fitting if the user did not specify one.
+ if batch_size is None:
+ batch_size = self.batch_size
+
+ self._graph.add_to_collection("IS_TRAINING", False)
+ predict_data_feeder = setup_predict_data_feeder(
+ X, batch_size=batch_size)
+ preds = []
+ dropouts = self._graph.get_collection(DROPOUTS)
+ feed_dict = {prob: 1.0 for prob in dropouts}
+ for data in predict_data_feeder:
+ feed_dict[self._inp] = data
+ predictions_for_batch = self._session.run(
+ self._model_predictions,
+ feed_dict)
+ if self.n_classes > 1 and axis != -1:
+ preds.append(predictions_for_batch.argmax(axis=axis))
+ else:
+ preds.append(predictions_for_batch)
+
+ return np.concatenate(preds, axis=0)
+
+ def predict(self, X, axis=1, batch_size=None):
+ """Predict class or regression for X.
+
+ For a classification model, the predicted class for each sample in X is
+ returned. For a regression model, the predicted value based on X is
+ returned.
+
+ Args:
+ X: array-like matrix, [n_samples, n_features...] or iterator.
+ axis: Which axis to argmax for classification.
+ By default axis 1 (next after batch) is used.
+ Use 2 for sequence predictions.
+ batch_size: If test set is too big, use batch size to split
+ it into mini batches. By default the batch_size member
+ variable is used.
+
+ Returns:
+ y: array of shape [n_samples]. The predicted classes or predicted
+ value.
+ """
+ return self._predict(X, axis=axis, batch_size=batch_size)
+
+ def predict_proba(self, X, batch_size=None):
+ """Predict class probability of the input samples X.
+
+ Args:
+ X: array-like matrix, [n_samples, n_features...] or iterator.
+ batch_size: If test set is too big, use batch size to split
+ it into mini batches. By default the batch_size
+ member variable is used.
+
+ Returns:
+ y: array of shape [n_samples, n_classes]. The predicted
+ probabilities for each class.
+
+ """
+ return self._predict(X, batch_size=batch_size)
+
+ def get_tensor(self, name):
+ """Returns tensor by name.
+
+ Args:
+ name: string, name of the tensor.
+
+ Returns:
+ Tensor.
+ """
+ return self._graph.get_tensor_by_name(name)
+
+ def get_tensor_value(self, name):
+ """Returns value of the tensor give by name.
+
+ Args:
+ name: string, name of the tensor.
+
+ Returns:
+ Numpy array - value of the tensor.
+ """
+ return self._session.run(self.get_tensor(name))
+
+ def save(self, path):
+ """Saves checkpoints and graph to given path.
+
+ Args:
+ path: Folder to save model to.
+ """
+ if not self._initialized:
+ raise _sklearn.NotFittedError()
+
+ # Currently Saver requires absolute path to work correctly.
+ path = os.path.abspath(path)
+
+ if not os.path.exists(path):
+ os.makedirs(path)
+ if not os.path.isdir(path):
+ raise ValueError("Path %s should be a directory to save"
+ "checkpoints and graph." % path)
+ # Save model definition.
+ all_params = self.get_params()
+ params = {}
+ for key, value in all_params.items():
+ if not callable(value) and value is not None:
+ params[key] = value
+ params['class_name'] = type(self).__name__
+ model_def = json.dumps(
+ params,
+ default=lambda o: o.__dict__ if hasattr(o, '__dict__') else None)
+ _write_with_backup(os.path.join(path, 'model.def'), model_def)
+
+ # Save checkpoints.
+ endpoints = '%s\n%s\n%s\n%s' % (
+ self._inp.name,
+ self._out.name,
+ self._model_predictions.name,
+ self._model_loss.name)
+ _write_with_backup(os.path.join(path, 'endpoints'), endpoints)
+
+ # Save graph definition.
+ _write_with_backup(os.path.join(path, 'graph.pbtxt'), str(self._graph.as_graph_def()))
+
+ # Save saver definition.
+ _write_with_backup(os.path.join(path, 'saver.pbtxt'), str(self._saver.as_saver_def()))
+
+ # Save checkpoints.
+ self._saver.save(self._session, os.path.join(path, 'model'),
+ global_step=self._global_step)
+
+ def _restore(self, path):
+ """Restores this estimator from given path.
+
+ Note: will rebuild the graph and initialize all parameters,
+ and will ignore provided model.
+
+ Args:
+ path: Path to checkpoints and other information.
+ """
+ # Currently Saver requires absolute path to work correctly.
+ path = os.path.abspath(path)
+
+ self._graph = ops.Graph()
+ with self._graph.as_default():
+ endpoints_filename = os.path.join(path, 'endpoints')
+ if not os.path.exists(endpoints_filename):
+ raise ValueError("Restore folder doesn't contain endpoints.")
+ with gfile.Open(endpoints_filename) as foutputs:
+ endpoints = foutputs.read().split('\n')
+ graph_filename = os.path.join(path, 'graph.pbtxt')
+ if not os.path.exists(graph_filename):
+ raise ValueError("Restore folder doesn't contain graph definition.")
+ with gfile.Open(graph_filename) as fgraph:
+ graph_def = graph_pb2.GraphDef()
+ text_format.Merge(fgraph.read(), graph_def)
+ (self._inp, self._out,
+ self._model_predictions, self._model_loss) = importer.import_graph_def(
+ graph_def, name='', return_elements=endpoints)
+ saver_filename = os.path.join(path, 'saver.pbtxt')
+ if not os.path.exists(saver_filename):
+ raise ValueError("Restore folder doesn't contain saver definition.")
+ with gfile.Open(saver_filename) as fsaver:
+ saver_def = train.SaverDef()
+ text_format.Merge(fsaver.read(), saver_def)
+ self._saver = train.Saver(saver_def=saver_def)
+
+ # Restore trainer
+ self._global_step = self._graph.get_tensor_by_name('global_step:0')
+ self._train = self._graph.get_operation_by_name('train')
+
+ # Restore summaries.
+ self._summaries = self._graph.get_operation_by_name('MergeSummary/MergeSummary')
+
+ # Restore session.
+ if not isinstance(self._config, RunConfig):
+ self._config = RunConfig(verbose=self.verbose)
+ self._session = session.Session(
+ self._config.tf_master,
+ config=self._config.tf_config)
+ checkpoint_path = train.latest_checkpoint(path)
+ if checkpoint_path is None:
+ raise ValueError("Missing checkpoint files in the %s. Please "
+ "make sure you are you have checkpoint file that describes "
+ "latest checkpoints and appropriate checkpoints are there. "
+ "If you have moved the folder, you at this point need to "
+ "update manually update the paths in the checkpoint file." % path)
+ self._saver.restore(self._session, checkpoint_path)
+ # Set to be initialized.
+ self._initialized = True
+
+ # pylint: disable=unused-argument
+ @classmethod
+ def restore(cls, path, config=None):
+ """Restores model from give path.
+
+ Args:
+ path: Path to the checkpoints and other model information.
+ config: RunConfig object that controls the configurations of the session,
+ e.g. num_cores, gpu_memory_fraction, etc. This is allowed to be reconfigured.
+
+ Returns:
+ Estiamator, object of the subclass of TensorFlowEstimator.
+ """
+ model_def_filename = os.path.join(path, 'model.def')
+ if not os.path.exists(model_def_filename):
+ raise ValueError("Restore folder doesn't contain model definition.")
+ # list of parameters that are allowed to be reconfigured
+ reconfigurable_params = ['_config']
+ _config = config
+ with gfile.Open(model_def_filename) as fmodel:
+ model_def = json.loads(fmodel.read())
+ # TensorFlow binding requires parameters to be strings not unicode.
+ # Only issue in Python2.
+ for key, value in model_def.items():
+ if (isinstance(value, string_types) and
+ not isinstance(value, str)):
+ model_def[key] = str(value)
+ if key in reconfigurable_params:
+ new_value = locals()[key]
+ if new_value is not None:
+ model_def[key] = new_value
+ class_name = model_def.pop('class_name')
+ if class_name == 'TensorFlowEstimator':
+ custom_estimator = TensorFlowEstimator(model_fn=None, **model_def)
+ custom_estimator._restore(path)
+ return custom_estimator
+
+ # To avoid cyclical dependencies, import inside the function instead of
+ # the beginning of the file.
+ from tensorflow.contrib.learn.python.learn import estimators
+ # Estimator must be one of the defined estimators in the __init__ file.
+ estimator = getattr(estimators, class_name)(**model_def)
+ estimator._restore(path)
+ return estimator
+
def get_tensor_value(self, name):
"""Returns value of the tensor give by name.
diff --git a/tensorflow/contrib/learn/python/learn/monitors.py b/tensorflow/contrib/learn/python/learn/monitors.py
index 047f432aaf..70b3b7ae70 100644
--- a/tensorflow/contrib/learn/python/learn/monitors.py
+++ b/tensorflow/contrib/learn/python/learn/monitors.py
@@ -17,9 +17,12 @@ from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
+import os
import sys
import numpy as np
+from tensorflow.core.framework import summary_pb2
+from tensorflow.python.training import training as train
from tensorflow.contrib.learn.python.learn.io.data_feeder import setup_train_data_feeder
# pylint: disable=too-many-instance-attributes
@@ -102,6 +105,7 @@ class BaseMonitor(object):
def _set_last_loss_seen(self):
"""Sets last_loss_seen attribute to most recent training error."""
self.last_loss_seen = self.all_train_loss_buffer[-1]
+ self._estimator = None
def report(self):
"""Checks whether to report, and prints loss information if appropriate."""
@@ -109,6 +113,9 @@ class BaseMonitor(object):
self._set_training_summary()
print(self._summary_str)
+ def set_estimator(self, estimator):
+ self._estimator = estimator
+
def monitor_inducing_stop(self):
"""Returns True if the monitor requests the model stop.
@@ -190,12 +197,19 @@ class ValidationMonitor(BaseMonitor):
self.val_feeder = setup_train_data_feeder(val_X, val_y, n_classes, -1)
self.print_val_loss_buffer = []
self.all_val_loss_buffer = []
+ self._summary_writer = None
def create_val_feed_dict(self, inp, out):
"""Set tensorflow placeholders and create validation data feed."""
self.val_feeder.set_placeholders(inp, out)
self.val_dict = self.val_feeder.get_feed_dict_fn()()
+ def set_estimator(self, estimator):
+ super(ValidationMonitor, self).set_estimator(estimator)
+ if estimator._output_dir is None:
+ return
+ self._summary_writer = train.SummaryWriter(os.path.join(estimator._output_dir, 'eval'))
+
def _set_last_loss_seen(self):
"""Sets self.last_loss_seen to most recent validation loss.
@@ -207,6 +221,12 @@ class ValidationMonitor(BaseMonitor):
self.last_loss_seen = val_loss
self.all_val_loss_buffer.append(val_loss)
self.print_val_loss_buffer.append(val_loss)
+ if self._summary_writer is not None:
+ summary = summary_pb2.Summary()
+ value = summary.value.add()
+ value.tag = "loss"
+ value.simple_value = float(val_loss)
+ self._summary_writer.add_summary(summary, self.global_step)
def _modify_summary_string(self):
"""Flushes validation print buffer into summary string."""
diff --git a/tensorflow/contrib/metrics/BUILD b/tensorflow/contrib/metrics/BUILD
index 73e9e5a761..f090839855 100644
--- a/tensorflow/contrib/metrics/BUILD
+++ b/tensorflow/contrib/metrics/BUILD
@@ -17,9 +17,9 @@ py_library(
)
cuda_py_tests(
- name = "histogram_ops_test",
+ name = "metrics_ops_test",
size = "medium",
- srcs = ["python/kernel_tests/histogram_ops_test.py"],
+ srcs = glob(["python/kernel_tests/*_test.py"]),
additional_deps = [
":metrics_py",
"//tensorflow/python:framework_test_lib",
diff --git a/tensorflow/contrib/metrics/__init__.py b/tensorflow/contrib/metrics/__init__.py
index 5ccc1f73c5..13ad30b480 100644
--- a/tensorflow/contrib/metrics/__init__.py
+++ b/tensorflow/contrib/metrics/__init__.py
@@ -24,6 +24,7 @@ from __future__ import print_function
# pylint: disable=unused-import,line-too-long,g-importing-member,wildcard-import
from tensorflow.contrib.metrics.python.metrics import *
from tensorflow.contrib.metrics.python.ops.histogram_ops import auc_using_histogram
+from tensorflow.contrib.metrics.python.ops.confusion_matrix_ops import confusion_matrix
from tensorflow.contrib.metrics.python.ops.metric_ops import streaming_accuracy
from tensorflow.contrib.metrics.python.ops.metric_ops import streaming_auc
from tensorflow.contrib.metrics.python.ops.metric_ops import streaming_mean
diff --git a/tensorflow/contrib/metrics/python/kernel_tests/confusion_matrix_ops_test.py b/tensorflow/contrib/metrics/python/kernel_tests/confusion_matrix_ops_test.py
new file mode 100644
index 0000000000..fc71d5c690
--- /dev/null
+++ b/tensorflow/contrib/metrics/python/kernel_tests/confusion_matrix_ops_test.py
@@ -0,0 +1,127 @@
+# Copyright 2016 Google Inc. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ==============================================================================
+"""Tests for confusion_matrix_ops."""
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+
+import numpy as np
+import tensorflow as tf
+
+
+class ConfusionMatrixTest(tf.test.TestCase):
+
+ def _testConfMatrix(self, predictions, targets, truth):
+ with self.test_session():
+ ans = tf.contrib.metrics.confusion_matrix(predictions, targets)
+ tf_ans = ans.eval()
+ self.assertAllClose(tf_ans, truth, atol=1e-10)
+
+ def _testBasic(self, dtype):
+ predictions = np.arange(5, dtype=dtype)
+ targets = np.arange(5, dtype=dtype)
+
+ truth = np.asarray(
+ [[1, 0, 0, 0, 0],
+ [0, 1, 0, 0, 0],
+ [0, 0, 1, 0, 0],
+ [0, 0, 0, 1, 0],
+ [0, 0, 0, 0, 1]],
+ dtype=dtype)
+
+ self._testConfMatrix(
+ predictions=predictions,
+ targets=targets,
+ truth=truth)
+
+ def testInt32Basic(self, dtype=np.int32):
+ self._testBasic(dtype)
+
+ def testInt64Basic(self, dtype=np.int64):
+ self._testBasic(dtype)
+
+ def _testDiffentLabelsInPredictionAndTarget(self, dtype):
+ predictions = np.asarray([1, 2, 3], dtype=dtype)
+ targets = np.asarray([4, 5, 6], dtype=dtype)
+
+ truth = np.asarray(
+ [[0, 0, 0, 0, 0, 0, 0],
+ [0, 0, 0, 0, 1, 0, 0],
+ [0, 0, 0, 0, 0, 1, 0],
+ [0, 0, 0, 0, 0, 0, 1],
+ [0, 0, 0, 0, 0, 0, 0],
+ [0, 0, 0, 0, 0, 0, 0],
+ [0, 0, 0, 0, 0, 0, 0]],
+ dtype=dtype)
+
+ self._testConfMatrix(
+ predictions=predictions,
+ targets=targets,
+ truth=truth)
+
+ def testInt32DifferentLabels(self, dtype=np.int32):
+ self._testDiffentLabelsInPredictionAndTarget(dtype)
+
+ def testInt64DifferentLabels(self, dtype=np.int64):
+ self._testDiffentLabelsInPredictionAndTarget(dtype)
+
+ def _testMultipleLabels(self, dtype):
+ predictions = np.asarray([1, 1, 2, 3, 5, 6, 1, 2, 3, 4], dtype=dtype)
+ targets = np.asarray([1, 1, 2, 3, 5, 1, 3, 6, 3, 1], dtype=dtype)
+
+ truth = np.asarray(
+ [[0, 0, 0, 0, 0, 0, 0],
+ [0, 2, 0, 1, 0, 0, 0],
+ [0, 0, 1, 0, 0, 0, 1],
+ [0, 0, 0, 2, 0, 0, 0],
+ [0, 1, 0, 0, 0, 0, 0],
+ [0, 0, 0, 0, 0, 1, 0],
+ [0, 1, 0, 0, 0, 0, 0]],
+ dtype=dtype)
+
+ self._testConfMatrix(
+ predictions=predictions,
+ targets=targets,
+ truth=truth)
+
+ def testInt32MultipleLabels(self, dtype=np.int32):
+ self._testMultipleLabels(dtype)
+
+ def testInt64MultipleLabels(self, dtype=np.int64):
+ self._testMultipleLabels(dtype)
+
+ def testInvalidRank(self):
+ predictions = np.asarray([[1, 2, 3]])
+ targets = np.asarray([1, 2, 3])
+ self.assertRaisesRegexp(
+ ValueError, "are not compatible",
+ tf.contrib.metrics.confusion_matrix, predictions, targets)
+
+ predictions = np.asarray([1, 2, 3])
+ targets = np.asarray([[1, 2, 3]])
+ self.assertRaisesRegexp(
+ ValueError, "are not compatible",
+ tf.contrib.metrics.confusion_matrix, predictions, targets)
+
+ def testInputDifferentSize(self):
+ predictions = np.asarray([1, 2, 3])
+ targets = np.asarray([1, 2])
+ self.assertRaisesRegexp(
+ ValueError,
+ "are not compatible",
+ tf.contrib.metrics.confusion_matrix, predictions, targets)
+
+if __name__ == '__main__':
+ tf.test.main()
diff --git a/tensorflow/contrib/metrics/python/ops/confusion_matrix_ops.py b/tensorflow/contrib/metrics/python/ops/confusion_matrix_ops.py
new file mode 100644
index 0000000000..89d7a34403
--- /dev/null
+++ b/tensorflow/contrib/metrics/python/ops/confusion_matrix_ops.py
@@ -0,0 +1,86 @@
+# Copyright 2015 Google Inc. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ==============================================================================
+
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+
+from tensorflow.python.framework import ops
+from tensorflow.python.framework import dtypes
+from tensorflow.python.ops import array_ops
+from tensorflow.python.ops import math_ops
+from tensorflow.python.ops import sparse_ops
+
+
+"""Confusion matrix related metrics."""
+
+
+def confusion_matrix(predictions, targets, num_classes=None, name=None):
+ """Computes the confusion matrix from predictions and targets
+
+ Calculate the Confusion Matrix for a pair of prediction and
+ target 1-D int arrays.
+
+ Considering a prediction array such as: `[1, 2, 3]`
+ And a target array such as: `[2, 2, 3]`
+
+ The confusion matrix returned would be the following one:
+ [[0, 0, 0]
+ [0, 1, 0]
+ [0, 1, 0]
+ [0, 0, 1]]
+
+ Where the matrix rows represent the prediction labels and the columns
+ represents the target labels. The confusion matrix is always a 2-D array
+ of shape [n, n], where n is the number of valid labels for a given
+ classification task. Both prediction and target must be 1-D arrays of
+ the same shape in order for this function to work.
+
+ Args:
+ predictions: A 1-D array represeting the predictions for a given
+ classification.
+ targets: A 1-D represeting the real labels for the classification task.
+ num_classes: The possible number of labels the classification task can
+ have. If this value is not provided, it will be calculated
+ using both predictions and targets array.
+
+ Returns:
+ A l X l matrix represeting the confusion matrix, where l in the number of
+ possible labels in the classification task.
+
+ Raises:
+ ValueError: If both predictions and targets are not 1-D vectors and do not
+ have the same size.
+ """
+ with ops.op_scope([predictions, targets, num_classes], name,
+ 'confusion_matrix') as name:
+ predictions = ops.convert_to_tensor(
+ predictions, name="predictions", dtype=dtypes.int64)
+ targets = ops.convert_to_tensor(
+ targets, name="targets", dtype=dtypes.int64)
+
+ if num_classes is None:
+ num_classes = math_ops.maximum(math_ops.reduce_max(predictions),
+ math_ops.reduce_max(targets)) + 1
+
+ shape = array_ops.pack([num_classes, num_classes])
+ indices = array_ops.transpose(
+ array_ops.pack([predictions, targets]))
+ values = array_ops.ones_like(predictions, dtype=dtypes.int32)
+ cm_sparse = ops.SparseTensor(
+ indices=indices, values=values, shape=shape)
+ zero_matrix = array_ops.zeros(math_ops.to_int32(shape), dtypes.int32)
+
+ return sparse_ops.sparse_add(zero_matrix, cm_sparse)
diff --git a/tensorflow/contrib/tensor_forest/core/ops/count_extremely_random_stats_op.cc b/tensorflow/contrib/tensor_forest/core/ops/count_extremely_random_stats_op.cc
index 7c1430225a..13fa215d34 100644
--- a/tensorflow/contrib/tensor_forest/core/ops/count_extremely_random_stats_op.cc
+++ b/tensorflow/contrib/tensor_forest/core/ops/count_extremely_random_stats_op.cc
@@ -148,7 +148,7 @@ REGISTER_OP("CountExtremelyRandomStats")
incremented for every node i that it passes through, and the leaf it ends up
in is recorded in `leaves[i]`. Then, if the leaf is fertile and
initialized, the statistics for its corresponding accumulator slot
- are updated in in `pcw_candidate_sums_delta` and `pcw_totals_sums_delta`.
+ are updated in `pcw_candidate_splits_delta` and `pcw_total_splits_delta`.
For `regression` = true, outputs contain the sum of the input_labels
for the appropriate nodes. In adddition, the *_squares outputs are filled
diff --git a/tensorflow/core/common_runtime/function.cc b/tensorflow/core/common_runtime/function.cc
index 2ed496280d..a1dac6964a 100644
--- a/tensorflow/core/common_runtime/function.cc
+++ b/tensorflow/core/common_runtime/function.cc
@@ -1039,7 +1039,7 @@ bool ShouldInline(const NodeDef& ndef) {
// whether to inline or not.
return true;
}
- // If the node is a SymbolicGradient, we use the the forward
+ // If the node is a SymbolicGradient, we use the forward
// function's attribute 'noinline' instead.
const NameAttrList* forward_func_attrs;
Status s =
diff --git a/tensorflow/core/common_runtime/gpu/gpu_tracer.cc b/tensorflow/core/common_runtime/gpu/gpu_tracer.cc
index 30d59fe7ba..08a3a5962a 100644
--- a/tensorflow/core/common_runtime/gpu/gpu_tracer.cc
+++ b/tensorflow/core/common_runtime/gpu/gpu_tracer.cc
@@ -257,7 +257,7 @@ CUPTIManager *GetCUPTIManager() {
// TODO(pbar) Move this to platform specific header file?
// Static thread local variable for POD types.
#define TF_STATIC_THREAD_LOCAL_POD(_Type_, _var_) \
- static thread_local _Type_ s_obj_##_var_; \
+ static __thread _Type_ s_obj_##_var_; \
namespace { \
class ThreadLocal_##_var_ { \
public: \
diff --git a/tensorflow/core/common_runtime/gpu/gpu_tracer.h b/tensorflow/core/common_runtime/gpu/gpu_tracer.h
index dcce7f5fe5..8a3e519254 100644
--- a/tensorflow/core/common_runtime/gpu/gpu_tracer.h
+++ b/tensorflow/core/common_runtime/gpu/gpu_tracer.h
@@ -45,7 +45,7 @@ class StepStatsCollector;
// with no GPU tracing support, 'CreateGPUTracer' will return 'nullptr'.
// On most plaforms, GPU tracing will be a system-wide activity and
// a single 'GPUTracer' will collect activity from all GPUs.
-// It is also common that only a single tracer may be active at at any
+// It is also common that only a single tracer may be active at any
// given time. The 'Start' method will return an error if tracing is
// already in progress elsewhere.
//
diff --git a/tensorflow/core/distributed_runtime/master_session.cc b/tensorflow/core/distributed_runtime/master_session.cc
index 7da7e5c864..17c11fc17e 100644
--- a/tensorflow/core/distributed_runtime/master_session.cc
+++ b/tensorflow/core/distributed_runtime/master_session.cc
@@ -276,7 +276,7 @@ class MasterSession::ReffedClientGraph : public core::RefCounted {
// Send/Recv nodes that are the result of client-added
// feeds and fetches must be tracked so that the tensors
- // can be be added to the local rendezvous.
+ // can be added to the local rendezvous.
static void TrackFeedsAndFetches(Part* part, const PartitionOptions& popts);
// The actual graph partitioning and registration implementation.
diff --git a/tensorflow/core/graph/optimizer_cse_test.cc b/tensorflow/core/graph/optimizer_cse_test.cc
index eb2b431ef7..ae94a5ddbc 100644
--- a/tensorflow/core/graph/optimizer_cse_test.cc
+++ b/tensorflow/core/graph/optimizer_cse_test.cc
@@ -337,7 +337,7 @@ TEST_F(OptimizerCSETest, Constant_Dedup) {
"n/_0(Const);n/_1(Const);n/_2(Const);n/_3(Const);"
"n/_4(Const);n/_5(Const);n/_6(Const);n/_7(Const)|");
// In theory, there are 2^4 possible correct output of CSE. In this
- // test, it happens happens to eliminate the first 4 nodes.
+ // test, it happens to eliminate the first 4 nodes.
EXPECT_EQ(DoCSE(), "n/_4(Const);n/_5(Const);n/_6(Const);n/_7(Const)|");
}
diff --git a/tensorflow/core/graph/subgraph.h b/tensorflow/core/graph/subgraph.h
index 9105b81bc2..afe26ab4c3 100644
--- a/tensorflow/core/graph/subgraph.h
+++ b/tensorflow/core/graph/subgraph.h
@@ -31,7 +31,7 @@ namespace subgraph {
// graph. "fed_outputs" and "fetch_outputs" are both lists of
// output tensor identifiers in the form of
// "<name>[:<optional_output_index>]", and "target_nodes_str" is a
-// lists of of target node names in "*g" "g".
+// lists of target node names in "*g" "g".
//
// In the resulting graph "*g", output edges in "fed_outputs" have
// been redirected to special "_recv" nodes introduced into the graph.
diff --git a/tensorflow/core/kernels/cholesky_grad.cc b/tensorflow/core/kernels/cholesky_grad.cc
index b3c74b0150..4fefcee55e 100644
--- a/tensorflow/core/kernels/cholesky_grad.cc
+++ b/tensorflow/core/kernels/cholesky_grad.cc
@@ -13,15 +13,15 @@ See the License for the specific language governing permissions and
limitations under the License.
==============================================================================*/
-#include "third_party/eigen3/Eigen/Core"
#include "tensorflow/core/framework/op.h"
+#include "third_party/eigen3/Eigen/Core"
#include "tensorflow/core/framework/op_kernel.h"
+#include "tensorflow/core/kernels/linalg_ops_common.h"
#include "third_party/eigen3/unsupported/Eigen/CXX11/Tensor"
#include "tensorflow/core/framework/tensor_types.h"
#include "tensorflow/core/framework/types.h"
-#include "tensorflow/core/kernels/linalg_ops_common.h"
namespace tensorflow {
@@ -119,10 +119,8 @@ class CholeskyGrad : public OpKernel {
auto R = input_matrix_l.block(block_begin, 0, block_size, block_begin);
auto R_bar = output_matrix.block(block_begin, 0, block_size, block_begin);
- C_bar = D.adjoint()
- .template triangularView<Eigen::Upper>()
- .solve(C_bar.adjoint())
- .adjoint();
+ C_bar = D.adjoint().template triangularView<Eigen::Upper>()
+ .solve(C_bar.adjoint()).adjoint();
D_bar -= (C_bar.adjoint() * C).template triangularView<Eigen::Lower>();
B_bar -= C_bar * R;
R_bar -= C_bar.adjoint() * B;
diff --git a/tensorflow/core/kernels/eigen_activations.h b/tensorflow/core/kernels/eigen_activations.h
index 252e434811..d34288c1f8 100644
--- a/tensorflow/core/kernels/eigen_activations.h
+++ b/tensorflow/core/kernels/eigen_activations.h
@@ -90,7 +90,7 @@ struct functor_traits<scalar_tanh_fast_derivative_op<T> > {
/**
* \ingroup CXX11_NeuralNetworks_Module
- * \brief Template functor to clip the the magnitude of the first scalar.
+ * \brief Template functor to clip the magnitude of the first scalar.
*
* \sa class CwiseBinaryOp, MatrixBase::Clip
*/
diff --git a/tensorflow/core/kernels/eigen_backward_cuboid_convolutions.h b/tensorflow/core/kernels/eigen_backward_cuboid_convolutions.h
index ca300de30e..202f3e3750 100644
--- a/tensorflow/core/kernels/eigen_backward_cuboid_convolutions.h
+++ b/tensorflow/core/kernels/eigen_backward_cuboid_convolutions.h
@@ -506,9 +506,9 @@ CuboidConvolutionBackwardKernel(
eigen_assert(input_dims[0] == pre_contract_dims[0]);
}
- // We will contract along dimensions (1, 2) in in and (1, 3) in out, if
+ // We will contract along dimensions (1, 2) in and (1, 3) in out, if
// this is col-major.
- // For row-major, it's dimensions (0, 1) in in and (0, 2) in out.
+ // For row-major, it's dimensions (0, 1) in and (0, 2) in out.
array<IndexPair<TensorIndex>, 2> contract_dims;
if (isColMajor) {
// col-major: in.contract(output.patches)
diff --git a/tensorflow/core/kernels/ops_util.cc b/tensorflow/core/kernels/ops_util.cc
index c0e939c845..ce52c87bc4 100644
--- a/tensorflow/core/kernels/ops_util.cc
+++ b/tensorflow/core/kernels/ops_util.cc
@@ -55,16 +55,14 @@ Status Get2dOutputSizeVerbose(const int in_height, const int in_width,
*new_width = ceil(in_width / static_cast<float>(col_stride));
// Calculate padding for top/bottom/left/right, spilling any excess
// padding to bottom and right.
- const int pad_needed_height =
- (*new_height - 1) * row_stride + filter_height - in_height;
+ const int pad_needed_height = std::max(0,
+ (*new_height - 1) * row_stride + filter_height - in_height);
*pad_top = pad_needed_height / 2;
- CHECK_GE(pad_needed_height, 0);
*pad_bottom = pad_needed_height - *pad_top;
- const int pad_needed_width =
- (*new_width - 1) * col_stride + filter_width - in_width;
+ const int pad_needed_width = std::max(0,
+ (*new_width - 1) * col_stride + filter_width - in_width);
*pad_left = pad_needed_width / 2;
- CHECK_GE(pad_needed_width, 0);
*pad_right = pad_needed_width - *pad_left;
break;
}
diff --git a/tensorflow/core/kernels/range_sampler_test.cc b/tensorflow/core/kernels/range_sampler_test.cc
index 34e481f24c..7963030e42 100644
--- a/tensorflow/core/kernels/range_sampler_test.cc
+++ b/tensorflow/core/kernels/range_sampler_test.cc
@@ -66,7 +66,7 @@ class RangeSamplerTest : public ::testing::Test {
sampler_->Update(a);
}
void Update2() {
- // Add the value n n times.
+ // Add the value n times.
int64 a[10];
for (int i = 0; i < 10; i++) {
a[i] = i;
diff --git a/tensorflow/core/kernels/stack_ops.cc b/tensorflow/core/kernels/stack_ops.cc
index 67455f3b3a..4187800b1e 100644
--- a/tensorflow/core/kernels/stack_ops.cc
+++ b/tensorflow/core/kernels/stack_ops.cc
@@ -26,6 +26,7 @@ limitations under the License.
#include "tensorflow/core/framework/tensor.h"
#include "tensorflow/core/framework/tensor_shape.h"
#include "tensorflow/core/framework/types.h"
+#include "tensorflow/core/lib/core/refcount.h"
#include "tensorflow/core/lib/core/errors.h"
#include "tensorflow/core/lib/core/refcount.h"
#include "tensorflow/core/lib/gtl/map_util.h"
diff --git a/tensorflow/core/kernels/tensor_array_ops.cc b/tensorflow/core/kernels/tensor_array_ops.cc
index abd0809bc8..214d70684d 100644
--- a/tensorflow/core/kernels/tensor_array_ops.cc
+++ b/tensorflow/core/kernels/tensor_array_ops.cc
@@ -31,6 +31,7 @@ limitations under the License.
#include "tensorflow/core/kernels/concat_lib.h"
#include "tensorflow/core/kernels/split_lib.h"
#include "tensorflow/core/kernels/tensor_array.h"
+#include "tensorflow/core/lib/core/refcount.h"
#include "tensorflow/core/lib/core/errors.h"
#include "tensorflow/core/lib/core/refcount.h"
#include "tensorflow/core/lib/strings/strcat.h"
diff --git a/tensorflow/core/lib/core/arena.h b/tensorflow/core/lib/core/arena.h
index e303b8fbe8..1caecf37dd 100644
--- a/tensorflow/core/lib/core/arena.h
+++ b/tensorflow/core/lib/core/arena.h
@@ -79,7 +79,7 @@ class Arena {
size_t size;
};
- // Allocate new new block of at least block_size, with the specified
+ // Allocate new block of at least block_size, with the specified
// alignment.
// The returned AllocatedBlock* is valid until the next call to AllocNewBlock
// or Reset (i.e. anything that might affect overflow_blocks_).
diff --git a/tensorflow/core/platform/default/build_config.bzl b/tensorflow/core/platform/default/build_config.bzl
index 633441f31b..6b3d85ded4 100644
--- a/tensorflow/core/platform/default/build_config.bzl
+++ b/tensorflow/core/platform/default/build_config.bzl
@@ -3,11 +3,6 @@
load("//google/protobuf:protobuf.bzl", "cc_proto_library")
load("//google/protobuf:protobuf.bzl", "py_proto_library")
-# configure may change the following lines to '.X.Y' or similar
-CUDA_VERSION = ""
-
-CUDNN_VERSION = ""
-
# Appends a suffix to a list of deps.
def tf_deps(deps, suffix):
tf_deps = []
@@ -96,9 +91,3 @@ def tf_additional_test_srcs():
def tf_kernel_tests_linkstatic():
return 0
-
-def tf_get_cuda_version():
- return CUDA_VERSION
-
-def tf_get_cudnn_version():
- return CUDNN_VERSION
diff --git a/tensorflow/core/platform/default/build_config/BUILD b/tensorflow/core/platform/default/build_config/BUILD
index da86245cc1..d6ae6507db 100644
--- a/tensorflow/core/platform/default/build_config/BUILD
+++ b/tensorflow/core/platform/default/build_config/BUILD
@@ -9,7 +9,7 @@ exports_files(["LICENSE"])
load("//tensorflow:tensorflow.bzl", "tf_copts")
load("//tensorflow:tensorflow.bzl", "tf_cuda_library")
-load("//tensorflow/core:platform/default/build_config.bzl", "tf_get_cuda_version")
+load("//third_party/gpus/cuda:platform.bzl", "cuda_library_path")
cc_library(
name = "gtest",
@@ -31,7 +31,16 @@ tf_cuda_library(
name = "stream_executor",
deps = [
"//tensorflow/stream_executor",
- ],
+ ] + select({
+ "//third_party/gpus/cuda:darwin": ["IOKit"],
+ "//conditions:default": []
+ }),
+)
+
+# OSX framework for device driver access
+cc_library(
+ name = "IOKit",
+ linkopts = ["-framework IOKit"],
)
cc_library(
@@ -69,12 +78,18 @@ filegroup(
cc_library(
name = "cuda",
data = [
- "//third_party/gpus/cuda:lib64/libcudart.so" + tf_get_cuda_version(),
- ],
- linkopts = [
- "-Wl,-rpath,third_party/gpus/cuda/lib64",
- "-Wl,-rpath,third_party/gpus/cuda/extras/CUPTI/lib64",
+ "//third_party/gpus/cuda:{}".format(cuda_library_path("cudart")),
],
+ linkopts = select({
+ "//third_party/gpus/cuda:darwin": [
+ "-Wl,-rpath,third_party/gpus/cuda/lib",
+ "-Wl,-rpath,third_party/gpus/cuda/extras/CUPTI/lib"
+ ],
+ "//conditions:default": [
+ "-Wl,-rpath,third_party/gpus/cuda/lib64",
+ "-Wl,-rpath,third_party/gpus/cuda/extras/CUPTI/lib64"
+ ]
+ }),
deps = [
"//third_party/gpus/cuda:cudart",
],
diff --git a/tensorflow/core/platform/load_library.cc b/tensorflow/core/platform/load_library.cc
index b8a93906f1..24fdcfd1fc 100644
--- a/tensorflow/core/platform/load_library.cc
+++ b/tensorflow/core/platform/load_library.cc
@@ -49,6 +49,24 @@ Status GetSymbolFromLibrary(void* handle, const char* symbol_name,
return Status::OK();
}
+string FormatLibraryFileName(const string& name, const string& version) {
+ string filename;
+#if defined(__APPLE__)
+ if (version.size() == 0) {
+ filename = "lib" + name + ".dylib";
+ } else {
+ filename = "lib" + name + "." + version + ".dylib";
+ }
+#else
+ if (version.size() == 0) {
+ filename = "lib" + name + ".so";
+ } else {
+ filename = "lib" + name + ".so" + "." + version;
+ }
+#endif
+ return filename;
+}
+
} // namespace internal
} // namespace tensorflow
diff --git a/tensorflow/core/platform/load_library.h b/tensorflow/core/platform/load_library.h
index b67e8835c5..96c3cab156 100644
--- a/tensorflow/core/platform/load_library.h
+++ b/tensorflow/core/platform/load_library.h
@@ -25,6 +25,9 @@ namespace internal {
Status LoadLibrary(const char* library_filename, void** handle);
Status GetSymbolFromLibrary(void* handle, const char* symbol_name,
void** symbol);
+// Return the filename of a dynamically linked library formatted according to
+// platform naming conventions
+string FormatLibraryFileName(const string& name, const string& version);
} // namespace internal
diff --git a/tensorflow/core/public/version.h b/tensorflow/core/public/version.h
index 831116c6aa..60a203f7f3 100644
--- a/tensorflow/core/public/version.h
+++ b/tensorflow/core/public/version.h
@@ -20,7 +20,7 @@ limitations under the License.
#define TF_MAJOR_VERSION 0
#define TF_MINOR_VERSION 8
-#define TF_PATCH_VERSION 0rc0
+#define TF_PATCH_VERSION 0
// TF_VERSION_SUFFIX is non-empty for pre-releases (e.g. "-alpha", "-alpha.1",
// "-beta", "-rc", "-rc.1")
diff --git a/tensorflow/examples/skflow/iris.py b/tensorflow/examples/skflow/iris.py
index d95d9c2d83..3ea1ef1f4c 100644
--- a/tensorflow/examples/skflow/iris.py
+++ b/tensorflow/examples/skflow/iris.py
@@ -15,12 +15,12 @@ from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
-from sklearn import datasets, metrics, cross_validation
+from sklearn import metrics, cross_validation
from tensorflow.contrib import skflow
# Load dataset.
-iris = datasets.load_iris()
+iris = skflow.datasets.load_dataset('iris')
X_train, X_test, y_train, y_test = cross_validation.train_test_split(iris.data, iris.target,
test_size=0.2, random_state=42)
diff --git a/tensorflow/examples/skflow/iris_val_based_early_stopping.py b/tensorflow/examples/skflow/iris_val_based_early_stopping.py
index 5ee3cacd4b..3e6820e997 100644
--- a/tensorflow/examples/skflow/iris_val_based_early_stopping.py
+++ b/tensorflow/examples/skflow/iris_val_based_early_stopping.py
@@ -36,13 +36,13 @@ val_monitor = skflow.monitors.ValidationMonitor(X_val, y_val,
# classifier with early stopping on training data
classifier1 = skflow.TensorFlowDNNClassifier(hidden_units=[10, 20, 10],
n_classes=3, steps=2000)
-classifier1.fit(X_train, y_train)
+classifier1.fit(X_train, y_train, logdir='/tmp/iris_model/')
score1 = metrics.accuracy_score(y_test, classifier1.predict(X_test))
# classifier with early stopping on validation data
classifier2 = skflow.TensorFlowDNNClassifier(hidden_units=[10, 20, 10],
n_classes=3, steps=2000)
-classifier2.fit(X_train, y_train, val_monitor)
+classifier2.fit(X_train, y_train, val_monitor, logdir='/tmp/iris_model_val/')
score2 = metrics.accuracy_score(y_test, classifier2.predict(X_test))
# in many applications, the score is improved by using early stopping on val data
diff --git a/tensorflow/examples/skflow/language_model.py b/tensorflow/examples/skflow/language_model.py
index 0e3c95aa19..439d6f3198 100644
--- a/tensorflow/examples/skflow/language_model.py
+++ b/tensorflow/examples/skflow/language_model.py
@@ -19,7 +19,6 @@ from __future__ import print_function
import itertools
import math
-import os
import numpy as np
import tensorflow as tf
diff --git a/tensorflow/examples/skflow/mnist.py b/tensorflow/examples/skflow/mnist.py
index 3cf8161e6d..504a5ae9f8 100644
--- a/tensorflow/examples/skflow/mnist.py
+++ b/tensorflow/examples/skflow/mnist.py
@@ -24,12 +24,11 @@ from __future__ import print_function
from sklearn import metrics
import tensorflow as tf
-from tensorflow.examples.tutorials.mnist import input_data
from tensorflow.contrib import skflow
### Download and load MNIST data.
-mnist = input_data.read_data_sets('MNIST_data')
+mnist = skflow.datasets.load_dataset('mnist')
### Linear classifier.
diff --git a/tensorflow/examples/skflow/mnist_weights.py b/tensorflow/examples/skflow/mnist_weights.py
index dbd7d83581..7d4acd24af 100644
--- a/tensorflow/examples/skflow/mnist_weights.py
+++ b/tensorflow/examples/skflow/mnist_weights.py
@@ -28,7 +28,7 @@ from tensorflow.contrib import skflow
### Download and load MNIST data.
-mnist = input_data.read_data_sets('MNIST_data')
+mnist = skflow.datasets.load_dataset('mnist')
### Linear classifier.
diff --git a/tensorflow/examples/skflow/text_classification.py b/tensorflow/examples/skflow/text_classification.py
index b57f1a3dce..190d4a1464 100644
--- a/tensorflow/examples/skflow/text_classification.py
+++ b/tensorflow/examples/skflow/text_classification.py
@@ -20,19 +20,14 @@ from sklearn import metrics
import pandas
import tensorflow as tf
-from tensorflow.models.rnn import rnn, rnn_cell
from tensorflow.contrib import skflow
### Training data
-# Download dbpedia_csv.tar.gz from
-# https://drive.google.com/folderview?id=0Bz8a_Dbh9Qhbfll6bVpmNUtUcFdjYmF2SEpmZUZUcVNiMUw1TWN6RDV3a0JHT3kxLVhVR2M
-# Unpack: tar -xvf dbpedia_csv.tar.gz
-
-train = pandas.read_csv('dbpedia_csv/train.csv', header=None)
-X_train, y_train = train[2], train[0]
-test = pandas.read_csv('dbpedia_csv/test.csv', header=None)
-X_test, y_test = test[2], test[0]
+# Downloads, unpacks and reads DBpedia dataset.
+dbpedia = skflow.datasets.load_dataset('dbpedia')
+X_train, y_train = pandas.DataFrame(dbpedia.train.data)[1], pandas.Series(dbpedia.train.target)
+X_test, y_test = pandas.DataFrame(dbpedia.test.data)[1], pandas.Series(dbpedia.test.target)
### Process vocabulary
@@ -68,10 +63,10 @@ def rnn_model(X, y):
# word_list results to be a list of tensors [batch_size, EMBEDDING_SIZE].
word_list = skflow.ops.split_squeeze(1, MAX_DOCUMENT_LENGTH, word_vectors)
# Create a Gated Recurrent Unit cell with hidden size of EMBEDDING_SIZE.
- cell = rnn_cell.GRUCell(EMBEDDING_SIZE)
+ cell = tf.nn.rnn_cell.GRUCell(EMBEDDING_SIZE)
# Create an unrolled Recurrent Neural Networks to length of
# MAX_DOCUMENT_LENGTH and passes word_list as inputs for each unit.
- _, encoding = rnn.rnn(cell, word_list, dtype=tf.float32)
+ _, encoding = tf.nn.rnn(cell, word_list, dtype=tf.float32)
# Given encoding of RNN, take encoding of last step (e.g hidden size of the
# neural network of last step) and pass it as features for logistic
# regression over output classes.
diff --git a/tensorflow/examples/skflow/text_classification_builtin_rnn_model.py b/tensorflow/examples/skflow/text_classification_builtin_rnn_model.py
index d1e88ed997..9eb7dcfb97 100644
--- a/tensorflow/examples/skflow/text_classification_builtin_rnn_model.py
+++ b/tensorflow/examples/skflow/text_classification_builtin_rnn_model.py
@@ -24,14 +24,10 @@ from tensorflow.contrib import skflow
### Training data
-# Download dbpedia_csv.tar.gz from
-# https://drive.google.com/folderview?id=0Bz8a_Dbh9Qhbfll6bVpmNUtUcFdjYmF2SEpmZUZUcVNiMUw1TWN6RDV3a0JHT3kxLVhVR2M
-# Unpack: tar -xvf dbpedia_csv.tar.gz
-
-train = pandas.read_csv('dbpedia_csv/train.csv', header=None)
-X_train, y_train = train[2], train[0]
-test = pandas.read_csv('dbpedia_csv/test.csv', header=None)
-X_test, y_test = test[2], test[0]
+# Downloads, unpacks and reads DBpedia dataset.
+dbpedia = skflow.datasets.load_dataset('dbpedia')
+X_train, y_train = pandas.DataFrame(dbpedia.train.data)[1], pandas.Series(dbpedia.train.target)
+X_test, y_test = pandas.DataFrame(dbpedia.test.data)[1], pandas.Series(dbpedia.test.target)
### Process vocabulary
diff --git a/tensorflow/examples/skflow/text_classification_character_cnn.py b/tensorflow/examples/skflow/text_classification_character_cnn.py
index 32a046cafd..71dec5b4ee 100644
--- a/tensorflow/examples/skflow/text_classification_character_cnn.py
+++ b/tensorflow/examples/skflow/text_classification_character_cnn.py
@@ -36,14 +36,10 @@ from tensorflow.contrib import skflow
### Training data
-# Download dbpedia_csv.tar.gz from
-# https://drive.google.com/folderview?id=0Bz8a_Dbh9Qhbfll6bVpmNUtUcFdjYmF2SEpmZUZUcVNiMUw1TWN6RDV3a0JHT3kxLVhVR2M
-# Unpack: tar -xvf dbpedia_csv.tar.gz
-
-train = pandas.read_csv('dbpedia_csv/train.csv', header=None)
-X_train, y_train = train[2], train[0]
-test = pandas.read_csv('dbpedia_csv/test.csv', header=None)
-X_test, y_test = test[2], test[0]
+# Downloads, unpacks and reads DBpedia dataset.
+dbpedia = skflow.datasets.load_dataset('dbpedia')
+X_train, y_train = pandas.DataFrame(dbpedia.train.data)[1], pandas.Series(dbpedia.train.target)
+X_test, y_test = pandas.DataFrame(dbpedia.test.data)[1], pandas.Series(dbpedia.test.target)
### Process vocabulary
diff --git a/tensorflow/examples/skflow/text_classification_character_rnn.py b/tensorflow/examples/skflow/text_classification_character_rnn.py
index 32842248d6..af1e37641b 100644
--- a/tensorflow/examples/skflow/text_classification_character_rnn.py
+++ b/tensorflow/examples/skflow/text_classification_character_rnn.py
@@ -32,19 +32,14 @@ from sklearn import metrics
import pandas
import tensorflow as tf
-from tensorflow.models.rnn import rnn, rnn_cell
from tensorflow.contrib import skflow
### Training data
-# Download dbpedia_csv.tar.gz from
-# https://drive.google.com/folderview?id=0Bz8a_Dbh9Qhbfll6bVpmNUtUcFdjYmF2SEpmZUZUcVNiMUw1TWN6RDV3a0JHT3kxLVhVR2M
-# Unpack: tar -xvf dbpedia_csv.tar.gz
-
-train = pandas.read_csv('dbpedia_csv/train.csv', header=None)
-X_train, y_train = train[2], train[0]
-test = pandas.read_csv('dbpedia_csv/test.csv', header=None)
-X_test, y_test = test[2], test[0]
+# Downloads, unpacks and reads DBpedia dataset.
+dbpedia = skflow.datasets.load_dataset('dbpedia')
+X_train, y_train = pandas.DataFrame(dbpedia.train.data)[1], pandas.Series(dbpedia.train.target)
+X_test, y_test = pandas.DataFrame(dbpedia.test.data)[1], pandas.Series(dbpedia.test.target)
### Process vocabulary
@@ -61,8 +56,8 @@ HIDDEN_SIZE = 20
def char_rnn_model(X, y):
byte_list = skflow.ops.one_hot_matrix(X, 256)
byte_list = skflow.ops.split_squeeze(1, MAX_DOCUMENT_LENGTH, byte_list)
- cell = rnn_cell.GRUCell(HIDDEN_SIZE)
- _, encoding = rnn.rnn(cell, byte_list, dtype=tf.float32)
+ cell = tf.nn.rnn_cell.GRUCell(HIDDEN_SIZE)
+ _, encoding = tf.nn.rnn(cell, byte_list, dtype=tf.float32)
return skflow.models.logistic_regression(encoding, y)
classifier = skflow.TensorFlowEstimator(model_fn=char_rnn_model, n_classes=15,
diff --git a/tensorflow/examples/skflow/text_classification_cnn.py b/tensorflow/examples/skflow/text_classification_cnn.py
index d5faf228fe..c42a12819e 100644
--- a/tensorflow/examples/skflow/text_classification_cnn.py
+++ b/tensorflow/examples/skflow/text_classification_cnn.py
@@ -24,14 +24,10 @@ from tensorflow.contrib import skflow
### Training data
-# Download dbpedia_csv.tar.gz from
-# https://drive.google.com/folderview?id=0Bz8a_Dbh9Qhbfll6bVpmNUtUcFdjYmF2SEpmZUZUcVNiMUw1TWN6RDV3a0JHT3kxLVhVR2M
-# Unpack: tar -xvf dbpedia_csv.tar.gz
-
-train = pandas.read_csv('dbpedia_csv/train.csv', header=None)
-X_train, y_train = train[2], train[0]
-test = pandas.read_csv('dbpedia_csv/test.csv', header=None)
-X_test, y_test = test[2], test[0]
+# Downloads, unpacks and reads DBpedia dataset.
+dbpedia = skflow.datasets.load_dataset('dbpedia')
+X_train, y_train = pandas.DataFrame(dbpedia.train.data)[1], pandas.Series(dbpedia.train.target)
+X_test, y_test = pandas.DataFrame(dbpedia.test.data)[1], pandas.Series(dbpedia.test.target)
### Process vocabulary
diff --git a/tensorflow/examples/skflow/text_classification_save_restore.py b/tensorflow/examples/skflow/text_classification_save_restore.py
index 6775556aa0..71551762b9 100644
--- a/tensorflow/examples/skflow/text_classification_save_restore.py
+++ b/tensorflow/examples/skflow/text_classification_save_restore.py
@@ -21,19 +21,14 @@ from sklearn import metrics
import pandas
import tensorflow as tf
-from tensorflow.models.rnn import rnn, rnn_cell
from tensorflow.contrib import skflow
### Training data
-# Download dbpedia_csv.tar.gz from
-# https://drive.google.com/folderview?id=0Bz8a_Dbh9Qhbfll6bVpmNUtUcFdjYmF2SEpmZUZUcVNiMUw1TWN6RDV3a0JHT3kxLVhVR2M
-# Unpack: tar -xvf dbpedia_csv.tar.gz
-
-train = pandas.read_csv('dbpedia_csv/train.csv', header=None)
-X_train, y_train = train[2], train[0]
-test = pandas.read_csv('dbpedia_csv/test.csv', header=None)
-X_test, y_test = test[2], test[0]
+# Downloads, unpacks and reads DBpedia dataset.
+dbpedia = skflow.datasets.load_dataset('dbpedia')
+X_train, y_train = pandas.DataFrame(dbpedia.train.data)[1], pandas.Series(dbpedia.train.target)
+X_test, y_test = pandas.DataFrame(dbpedia.test.data)[1], pandas.Series(dbpedia.test.target)
### Process vocabulary
@@ -69,10 +64,10 @@ def rnn_model(X, y):
# word_list results to be a list of tensors [batch_size, EMBEDDING_SIZE].
word_list = skflow.ops.split_squeeze(1, MAX_DOCUMENT_LENGTH, word_vectors)
# Create a Gated Recurrent Unit cell with hidden size of EMBEDDING_SIZE.
- cell = rnn_cell.GRUCell(EMBEDDING_SIZE)
+ cell = tf.nn.rnn_cell.GRUCell(EMBEDDING_SIZE)
# Create an unrolled Recurrent Neural Networks to length of
# MAX_DOCUMENT_LENGTH and passes word_list as inputs for each unit.
- _, encoding = rnn.rnn(cell, word_list, dtype=tf.float32)
+ _, encoding = tf.nn.rnn(cell, word_list, dtype=tf.float32)
# Given encoding of RNN, take encoding of last step (e.g hidden size of the
# neural network of last step) and pass it as features for logistic
# regression over output classes.
diff --git a/tensorflow/examples/tutorials/deepdream/README.md b/tensorflow/examples/tutorials/deepdream/README.md
new file mode 100644
index 0000000000..3fbfea9684
--- /dev/null
+++ b/tensorflow/examples/tutorials/deepdream/README.md
@@ -0,0 +1,27 @@
+# deepdream
+
+by [Alexander Mordvintsev](mailto:moralex@google.com)
+
+This directory contains Jupyter notebook that demonstrates a number of Convolutional Neural Network
+image generation techniques implemented with TensorFlow:
+
+- visualizing individual feature channels and their combinations to explore the space of patterns learned by the neural network (see [GoogLeNet](http://storage.googleapis.com/deepdream/visualz/tensorflow_inception/index.html) and [VGG16](http://storage.googleapis.com/deepdream/visualz/vgg16/index.html) galleries)
+- embedding TensorBoard graph visualizations into Jupyter notebooks
+- producing high-resolution images with tiled computation ([example](http://storage.googleapis.com/deepdream/pilatus_flowers.jpg))
+- using Laplacian Pyramid Gradient Normalization to produce smooth and colorful visuals at low cost
+- generating DeepDream-like images with TensorFlow
+
+You can view "deepdream.ipynb" directly on GitHub. Note that GitHub Jupyter notebook preview removes
+embedded graph visualizations. You can still see them online
+[using nbviewer](http://nbviewer.jupyter.org/github/tensorflow/tensorflow/blob/master/tensorflow/examples/tutorials/deepdream/deepdream.ipynb)
+service.
+
+In order to run the notebook locally, the following dependencies must be installed:
+
+- Python 2.7
+- TensorFlow (>=r0.7)
+- NumPy
+- Jupyter Notebook
+
+To open the notebook, run `ipython notebook` command in this directory, and
+select 'deepdream.ipynb' in the opened browser window.
diff --git a/tensorflow/examples/tutorials/deepdream/deepdream.ipynb b/tensorflow/examples/tutorials/deepdream/deepdream.ipynb
new file mode 100644
index 0000000000..72358298a0
--- /dev/null
+++ b/tensorflow/examples/tutorials/deepdream/deepdream.ipynb
@@ -0,0 +1,1380 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "colab_type": "text",
+ "id": "xu2SVpFJjmJr"
+ },
+ "source": [
+ "# DeepDreaming with TensorFlow"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "colab_type": "toc",
+ "id": "hupz2hrZjdnC"
+ },
+ "source": [
+ ">[Loading and displaying the model graph](#loading)\n",
+ "\n",
+ ">[Naive feature visualization](#naive)\n",
+ "\n",
+ ">[Multiscale image generation](#multiscale)\n",
+ "\n",
+ ">[Laplacian Pyramid Gradient Normalization](#laplacian)\n",
+ "\n",
+ ">[Playing with feature visualzations](#playing)\n",
+ "\n",
+ ">[DeepDream](#deepdream)\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "colab_type": "text",
+ "id": "-PLC9SvcQgkG"
+ },
+ "source": [
+ "This notebook demonstrates a number of Convolutional Neural Network image generation techniques implemented with TensorFlow for fun and science:\n",
+ "\n",
+ "- visualize individual feature channels and their combinations to explore the space of patterns learned by the neural network (see [GoogLeNet](http://storage.googleapis.com/deepdream/visualz/tensorflow_inception/index.html) and [VGG16](http://storage.googleapis.com/deepdream/visualz/vgg16/index.html) galleries)\n",
+ "- embed TensorBoard graph visualizations into Jupyter notebooks\n",
+ "- produce high-resolution images with tiled computation ([example](http://storage.googleapis.com/deepdream/pilatus_flowers.jpg))\n",
+ "- use Laplacian Pyramid Gradient Normalization to produce smooth and colorful visuals at low cost\n",
+ "- generate DeepDream-like images with TensorFlow (DogSlugs included)\n",
+ "\n",
+ "\n",
+ "The network under examination is the [GoogLeNet architecture](http://arxiv.org/abs/1409.4842), trained to classify images into one of 1000 categories of the [ImageNet](http://image-net.org/) dataset. It consists of a set of layers that apply a sequence of transformations to the input image. The parameters of these transformations were determined during the training process by a variant of gradient descent algorithm. The internal image representations may seem obscure, but it is possible to visualize and interpret them. In this notebook we are going to present a few tricks that allow to make these visualizations both efficient to generate and even beautiful. Impatient readers can start with exploring the full galleries of images generated by the method described here for [GoogLeNet](http://storage.googleapis.com/deepdream/visualz/tensorflow_inception/index.html) and [VGG16](http://storage.googleapis.com/deepdream/visualz/vgg16/index.html) architectures."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "cellView": "both",
+ "colab": {
+ "autoexec": {
+ "startup": false,
+ "wait_interval": 0
+ },
+ "output_extras": []
+ },
+ "colab_type": "code",
+ "collapsed": true,
+ "executionInfo": {
+ "elapsed": 371,
+ "status": "ok",
+ "timestamp": 1457963606294,
+ "user": {
+ "color": "#1FA15D",
+ "displayName": "Alexander Mordvintsev",
+ "isAnonymous": false,
+ "isMe": true,
+ "permissionId": "12341152118244997759",
+ "photoUrl": "https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/s128/photo.jpg",
+ "sessionId": "1269ead540f76ce5",
+ "userId": "108092561333339272254"
+ },
+ "user_tz": -60
+ },
+ "id": "jtD9nb-2QgkY",
+ "outputId": "b935629b-8608-45c1-942f-612b7dbb13d3",
+ "scrolled": false
+ },
+ "outputs": [],
+ "source": [
+ "# boilerplate code\n",
+ "import os\n",
+ "from cStringIO import StringIO\n",
+ "import numpy as np\n",
+ "from functools import partial\n",
+ "import PIL.Image\n",
+ "from IPython.display import clear_output, Image, display, HTML\n",
+ "\n",
+ "import tensorflow as tf"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "colab_type": "text",
+ "id": "ILvNKvMvc2n5"
+ },
+ "source": [
+ "<a id='loading'></a>\n",
+ "## Loading and displaying the model graph\n",
+ "\n",
+ "The pretrained network can be downloaded [here](https://storage.googleapis.com/download.tensorflow.org/models/inception5h.zip). Unpack the `tensorflow_inception_graph.pb` file from the archive and set its path to `model_fn` variable. Alternatively you can uncomment and run the following cell to download the network:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": false,
+ "scrolled": false
+ },
+ "outputs": [],
+ "source": [
+ "#!wget https://storage.googleapis.com/download.tensorflow.org/models/inception5h.zip && unzip inception5h.zip"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "cellView": "both",
+ "colab": {
+ "autoexec": {
+ "startup": false,
+ "wait_interval": 0
+ },
+ "output_extras": []
+ },
+ "colab_type": "code",
+ "collapsed": false,
+ "executionInfo": {
+ "elapsed": 2264,
+ "status": "ok",
+ "timestamp": 1457962713799,
+ "user": {
+ "color": "#1FA15D",
+ "displayName": "Alexander Mordvintsev",
+ "isAnonymous": false,
+ "isMe": true,
+ "permissionId": "12341152118244997759",
+ "photoUrl": "https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/s128/photo.jpg",
+ "sessionId": "761b412462cda2d0",
+ "userId": "108092561333339272254"
+ },
+ "user_tz": -60
+ },
+ "id": "1kJuJRLiQgkg",
+ "outputId": "d2aaf8cc-91e1-4864-8cf8-0aef612db1d6",
+ "scrolled": false
+ },
+ "outputs": [],
+ "source": [
+ "model_fn = 'tensorflow_inception_graph.pb'\n",
+ "\n",
+ "# creating TensorFlow session and loading the model\n",
+ "graph = tf.Graph()\n",
+ "sess = tf.InteractiveSession(graph=graph)\n",
+ "graph_def = tf.GraphDef.FromString(open(model_fn).read())\n",
+ "t_input = tf.placeholder(np.float32, name='input') # define the input tensor\n",
+ "imagenet_mean = 117.0\n",
+ "t_preprocessed = tf.expand_dims(t_input-imagenet_mean, 0)\n",
+ "tf.import_graph_def(graph_def, {'input':t_preprocessed})"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "colab_type": "text",
+ "id": "eJZVMSmiQgkp"
+ },
+ "source": [
+ "To take a glimpse into the kinds of patterns that the network learned to recognize, we will try to generate images that maximize the sum of activations of particular channel of a particular convolutional layer of the neural network. The network we explore contains many convolutional layers, each of which outputs tens to hundreds of feature channels, so we have plenty of patterns to explore."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "cellView": "both",
+ "colab": {
+ "autoexec": {
+ "startup": false,
+ "wait_interval": 0
+ },
+ "output_extras": [
+ {
+ "item_id": 1
+ },
+ {
+ "item_id": 2
+ }
+ ]
+ },
+ "colab_type": "code",
+ "collapsed": false,
+ "executionInfo": {
+ "elapsed": 1198,
+ "status": "ok",
+ "timestamp": 1457962715078,
+ "user": {
+ "color": "#1FA15D",
+ "displayName": "Alexander Mordvintsev",
+ "isAnonymous": false,
+ "isMe": true,
+ "permissionId": "12341152118244997759",
+ "photoUrl": "https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/s128/photo.jpg",
+ "sessionId": "761b412462cda2d0",
+ "userId": "108092561333339272254"
+ },
+ "user_tz": -60
+ },
+ "id": "LrucdvgyQgks",
+ "outputId": "5936270b-5da8-4825-b2e9-145c494d36e6",
+ "scrolled": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Number of layers 59\n",
+ "Total number of feature channels: 7548\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ " <iframe seamless style=\"width:800px;height:620px;border:0\" srcdoc=\"\n",
+ " <script>\n",
+ " function load() {\n",
+ " document.getElementById(&quot;graph0.8534775751&quot;).pbtxt = 'node {\\n name: &quot;input&quot;\\n op: &quot;Placeholder&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;shape&quot;\\n value {\\n shape {\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;conv2d0/w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 7\\n }\\n dim {\\n size: 7\\n }\\n dim {\\n size: 3\\n }\\n dim {\\n size: 64\\n }\\n }\\n tensor_content: &quot;<stripped 37632 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;conv2d0/b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 64\\n }\\n }\\n tensor_content: &quot;<stripped 256 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;conv2d1/w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n dim {\\n size: 1\\n }\\n dim {\\n size: 64\\n }\\n dim {\\n size: 64\\n }\\n }\\n tensor_content: &quot;<stripped 16384 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;conv2d1/b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 64\\n }\\n }\\n tensor_content: &quot;<stripped 256 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;conv2d2/w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 3\\n }\\n dim {\\n size: 3\\n }\\n dim {\\n size: 64\\n }\\n dim {\\n size: 192\\n }\\n }\\n tensor_content: &quot;<stripped 442368 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;conv2d2/b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 192\\n }\\n }\\n tensor_content: &quot;<stripped 768 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3a/1x1_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n dim {\\n size: 1\\n }\\n dim {\\n size: 192\\n }\\n dim {\\n size: 64\\n }\\n }\\n tensor_content: &quot;<stripped 49152 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3a/1x1_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 64\\n }\\n }\\n tensor_content: &quot;<stripped 256 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3a/3x3_bottleneck_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n dim {\\n size: 1\\n }\\n dim {\\n size: 192\\n }\\n dim {\\n size: 96\\n }\\n }\\n tensor_content: &quot;<stripped 73728 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3a/3x3_bottleneck_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 96\\n }\\n }\\n tensor_content: &quot;<stripped 384 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3a/3x3_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 3\\n }\\n dim {\\n size: 3\\n }\\n dim {\\n size: 96\\n }\\n dim {\\n size: 128\\n }\\n }\\n tensor_content: &quot;<stripped 442368 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3a/3x3_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 128\\n }\\n }\\n tensor_content: &quot;<stripped 512 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3a/5x5_bottleneck_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n dim {\\n size: 1\\n }\\n dim {\\n size: 192\\n }\\n dim {\\n size: 16\\n }\\n }\\n tensor_content: &quot;<stripped 12288 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3a/5x5_bottleneck_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 16\\n }\\n }\\n tensor_content: &quot;<stripped 64 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3a/5x5_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 5\\n }\\n dim {\\n size: 5\\n }\\n dim {\\n size: 16\\n }\\n dim {\\n size: 32\\n }\\n }\\n tensor_content: &quot;<stripped 51200 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3a/5x5_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 32\\n }\\n }\\n tensor_content: &quot;<stripped 128 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3a/pool_reduce_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n dim {\\n size: 1\\n }\\n dim {\\n size: 192\\n }\\n dim {\\n size: 32\\n }\\n }\\n tensor_content: &quot;<stripped 24576 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3a/pool_reduce_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 32\\n }\\n }\\n tensor_content: &quot;<stripped 128 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3b/1x1_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n dim {\\n size: 1\\n }\\n dim {\\n size: 256\\n }\\n dim {\\n size: 128\\n }\\n }\\n tensor_content: &quot;<stripped 131072 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3b/1x1_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 128\\n }\\n }\\n tensor_content: &quot;<stripped 512 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3b/3x3_bottleneck_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n dim {\\n size: 1\\n }\\n dim {\\n size: 256\\n }\\n dim {\\n size: 128\\n }\\n }\\n tensor_content: &quot;<stripped 131072 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3b/3x3_bottleneck_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 128\\n }\\n }\\n tensor_content: &quot;<stripped 512 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3b/3x3_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 3\\n }\\n dim {\\n size: 3\\n }\\n dim {\\n size: 128\\n }\\n dim {\\n size: 192\\n }\\n }\\n tensor_content: &quot;<stripped 884736 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3b/3x3_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 192\\n }\\n }\\n tensor_content: &quot;<stripped 768 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3b/5x5_bottleneck_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n dim {\\n size: 1\\n }\\n dim {\\n size: 256\\n }\\n dim {\\n size: 32\\n }\\n }\\n tensor_content: &quot;<stripped 32768 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3b/5x5_bottleneck_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 32\\n }\\n }\\n tensor_content: &quot;<stripped 128 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3b/5x5_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 5\\n }\\n dim {\\n size: 5\\n }\\n dim {\\n size: 32\\n }\\n dim {\\n size: 96\\n }\\n }\\n tensor_content: &quot;<stripped 307200 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3b/5x5_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 96\\n }\\n }\\n tensor_content: &quot;<stripped 384 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3b/pool_reduce_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n dim {\\n size: 1\\n }\\n dim {\\n size: 256\\n }\\n dim {\\n size: 64\\n }\\n }\\n tensor_content: &quot;<stripped 65536 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3b/pool_reduce_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 64\\n }\\n }\\n tensor_content: &quot;<stripped 256 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4a/1x1_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n dim {\\n size: 1\\n }\\n dim {\\n size: 480\\n }\\n dim {\\n size: 192\\n }\\n }\\n tensor_content: &quot;<stripped 368640 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4a/1x1_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 192\\n }\\n }\\n tensor_content: &quot;<stripped 768 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4a/3x3_bottleneck_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n dim {\\n size: 1\\n }\\n dim {\\n size: 480\\n }\\n dim {\\n size: 96\\n }\\n }\\n tensor_content: &quot;<stripped 184320 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4a/3x3_bottleneck_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 96\\n }\\n }\\n tensor_content: &quot;<stripped 384 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4a/3x3_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 3\\n }\\n dim {\\n size: 3\\n }\\n dim {\\n size: 96\\n }\\n dim {\\n size: 204\\n }\\n }\\n tensor_content: &quot;<stripped 705024 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4a/3x3_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 204\\n }\\n }\\n tensor_content: &quot;<stripped 816 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4a/5x5_bottleneck_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n dim {\\n size: 1\\n }\\n dim {\\n size: 480\\n }\\n dim {\\n size: 16\\n }\\n }\\n tensor_content: &quot;<stripped 30720 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4a/5x5_bottleneck_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 16\\n }\\n }\\n tensor_content: &quot;<stripped 64 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4a/5x5_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 5\\n }\\n dim {\\n size: 5\\n }\\n dim {\\n size: 16\\n }\\n dim {\\n size: 48\\n }\\n }\\n tensor_content: &quot;<stripped 76800 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4a/5x5_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 48\\n }\\n }\\n tensor_content: &quot;<stripped 192 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4a/pool_reduce_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n dim {\\n size: 1\\n }\\n dim {\\n size: 480\\n }\\n dim {\\n size: 64\\n }\\n }\\n tensor_content: &quot;<stripped 122880 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4a/pool_reduce_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 64\\n }\\n }\\n tensor_content: &quot;<stripped 256 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4b/1x1_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n dim {\\n size: 1\\n }\\n dim {\\n size: 508\\n }\\n dim {\\n size: 160\\n }\\n }\\n tensor_content: &quot;<stripped 325120 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4b/1x1_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 160\\n }\\n }\\n tensor_content: &quot;<stripped 640 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4b/3x3_bottleneck_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n dim {\\n size: 1\\n }\\n dim {\\n size: 508\\n }\\n dim {\\n size: 112\\n }\\n }\\n tensor_content: &quot;<stripped 227584 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4b/3x3_bottleneck_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 112\\n }\\n }\\n tensor_content: &quot;<stripped 448 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4b/3x3_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 3\\n }\\n dim {\\n size: 3\\n }\\n dim {\\n size: 112\\n }\\n dim {\\n size: 224\\n }\\n }\\n tensor_content: &quot;<stripped 903168 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4b/3x3_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 224\\n }\\n }\\n tensor_content: &quot;<stripped 896 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4b/5x5_bottleneck_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n dim {\\n size: 1\\n }\\n dim {\\n size: 508\\n }\\n dim {\\n size: 24\\n }\\n }\\n tensor_content: &quot;<stripped 48768 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4b/5x5_bottleneck_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 24\\n }\\n }\\n tensor_content: &quot;<stripped 96 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4b/5x5_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 5\\n }\\n dim {\\n size: 5\\n }\\n dim {\\n size: 24\\n }\\n dim {\\n size: 64\\n }\\n }\\n tensor_content: &quot;<stripped 153600 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4b/5x5_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 64\\n }\\n }\\n tensor_content: &quot;<stripped 256 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4b/pool_reduce_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n dim {\\n size: 1\\n }\\n dim {\\n size: 508\\n }\\n dim {\\n size: 64\\n }\\n }\\n tensor_content: &quot;<stripped 130048 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4b/pool_reduce_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 64\\n }\\n }\\n tensor_content: &quot;<stripped 256 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4c/1x1_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n dim {\\n size: 1\\n }\\n dim {\\n size: 512\\n }\\n dim {\\n size: 128\\n }\\n }\\n tensor_content: &quot;<stripped 262144 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4c/1x1_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 128\\n }\\n }\\n tensor_content: &quot;<stripped 512 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4c/3x3_bottleneck_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n dim {\\n size: 1\\n }\\n dim {\\n size: 512\\n }\\n dim {\\n size: 128\\n }\\n }\\n tensor_content: &quot;<stripped 262144 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4c/3x3_bottleneck_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 128\\n }\\n }\\n tensor_content: &quot;<stripped 512 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4c/3x3_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 3\\n }\\n dim {\\n size: 3\\n }\\n dim {\\n size: 128\\n }\\n dim {\\n size: 256\\n }\\n }\\n tensor_content: &quot;<stripped 1179648 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4c/3x3_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 256\\n }\\n }\\n tensor_content: &quot;<stripped 1024 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4c/5x5_bottleneck_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n dim {\\n size: 1\\n }\\n dim {\\n size: 512\\n }\\n dim {\\n size: 24\\n }\\n }\\n tensor_content: &quot;<stripped 49152 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4c/5x5_bottleneck_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 24\\n }\\n }\\n tensor_content: &quot;<stripped 96 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4c/5x5_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 5\\n }\\n dim {\\n size: 5\\n }\\n dim {\\n size: 24\\n }\\n dim {\\n size: 64\\n }\\n }\\n tensor_content: &quot;<stripped 153600 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4c/5x5_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 64\\n }\\n }\\n tensor_content: &quot;<stripped 256 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4c/pool_reduce_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n dim {\\n size: 1\\n }\\n dim {\\n size: 512\\n }\\n dim {\\n size: 64\\n }\\n }\\n tensor_content: &quot;<stripped 131072 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4c/pool_reduce_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 64\\n }\\n }\\n tensor_content: &quot;<stripped 256 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4d/1x1_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n dim {\\n size: 1\\n }\\n dim {\\n size: 512\\n }\\n dim {\\n size: 112\\n }\\n }\\n tensor_content: &quot;<stripped 229376 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4d/1x1_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 112\\n }\\n }\\n tensor_content: &quot;<stripped 448 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4d/3x3_bottleneck_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n dim {\\n size: 1\\n }\\n dim {\\n size: 512\\n }\\n dim {\\n size: 144\\n }\\n }\\n tensor_content: &quot;<stripped 294912 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4d/3x3_bottleneck_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 144\\n }\\n }\\n tensor_content: &quot;<stripped 576 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4d/3x3_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 3\\n }\\n dim {\\n size: 3\\n }\\n dim {\\n size: 144\\n }\\n dim {\\n size: 288\\n }\\n }\\n tensor_content: &quot;<stripped 1492992 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4d/3x3_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 288\\n }\\n }\\n tensor_content: &quot;<stripped 1152 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4d/5x5_bottleneck_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n dim {\\n size: 1\\n }\\n dim {\\n size: 512\\n }\\n dim {\\n size: 32\\n }\\n }\\n tensor_content: &quot;<stripped 65536 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4d/5x5_bottleneck_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 32\\n }\\n }\\n tensor_content: &quot;<stripped 128 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4d/5x5_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 5\\n }\\n dim {\\n size: 5\\n }\\n dim {\\n size: 32\\n }\\n dim {\\n size: 64\\n }\\n }\\n tensor_content: &quot;<stripped 204800 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4d/5x5_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 64\\n }\\n }\\n tensor_content: &quot;<stripped 256 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4d/pool_reduce_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n dim {\\n size: 1\\n }\\n dim {\\n size: 512\\n }\\n dim {\\n size: 64\\n }\\n }\\n tensor_content: &quot;<stripped 131072 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4d/pool_reduce_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 64\\n }\\n }\\n tensor_content: &quot;<stripped 256 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4e/1x1_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n dim {\\n size: 1\\n }\\n dim {\\n size: 528\\n }\\n dim {\\n size: 256\\n }\\n }\\n tensor_content: &quot;<stripped 540672 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4e/1x1_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 256\\n }\\n }\\n tensor_content: &quot;<stripped 1024 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4e/3x3_bottleneck_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n dim {\\n size: 1\\n }\\n dim {\\n size: 528\\n }\\n dim {\\n size: 160\\n }\\n }\\n tensor_content: &quot;<stripped 337920 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4e/3x3_bottleneck_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 160\\n }\\n }\\n tensor_content: &quot;<stripped 640 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4e/3x3_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 3\\n }\\n dim {\\n size: 3\\n }\\n dim {\\n size: 160\\n }\\n dim {\\n size: 320\\n }\\n }\\n tensor_content: &quot;<stripped 1843200 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4e/3x3_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 320\\n }\\n }\\n tensor_content: &quot;<stripped 1280 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4e/5x5_bottleneck_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n dim {\\n size: 1\\n }\\n dim {\\n size: 528\\n }\\n dim {\\n size: 32\\n }\\n }\\n tensor_content: &quot;<stripped 67584 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4e/5x5_bottleneck_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 32\\n }\\n }\\n tensor_content: &quot;<stripped 128 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4e/5x5_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 5\\n }\\n dim {\\n size: 5\\n }\\n dim {\\n size: 32\\n }\\n dim {\\n size: 128\\n }\\n }\\n tensor_content: &quot;<stripped 409600 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4e/5x5_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 128\\n }\\n }\\n tensor_content: &quot;<stripped 512 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4e/pool_reduce_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n dim {\\n size: 1\\n }\\n dim {\\n size: 528\\n }\\n dim {\\n size: 128\\n }\\n }\\n tensor_content: &quot;<stripped 270336 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4e/pool_reduce_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 128\\n }\\n }\\n tensor_content: &quot;<stripped 512 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5a/1x1_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n dim {\\n size: 1\\n }\\n dim {\\n size: 832\\n }\\n dim {\\n size: 256\\n }\\n }\\n tensor_content: &quot;<stripped 851968 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5a/1x1_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 256\\n }\\n }\\n tensor_content: &quot;<stripped 1024 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5a/3x3_bottleneck_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n dim {\\n size: 1\\n }\\n dim {\\n size: 832\\n }\\n dim {\\n size: 160\\n }\\n }\\n tensor_content: &quot;<stripped 532480 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5a/3x3_bottleneck_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 160\\n }\\n }\\n tensor_content: &quot;<stripped 640 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5a/3x3_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 3\\n }\\n dim {\\n size: 3\\n }\\n dim {\\n size: 160\\n }\\n dim {\\n size: 320\\n }\\n }\\n tensor_content: &quot;<stripped 1843200 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5a/3x3_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 320\\n }\\n }\\n tensor_content: &quot;<stripped 1280 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5a/5x5_bottleneck_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n dim {\\n size: 1\\n }\\n dim {\\n size: 832\\n }\\n dim {\\n size: 48\\n }\\n }\\n tensor_content: &quot;<stripped 159744 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5a/5x5_bottleneck_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 48\\n }\\n }\\n tensor_content: &quot;<stripped 192 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5a/5x5_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 5\\n }\\n dim {\\n size: 5\\n }\\n dim {\\n size: 48\\n }\\n dim {\\n size: 128\\n }\\n }\\n tensor_content: &quot;<stripped 614400 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5a/5x5_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 128\\n }\\n }\\n tensor_content: &quot;<stripped 512 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5a/pool_reduce_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n dim {\\n size: 1\\n }\\n dim {\\n size: 832\\n }\\n dim {\\n size: 128\\n }\\n }\\n tensor_content: &quot;<stripped 425984 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5a/pool_reduce_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 128\\n }\\n }\\n tensor_content: &quot;<stripped 512 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5b/1x1_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n dim {\\n size: 1\\n }\\n dim {\\n size: 832\\n }\\n dim {\\n size: 384\\n }\\n }\\n tensor_content: &quot;<stripped 1277952 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5b/1x1_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 384\\n }\\n }\\n tensor_content: &quot;<stripped 1536 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5b/3x3_bottleneck_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n dim {\\n size: 1\\n }\\n dim {\\n size: 832\\n }\\n dim {\\n size: 192\\n }\\n }\\n tensor_content: &quot;<stripped 638976 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5b/3x3_bottleneck_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 192\\n }\\n }\\n tensor_content: &quot;<stripped 768 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5b/3x3_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 3\\n }\\n dim {\\n size: 3\\n }\\n dim {\\n size: 192\\n }\\n dim {\\n size: 384\\n }\\n }\\n tensor_content: &quot;<stripped 2654208 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5b/3x3_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 384\\n }\\n }\\n tensor_content: &quot;<stripped 1536 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5b/5x5_bottleneck_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n dim {\\n size: 1\\n }\\n dim {\\n size: 832\\n }\\n dim {\\n size: 48\\n }\\n }\\n tensor_content: &quot;<stripped 159744 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5b/5x5_bottleneck_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 48\\n }\\n }\\n tensor_content: &quot;<stripped 192 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5b/5x5_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 5\\n }\\n dim {\\n size: 5\\n }\\n dim {\\n size: 48\\n }\\n dim {\\n size: 128\\n }\\n }\\n tensor_content: &quot;<stripped 614400 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5b/5x5_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 128\\n }\\n }\\n tensor_content: &quot;<stripped 512 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5b/pool_reduce_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n dim {\\n size: 1\\n }\\n dim {\\n size: 832\\n }\\n dim {\\n size: 128\\n }\\n }\\n tensor_content: &quot;<stripped 425984 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5b/pool_reduce_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 128\\n }\\n }\\n tensor_content: &quot;<stripped 512 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;head0/bottleneck_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n dim {\\n size: 1\\n }\\n dim {\\n size: 508\\n }\\n dim {\\n size: 128\\n }\\n }\\n tensor_content: &quot;<stripped 260096 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;head0/bottleneck_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 128\\n }\\n }\\n tensor_content: &quot;<stripped 512 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;nn0/w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 2048\\n }\\n dim {\\n size: 1024\\n }\\n }\\n tensor_content: &quot;<stripped 8388608 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;nn0/b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1024\\n }\\n }\\n tensor_content: &quot;<stripped 4096 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;softmax0/w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1024\\n }\\n dim {\\n size: 1008\\n }\\n }\\n tensor_content: &quot;<stripped 4128768 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;softmax0/b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1008\\n }\\n }\\n tensor_content: &quot;<stripped 4032 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;head1/bottleneck_w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n dim {\\n size: 1\\n }\\n dim {\\n size: 528\\n }\\n dim {\\n size: 128\\n }\\n }\\n tensor_content: &quot;<stripped 270336 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;head1/bottleneck_b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 128\\n }\\n }\\n tensor_content: &quot;<stripped 512 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;nn1/w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 2048\\n }\\n dim {\\n size: 1024\\n }\\n }\\n tensor_content: &quot;<stripped 8388608 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;nn1/b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1024\\n }\\n }\\n tensor_content: &quot;<stripped 4096 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;softmax1/w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1024\\n }\\n dim {\\n size: 1008\\n }\\n }\\n tensor_content: &quot;<stripped 4128768 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;softmax1/b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1008\\n }\\n }\\n tensor_content: &quot;<stripped 4032 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;softmax2/w&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1024\\n }\\n dim {\\n size: 1008\\n }\\n }\\n tensor_content: &quot;<stripped 4128768 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;softmax2/b&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 1008\\n }\\n }\\n tensor_content: &quot;<stripped 4032 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;conv2d0/pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;input&quot;\\n input: &quot;conv2d0/w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 2\\n i: 2\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;conv2d0/pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;conv2d0/pre_relu/conv&quot;\\n input: &quot;conv2d0/b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;conv2d0&quot;\\n op: &quot;Relu&quot;\\n input: &quot;conv2d0/pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;maxpool0&quot;\\n op: &quot;MaxPool&quot;\\n input: &quot;conv2d0&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;ksize&quot;\\n value {\\n list {\\n i: 1\\n i: 3\\n i: 3\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 2\\n i: 2\\n i: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;localresponsenorm0&quot;\\n op: &quot;LRN&quot;\\n input: &quot;maxpool0&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;alpha&quot;\\n value {\\n f: 9.99999974738e-05\\n }\\n }\\n attr {\\n key: &quot;beta&quot;\\n value {\\n f: 0.5\\n }\\n }\\n attr {\\n key: &quot;bias&quot;\\n value {\\n f: 2.0\\n }\\n }\\n attr {\\n key: &quot;depth_radius&quot;\\n value {\\n i: 5\\n }\\n }\\n}\\nnode {\\n name: &quot;conv2d1/pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;localresponsenorm0&quot;\\n input: &quot;conv2d1/w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;VALID&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;conv2d1/pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;conv2d1/pre_relu/conv&quot;\\n input: &quot;conv2d1/b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;conv2d1&quot;\\n op: &quot;Relu&quot;\\n input: &quot;conv2d1/pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;conv2d2/pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;conv2d1&quot;\\n input: &quot;conv2d2/w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;conv2d2/pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;conv2d2/pre_relu/conv&quot;\\n input: &quot;conv2d2/b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;conv2d2&quot;\\n op: &quot;Relu&quot;\\n input: &quot;conv2d2/pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;localresponsenorm1&quot;\\n op: &quot;LRN&quot;\\n input: &quot;conv2d2&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;alpha&quot;\\n value {\\n f: 9.99999974738e-05\\n }\\n }\\n attr {\\n key: &quot;beta&quot;\\n value {\\n f: 0.5\\n }\\n }\\n attr {\\n key: &quot;bias&quot;\\n value {\\n f: 2.0\\n }\\n }\\n attr {\\n key: &quot;depth_radius&quot;\\n value {\\n i: 5\\n }\\n }\\n}\\nnode {\\n name: &quot;maxpool1&quot;\\n op: &quot;MaxPool&quot;\\n input: &quot;localresponsenorm1&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;ksize&quot;\\n value {\\n list {\\n i: 1\\n i: 3\\n i: 3\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 2\\n i: 2\\n i: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3a/1x1_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;maxpool1&quot;\\n input: &quot;mixed3a/1x1_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3a/1x1_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed3a/1x1_pre_relu/conv&quot;\\n input: &quot;mixed3a/1x1_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3a/1x1&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed3a/1x1_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3a/3x3_bottleneck_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;maxpool1&quot;\\n input: &quot;mixed3a/3x3_bottleneck_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3a/3x3_bottleneck_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed3a/3x3_bottleneck_pre_relu/conv&quot;\\n input: &quot;mixed3a/3x3_bottleneck_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3a/3x3_bottleneck&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed3a/3x3_bottleneck_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3a/3x3_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed3a/3x3_bottleneck&quot;\\n input: &quot;mixed3a/3x3_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3a/3x3_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed3a/3x3_pre_relu/conv&quot;\\n input: &quot;mixed3a/3x3_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3a/3x3&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed3a/3x3_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3a/5x5_bottleneck_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;maxpool1&quot;\\n input: &quot;mixed3a/5x5_bottleneck_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3a/5x5_bottleneck_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed3a/5x5_bottleneck_pre_relu/conv&quot;\\n input: &quot;mixed3a/5x5_bottleneck_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3a/5x5_bottleneck&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed3a/5x5_bottleneck_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3a/5x5_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed3a/5x5_bottleneck&quot;\\n input: &quot;mixed3a/5x5_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3a/5x5_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed3a/5x5_pre_relu/conv&quot;\\n input: &quot;mixed3a/5x5_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3a/5x5&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed3a/5x5_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3a/pool&quot;\\n op: &quot;MaxPool&quot;\\n input: &quot;maxpool1&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;ksize&quot;\\n value {\\n list {\\n i: 1\\n i: 3\\n i: 3\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3a/pool_reduce_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed3a/pool&quot;\\n input: &quot;mixed3a/pool_reduce_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3a/pool_reduce_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed3a/pool_reduce_pre_relu/conv&quot;\\n input: &quot;mixed3a/pool_reduce_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3a/pool_reduce&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed3a/pool_reduce_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3a/concat/dim&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 3\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3a&quot;\\n op: &quot;Concat&quot;\\n input: &quot;mixed3a/concat/dim&quot;\\n input: &quot;mixed3a/1x1&quot;\\n input: &quot;mixed3a/3x3&quot;\\n input: &quot;mixed3a/5x5&quot;\\n input: &quot;mixed3a/pool_reduce&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;N&quot;\\n value {\\n i: 4\\n }\\n }\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3b/1x1_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed3a&quot;\\n input: &quot;mixed3b/1x1_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3b/1x1_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed3b/1x1_pre_relu/conv&quot;\\n input: &quot;mixed3b/1x1_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3b/1x1&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed3b/1x1_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3b/3x3_bottleneck_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed3a&quot;\\n input: &quot;mixed3b/3x3_bottleneck_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3b/3x3_bottleneck_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed3b/3x3_bottleneck_pre_relu/conv&quot;\\n input: &quot;mixed3b/3x3_bottleneck_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3b/3x3_bottleneck&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed3b/3x3_bottleneck_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3b/3x3_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed3b/3x3_bottleneck&quot;\\n input: &quot;mixed3b/3x3_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3b/3x3_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed3b/3x3_pre_relu/conv&quot;\\n input: &quot;mixed3b/3x3_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3b/3x3&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed3b/3x3_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3b/5x5_bottleneck_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed3a&quot;\\n input: &quot;mixed3b/5x5_bottleneck_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3b/5x5_bottleneck_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed3b/5x5_bottleneck_pre_relu/conv&quot;\\n input: &quot;mixed3b/5x5_bottleneck_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3b/5x5_bottleneck&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed3b/5x5_bottleneck_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3b/5x5_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed3b/5x5_bottleneck&quot;\\n input: &quot;mixed3b/5x5_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3b/5x5_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed3b/5x5_pre_relu/conv&quot;\\n input: &quot;mixed3b/5x5_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3b/5x5&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed3b/5x5_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3b/pool&quot;\\n op: &quot;MaxPool&quot;\\n input: &quot;mixed3a&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;ksize&quot;\\n value {\\n list {\\n i: 1\\n i: 3\\n i: 3\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3b/pool_reduce_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed3b/pool&quot;\\n input: &quot;mixed3b/pool_reduce_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3b/pool_reduce_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed3b/pool_reduce_pre_relu/conv&quot;\\n input: &quot;mixed3b/pool_reduce_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3b/pool_reduce&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed3b/pool_reduce_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3b/concat/dim&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 3\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed3b&quot;\\n op: &quot;Concat&quot;\\n input: &quot;mixed3b/concat/dim&quot;\\n input: &quot;mixed3b/1x1&quot;\\n input: &quot;mixed3b/3x3&quot;\\n input: &quot;mixed3b/5x5&quot;\\n input: &quot;mixed3b/pool_reduce&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;N&quot;\\n value {\\n i: 4\\n }\\n }\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;maxpool4&quot;\\n op: &quot;MaxPool&quot;\\n input: &quot;mixed3b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;ksize&quot;\\n value {\\n list {\\n i: 1\\n i: 3\\n i: 3\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 2\\n i: 2\\n i: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4a/1x1_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;maxpool4&quot;\\n input: &quot;mixed4a/1x1_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4a/1x1_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed4a/1x1_pre_relu/conv&quot;\\n input: &quot;mixed4a/1x1_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4a/1x1&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed4a/1x1_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4a/3x3_bottleneck_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;maxpool4&quot;\\n input: &quot;mixed4a/3x3_bottleneck_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4a/3x3_bottleneck_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed4a/3x3_bottleneck_pre_relu/conv&quot;\\n input: &quot;mixed4a/3x3_bottleneck_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4a/3x3_bottleneck&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed4a/3x3_bottleneck_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4a/3x3_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed4a/3x3_bottleneck&quot;\\n input: &quot;mixed4a/3x3_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4a/3x3_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed4a/3x3_pre_relu/conv&quot;\\n input: &quot;mixed4a/3x3_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4a/3x3&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed4a/3x3_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4a/5x5_bottleneck_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;maxpool4&quot;\\n input: &quot;mixed4a/5x5_bottleneck_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4a/5x5_bottleneck_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed4a/5x5_bottleneck_pre_relu/conv&quot;\\n input: &quot;mixed4a/5x5_bottleneck_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4a/5x5_bottleneck&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed4a/5x5_bottleneck_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4a/5x5_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed4a/5x5_bottleneck&quot;\\n input: &quot;mixed4a/5x5_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4a/5x5_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed4a/5x5_pre_relu/conv&quot;\\n input: &quot;mixed4a/5x5_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4a/5x5&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed4a/5x5_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4a/pool&quot;\\n op: &quot;MaxPool&quot;\\n input: &quot;maxpool4&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;ksize&quot;\\n value {\\n list {\\n i: 1\\n i: 3\\n i: 3\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4a/pool_reduce_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed4a/pool&quot;\\n input: &quot;mixed4a/pool_reduce_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4a/pool_reduce_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed4a/pool_reduce_pre_relu/conv&quot;\\n input: &quot;mixed4a/pool_reduce_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4a/pool_reduce&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed4a/pool_reduce_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4a/concat/dim&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 3\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4a&quot;\\n op: &quot;Concat&quot;\\n input: &quot;mixed4a/concat/dim&quot;\\n input: &quot;mixed4a/1x1&quot;\\n input: &quot;mixed4a/3x3&quot;\\n input: &quot;mixed4a/5x5&quot;\\n input: &quot;mixed4a/pool_reduce&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;N&quot;\\n value {\\n i: 4\\n }\\n }\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4b/1x1_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed4a&quot;\\n input: &quot;mixed4b/1x1_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4b/1x1_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed4b/1x1_pre_relu/conv&quot;\\n input: &quot;mixed4b/1x1_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4b/1x1&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed4b/1x1_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4b/3x3_bottleneck_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed4a&quot;\\n input: &quot;mixed4b/3x3_bottleneck_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4b/3x3_bottleneck_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed4b/3x3_bottleneck_pre_relu/conv&quot;\\n input: &quot;mixed4b/3x3_bottleneck_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4b/3x3_bottleneck&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed4b/3x3_bottleneck_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4b/3x3_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed4b/3x3_bottleneck&quot;\\n input: &quot;mixed4b/3x3_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4b/3x3_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed4b/3x3_pre_relu/conv&quot;\\n input: &quot;mixed4b/3x3_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4b/3x3&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed4b/3x3_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4b/5x5_bottleneck_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed4a&quot;\\n input: &quot;mixed4b/5x5_bottleneck_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4b/5x5_bottleneck_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed4b/5x5_bottleneck_pre_relu/conv&quot;\\n input: &quot;mixed4b/5x5_bottleneck_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4b/5x5_bottleneck&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed4b/5x5_bottleneck_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4b/5x5_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed4b/5x5_bottleneck&quot;\\n input: &quot;mixed4b/5x5_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4b/5x5_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed4b/5x5_pre_relu/conv&quot;\\n input: &quot;mixed4b/5x5_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4b/5x5&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed4b/5x5_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4b/pool&quot;\\n op: &quot;MaxPool&quot;\\n input: &quot;mixed4a&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;ksize&quot;\\n value {\\n list {\\n i: 1\\n i: 3\\n i: 3\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4b/pool_reduce_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed4b/pool&quot;\\n input: &quot;mixed4b/pool_reduce_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4b/pool_reduce_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed4b/pool_reduce_pre_relu/conv&quot;\\n input: &quot;mixed4b/pool_reduce_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4b/pool_reduce&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed4b/pool_reduce_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4b/concat/dim&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 3\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4b&quot;\\n op: &quot;Concat&quot;\\n input: &quot;mixed4b/concat/dim&quot;\\n input: &quot;mixed4b/1x1&quot;\\n input: &quot;mixed4b/3x3&quot;\\n input: &quot;mixed4b/5x5&quot;\\n input: &quot;mixed4b/pool_reduce&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;N&quot;\\n value {\\n i: 4\\n }\\n }\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4c/1x1_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed4b&quot;\\n input: &quot;mixed4c/1x1_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4c/1x1_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed4c/1x1_pre_relu/conv&quot;\\n input: &quot;mixed4c/1x1_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4c/1x1&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed4c/1x1_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4c/3x3_bottleneck_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed4b&quot;\\n input: &quot;mixed4c/3x3_bottleneck_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4c/3x3_bottleneck_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed4c/3x3_bottleneck_pre_relu/conv&quot;\\n input: &quot;mixed4c/3x3_bottleneck_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4c/3x3_bottleneck&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed4c/3x3_bottleneck_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4c/3x3_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed4c/3x3_bottleneck&quot;\\n input: &quot;mixed4c/3x3_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4c/3x3_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed4c/3x3_pre_relu/conv&quot;\\n input: &quot;mixed4c/3x3_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4c/3x3&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed4c/3x3_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4c/5x5_bottleneck_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed4b&quot;\\n input: &quot;mixed4c/5x5_bottleneck_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4c/5x5_bottleneck_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed4c/5x5_bottleneck_pre_relu/conv&quot;\\n input: &quot;mixed4c/5x5_bottleneck_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4c/5x5_bottleneck&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed4c/5x5_bottleneck_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4c/5x5_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed4c/5x5_bottleneck&quot;\\n input: &quot;mixed4c/5x5_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4c/5x5_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed4c/5x5_pre_relu/conv&quot;\\n input: &quot;mixed4c/5x5_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4c/5x5&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed4c/5x5_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4c/pool&quot;\\n op: &quot;MaxPool&quot;\\n input: &quot;mixed4b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;ksize&quot;\\n value {\\n list {\\n i: 1\\n i: 3\\n i: 3\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4c/pool_reduce_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed4c/pool&quot;\\n input: &quot;mixed4c/pool_reduce_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4c/pool_reduce_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed4c/pool_reduce_pre_relu/conv&quot;\\n input: &quot;mixed4c/pool_reduce_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4c/pool_reduce&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed4c/pool_reduce_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4c/concat/dim&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 3\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4c&quot;\\n op: &quot;Concat&quot;\\n input: &quot;mixed4c/concat/dim&quot;\\n input: &quot;mixed4c/1x1&quot;\\n input: &quot;mixed4c/3x3&quot;\\n input: &quot;mixed4c/5x5&quot;\\n input: &quot;mixed4c/pool_reduce&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;N&quot;\\n value {\\n i: 4\\n }\\n }\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4d/1x1_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed4c&quot;\\n input: &quot;mixed4d/1x1_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4d/1x1_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed4d/1x1_pre_relu/conv&quot;\\n input: &quot;mixed4d/1x1_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4d/1x1&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed4d/1x1_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4d/3x3_bottleneck_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed4c&quot;\\n input: &quot;mixed4d/3x3_bottleneck_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4d/3x3_bottleneck_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed4d/3x3_bottleneck_pre_relu/conv&quot;\\n input: &quot;mixed4d/3x3_bottleneck_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4d/3x3_bottleneck&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed4d/3x3_bottleneck_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4d/3x3_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed4d/3x3_bottleneck&quot;\\n input: &quot;mixed4d/3x3_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4d/3x3_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed4d/3x3_pre_relu/conv&quot;\\n input: &quot;mixed4d/3x3_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4d/3x3&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed4d/3x3_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4d/5x5_bottleneck_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed4c&quot;\\n input: &quot;mixed4d/5x5_bottleneck_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4d/5x5_bottleneck_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed4d/5x5_bottleneck_pre_relu/conv&quot;\\n input: &quot;mixed4d/5x5_bottleneck_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4d/5x5_bottleneck&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed4d/5x5_bottleneck_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4d/5x5_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed4d/5x5_bottleneck&quot;\\n input: &quot;mixed4d/5x5_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4d/5x5_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed4d/5x5_pre_relu/conv&quot;\\n input: &quot;mixed4d/5x5_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4d/5x5&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed4d/5x5_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4d/pool&quot;\\n op: &quot;MaxPool&quot;\\n input: &quot;mixed4c&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;ksize&quot;\\n value {\\n list {\\n i: 1\\n i: 3\\n i: 3\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4d/pool_reduce_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed4d/pool&quot;\\n input: &quot;mixed4d/pool_reduce_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4d/pool_reduce_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed4d/pool_reduce_pre_relu/conv&quot;\\n input: &quot;mixed4d/pool_reduce_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4d/pool_reduce&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed4d/pool_reduce_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4d/concat/dim&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 3\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4d&quot;\\n op: &quot;Concat&quot;\\n input: &quot;mixed4d/concat/dim&quot;\\n input: &quot;mixed4d/1x1&quot;\\n input: &quot;mixed4d/3x3&quot;\\n input: &quot;mixed4d/5x5&quot;\\n input: &quot;mixed4d/pool_reduce&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;N&quot;\\n value {\\n i: 4\\n }\\n }\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4e/1x1_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed4d&quot;\\n input: &quot;mixed4e/1x1_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4e/1x1_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed4e/1x1_pre_relu/conv&quot;\\n input: &quot;mixed4e/1x1_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4e/1x1&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed4e/1x1_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4e/3x3_bottleneck_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed4d&quot;\\n input: &quot;mixed4e/3x3_bottleneck_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4e/3x3_bottleneck_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed4e/3x3_bottleneck_pre_relu/conv&quot;\\n input: &quot;mixed4e/3x3_bottleneck_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4e/3x3_bottleneck&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed4e/3x3_bottleneck_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4e/3x3_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed4e/3x3_bottleneck&quot;\\n input: &quot;mixed4e/3x3_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4e/3x3_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed4e/3x3_pre_relu/conv&quot;\\n input: &quot;mixed4e/3x3_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4e/3x3&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed4e/3x3_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4e/5x5_bottleneck_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed4d&quot;\\n input: &quot;mixed4e/5x5_bottleneck_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4e/5x5_bottleneck_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed4e/5x5_bottleneck_pre_relu/conv&quot;\\n input: &quot;mixed4e/5x5_bottleneck_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4e/5x5_bottleneck&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed4e/5x5_bottleneck_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4e/5x5_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed4e/5x5_bottleneck&quot;\\n input: &quot;mixed4e/5x5_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4e/5x5_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed4e/5x5_pre_relu/conv&quot;\\n input: &quot;mixed4e/5x5_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4e/5x5&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed4e/5x5_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4e/pool&quot;\\n op: &quot;MaxPool&quot;\\n input: &quot;mixed4d&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;ksize&quot;\\n value {\\n list {\\n i: 1\\n i: 3\\n i: 3\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4e/pool_reduce_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed4e/pool&quot;\\n input: &quot;mixed4e/pool_reduce_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4e/pool_reduce_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed4e/pool_reduce_pre_relu/conv&quot;\\n input: &quot;mixed4e/pool_reduce_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4e/pool_reduce&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed4e/pool_reduce_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4e/concat/dim&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 3\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed4e&quot;\\n op: &quot;Concat&quot;\\n input: &quot;mixed4e/concat/dim&quot;\\n input: &quot;mixed4e/1x1&quot;\\n input: &quot;mixed4e/3x3&quot;\\n input: &quot;mixed4e/5x5&quot;\\n input: &quot;mixed4e/pool_reduce&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;N&quot;\\n value {\\n i: 4\\n }\\n }\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;maxpool10&quot;\\n op: &quot;MaxPool&quot;\\n input: &quot;mixed4e&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;ksize&quot;\\n value {\\n list {\\n i: 1\\n i: 3\\n i: 3\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 2\\n i: 2\\n i: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5a/1x1_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;maxpool10&quot;\\n input: &quot;mixed5a/1x1_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5a/1x1_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed5a/1x1_pre_relu/conv&quot;\\n input: &quot;mixed5a/1x1_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5a/1x1&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed5a/1x1_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5a/3x3_bottleneck_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;maxpool10&quot;\\n input: &quot;mixed5a/3x3_bottleneck_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5a/3x3_bottleneck_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed5a/3x3_bottleneck_pre_relu/conv&quot;\\n input: &quot;mixed5a/3x3_bottleneck_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5a/3x3_bottleneck&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed5a/3x3_bottleneck_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5a/3x3_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed5a/3x3_bottleneck&quot;\\n input: &quot;mixed5a/3x3_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5a/3x3_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed5a/3x3_pre_relu/conv&quot;\\n input: &quot;mixed5a/3x3_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5a/3x3&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed5a/3x3_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5a/5x5_bottleneck_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;maxpool10&quot;\\n input: &quot;mixed5a/5x5_bottleneck_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5a/5x5_bottleneck_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed5a/5x5_bottleneck_pre_relu/conv&quot;\\n input: &quot;mixed5a/5x5_bottleneck_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5a/5x5_bottleneck&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed5a/5x5_bottleneck_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5a/5x5_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed5a/5x5_bottleneck&quot;\\n input: &quot;mixed5a/5x5_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5a/5x5_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed5a/5x5_pre_relu/conv&quot;\\n input: &quot;mixed5a/5x5_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5a/5x5&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed5a/5x5_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5a/pool&quot;\\n op: &quot;MaxPool&quot;\\n input: &quot;maxpool10&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;ksize&quot;\\n value {\\n list {\\n i: 1\\n i: 3\\n i: 3\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5a/pool_reduce_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed5a/pool&quot;\\n input: &quot;mixed5a/pool_reduce_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5a/pool_reduce_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed5a/pool_reduce_pre_relu/conv&quot;\\n input: &quot;mixed5a/pool_reduce_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5a/pool_reduce&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed5a/pool_reduce_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5a/concat/dim&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 3\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5a&quot;\\n op: &quot;Concat&quot;\\n input: &quot;mixed5a/concat/dim&quot;\\n input: &quot;mixed5a/1x1&quot;\\n input: &quot;mixed5a/3x3&quot;\\n input: &quot;mixed5a/5x5&quot;\\n input: &quot;mixed5a/pool_reduce&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;N&quot;\\n value {\\n i: 4\\n }\\n }\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5b/1x1_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed5a&quot;\\n input: &quot;mixed5b/1x1_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5b/1x1_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed5b/1x1_pre_relu/conv&quot;\\n input: &quot;mixed5b/1x1_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5b/1x1&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed5b/1x1_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5b/3x3_bottleneck_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed5a&quot;\\n input: &quot;mixed5b/3x3_bottleneck_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5b/3x3_bottleneck_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed5b/3x3_bottleneck_pre_relu/conv&quot;\\n input: &quot;mixed5b/3x3_bottleneck_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5b/3x3_bottleneck&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed5b/3x3_bottleneck_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5b/3x3_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed5b/3x3_bottleneck&quot;\\n input: &quot;mixed5b/3x3_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5b/3x3_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed5b/3x3_pre_relu/conv&quot;\\n input: &quot;mixed5b/3x3_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5b/3x3&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed5b/3x3_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5b/5x5_bottleneck_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed5a&quot;\\n input: &quot;mixed5b/5x5_bottleneck_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5b/5x5_bottleneck_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed5b/5x5_bottleneck_pre_relu/conv&quot;\\n input: &quot;mixed5b/5x5_bottleneck_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5b/5x5_bottleneck&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed5b/5x5_bottleneck_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5b/5x5_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed5b/5x5_bottleneck&quot;\\n input: &quot;mixed5b/5x5_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5b/5x5_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed5b/5x5_pre_relu/conv&quot;\\n input: &quot;mixed5b/5x5_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5b/5x5&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed5b/5x5_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5b/pool&quot;\\n op: &quot;MaxPool&quot;\\n input: &quot;mixed5a&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;ksize&quot;\\n value {\\n list {\\n i: 1\\n i: 3\\n i: 3\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5b/pool_reduce_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;mixed5b/pool&quot;\\n input: &quot;mixed5b/pool_reduce_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5b/pool_reduce_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;mixed5b/pool_reduce_pre_relu/conv&quot;\\n input: &quot;mixed5b/pool_reduce_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5b/pool_reduce&quot;\\n op: &quot;Relu&quot;\\n input: &quot;mixed5b/pool_reduce_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5b/concat/dim&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 3\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;mixed5b&quot;\\n op: &quot;Concat&quot;\\n input: &quot;mixed5b/concat/dim&quot;\\n input: &quot;mixed5b/1x1&quot;\\n input: &quot;mixed5b/3x3&quot;\\n input: &quot;mixed5b/5x5&quot;\\n input: &quot;mixed5b/pool_reduce&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;N&quot;\\n value {\\n i: 4\\n }\\n }\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;avgpool0&quot;\\n op: &quot;AvgPool&quot;\\n input: &quot;mixed5b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;ksize&quot;\\n value {\\n list {\\n i: 1\\n i: 7\\n i: 7\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;VALID&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;head0/pool&quot;\\n op: &quot;AvgPool&quot;\\n input: &quot;mixed4a&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;ksize&quot;\\n value {\\n list {\\n i: 1\\n i: 5\\n i: 5\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;VALID&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 3\\n i: 3\\n i: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;head0/bottleneck_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;head0/pool&quot;\\n input: &quot;head0/bottleneck_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;head0/bottleneck_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;head0/bottleneck_pre_relu/conv&quot;\\n input: &quot;head0/bottleneck_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;head0/bottleneck&quot;\\n op: &quot;Relu&quot;\\n input: &quot;head0/bottleneck_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;head0/bottleneck/reshape/shape&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 2\\n }\\n }\\n tensor_content: &quot;\\\\377\\\\377\\\\377\\\\377\\\\000\\\\010\\\\000\\\\000&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;head0/bottleneck/reshape&quot;\\n op: &quot;Reshape&quot;\\n input: &quot;head0/bottleneck&quot;\\n input: &quot;head0/bottleneck/reshape/shape&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;nn0/pre_relu/matmul&quot;\\n op: &quot;MatMul&quot;\\n input: &quot;head0/bottleneck/reshape&quot;\\n input: &quot;nn0/w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;transpose_a&quot;\\n value {\\n b: false\\n }\\n }\\n attr {\\n key: &quot;transpose_b&quot;\\n value {\\n b: false\\n }\\n }\\n}\\nnode {\\n name: &quot;nn0/pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;nn0/pre_relu/matmul&quot;\\n input: &quot;nn0/b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;nn0&quot;\\n op: &quot;Relu&quot;\\n input: &quot;nn0/pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;nn0/reshape/shape&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 2\\n }\\n }\\n tensor_content: &quot;\\\\377\\\\377\\\\377\\\\377\\\\000\\\\004\\\\000\\\\000&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;nn0/reshape&quot;\\n op: &quot;Reshape&quot;\\n input: &quot;nn0&quot;\\n input: &quot;nn0/reshape/shape&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;softmax0/pre_activation/matmul&quot;\\n op: &quot;MatMul&quot;\\n input: &quot;nn0/reshape&quot;\\n input: &quot;softmax0/w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;transpose_a&quot;\\n value {\\n b: false\\n }\\n }\\n attr {\\n key: &quot;transpose_b&quot;\\n value {\\n b: false\\n }\\n }\\n}\\nnode {\\n name: &quot;softmax0/pre_activation&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;softmax0/pre_activation/matmul&quot;\\n input: &quot;softmax0/b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;softmax0&quot;\\n op: &quot;Softmax&quot;\\n input: &quot;softmax0/pre_activation&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;head1/pool&quot;\\n op: &quot;AvgPool&quot;\\n input: &quot;mixed4d&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;ksize&quot;\\n value {\\n list {\\n i: 1\\n i: 5\\n i: 5\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;VALID&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 3\\n i: 3\\n i: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;head1/bottleneck_pre_relu/conv&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;head1/pool&quot;\\n input: &quot;head1/bottleneck_w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 1\\n i: 1\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;head1/bottleneck_pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;head1/bottleneck_pre_relu/conv&quot;\\n input: &quot;head1/bottleneck_b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;head1/bottleneck&quot;\\n op: &quot;Relu&quot;\\n input: &quot;head1/bottleneck_pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;head1/bottleneck/reshape/shape&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 2\\n }\\n }\\n tensor_content: &quot;\\\\377\\\\377\\\\377\\\\377\\\\000\\\\010\\\\000\\\\000&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;head1/bottleneck/reshape&quot;\\n op: &quot;Reshape&quot;\\n input: &quot;head1/bottleneck&quot;\\n input: &quot;head1/bottleneck/reshape/shape&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;nn1/pre_relu/matmul&quot;\\n op: &quot;MatMul&quot;\\n input: &quot;head1/bottleneck/reshape&quot;\\n input: &quot;nn1/w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;transpose_a&quot;\\n value {\\n b: false\\n }\\n }\\n attr {\\n key: &quot;transpose_b&quot;\\n value {\\n b: false\\n }\\n }\\n}\\nnode {\\n name: &quot;nn1/pre_relu&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;nn1/pre_relu/matmul&quot;\\n input: &quot;nn1/b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;nn1&quot;\\n op: &quot;Relu&quot;\\n input: &quot;nn1/pre_relu&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;nn1/reshape/shape&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 2\\n }\\n }\\n tensor_content: &quot;\\\\377\\\\377\\\\377\\\\377\\\\000\\\\004\\\\000\\\\000&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;nn1/reshape&quot;\\n op: &quot;Reshape&quot;\\n input: &quot;nn1&quot;\\n input: &quot;nn1/reshape/shape&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;softmax1/pre_activation/matmul&quot;\\n op: &quot;MatMul&quot;\\n input: &quot;nn1/reshape&quot;\\n input: &quot;softmax1/w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;transpose_a&quot;\\n value {\\n b: false\\n }\\n }\\n attr {\\n key: &quot;transpose_b&quot;\\n value {\\n b: false\\n }\\n }\\n}\\nnode {\\n name: &quot;softmax1/pre_activation&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;softmax1/pre_activation/matmul&quot;\\n input: &quot;softmax1/b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;softmax1&quot;\\n op: &quot;Softmax&quot;\\n input: &quot;softmax1/pre_activation&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;avgpool0/reshape/shape&quot;\\n op: &quot;Const&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 2\\n }\\n }\\n tensor_content: &quot;\\\\377\\\\377\\\\377\\\\377\\\\000\\\\004\\\\000\\\\000&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;avgpool0/reshape&quot;\\n op: &quot;Reshape&quot;\\n input: &quot;avgpool0&quot;\\n input: &quot;avgpool0/reshape/shape&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;softmax2/pre_activation/matmul&quot;\\n op: &quot;MatMul&quot;\\n input: &quot;avgpool0/reshape&quot;\\n input: &quot;softmax2/w&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;transpose_a&quot;\\n value {\\n b: false\\n }\\n }\\n attr {\\n key: &quot;transpose_b&quot;\\n value {\\n b: false\\n }\\n }\\n}\\nnode {\\n name: &quot;softmax2/pre_activation&quot;\\n op: &quot;BiasAdd&quot;\\n input: &quot;softmax2/pre_activation/matmul&quot;\\n input: &quot;softmax2/b&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;softmax2&quot;\\n op: &quot;Softmax&quot;\\n input: &quot;softmax2/pre_activation&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;output&quot;\\n op: &quot;Identity&quot;\\n input: &quot;softmax0&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;output1&quot;\\n op: &quot;Identity&quot;\\n input: &quot;softmax1&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;output2&quot;\\n op: &quot;Identity&quot;\\n input: &quot;softmax2&quot;\\n device: &quot;/cpu:0&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\n';\n",
+ " }\n",
+ " </script>\n",
+ " <link rel=&quot;import&quot; href=&quot;https://tensorboard.appspot.com/tf-graph-basic.build.html&quot; onload=load()>\n",
+ " <div style=&quot;height:600px&quot;>\n",
+ " <tf-graph-basic id=&quot;graph0.8534775751&quot;></tf-graph-basic>\n",
+ " </div>\n",
+ " \"></iframe>\n",
+ " "
+ ],
+ "text/plain": [
+ "<IPython.core.display.HTML object>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "layers = [op.name for op in graph.get_operations() if op.type=='Conv2D' and 'import/' in op.name]\n",
+ "feature_nums = [int(graph.get_tensor_by_name(name+':0').get_shape()[-1]) for name in layers]\n",
+ "\n",
+ "print 'Number of layers', len(layers)\n",
+ "print 'Total number of feature channels:', sum(feature_nums)\n",
+ "\n",
+ "\n",
+ "# Helper functions for TF Graph visualization\n",
+ "\n",
+ "def strip_consts(graph_def, max_const_size=32):\n",
+ " \"\"\"Strip large constant values from graph_def.\"\"\"\n",
+ " strip_def = tf.GraphDef()\n",
+ " for n0 in graph_def.node:\n",
+ " n = strip_def.node.add() \n",
+ " n.MergeFrom(n0)\n",
+ " if n.op == 'Const':\n",
+ " tensor = n.attr['value'].tensor\n",
+ " size = len(tensor.tensor_content)\n",
+ " if size > max_const_size:\n",
+ " tensor.tensor_content = \"<stripped %d bytes>\"%size\n",
+ " return strip_def\n",
+ " \n",
+ "def rename_nodes(graph_def, rename_func):\n",
+ " res_def = tf.GraphDef()\n",
+ " for n0 in graph_def.node:\n",
+ " n = res_def.node.add() \n",
+ " n.MergeFrom(n0)\n",
+ " n.name = rename_func(n.name)\n",
+ " for i, s in enumerate(n.input):\n",
+ " n.input[i] = rename_func(s) if s[0]!='^' else '^'+rename_func(s[1:])\n",
+ " return res_def\n",
+ " \n",
+ "def show_graph(graph_def, max_const_size=32):\n",
+ " \"\"\"Visualize TensorFlow graph.\"\"\"\n",
+ " if hasattr(graph_def, 'as_graph_def'):\n",
+ " graph_def = graph_def.as_graph_def()\n",
+ " strip_def = strip_consts(graph_def, max_const_size=max_const_size)\n",
+ " code = \"\"\"\n",
+ " <script>\n",
+ " function load() {{\n",
+ " document.getElementById(\"{id}\").pbtxt = {data};\n",
+ " }}\n",
+ " </script>\n",
+ " <link rel=\"import\" href=\"https://tensorboard.appspot.com/tf-graph-basic.build.html\" onload=load()>\n",
+ " <div style=\"height:600px\">\n",
+ " <tf-graph-basic id=\"{id}\"></tf-graph-basic>\n",
+ " </div>\n",
+ " \"\"\".format(data=repr(str(strip_def)), id='graph'+str(np.random.rand()))\n",
+ " \n",
+ " iframe = \"\"\"\n",
+ " <iframe seamless style=\"width:800px;height:620px;border:0\" srcdoc=\"{}\"></iframe>\n",
+ " \"\"\".format(code.replace('\"', '&quot;'))\n",
+ " display(HTML(iframe))\n",
+ "\n",
+ "# Visualizing the network graph. Be sure expand the \"mixed\" nodes to see their \n",
+ "# internal structure. We are going to visualize \"Conv2D\" nodes.\n",
+ "tmp_def = rename_nodes(graph_def, lambda s:\"/\".join(s.split('_',1)))\n",
+ "show_graph(tmp_def)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "colab_type": "text",
+ "id": "Nv2JqNLBhy1j"
+ },
+ "source": [
+ "<a id='naive'></a>\n",
+ "## Naive feature visualization"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "colab_type": "text",
+ "id": "6LXaGEJkQgk4"
+ },
+ "source": [
+ "Let's start with a naive way of visualizing these. Image-space gradient ascent!"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "cellView": "both",
+ "colab": {
+ "autoexec": {
+ "startup": false,
+ "wait_interval": 0
+ },
+ "output_extras": [
+ {
+ "item_id": 1
+ },
+ {
+ "item_id": 2
+ }
+ ]
+ },
+ "colab_type": "code",
+ "collapsed": false,
+ "executionInfo": {
+ "elapsed": 3,
+ "status": "ok",
+ "timestamp": 1457962479327,
+ "user": {
+ "color": "#1FA15D",
+ "displayName": "Alexander Mordvintsev",
+ "isAnonymous": false,
+ "isMe": true,
+ "permissionId": "12341152118244997759",
+ "photoUrl": "https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/s128/photo.jpg",
+ "sessionId": "761b412462cda2d0",
+ "userId": "108092561333339272254"
+ },
+ "user_tz": -60
+ },
+ "id": "ZxC_XGGXQgk7",
+ "outputId": "1c971a74-bf65-4069-cfd0-1473aa909a83",
+ "scrolled": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a\nHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy\nMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCADgAOADASIA\nAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA\nAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3\nODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm\np6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA\nAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx\nBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK\nU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3\nuLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwCOXC+Y\nASmOTs4GP6fjU0dzDLbxtHcoRjEucgpjueeelNuRBJGsDLkEeZIobAIycZxzjj9aalpNIN8ZYBT1\nUDp/QURfPZtWHFe9yt6DbO7inm8uN3kiiXDuYyMnqcDvwRzU24Ehd6tlfmA4I/HpnvUVvbXVpcCW\n5mVzIB8wUt34+nBpzarHMJYUkPmPj5VUkjJ6/lim4Lmbjqv68jScI+0laSsgspzJdQvNuB8wyyDA\n3YxwvbvUaCeZdmRuCYbd91MmrenQs6WzKQ7LlCVOG44BB65wB+dQgSW7PAoVVQ4Xe4PHXJNZxq80\n3G23/DGNSdRyTfTT/IVoipJUgJgkymHlu3Ge1N2DaD5TbSMbn2rnPvn9DSM6bt7bnKn/AFhU9s9O\n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\n",
+ "text/plain": [
+ "<IPython.core.display.Image object>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Picking some internal layer. Note that we use outputs before applying the ReLU nonlinearity\n",
+ "# to have non-zero gradients for features with negative initial activations.\n",
+ "layer = 'mixed4d_3x3_bottleneck_pre_relu'\n",
+ "channel = 139 # picking some feature channel to visualize\n",
+ "\n",
+ "# start with a gray image with a little noise\n",
+ "img_noise = np.random.uniform(size=(224,224,3)) + 100.0\n",
+ "\n",
+ "def showarray(a, fmt='jpeg'):\n",
+ " a = np.uint8(np.clip(a, 0, 1)*255)\n",
+ " f = StringIO()\n",
+ " PIL.Image.fromarray(a).save(f, fmt)\n",
+ " display(Image(data=f.getvalue()))\n",
+ " \n",
+ "def visstd(a, s=0.1):\n",
+ " '''Normalize the image range for visualization'''\n",
+ " return (a-a.mean())/max(a.std(), 1e-4)*s + 0.5\n",
+ "\n",
+ "def T(layer):\n",
+ " '''Helper for getting layer output tensor'''\n",
+ " return graph.get_tensor_by_name(\"import/%s:0\"%layer)\n",
+ "\n",
+ "def render_naive(t_obj, img0=img_noise, iter_n=20, step=1.0):\n",
+ " t_score = tf.reduce_mean(t_obj) # defining the optimization objective\n",
+ " t_grad = tf.gradients(t_score, t_input)[0] # behold the power of automatic differentiation!\n",
+ " \n",
+ " img = img0.copy()\n",
+ " for i in xrange(iter_n):\n",
+ " g, score = sess.run([t_grad, t_score], {t_input:img})\n",
+ " # normalizing the gradient, so the same step size should work \n",
+ " g /= g.std()+1e-8 # for different layers and networks\n",
+ " img += g*step\n",
+ " print score,\n",
+ " clear_output()\n",
+ " showarray(visstd(img))\n",
+ "\n",
+ "render_naive(T(layer)[:,:,:,channel])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "colab_type": "text",
+ "id": "ZroBKE5YiDsb"
+ },
+ "source": [
+ "<a id=\"multiscale\"></a>\n",
+ "## Multiscale image generation\n",
+ "\n",
+ "Looks like the network wants to show us something interesting! Let's help it. We are going to apply gradient ascent on multiple scales. Details formed on smaller scale will be upscaled and augmented with additional details on the next scale.\n",
+ "\n",
+ "With multiscale image generation it may be tempting to set the number of octaves to some high value to produce wallpaper-sized images. Storing network activations and backprop values will quickly run out of GPU memory in this case. There is a simple trick to avoid this: split the image into smaller tiles and compute each tile gradient independently. Applying random shifts to the image before every iteration helps avoid tile seams and improves the overall image quality."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "cellView": "both",
+ "colab": {
+ "autoexec": {
+ "startup": false,
+ "wait_interval": 0
+ },
+ "output_extras": [
+ {
+ "item_id": 1
+ }
+ ]
+ },
+ "colab_type": "code",
+ "collapsed": false,
+ "executionInfo": {
+ "elapsed": 464,
+ "status": "ok",
+ "timestamp": 1457963844162,
+ "user": {
+ "color": "#1FA15D",
+ "displayName": "Alexander Mordvintsev",
+ "isAnonymous": false,
+ "isMe": true,
+ "permissionId": "12341152118244997759",
+ "photoUrl": "https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/s128/photo.jpg",
+ "sessionId": "1269ead540f76ce5",
+ "userId": "108092561333339272254"
+ },
+ "user_tz": -60
+ },
+ "id": "2iwWSOgsQglG",
+ "outputId": "221dae81-914b-4167-eb49-26ef2d431a66",
+ "scrolled": false
+ },
+ "outputs": [],
+ "source": [
+ "def tffunc(*argtypes):\n",
+ " '''Helper that transforms TF-graph generating function into a regular one.\n",
+ " See \"resize\" function below.\n",
+ " '''\n",
+ " placeholders = map(tf.placeholder, argtypes)\n",
+ " def wrap(f):\n",
+ " out = f(*placeholders)\n",
+ " def wrapper(*args, **kw):\n",
+ " return out.eval(dict(zip(placeholders, args)), session=kw.get('session'))\n",
+ " return wrapper\n",
+ " return wrap\n",
+ "\n",
+ "# Helper function that uses TF to resize an image\n",
+ "def resize(img, size):\n",
+ " img = tf.expand_dims(img, 0)\n",
+ " return tf.image.resize_bilinear(img, size)[0,:,:,:]\n",
+ "resize = tffunc(np.float32, np.int32)(resize)\n",
+ "\n",
+ "\n",
+ "def calc_grad_tiled(img, t_grad, tile_size=512):\n",
+ " '''Compute the value of tensor t_grad over the image in a tiled way.\n",
+ " Random shifts are applied to the image to blur tile boundaries over \n",
+ " multiple iterations.'''\n",
+ " sz = tile_size\n",
+ " h, w = img.shape[:2]\n",
+ " sx, sy = np.random.randint(sz, size=2)\n",
+ " img_shift = np.roll(np.roll(img, sx, 1), sy, 0)\n",
+ " grad = np.zeros_like(img)\n",
+ " for y in xrange(0, max(h-sz//2, sz),sz):\n",
+ " for x in xrange(0, max(w-sz//2, sz),sz):\n",
+ " sub = img_shift[y:y+sz,x:x+sz]\n",
+ " g = sess.run(t_grad, {t_input:sub})\n",
+ " grad[y:y+sz,x:x+sz] = g\n",
+ " return np.roll(np.roll(grad, -sx, 1), -sy, 0)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "cellView": "both",
+ "colab": {
+ "autoexec": {
+ "startup": false,
+ "wait_interval": 0
+ },
+ "output_extras": [
+ {
+ "item_id": 1
+ },
+ {
+ "item_id": 2
+ }
+ ]
+ },
+ "colab_type": "code",
+ "collapsed": false,
+ "executionInfo": {
+ "elapsed": 127,
+ "status": "ok",
+ "timestamp": 1457963487829,
+ "user": {
+ "color": "#1FA15D",
+ "displayName": "Alexander Mordvintsev",
+ "isAnonymous": false,
+ "isMe": true,
+ "permissionId": "12341152118244997759",
+ "photoUrl": "https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/s128/photo.jpg",
+ "sessionId": "1269ead540f76ce5",
+ "userId": "108092561333339272254"
+ },
+ "user_tz": -60
+ },
+ "id": "GRCJdG8gQglN",
+ "outputId": "7e21352d-9131-4f81-a52f-912b2e299475",
+ "scrolled": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a\nHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy\nMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAG2AbYDASIA\nAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA\nAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3\nODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm\np6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA\nAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx\nBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK\nU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3\nuLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwBywlZQ\nQOSeMVZdVMLFSoZRuyf1qGILzIpKsv8ACRlW/wADUhk8ucALlThuR07EVDvcm2tmU7i5jVEBIJJI\nXBJ6VLawSXYdI0Coo+d+OSe1UFRpJ1IBHlLggnPzc4qzvaKCS2jlClpC7kHr3IrRwfLdblqLZeNt\napC5kVMlsqBwR14xVea2iDv9nndHUKzqwyoyM4zUPz3DtKzyRxBwURsHcB0qCe5e21OGNlOJT90I\nSGOOn1pRg2ve3CMFO+vpuWoVkV0W4RnRuMqcYHX6UTRLGzXLtKjoNy5QMfbg9OKWSaSaRuQrFm/g\n6D8fxp9oZBIqqPPwfmkYYCD0BPNQk4yu3oYWd9Bz6i1xdxxN5W0rvbP8I9DVUygEBZCQFO5UxtUk\n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\n6HyRlQTuYMeRkg9eKKKKvmd2YqCsf//Z\n",
+ "text/plain": [
+ "<IPython.core.display.Image object>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "def render_multiscale(t_obj, img0=img_noise, iter_n=10, step=1.0, octave_n=3, octave_scale=1.4):\n",
+ " t_score = tf.reduce_mean(t_obj) # defining the optimization objective\n",
+ " t_grad = tf.gradients(t_score, t_input)[0] # behold the power of automatic differentiation!\n",
+ " \n",
+ " img = img0.copy()\n",
+ " for octave in xrange(octave_n):\n",
+ " if octave>0:\n",
+ " hw = np.float32(img.shape[:2])*octave_scale\n",
+ " img = resize(img, np.int32(hw))\n",
+ " for i in xrange(iter_n):\n",
+ " g = calc_grad_tiled(img, t_grad)\n",
+ " # normalizing the gradient, so the same step size should work \n",
+ " g /= g.std()+1e-8 # for different layers and networks\n",
+ " img += g*step\n",
+ " print '.',\n",
+ " clear_output()\n",
+ " showarray(visstd(img))\n",
+ "\n",
+ "render_multiscale(T(layer)[:,:,:,channel])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "colab_type": "text",
+ "id": "mDSZMtVYQglV"
+ },
+ "source": [
+ "<a id=\"laplacian\"></a>\n",
+ "## Laplacian Pyramid Gradient Normalization\n",
+ "\n",
+ "This looks better, but the resulting images mostly contain high frequencies. Can we improve it? One way is to add a smoothness prior into the optimization objective. This will effectively blur the image a little every iteration, suppressing the higher frequencies, so that the lower frequencies can catch up. This will require more iterations to produce a nice image. Why don't we just boost lower frequencies of the gradient instead? One way to achieve this is through the [Laplacian pyramid](https://en.wikipedia.org/wiki/Pyramid_(image_processing)#Laplacian_pyramid) decomposition. We call the resulting technique _Laplacian Pyramid Gradient Normailzation_."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "cellView": "both",
+ "colab": {
+ "autoexec": {
+ "startup": false,
+ "wait_interval": 0
+ },
+ "output_extras": [
+ {
+ "item_id": 1
+ }
+ ]
+ },
+ "colab_type": "code",
+ "collapsed": false,
+ "executionInfo": {
+ "elapsed": 512,
+ "status": "ok",
+ "timestamp": 1457963876373,
+ "user": {
+ "color": "#1FA15D",
+ "displayName": "Alexander Mordvintsev",
+ "isAnonymous": false,
+ "isMe": true,
+ "permissionId": "12341152118244997759",
+ "photoUrl": "https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/s128/photo.jpg",
+ "sessionId": "1269ead540f76ce5",
+ "userId": "108092561333339272254"
+ },
+ "user_tz": -60
+ },
+ "id": "Do3WpFSUQglX",
+ "outputId": "99835b80-ed6f-47a5-85c3-c77bd55d7b17",
+ "scrolled": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ " <iframe seamless style=\"width:800px;height:620px;border:0\" srcdoc=\"\n",
+ " <script>\n",
+ " function load() {\n",
+ " document.getElementById(&quot;graph0.536811672345&quot;).pbtxt = 'node {\\n name: &quot;lap_in&quot;\\n op: &quot;Placeholder&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;shape&quot;\\n value {\\n shape {\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;ExpandDims/dim&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;ExpandDims&quot;\\n op: &quot;ExpandDims&quot;\\n input: &quot;lap_in&quot;\\n input: &quot;ExpandDims/dim&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;split/Conv2D/filter&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 5\\n }\\n dim {\\n size: 5\\n }\\n dim {\\n size: 3\\n }\\n dim {\\n size: 3\\n }\\n }\\n tensor_content: &quot;<stripped 900 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;split/Conv2D&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;ExpandDims&quot;\\n input: &quot;split/Conv2D/filter&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 2\\n i: 2\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;split/Shape&quot;\\n op: &quot;Shape&quot;\\n input: &quot;ExpandDims&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;split/conv2d_transpose/filter&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 5\\n }\\n dim {\\n size: 5\\n }\\n dim {\\n size: 3\\n }\\n dim {\\n size: 3\\n }\\n }\\n tensor_content: &quot;<stripped 900 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;split/conv2d_transpose&quot;\\n op: &quot;Conv2DBackpropInput&quot;\\n input: &quot;split/Shape&quot;\\n input: &quot;split/conv2d_transpose/filter&quot;\\n input: &quot;split/Conv2D&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 2\\n i: 2\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;split/sub&quot;\\n op: &quot;Sub&quot;\\n input: &quot;ExpandDims&quot;\\n input: &quot;split/conv2d_transpose&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;split_1/Conv2D/filter&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 5\\n }\\n dim {\\n size: 5\\n }\\n dim {\\n size: 3\\n }\\n dim {\\n size: 3\\n }\\n }\\n tensor_content: &quot;<stripped 900 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;split_1/Conv2D&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;split/Conv2D&quot;\\n input: &quot;split_1/Conv2D/filter&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 2\\n i: 2\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;split_1/Shape&quot;\\n op: &quot;Shape&quot;\\n input: &quot;split/Conv2D&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;split_1/conv2d_transpose/filter&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 5\\n }\\n dim {\\n size: 5\\n }\\n dim {\\n size: 3\\n }\\n dim {\\n size: 3\\n }\\n }\\n tensor_content: &quot;<stripped 900 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;split_1/conv2d_transpose&quot;\\n op: &quot;Conv2DBackpropInput&quot;\\n input: &quot;split_1/Shape&quot;\\n input: &quot;split_1/conv2d_transpose/filter&quot;\\n input: &quot;split_1/Conv2D&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 2\\n i: 2\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;split_1/sub&quot;\\n op: &quot;Sub&quot;\\n input: &quot;split/Conv2D&quot;\\n input: &quot;split_1/conv2d_transpose&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;split_2/Conv2D/filter&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 5\\n }\\n dim {\\n size: 5\\n }\\n dim {\\n size: 3\\n }\\n dim {\\n size: 3\\n }\\n }\\n tensor_content: &quot;<stripped 900 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;split_2/Conv2D&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;split_1/Conv2D&quot;\\n input: &quot;split_2/Conv2D/filter&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 2\\n i: 2\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;split_2/Shape&quot;\\n op: &quot;Shape&quot;\\n input: &quot;split_1/Conv2D&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;split_2/conv2d_transpose/filter&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 5\\n }\\n dim {\\n size: 5\\n }\\n dim {\\n size: 3\\n }\\n dim {\\n size: 3\\n }\\n }\\n tensor_content: &quot;<stripped 900 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;split_2/conv2d_transpose&quot;\\n op: &quot;Conv2DBackpropInput&quot;\\n input: &quot;split_2/Shape&quot;\\n input: &quot;split_2/conv2d_transpose/filter&quot;\\n input: &quot;split_2/Conv2D&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 2\\n i: 2\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;split_2/sub&quot;\\n op: &quot;Sub&quot;\\n input: &quot;split_1/Conv2D&quot;\\n input: &quot;split_2/conv2d_transpose&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;split_3/Conv2D/filter&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 5\\n }\\n dim {\\n size: 5\\n }\\n dim {\\n size: 3\\n }\\n dim {\\n size: 3\\n }\\n }\\n tensor_content: &quot;<stripped 900 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;split_3/Conv2D&quot;\\n op: &quot;Conv2D&quot;\\n input: &quot;split_2/Conv2D&quot;\\n input: &quot;split_3/Conv2D/filter&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 2\\n i: 2\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;split_3/Shape&quot;\\n op: &quot;Shape&quot;\\n input: &quot;split_2/Conv2D&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;split_3/conv2d_transpose/filter&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 5\\n }\\n dim {\\n size: 5\\n }\\n dim {\\n size: 3\\n }\\n dim {\\n size: 3\\n }\\n }\\n tensor_content: &quot;<stripped 900 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;split_3/conv2d_transpose&quot;\\n op: &quot;Conv2DBackpropInput&quot;\\n input: &quot;split_3/Shape&quot;\\n input: &quot;split_3/conv2d_transpose/filter&quot;\\n input: &quot;split_3/Conv2D&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 2\\n i: 2\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;split_3/sub&quot;\\n op: &quot;Sub&quot;\\n input: &quot;split_2/Conv2D&quot;\\n input: &quot;split_3/conv2d_transpose&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize/Square&quot;\\n op: &quot;Square&quot;\\n input: &quot;split_3/Conv2D&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize/Rank&quot;\\n op: &quot;Rank&quot;\\n input: &quot;normalize/Square&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize/range/start&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize/range/delta&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize/range&quot;\\n op: &quot;Range&quot;\\n input: &quot;normalize/range/start&quot;\\n input: &quot;normalize/Rank&quot;\\n input: &quot;normalize/range/delta&quot;\\n}\\nnode {\\n name: &quot;normalize/Mean&quot;\\n op: &quot;Mean&quot;\\n input: &quot;normalize/Square&quot;\\n input: &quot;normalize/range&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;keep_dims&quot;\\n value {\\n b: false\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize/Sqrt&quot;\\n op: &quot;Sqrt&quot;\\n input: &quot;normalize/Mean&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize/Maximum/y&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n }\\n float_val: 1.00000001335e-10\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize/Maximum&quot;\\n op: &quot;Maximum&quot;\\n input: &quot;normalize/Sqrt&quot;\\n input: &quot;normalize/Maximum/y&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize/div&quot;\\n op: &quot;Div&quot;\\n input: &quot;split_3/Conv2D&quot;\\n input: &quot;normalize/Maximum&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize_1/Square&quot;\\n op: &quot;Square&quot;\\n input: &quot;split_3/sub&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize_1/Rank&quot;\\n op: &quot;Rank&quot;\\n input: &quot;normalize_1/Square&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize_1/range/start&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize_1/range/delta&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize_1/range&quot;\\n op: &quot;Range&quot;\\n input: &quot;normalize_1/range/start&quot;\\n input: &quot;normalize_1/Rank&quot;\\n input: &quot;normalize_1/range/delta&quot;\\n}\\nnode {\\n name: &quot;normalize_1/Mean&quot;\\n op: &quot;Mean&quot;\\n input: &quot;normalize_1/Square&quot;\\n input: &quot;normalize_1/range&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;keep_dims&quot;\\n value {\\n b: false\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize_1/Sqrt&quot;\\n op: &quot;Sqrt&quot;\\n input: &quot;normalize_1/Mean&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize_1/Maximum/y&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n }\\n float_val: 1.00000001335e-10\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize_1/Maximum&quot;\\n op: &quot;Maximum&quot;\\n input: &quot;normalize_1/Sqrt&quot;\\n input: &quot;normalize_1/Maximum/y&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize_1/div&quot;\\n op: &quot;Div&quot;\\n input: &quot;split_3/sub&quot;\\n input: &quot;normalize_1/Maximum&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize_2/Square&quot;\\n op: &quot;Square&quot;\\n input: &quot;split_2/sub&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize_2/Rank&quot;\\n op: &quot;Rank&quot;\\n input: &quot;normalize_2/Square&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize_2/range/start&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize_2/range/delta&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize_2/range&quot;\\n op: &quot;Range&quot;\\n input: &quot;normalize_2/range/start&quot;\\n input: &quot;normalize_2/Rank&quot;\\n input: &quot;normalize_2/range/delta&quot;\\n}\\nnode {\\n name: &quot;normalize_2/Mean&quot;\\n op: &quot;Mean&quot;\\n input: &quot;normalize_2/Square&quot;\\n input: &quot;normalize_2/range&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;keep_dims&quot;\\n value {\\n b: false\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize_2/Sqrt&quot;\\n op: &quot;Sqrt&quot;\\n input: &quot;normalize_2/Mean&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize_2/Maximum/y&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n }\\n float_val: 1.00000001335e-10\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize_2/Maximum&quot;\\n op: &quot;Maximum&quot;\\n input: &quot;normalize_2/Sqrt&quot;\\n input: &quot;normalize_2/Maximum/y&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize_2/div&quot;\\n op: &quot;Div&quot;\\n input: &quot;split_2/sub&quot;\\n input: &quot;normalize_2/Maximum&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize_3/Square&quot;\\n op: &quot;Square&quot;\\n input: &quot;split_1/sub&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize_3/Rank&quot;\\n op: &quot;Rank&quot;\\n input: &quot;normalize_3/Square&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize_3/range/start&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize_3/range/delta&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize_3/range&quot;\\n op: &quot;Range&quot;\\n input: &quot;normalize_3/range/start&quot;\\n input: &quot;normalize_3/Rank&quot;\\n input: &quot;normalize_3/range/delta&quot;\\n}\\nnode {\\n name: &quot;normalize_3/Mean&quot;\\n op: &quot;Mean&quot;\\n input: &quot;normalize_3/Square&quot;\\n input: &quot;normalize_3/range&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;keep_dims&quot;\\n value {\\n b: false\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize_3/Sqrt&quot;\\n op: &quot;Sqrt&quot;\\n input: &quot;normalize_3/Mean&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize_3/Maximum/y&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n }\\n float_val: 1.00000001335e-10\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize_3/Maximum&quot;\\n op: &quot;Maximum&quot;\\n input: &quot;normalize_3/Sqrt&quot;\\n input: &quot;normalize_3/Maximum/y&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize_3/div&quot;\\n op: &quot;Div&quot;\\n input: &quot;split_1/sub&quot;\\n input: &quot;normalize_3/Maximum&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize_4/Square&quot;\\n op: &quot;Square&quot;\\n input: &quot;split/sub&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize_4/Rank&quot;\\n op: &quot;Rank&quot;\\n input: &quot;normalize_4/Square&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize_4/range/start&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize_4/range/delta&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize_4/range&quot;\\n op: &quot;Range&quot;\\n input: &quot;normalize_4/range/start&quot;\\n input: &quot;normalize_4/Rank&quot;\\n input: &quot;normalize_4/range/delta&quot;\\n}\\nnode {\\n name: &quot;normalize_4/Mean&quot;\\n op: &quot;Mean&quot;\\n input: &quot;normalize_4/Square&quot;\\n input: &quot;normalize_4/range&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;keep_dims&quot;\\n value {\\n b: false\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize_4/Sqrt&quot;\\n op: &quot;Sqrt&quot;\\n input: &quot;normalize_4/Mean&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize_4/Maximum/y&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n }\\n float_val: 1.00000001335e-10\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize_4/Maximum&quot;\\n op: &quot;Maximum&quot;\\n input: &quot;normalize_4/Sqrt&quot;\\n input: &quot;normalize_4/Maximum/y&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;normalize_4/div&quot;\\n op: &quot;Div&quot;\\n input: &quot;split/sub&quot;\\n input: &quot;normalize_4/Maximum&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;merge/Shape&quot;\\n op: &quot;Shape&quot;\\n input: &quot;normalize_1/div&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;merge/conv2d_transpose/filter&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 5\\n }\\n dim {\\n size: 5\\n }\\n dim {\\n size: 3\\n }\\n dim {\\n size: 3\\n }\\n }\\n tensor_content: &quot;<stripped 900 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;merge/conv2d_transpose&quot;\\n op: &quot;Conv2DBackpropInput&quot;\\n input: &quot;merge/Shape&quot;\\n input: &quot;merge/conv2d_transpose/filter&quot;\\n input: &quot;normalize/div&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 2\\n i: 2\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;merge/add&quot;\\n op: &quot;Add&quot;\\n input: &quot;merge/conv2d_transpose&quot;\\n input: &quot;normalize_1/div&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;merge_1/Shape&quot;\\n op: &quot;Shape&quot;\\n input: &quot;normalize_2/div&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;merge_1/conv2d_transpose/filter&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 5\\n }\\n dim {\\n size: 5\\n }\\n dim {\\n size: 3\\n }\\n dim {\\n size: 3\\n }\\n }\\n tensor_content: &quot;<stripped 900 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;merge_1/conv2d_transpose&quot;\\n op: &quot;Conv2DBackpropInput&quot;\\n input: &quot;merge_1/Shape&quot;\\n input: &quot;merge_1/conv2d_transpose/filter&quot;\\n input: &quot;merge/add&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 2\\n i: 2\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;merge_1/add&quot;\\n op: &quot;Add&quot;\\n input: &quot;merge_1/conv2d_transpose&quot;\\n input: &quot;normalize_2/div&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;merge_2/Shape&quot;\\n op: &quot;Shape&quot;\\n input: &quot;normalize_3/div&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;merge_2/conv2d_transpose/filter&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 5\\n }\\n dim {\\n size: 5\\n }\\n dim {\\n size: 3\\n }\\n dim {\\n size: 3\\n }\\n }\\n tensor_content: &quot;<stripped 900 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;merge_2/conv2d_transpose&quot;\\n op: &quot;Conv2DBackpropInput&quot;\\n input: &quot;merge_2/Shape&quot;\\n input: &quot;merge_2/conv2d_transpose/filter&quot;\\n input: &quot;merge_1/add&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 2\\n i: 2\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;merge_2/add&quot;\\n op: &quot;Add&quot;\\n input: &quot;merge_2/conv2d_transpose&quot;\\n input: &quot;normalize_3/div&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;merge_3/Shape&quot;\\n op: &quot;Shape&quot;\\n input: &quot;normalize_4/div&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;merge_3/conv2d_transpose/filter&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 5\\n }\\n dim {\\n size: 5\\n }\\n dim {\\n size: 3\\n }\\n dim {\\n size: 3\\n }\\n }\\n tensor_content: &quot;<stripped 900 bytes>&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;merge_3/conv2d_transpose&quot;\\n op: &quot;Conv2DBackpropInput&quot;\\n input: &quot;merge_3/Shape&quot;\\n input: &quot;merge_3/conv2d_transpose/filter&quot;\\n input: &quot;merge_2/add&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;padding&quot;\\n value {\\n s: &quot;SAME&quot;\\n }\\n }\\n attr {\\n key: &quot;strides&quot;\\n value {\\n list {\\n i: 1\\n i: 2\\n i: 2\\n i: 1\\n }\\n }\\n }\\n attr {\\n key: &quot;use_cudnn_on_gpu&quot;\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: &quot;merge_3/add&quot;\\n op: &quot;Add&quot;\\n input: &quot;merge_3/conv2d_transpose&quot;\\n input: &quot;normalize_4/div&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;Slice/begin&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 4\\n }\\n }\\n tensor_content: &quot;\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;Slice/size&quot;\\n op: &quot;Const&quot;\\n attr {\\n key: &quot;dtype&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;value&quot;\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 4\\n }\\n }\\n tensor_content: &quot;\\\\001\\\\000\\\\000\\\\000\\\\377\\\\377\\\\377\\\\377\\\\377\\\\377\\\\377\\\\377\\\\377\\\\377\\\\377\\\\377&quot;\\n }\\n }\\n }\\n}\\nnode {\\n name: &quot;Slice&quot;\\n op: &quot;Slice&quot;\\n input: &quot;merge_3/add&quot;\\n input: &quot;Slice/begin&quot;\\n input: &quot;Slice/size&quot;\\n attr {\\n key: &quot;Index&quot;\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: &quot;Squeeze&quot;\\n op: &quot;Squeeze&quot;\\n input: &quot;Slice&quot;\\n attr {\\n key: &quot;T&quot;\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: &quot;squeeze_dims&quot;\\n value {\\n list {\\n i: 0\\n }\\n }\\n }\\n}\\n';\n",
+ " }\n",
+ " </script>\n",
+ " <link rel=&quot;import&quot; href=&quot;https://tensorboard.appspot.com/tf-graph-basic.build.html&quot; onload=load()>\n",
+ " <div style=&quot;height:600px&quot;>\n",
+ " <tf-graph-basic id=&quot;graph0.536811672345&quot;></tf-graph-basic>\n",
+ " </div>\n",
+ " \"></iframe>\n",
+ " "
+ ],
+ "text/plain": [
+ "<IPython.core.display.HTML object>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "k = np.float32([1,4,6,4,1])\n",
+ "k = np.outer(k, k)\n",
+ "k5x5 = k[:,:,None,None]/k.sum()*np.eye(3, dtype=np.float32)\n",
+ "\n",
+ "def lap_split(img):\n",
+ " '''Split the image into lo and hi frequency components'''\n",
+ " with tf.name_scope('split'):\n",
+ " lo = tf.nn.conv2d(img, k5x5, [1,2,2,1], 'SAME')\n",
+ " lo2 = tf.nn.conv2d_transpose(lo, k5x5*4, tf.shape(img), [1,2,2,1])\n",
+ " hi = img-lo2\n",
+ " return lo, hi\n",
+ "\n",
+ "def lap_split_n(img, n):\n",
+ " '''Build Laplacian pyramid with n splits'''\n",
+ " levels = []\n",
+ " for i in xrange(n):\n",
+ " img, hi = lap_split(img)\n",
+ " levels.append(hi)\n",
+ " levels.append(img)\n",
+ " return levels[::-1]\n",
+ "\n",
+ "def lap_merge(levels):\n",
+ " '''Merge Laplacian pyramid'''\n",
+ " img = levels[0]\n",
+ " for hi in levels[1:]:\n",
+ " with tf.name_scope('merge'):\n",
+ " img = tf.nn.conv2d_transpose(img, k5x5*4, tf.shape(hi), [1,2,2,1]) + hi\n",
+ " return img\n",
+ "\n",
+ "def normalize_std(img, eps=1e-10):\n",
+ " '''Normalize image by making its standard deviation = 1.0'''\n",
+ " with tf.name_scope('normalize'):\n",
+ " std = tf.sqrt(tf.reduce_mean(tf.square(img)))\n",
+ " return img/tf.maximum(std, eps)\n",
+ "\n",
+ "def lap_normalize(img, scale_n=4):\n",
+ " '''Perform the Laplacian pyramid normalization.'''\n",
+ " img = tf.expand_dims(img,0)\n",
+ " tlevels = lap_split_n(img, scale_n)\n",
+ " tlevels = map(normalize_std, tlevels)\n",
+ " out = lap_merge(tlevels)\n",
+ " return out[0,:,:,:]\n",
+ "\n",
+ "# Showing the lap_normalize graph with TensorBoard\n",
+ "lap_graph = tf.Graph()\n",
+ "with lap_graph.as_default():\n",
+ " lap_in = tf.placeholder(np.float32, name='lap_in')\n",
+ " lap_out = lap_normalize(lap_in)\n",
+ "show_graph(lap_graph)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "cellView": "both",
+ "colab": {
+ "autoexec": {
+ "startup": false,
+ "wait_interval": 0
+ },
+ "output_extras": [
+ {
+ "item_id": 1
+ },
+ {
+ "item_id": 2
+ }
+ ]
+ },
+ "colab_type": "code",
+ "collapsed": false,
+ "executionInfo": {
+ "elapsed": 17273,
+ "status": "ok",
+ "timestamp": 1457964054088,
+ "user": {
+ "color": "#1FA15D",
+ "displayName": "Alexander Mordvintsev",
+ "isAnonymous": false,
+ "isMe": true,
+ "permissionId": "12341152118244997759",
+ "photoUrl": "https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/s128/photo.jpg",
+ "sessionId": "1269ead540f76ce5",
+ "userId": "108092561333339272254"
+ },
+ "user_tz": -60
+ },
+ "id": "zj8Ms-WqQgla",
+ "outputId": "aa54c6c3-bf38-4054-f3f4-a5c82218e251",
+ "scrolled": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a\nHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy\nMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAG2AbYDASIA\nAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA\nAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3\nODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm\np6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA\nAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx\nBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK\nU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3\nuLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwCvLKTw\nj8emaqLYz3TZ3iMf3z0p0tnJI37lHU/7PIrZVgYgrOoYDGMYNY1Kjh8GtzRclQGkNvYuoVMDlm7N\n+NZN3MCUQcsvQg+varU8kcKsCzDPbt+NZMlvK2y4WRCUOXGOMfhXbhlze8y6VBOXkaf2qBYUD4Ls\nfmx0psTo5aLdt+f5jnk46VVgg3LvijEqiTkueAD1x61WFytlcP5hZn6hSDwPatK0OdaI2qYeLXuo\n37ydYU+UZlK7UHp71PbW8IiV5sZA4HrXPW975s29mO89SynCj0rdtzFtG5gwI6k9a82teDtM4KkL\nPQstdLKChGI+gWoTZrs3IqxD+8vB/GopLlIpv3SBs9CBk/lWhFM5Ul9u0DnPFbUNk47FQSSsczdX\n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\n2RD0P//Z\n",
+ "text/plain": [
+ "<IPython.core.display.Image object>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "def render_lapnorm(t_obj, img0=img_noise, visfunc=visstd,\n",
+ " iter_n=10, step=1.0, octave_n=3, octave_scale=1.4, lap_n=4):\n",
+ " t_score = tf.reduce_mean(t_obj) # defining the optimization objective\n",
+ " t_grad = tf.gradients(t_score, t_input)[0] # behold the power of automatic differentiation!\n",
+ " # build the laplacian normalization graph\n",
+ " lap_norm_func = tffunc(np.float32)(partial(lap_normalize, scale_n=lap_n))\n",
+ "\n",
+ " img = img0.copy()\n",
+ " for octave in xrange(octave_n):\n",
+ " if octave>0:\n",
+ " hw = np.float32(img.shape[:2])*octave_scale\n",
+ " img = resize(img, np.int32(hw))\n",
+ " for i in xrange(iter_n):\n",
+ " g = calc_grad_tiled(img, t_grad)\n",
+ " g = lap_norm_func(g)\n",
+ " img += g*step\n",
+ " print '.',\n",
+ " clear_output()\n",
+ " showarray(visfunc(img))\n",
+ "\n",
+ "render_lapnorm(T(layer)[:,:,:,channel])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "colab_type": "text",
+ "id": "YzXJUF2lQgln"
+ },
+ "source": [
+ "<a id=\"playing\"></a>\n",
+ "## Playing with feature visualizations\n",
+ "\n",
+ "We got a nice smooth image using only 10 iterations per octave. In case of running on GPU this takes just a few seconds. Let's try to visualize another channel from the same layer. The network can generate wide diversity of patterns."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "cellView": "both",
+ "colab": {
+ "autoexec": {
+ "startup": false,
+ "wait_interval": 0
+ },
+ "output_extras": [
+ {
+ "item_id": 1
+ },
+ {
+ "item_id": 2
+ }
+ ]
+ },
+ "colab_type": "code",
+ "collapsed": false,
+ "executionInfo": {
+ "elapsed": 35857,
+ "status": "ok",
+ "timestamp": 1457964089937,
+ "user": {
+ "color": "#1FA15D",
+ "displayName": "Alexander Mordvintsev",
+ "isAnonymous": false,
+ "isMe": true,
+ "permissionId": "12341152118244997759",
+ "photoUrl": "https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/s128/photo.jpg",
+ "sessionId": "1269ead540f76ce5",
+ "userId": "108092561333339272254"
+ },
+ "user_tz": -60
+ },
+ "id": "a6jfiWqZQglq",
+ "outputId": "40ebf3c4-a262-4e11-fca9-d42eb9306edb",
+ "scrolled": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a\nHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy\nMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAG2AbYDASIA\nAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA\nAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3\nODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm\np6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA\nAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx\nBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK\nU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3\nuLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwC+sShi\nVwoKBt2ePx/KmS2jNGH4dSMkio/7TtI3SIEGaTnjp0/xqaNmiy2fvAYJ6kVhUg4q6ZNWT18iv/Z7\nnEi5yB8oJqG206ZOGg24PzMM4rXEpHKR4HTdiphOQcu3A6Dsa4p4hoxlJS6mTFpII3Rkt3wBV6Ow\nUgZBBA9KsNfLKpBADjgMvpR58jYO7DZ45rneJqMuEVHqUrmOCGRFkcCXHT2qv9nhlfhyf6UalaG4\nu1uSSXC454IxxUbQPKgjBYZHBrspz91O+pt7VpvTYfLZxu5YsMuAmQc//qo+xxRxLIq435Xp3H/6\njT7OzaCzSOaRDIrE7twyR2pr2vl8r17ZOaaryjp0NJzjNXa1I44oo38xHKMwA2g/rUyu2evB7Y61\n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\n",
+ "text/plain": [
+ "<IPython.core.display.Image object>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "render_lapnorm(T(layer)[:,:,:,65])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "colab_type": "text",
+ "id": "ka6RyOMEnrB5"
+ },
+ "source": [
+ "Lower layers produce features of lower complexity."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "cellView": "both",
+ "colab": {
+ "autoexec": {
+ "startup": false,
+ "wait_interval": 0
+ },
+ "output_extras": [
+ {
+ "item_id": 1
+ },
+ {
+ "item_id": 2
+ }
+ ]
+ },
+ "colab_type": "code",
+ "collapsed": false,
+ "executionInfo": {
+ "elapsed": 25,
+ "status": "ok",
+ "timestamp": 1457967232229,
+ "user": {
+ "color": "#1FA15D",
+ "displayName": "Alexander Mordvintsev",
+ "isAnonymous": false,
+ "isMe": true,
+ "permissionId": "12341152118244997759",
+ "photoUrl": "https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/s128/photo.jpg",
+ "sessionId": "1269ead540f76ce5",
+ "userId": "108092561333339272254"
+ },
+ "user_tz": -60
+ },
+ "id": "KYOtrJxMnlws",
+ "outputId": "8ec79dd8-259e-4bca-8115-705e76d1bc74",
+ "scrolled": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a\nHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy\nMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAG2AbYDASIA\nAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA\nAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3\nODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm\np6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA\nAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx\nBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK\nU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3\nuLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwCbyRgK\nhwe3oahnbyI2ZxgpwB6mtN4vK4+YMABj0rOv/wB4wOPlQgD61jZRu1sb8ye5RiwCC3XOeauNhWPH\nSquCW9qkLusZJ+ZVHHrXLPmepcWuaz6i3V/9nYLEqu5HfotZqzO8mZHZssMjP9KmnQFyM9sn3qpJ\nGShXJGfTtXRSaVjp9hFJmk07wgrD8hxgkVWUlskksc9T9KcknmRKXXkDBb+92pwG3IzyORjsa9OM\nElc82rL7KGW9wbecNxjOG981rSMByhzu79zWNKBtOeMdKvWMqXFoGyNy/KwzWdeCeqMo1Ps9BUJW\n4TOSjNgj6+lTSRK3yhcnkYpGiUZLjjsKt7WYZ+4vYL6VCtFamcpNvQr6ZYhbiZJJCYWw6oOeehrT\n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\nxweh/9k=\n",
+ "text/plain": [
+ "<IPython.core.display.Image object>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "render_lapnorm(T('mixed3b_1x1_pre_relu')[:,:,:,101])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "colab_type": "text",
+ "id": "wuP8a4FlQglx"
+ },
+ "source": [
+ "There are many interesting things one may try. For example, optimizing a linear combination of features often gives a \"mixture\" pattern."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {
+ "cellView": "both",
+ "colab": {
+ "autoexec": {
+ "startup": false,
+ "wait_interval": 0
+ },
+ "output_extras": [
+ {
+ "item_id": 1
+ },
+ {
+ "item_id": 2
+ }
+ ]
+ },
+ "colab_type": "code",
+ "collapsed": false,
+ "executionInfo": {
+ "elapsed": 14408,
+ "status": "ok",
+ "timestamp": 1457964104157,
+ "user": {
+ "color": "#1FA15D",
+ "displayName": "Alexander Mordvintsev",
+ "isAnonymous": false,
+ "isMe": true,
+ "permissionId": "12341152118244997759",
+ "photoUrl": "https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/s128/photo.jpg",
+ "sessionId": "1269ead540f76ce5",
+ "userId": "108092561333339272254"
+ },
+ "user_tz": -60
+ },
+ "id": "ozN-nH2yQgl0",
+ "outputId": "a890305e-7bed-4011-8535-5882d6b27482",
+ "scrolled": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a\nHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy\nMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAJlAmUDASIA\nAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA\nAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3\nODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm\np6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA\nAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx\nBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK\nU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3\nuLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwCGWdWn\n/enZxtCnvxU6FSGCBVAGeOKzpIzPB58sh2jlVGKfFK5C7h8oH1rmq03vFg4q9macI6gEAZ6A1Iqd\n8EdDj8f/ANVUFuU3AMpU4H3uM1c06RLjVRbyAgbS+7PDH0rNOcbthyS6MHeR7owwPmVhk57CmL9q\ncOjxqwQ8Oh5rcn021im85Aom27dwPNUZo5bezKow8w8ryKiljYT23HKlKysYc1vlsqzMWwemOKjL\nzR/6pQSQDluprTMQjt4oyytNtwSO1NMQQN0YnovXArqnO9rGaqSi7WMWW4uZy0buwBIwq8Agnn9K\nlmllkVY412sE2sQevPB/KtA2jyAEqFz2HepYtOhh4JPAyc4pyxEYqyNXCc/iMtfNZFUEtgYwtXFh\n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\nfy2tw0a5wD2OKKKK9GlCLgm0WkrH/9k=\n",
+ "text/plain": [
+ "<IPython.core.display.Image object>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "render_lapnorm(T(layer)[:,:,:,65]+T(layer)[:,:,:,139], octave_n=4)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "colab_type": "text",
+ "id": "lcPe-ZMv0dYR"
+ },
+ "source": [
+ "<a id=\"deepdream\"></a>\n",
+ "## DeepDream\n",
+ "\n",
+ "Now let's reproduce the [DeepDream algorithm](https://github.com/google/deepdream/blob/master/dream.ipynb) with TensorFlow. \n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {
+ "cellView": "both",
+ "colab": {
+ "autoexec": {
+ "startup": false,
+ "wait_interval": 0
+ },
+ "output_extras": []
+ },
+ "colab_type": "code",
+ "collapsed": true,
+ "executionInfo": {
+ "elapsed": 465,
+ "status": "ok",
+ "timestamp": 1457967388369,
+ "user": {
+ "color": "#1FA15D",
+ "displayName": "Alexander Mordvintsev",
+ "isAnonymous": false,
+ "isMe": true,
+ "permissionId": "12341152118244997759",
+ "photoUrl": "https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/s128/photo.jpg",
+ "sessionId": "1269ead540f76ce5",
+ "userId": "108092561333339272254"
+ },
+ "user_tz": -60
+ },
+ "id": "qM2U_96hyUwN",
+ "outputId": "3725acc2-51cc-4894-e726-87bfe5727342",
+ "scrolled": false
+ },
+ "outputs": [],
+ "source": [
+ "def render_deepdream(t_obj, img0=img_noise,\n",
+ " iter_n=10, step=1.5, octave_n=4, octave_scale=1.4):\n",
+ " t_score = tf.reduce_mean(t_obj) # defining the optimization objective\n",
+ " t_grad = tf.gradients(t_score, t_input)[0] # behold the power of automatic differentiation!\n",
+ "\n",
+ " # split the image into a number of octaves\n",
+ " img = img0\n",
+ " octaves = []\n",
+ " for i in xrange(octave_n-1):\n",
+ " hw = img.shape[:2]\n",
+ " lo = resize(img, np.int32(np.float32(hw)/octave_scale))\n",
+ " hi = img-resize(lo, hw)\n",
+ " img = lo\n",
+ " octaves.append(hi)\n",
+ " \n",
+ " # generate details octave by octave\n",
+ " for octave in xrange(octave_n):\n",
+ " if octave>0:\n",
+ " hi = octaves[-octave]\n",
+ " img = resize(img, hi.shape[:2])+hi\n",
+ " for i in xrange(iter_n):\n",
+ " g = calc_grad_tiled(img, t_grad)\n",
+ " img += g*(step / (np.abs(g).mean()+1e-7))\n",
+ " print '.',\n",
+ " clear_output()\n",
+ " showarray(img/255.0)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Let's load some image and populate it with DogSlugs (in case you've missed them)."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {
+ "cellView": "both",
+ "colab": {
+ "autoexec": {
+ "startup": false,
+ "wait_interval": 0
+ },
+ "output_extras": [
+ {
+ "item_id": 1
+ }
+ ]
+ },
+ "colab_type": "code",
+ "collapsed": false,
+ "executionInfo": {
+ "elapsed": 600,
+ "status": "ok",
+ "timestamp": 1457967452116,
+ "user": {
+ "color": "#1FA15D",
+ "displayName": "Alexander Mordvintsev",
+ "isAnonymous": false,
+ "isMe": true,
+ "permissionId": "12341152118244997759",
+ "photoUrl": "https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/s128/photo.jpg",
+ "sessionId": "1269ead540f76ce5",
+ "userId": "108092561333339272254"
+ },
+ "user_tz": -60
+ },
+ "id": "M9_vOh_2Qgl-",
+ "outputId": "eef01469-fb9b-4242-f249-e81383bf0433",
+ "scrolled": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a\nHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy\nMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAIVAx8DASIA\nAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA\nAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3\nODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm\np6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA\nAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx\nBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK\nU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3\nuLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDut1Ga\naATTthHcfnXonGSiVR2NO8xT04qAKW6c0DP1+lKyAnMgp6nv0Hbmo1Kso4ANPJyQallC9+gJp207\nc7sfhURCkk5OacOcncTQA7cBxuz+FO3gDNIuEPPzemOKN3r+FIBRKSOgpVJySw+lJwfug/hQQQMn\nI+tMBXIB4700N1zTWYbeR9KMrjGcGmiWW7cjZ15qbNUYpvLbDHK1aVldcqc0mhokzRmm5opAPopu\nTRQA7IozSUUCFzS0maM0ALRSZozQAtFJmlzQAUUmaXNABTGjBp9FMRGIwKQxD1NSUU7gReWR0ago\nSOTmpaSi4EQjb1qRVwMHmlpaLgJtGelOpKWkAtLTaWgBaWkpaQC0UUUALRRRQMWjNJS0gFzRmk4p\n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\nXiDbQM849KKKymI//9k=\n",
+ "text/plain": [
+ "<IPython.core.display.Image object>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "img0 = PIL.Image.open('pilatus800.jpg')\n",
+ "img0 = np.float32(img0)\n",
+ "showarray(img0/255.0)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {
+ "cellView": "both",
+ "colab": {
+ "autoexec": {
+ "startup": false,
+ "wait_interval": 0
+ },
+ "output_extras": [
+ {
+ "item_id": 1
+ },
+ {
+ "item_id": 2
+ }
+ ]
+ },
+ "colab_type": "code",
+ "collapsed": false,
+ "executionInfo": {
+ "elapsed": 79,
+ "status": "ok",
+ "timestamp": 1457967471615,
+ "user": {
+ "color": "#1FA15D",
+ "displayName": "Alexander Mordvintsev",
+ "isAnonymous": false,
+ "isMe": true,
+ "permissionId": "12341152118244997759",
+ "photoUrl": "https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/s128/photo.jpg",
+ "sessionId": "1269ead540f76ce5",
+ "userId": "108092561333339272254"
+ },
+ "user_tz": -60
+ },
+ "id": "k0oggbGEeC3U",
+ "outputId": "c7258412-9cb1-4a94-d4f5-e6120a728c85",
+ "scrolled": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a\nHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy\nMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAIVAx8DASIA\nAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA\nAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3\nODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm\np6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA\nAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx\nBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK\nU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3\nuLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDsLNi6\nKWUBun0rSSGHytzIBIpA3H0zz+lZszeVdCZflRzux75rRkVpbdQpGGwSfTmu+pa/N3PPad0hHuFE\njC2jOT1f2pIwsQJXqerDk/jSeRNtysiOvr92m7WGSYixxgFDzUxSWiKT1JZHaVFJyUHBNCjGR90D\n7uTSCaFtqspjmPQAcAe9SZJ9MetU3oaAY8EPhWb1FOKlVJ8zb9Vpm2MsSm7cRzQVPJLH65qdRoPN\nXoZCcegzUm4du/rShFjG4HzR2K8YpvmbjghlPY9aLBoLvLDBVQB70pLAZdGAP3fQ0g+fhUOMdVph\nRkyG3j/ePFUkTpcfuU5+UY9zTEZRJJuj4ZTjHPNIQiYODk9AozmkVQrcuwHfjNOMSdHdou6dGj6f\n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\nUVhW0krGLbTaP//Z\n",
+ "text/plain": [
+ "<IPython.core.display.Image object>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "render_deepdream(tf.square(T('mixed4c')), img0)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "colab_type": "text",
+ "id": "IJzvhEFxpB7E"
+ },
+ "source": [
+ "Note that results can differ from the [Caffe](https://github.com/BVLC/caffe)'s implementation, as we are using an independently trained network. Still, the network seems to like dogs and animal-like features due to the nature of the ImageNet dataset.\n",
+ "\n",
+ "Using an arbitrary optimization objective still works:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {
+ "cellView": "both",
+ "colab": {
+ "autoexec": {
+ "startup": false,
+ "wait_interval": 0
+ },
+ "output_extras": [
+ {
+ "item_id": 1
+ },
+ {
+ "item_id": 2
+ }
+ ]
+ },
+ "colab_type": "code",
+ "collapsed": false,
+ "executionInfo": {
+ "elapsed": 114,
+ "status": "ok",
+ "timestamp": 1457967665541,
+ "user": {
+ "color": "#1FA15D",
+ "displayName": "Alexander Mordvintsev",
+ "isAnonymous": false,
+ "isMe": true,
+ "permissionId": "12341152118244997759",
+ "photoUrl": "https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/s128/photo.jpg",
+ "sessionId": "1269ead540f76ce5",
+ "userId": "108092561333339272254"
+ },
+ "user_tz": -60
+ },
+ "id": "4GexZuwJdDmu",
+ "outputId": "f140b073-7129-4889-f240-3d0e00530ada",
+ "scrolled": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a\nHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy\nMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAIVAx8DASIA\nAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA\nAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3\nODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm\np6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA\nAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx\nBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK\nU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3\nuLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDtxglg\nBkDv608fMDx8w6jHSo4yFCQsPmYnd+Hap48PJtIwcdfavRscCY8MCpYAhBySelNQo+Qg2j+dU3me\n6uPKTlUHA9amZHjXKudy9weKm1jeEL7E8rNkB+3SpQh2KU6djnFMWQXNnuxtcZVvrT1YMgbaRt4B\nB4pNjtZWFKhVBJVj7dKcsTD5ydo9SMUmWcltpOTnd7VEymQ4DszfkKhSXQnUlaSJfl8wFvYUm6Lr\nIScdBT0gVEPOT6L8tKZIIj93Pp3zVWZN29iFpyxACAD6U8NJyWQgDgfWka56+XGc+1I0jKS0ny5P\nIJqrDtYeZCpPzMvOMUEnknBGR36ZqEXKKACp2ZyaUTQsnoeSSeCTninZkt9y3CRyAWyD0PWpXIxk\nksc4A9aqJernD4cE7vu1bhaOR1KEkLk46nNJoLkhBiXDNlzyQO1RQspU5yHBINOYknGOO5P+FI8X\nncoxWUdM8A/jUtaFRauLGnmM+wZYDOPWpFIC5XJBGcUsMU0LCVwVYDp6/wCNVGm8u8Qg5jY4I7c/\nypMdZroWgfO3L2I5+lRK26QxqAMDnHpUuBG+4fdG7IHcGmQxbYgX+82WbjmmjJLQHX5Bk4GeuOlK\ni7cY49/WpgCke6T5VPIU9TVV7jJIjA+pqnYtQb1Y/dhcZ4NPU/MADyRmmQQrPI6TMQQMjDcEVLMs\ndsC0pXaTlm/2R0FZuabsgXvOyCRQig7fmbjgUxBvGAevvT9y3qGSFt2TgEdAKJTHEgRP3kmeWJ4F\nVbsKzWjGPJGnyopkk74HApqoxwG5J5wKljaNFIB3nlie2KDcSs2B8ozztGPwoBPoiN8KdvIbnAHe\nhoHI3EbgBkc5oWR4w8aoDjkse1IizzcJyfpgn6U7CsgMJP8AtDsc800xAKTuOAAfegx5LffBC5Y5\npWjmRuH3E9yP85p6BZiGAgkA5xnPao2VuVJxz0PUVIZXAw8eVxgkc4/DtTl2ySIynepfJ2+mKatu\nTd9RkcEhHms6xqe5705cHqQfQg9aillaWUtINwzwo71IFt2ChkMbHv0B/GhM0dN2vYXygGyBk98c\nGnA7VOMAbgCRTSz22A2XQ+vOPx7VI6I4WRTlW5pMlaiAA4Yfd5yT/hTiwwW4UAjkenvUapsL4ACg\njr1OO+KfuU7tiMwPIB/lSEP2uQTjjqM/xfSgnAGflXH8fel8qclSQEPv2pfssatiSYMT3PNJWHbQ\nYHUkAdW7KKdncoY8cE+v5ikwGfZHJtQkcAUpgYdHHPfqR+NMdmxQzYzuU8dRSFgrYOCe+zn9Kf5A\nbf8AvD07nB7cUNbEq2GzwDgn9KWgr2GBlZj5ZB74zyPwoBB5J5/UU1ocP8/Q557qKPOIUFs8gfWi\nxSVyVWKkqMnnJFAkQtjI3emcGmRRrOzbnYRpnO3v7UrCKRDsiVgDyC3b2NFkOzexJjnGME9j3pMM\neAOnUk8CoMGInyySvdGP8qkRhKAGyMDle5NKyIF3DkBdwHpQCrEqCC39096eJmGEUDjkHHSosrIo\nZvm5ySDzTNGvMeDzyCT6UfMcA4yegzTPOwSMlWC8H1psh3Kynhh1x3FMixHJKFUqC2cZOe9V2Ocs\nOO2DxRI8cYwZACM45zxUZuImY7UZyR3GBmqSb1SFew48AgkgU3apACkYIyMmjDEZAjQZ45pjRtkZ\ncfTFO5OjF2uORg+/Q0jBlH7yJlH94DI/So2Dg7dwZmIBIPQVGJ2Q/LkgHBPT88/hVJXRSV9iXyw6\n/LyDz8p605FARvl+YdRio43O7eo59Aev4f4VKLlUcSLyvRh7d6Fe1jNtxdyRyGtwRyvT6U1I1RkC\ncCRd272zg1HGd2+JD96Qbfb1qaYiMbB/Au2sVF3aNWk7NEcsayPwPlHQetNcpB8z/fI4A60zz3ly\nkONi4Bf1PtTBENxZnUsT+VaRj3M20hMSzEs52J1y7VIrRquEkZscfKOBSeUcZYBsEdqc06j92Rk/\n7tW30Dlb3EBwcAEfU1KOV3tgL6momAkmMK9CQGIqy00KdRvxwBUPUbIwWYhiAI+gLcUx2CHCk464\nxinPNJIclcDsBxioXlIcADJ6cfSlZ3BE24NyQBn0PFP2qycMD7VWUvt6MTj+HnFAmMbHEROCPaqY\n0mWMKDhetOPy8tz+NMhvIwwDrt+owKtSL5kYaJuT75GKmWg7PqREtK21FyKHjCA72GT0VaCuIjsU\njaeQOtNcxo+4EkEHII59qmN+o3EaxbLYDED2x+lMB524w3908GpdhZcEqwTIGPlIPaniGMxbDubB\n53VVxEZUAMCOlMA3KMldvUNmo5XaGTC8rjIB6j8aSKKSdWYKSkZGR3PrVJdWBIZUAwhJz3HFGRng\n84zgmnQooufL4KsqlW9DnvUXy+RvOcmRsAf3R3p6ILNOw9wV+YodvHIGe1IAhwRgjrxUQmaNhydx\nUMfQelSsqzozIcMeoHf/AApWE00JHiYNM5Cxj7vvQ2WPyIzc4AHQUqNkADgLwBSSEkdZD+H9KVhX\n7CbtvylgpP51IkkgHyNkdvmqoJMnGOR/eGKXEqtmNQp7bR1plJ9zQW6OcSDB9TxVn58fcJHfHWsk\nXE8bYdMrnnHPap4b+PjIMeSSSOhqHFspMtlgGGc4HXjBFSROudpJyemacGEyFgwZeoI5prw7SQMd\nfwPFTZj3FlVkIPVT3pfKDqMDk9KWGbrFKMg9j1/OkXALJuwM/Lmp1DoYV9bu7pJGSGDgnH15qdUC\nyvzncm0DH+fWolvC0z27FiCByPenCbG15CQiBtx9SKbk1oS6Uot3I4rMwRu8ZzJIQAT0A6VI6kMy\nKQwXGSOlOin84bwABjj2pJ3VCEyfVjnvV3aLhNqV+w23jaTIQYTOeKe08UJ5+fHbOBVVrmWb91Hn\naOOKQQ88846kjilbm3CdW7JWuZZuMlV9AcCpU80HAPGMnjNNTKldq5Gem3FSq0jqpJUYOTjir0iQ\n1f4hmyR2OS2PTOKekSRvlwWU9+9JI5iO8JnIwTjr+NCuQfmGAeo9KmUrlNpLRDif3mIhwDxmmwPF\nIZXl6o2CmOc094EKl1JVkOMqeR/9aqLShrkyKQS5xxxuoURJOfwlwMrq5VcDbkLjvnB/WnPFArfO\nN2MKF9T3qNHEoZlBDIeRj05xRawtdSvM7jDdAec0pXjrfQSVtOpH5IIJjYqvv0/CmbGjO8AMB3XP\nFXXkkS6WOAr8gzgJ1qISJnLA7gfnAPP5VUJ84mrFizvdwEchDf3cnBqzIxQBhnHU+tZVxbApvRQC\nOoOCasWN0H/czE5x8jf0qrJ6MfS5eDs653qE/wBo4FNWBbgMy4bAzkDr+PekjuPs0uwnCseCe9Tm\nRY42ATbk5wornkpXsga5dXsQPKVBUnJbAY+1Sh9il5Acc7R6VGB5hwy5YNjp2qKScvLtXOAOSK20\n2RV29I9CdpDNIckn+tIwhEsZlyM5wAMfTNOhVFkyVYKatXQiaAbPvE4H0qdL2ZMp9Iq5TkeSD/Vu\nCPUfxe1SNam+iO88ZOFJzjHao2QiNnyQFB2r6n2qOC5aFyqHPbHp6k0rtK8BxbhJS6kjbbZRCZSN\nvRUpwBZtgGDjgZ5qoyky+Y3zSsePUD1q+FEUaqhG/wDvYzkmqk7aIJNvWQ0ssSFSwPt3PtTVDzkF\nMov8RPpT3ijSASSMpkJPJ4IpjSBoysWQcYyeAaSdhbCtJJayOgZWOM8HrSRzvtSTYQynpjmlQOtp\nudfn/viopCZCjRI5x97tmnZdRbEhvC8wV12qwwcjGafFi4k3GQiMZ2gcZxxTJ7nzsFF2lepC5I+l\nIZJIYI9x3xM5BJ6jPI6UN2V7D1teKJ2VNzCNuVx29arkGObdyUI79vxp8bO0hPl7I2xyWxkjpSyN\nHDG8kuWC4UAepqXHqiZJ2uNZkbDdBzz/AJ61YAWSIqBkEd+fzqp53nACRRt/uAcflUjyu7bV4I79\nMVMXKXxaD5iUoohIZ8kDoDn9ahtzt3p2J3DPrSpGQNzEFG4Pb8c0ryxwjcxB5+UDqfetH2Wo5JJe\nZMkLSc4AB7nGP1pxKRgMXLdTke3YVSNxNKcouAT0xTRAzDLsW77QelTyvqxcyRde7gj3DluuAO9V\nvtRKgJBnHUEdDUkduIsEqo3fdpzE7N5wki8MuarRDvK5E00pG1yEzyNo6UqxqSpWRiOQ2e3FSkDz\nCwIcFckUm2JJF2nIdehpN6EjFiZ8MMleoINOKzwgskmcHnI5H+NOgk8pmTJ4JyhHOPUU67uYBC7h\ngVAZTgdQR/jRd38g62EF2c4lQbhwD2PPIqRhFKXVQfy64P8AKqsUEtxAZMoi4AzIepwM0QySQuUc\ng5GARn1pc8eblvqPlsTkPtkC7cEDPHQ9+negzgHyXUoyjb04I9c09njjhHzcAdO7GmeXcOvmyEKO\nu0jOaPM6YxtG7JDPHJL5apuVVG4n1qKSMwHzE+5nqOoqSIIULbcdwBUwXKsACRjJ/wAKltbHO99C\nHKsgK9++KYdzOGJXB6bRjmomnjgQoZAcY6dqge+lkG2FFUdie3vWiVtyuV9WSzyFBlgM44BqmftE\n/wB4KF9jinIrGQszBm45zmlDSMVaRsRk4G096aklsReN9NRqWsSEZ2bicDjmnieADKog7HdxUf3J\n0QchjnLdqcFKu+ehOeKd77hpcR5EbAPynsD3qHIEiopwDxk8CppG+YoqA4AJ+v0qMBXQlMFk7Ec0\ntL+RLbEfyvuFNp6gqefqaihjM7KrAEAjcKlVonQ5G1h6ilhSJn8xHYOO69KuUlBXZc6nNpFD32xv\ntZRtz024x9Kr3EOG+Ruo6+tPmlcbUk4P97AxUzL5MDbcExnv3FKEnchpLQhtwQu8j5l4NQbnmkMa\nE5Y5J9BV2ZojGWi6OgI+p4NRW0PlWzSkcsMA+wp3tqCdk0g+WKPYgwqjJNIjq4fdIQ0fzEEckfWo\n7lJVBcKrBR821sg/UUSEsdysNjoF6dKFaS3HpEehMd4rBhtYEEenemLKZC0vRcnnHUikVVLQ5wPM\nU5x/eGf6Cl2qyDoI1+cn6jgfWn7NMOdXskOjj2xtIeCx6k8kUqfKQOnrjtVaBy037+QrHkYUDv6V\ncMCyuSAw9MGlNcquOUJrcGkBjIx+HeowTjaMf0pz2wUkGUkg888iovLkVhtIbjnIqVLTYlIf35wv\nGev+FG4qMMmec5zUBdlyGVlHfB4xT45/lyODnOD1Ip6C9STaHBxkf7J5zTUdoThSQO6npR5kchUM\nCr45I4pSm3pl0ycg8/Sm00VFluGRJsgcSdNp7fSkbLYUDle56E+lUwrrh4+dpH+NWjIrBWP3CeR6\nGs2h+Q6Iu0LmVMH+Lae9IxUW42bsYxu75omc2kBlTL55wOTUcfmM7SE7UYfdc4q0rq6LSfLfoQRR\nSOD5j7ueOMcelWxL9llDIRgkE1Xbcx2oDnPBz0/GnmLywxkeXKjnIGMeoPeolJPQj7Wox5S0ySEY\nVVYNjr7frTrUR3GQzbEUAsfUnnH4VGlojQRyyZk3puX8e9JLaSeX5tuyu+cso4woGTz6+1NXsUoN\nxumPe3RpWldiAePXgVHFIyzArnyyemetSRHzrQAK2dvTOT+NCxNuV5PosargCmnuEXfSQl3Hlt6H\nBxzUS3LkbWUZ9+h+lOlZmuDGuFC/jinusQXDuCRzx2p37maTauQZVm27cH+dSqCuNpBXtuH+FM8y\nPJZAcrzk1Yg3yxPKFA2kjFKU4x6lWYgVxgkkDqWxkH6YqLDZAKjd/nrTtxXJXC46809BctH5gAwx\n4B64HFDtuVZkcbvGQy4x1yprUtr1Zo2Dj5u/GOR7VmRzwu5jVG3gfT86JGUHzUyrDg47fWjfRi03\nNSQA8g9OfaomfIHTcKhtblZ12eYM4yDRLuWXpyTznipUdbFQV9LmVEsZug6SNKgJX7mAc9Mmre5S\nPLAXP3SDyePrWdHLgRo8qlNwBIHA/CrdsIXyJB8pBLPyM+9YVKHPK7JlORHHM0URQEIQxwQBwPpT\nPmcYQSEEjczYy1QsDM5kzwe5Gf5VKIEK5ik3AcErXXFe7Zi0sSgNENoUge9PBwMgEH/ZNMWFNhzN\nkjnBp28jAQrGcYODSv0RKutWP+dQM5b0BPWnMGK5KkI/VTUZMyFSJFfvj1pFn2jGG3c9evNRYtNd\nC1vWOMbchcYG8dKmhUFeSWGKpKYpdoUOXTqCOtNeVkcpHGBjqW7UuV9NxPbUryStJcMGDnnAz2/G\nrdqIo1wRiRslu3HWq8haFllzweCcdqt7oGcSB9owBj1NaSnyu6L9pZIhlgaCfeh2iTgZ6nAotTOg\nZkbnpn0pJZEG12ctLuwMrgKOmB61KWmtXEqphXBUkcVlOTZFSq6juOSWZWZPMAHf1aiKNArO7BsH\nqTg496rkmdyioBzy7ttAqx5ZjUZAA9D0I+oq1FSVwvfyEt7mHz3WBmZT1UnNLLAfvxAgg5HPQ1NZ\n2drEzPHEI5uCfU/41ZDiKYI2MN3z3pJ6hJNaogIW5tnXo+09sEHtT7e48yHa/Py/1p9ypUF0wGGD\ngVUjzIx2llyw7cU52krmsXzQsy3C+InbcTklVxnkUmxIcb8jHJA60gbgHBwDtzngmmImWcyKyOXD\nMSd3Ht6UlEwb10JhGZgGRJenG0kY65waiilbzjGzFj23DBH1q/HeZLDblX6BPyOR+FUr3DLE5C7w\n2Mjrj/8AVVRtsaKTtZkjRvIw3uqKOODUtzZIIFa3bEo5yDg/nUduIBb/ALxismeeM5NQT3IEbRxC\nWX1AXAqVzOWnQi11ypEIkZWb95lv7w61fsUkl+Yn5cYHeq1rCyR5ZMZ5x97H49RUyvsY7GaMkjOD\nxinOV2+UtfDyonuleN97bSh4wetRExtKivlIxxuoJad8SOSB27Uu4puV49y4+UkUtbIjTYjlbbMy\nWzkoRkjrzTopmtIflYt3IC8/lSRnbDuQBJM8gjtQrw3FxnkN34pvs9uo9hQFuJ3GAATvA2nOf84q\nRZGAEZCGNW6HkZFRCc/vGGdyHGQvWlj2rb7FjySSwLds0n+BSjZWexNK8YxITkDOM4xVSa4e8XyE\nIWFG3biOc/XtStBLMehCL3OB+VKFWIBdw3f3FG4n6+lVolZlOonHlWoscDshCIUj7u/f8alEyxqV\njUBRgAgcsah+ZzliSD1BPSpFCktyAFP51Ohha2qB5JZG+duR0UdBTvIRMPMx3N0HoKIVDz7A2Sw3\nE9M+1TGYqsqSj5dvANF9bIpR37hLttkDj5lfuecUvELW8hIJ2YcfWoJZC0MK47An8qUfvJQefYUl\ne33hdXfRDxKXRY1GQH3E+lKHWSd2bG1RgA9zUZ3l/LiU4A5J7U3CwncTnccNx196dhrYcqYZvKdU\nfrtJ7e1SGELF5mNzE8knBphSNV2KRj7xbFK8ZeRRuJjA4BNO/UV9dBl3MpWNVj/fE8dR+tEto4jZ\npXVZAueFz09RRKjRyIy7hjA7EGnoYpMn5eQdzN1A/OkvI0pxuiRkZ23L0XJUjoMkUS4uFK7d4yxU\nkcgfWqltCIYzmR5IskqrEgsOgya0UZEt5Qy7WXhgT1PofbmuepeGtrkzp2dr7FRdzwo7kA7iAo6/\nU/pVuN2kHlBSxxzziqUTyOp2Irnk/ewq0klwypguuf8AY6HNdCi5PQlVHbl3ZZldLVDulG7GNq81\nQnvWkHlicKvUqvU1GImddxB59xU/krvCJEGbG4+341ThGPmO7W+5WQIVypOev0p52spXJ3E8Bhtz\nUywxvK8TIQQM4z1pxtEc+WrHpkBuahtX1J0buyILEZuBjC00xuYCGJ+/nA9Kd9lILKuc4JJHoKb9\nmmJULJ98Eg+wHemlbVMaQjAuxkK4IUbR6D1pQdzJu2t82Dg8+1MCzg70IJOThR7D1pkkrICXXhe4\nHU+/pVq4PQfFmQN3O47vUmmmH59wd0c9Tt/pSO+2ZnH8XJFSq6vgfh9KLPoGq9CBWZZNjOGDHG5a\nmwsNwCGO0nkYwR/jTZ0jdCrn8eAR+NQNITGI3lDYBwehpRldOMiJK2qJbuNZIFUjaSAQ2TnrUa3j\nmIJIrFwMEkc1WjHmknEhw2PvZyfpUxtCzKjkoXO4BgeP8KpQVOOrKcf5kJw8aoWIAbkjsK0DKWhc\n+WgjXChScflWbtFtMY5fnUkheecf/rrRhZV2rIOAuCD2981NVtRvHUGNunhktUxGI5V6jpnj1rM3\n/Z4yoYjAzg8/lV26u4Yygfa2TgBRkj61Xus3UcJiRF2sDluNwpU72TsNabrQUWlw8Hn5AGCyqBzg\njr/OmRGTdseN0RApAYctgYz9K0obtQ2yQAHHAJzx7VXvXSe6jaJARGDucc89uKzWIcanK18wd2uY\nptb7XAlbBY52jritDzTsJ3rGX4GOuPQVAdsqmOKCOWdurHI5x69qz45BFKXYM0g4+bqDXSoubuOM\n3VfvG2sKRJgdOpJPJNCkkfLGcDue9JFKkkKvImGPQHnim7i5+ZdoHpWD0YNCSLuxvXI7AdM1VmtR\nn92Sp65AqyWG3hufftSZ3g7cKcckdRj1p7gZxaeAEEcYHUZBqaOdGzsBBHXvirRxk4yS2ME8ioZL\nNZB5iMQfUdRWin0ZLT6Dkk43KRz1APFShxtMcnCnofSqYEsJO5dy98VZiKyDDMCuB0/lRZDUk1Zl\niBnUlMgkDI47VDcEs+GOc9AeKiWY24VZMDDYHPOOhqyUWZleKNgp65YgEVG2jDVPXYqwuq3GdpMa\nH5iikkt6Ad60b5pmiOzdGMHJHXH0+lVLiNxtMe8qeSQOBzU9q0ElqAcEBiW3nOT/AJzXPPlUrsIv\nW5VvCY7fbHKwjT7hYDhf85qOB1jDmORnTJJYZCk496t3KxZ8xlLIpLE9cL0OR0xSX7NHAyMRIrDa\no9fpW8Zpx1OuNZKnyIrwuUDIId+OcDpz7VPHJhN5wMHntUCQPGwULnGCobI3H6iiWJ2G/wCbb3B5\nwfw60udOVjlklZjYh5krkAFmPXNQFt0oXgE9MrjP41KXKrzg/Q8f40IY5fvBfTBFaR6kx1ZLBAHO\nCTuB57H/AOvUUs6xTuoyNwy3qD7j8qcWFpglwFYfdPB+ooeUTnJAYjoSORT5NLm/s9OZrQLZZ5YZ\nGYqYgdp9c1YilVBtc7mHAFV/tapKEztDHHPSk2TfaPl7jBNQr2Zmk766EkbxSO7JGVbGGPrUkH71\nJGmALetRIpD+XBw4OGBFRCfyJTGedo+bH15p2TV4gr30EMLo+8HCqTg+1aEEiTHy5dvTPvVdJUkD\nE7sY+XIwKguEkLKUlkPXAxwoqmpMc2279ip5O55EGF+bKg/1NQymRGKThg3TG75auqmxh9eTSNGt\nyxjI++hOfRsGmpMz3Y2CNlQIxJI/SpisjAhUXgcMAB+eKhtt00YRiRIgxnvVhmmXaz4PzfMVGOKl\n6yGlqMVIpFV2RlzwRnODTlSNANsYbmnoQ+5cYOc++KVhvJduWI4GOaWuwCLhWyoG0jqO1P2gkcg7\ne5/nUflKSNpw2MZpm1wuFbt1A60XC5YEalt2/p17Zpo2LL8ozg9+9NjiDqGYkr296cIwAGDAYNG+\ngK1y2Yywy4DOexHArLuYEic7EUlBkkjheewq2JndymTwOabOga0ZO7A5qktLMPh6kVvCDiVRuY/d\n3H074qeeQtGzHKuWztPGc/pVe3MiIQy/PGTlfWrvDHcyhSBtGecGs3foG2jKjoJS4jbGGyEx0Har\nUD+WghcZ44zyDUTRDzVdCAzKQVHf0pI5g7+XISDjIzVp6WexTbas+hZWRVmUEdOn0ouRuhO4bXU9\nex96Y8O4ll+bHT0qYqzWw3Plx1wOPwpOSRUnBpSW4+WXMEUjZ5TDZ71QtsfaXXnBHFP8yRUIbPTg\n/wCFIgLMJFJUtgHBznilayJjorE8h2xFAhJDHaM549qcWH2kNEzBXGCzdSfSgSsGV4l6cHnOKQFp\n5S20sqsDx2xVEaj4pJEeRBGkc6DgnuM0yY+YwgDbgBy3rSysz7/kMmRtXB/KhAu0LtY5XBB6cVOw\n79yF0uAN3BZzwPb1psbSZyU5HBUnr9DUjyl5lDtiNW3MO4HpUowsS7eUqm5WRV3azFWZdu5WJI5K\nuORVhJdqAugAPJ96q4ym8r8yEcjutDtlSQxKjqfQVLjG+gtGkTMSHLxg4ADFfam/aDu34zz36VHH\nI5WMlTuznPcj3qTKxSESMpiOTj0+gotbQd4xdmRktK21QTnkH+lWIrcqoDZVhwcNUCSyvlkGxSeP\nXFNKyOuXkCqT0zzjNC13E59IqxPvhjJCrvJ7moTdSy5RfLRT/dP9aTyUYgYJB684FOaONflEeSf4\neMDtVJxWiRPvPcQyJkAhnPuc4FLGCOR1OSSf8/yoXC8hdnbHqRUkSA7SOx4IOKiV27MaWlkAjQqM\nAnHrySfrUvKKxUbQBznpzTJyAcowz6dGFVbhW8k/KWUEMQGPIq7XsuhPNpexZkZSqyKSNp4YdcUO\nzMw3HdxuGBnNVkXaA1vIdpwfmGR75qzAhSQEgZVTwOQM0ppK4t0iF3d2JZCCevHSnLcvFklQN3Pu\ntSxRqyyNOA8uc4PIAp7QIkk0KD93t5x2Pai62K93bsSiZI7SZx12kZ9ajiVBAHkBZyOlZ7SMtuiZ\nydwXA6ZrUDJFHlyTgdMdamStp3HaxDHAGO9wy5UA56Ukjq86upYAcYPAqdpxKfKG7b02oOaTeiRl\nmQIP4VODn8KV2tQZEhEkhlkVXboo7CoAvkTssoKrIDjZ068g1IZppeIoxGpH3gO340fPHxufJ7sc\nmq5uXccakobE015CqhY13k/Kn+faof3k6EMGCZJLEbtzY4oSKQsZF2KCc52+nepCzDgHPPBPQ1m9\ndyHJsa58q1WFW+fALGoxEBtMmMjkD2p08MkDIzrwx4YHIzTYXWSSUtIU2jAPStVe2hpFcqbiTiFN\n7xq4ZfXGD09abAsbFklONp5Yd6V967SV+8N24DGaWMwHOCCe47ipI0tqO2iQ/fyegPWonuPIdSeW\nQjPuKUrGzHZwR9Qaq33mMhLDcB/GDn8+4pxSb8mUrfItpMPOUg4xnH49qap3syqCNoxs9KrWX+kQ\niRTh0ba4+vSrit9jth5hyfMB3fiaJRs7ILoVoGiC7gvAPyoc4HfBpNyshPDPtz0GBxUdtdNMS7Rs\nzP8AOqj8RSyAwEI3D/eI9zxWXNKL7jTjNaFbyhLArjjIyCR1qEQOPnICoD1Jx+VXTBIgXYyqOrs+\nePpVd0NwRvbMagY/2jXUrSdxU9HZsptJhGKqrkdCR3qJmLIPkXd65zWmYN6qpKxQoecdSaqNbGSJ\njGpCA/Lnqama/lCSV7odHbYAcDpg8dWNCXbXM0gZXxGSP3vtSwXDoERjynAIPFEkjzKNwLKSS2GH\nXpRz3JUpS0ZBOyStuYqxHByM5989qPM5SPqp4G4+9VvOHnGM7iSoChV+Y/406S0dFDyJtIOQjDnj\n1pztZIG1axoWtrEhllmiYSdAxH8qqie5tbxQEMys3ygDBH1q6twlwxMZDN/dAzgnmqlxM8e8pHyv\nygj168+lNXtoa04Oa5RWeXeQQVjL5YY4wOuPrU9w4W18wrGisoLEdKWIeZtErMGADEduajnmhgSS\nORAVkATZjjrWMk+ZNIwlHWzK0dw8A2sAEbkEnKkfhyKhVZWmyq+YnXJqwoQxFQgAjY5A6+9LDFth\nLriRRyeORW8JtJ2Ropci9RzznaPNDRnHQriiG4TzBEWOeqr61Lb3iZ2tgA8bT0P4VXu44t5MeEA/\nIVCaejRMl1Rbk3jjJ/CqxbBOfXr0p0cm+PMbbsd85NNYkHKgliDzUpDJRJwyhlUZ4P8AepPM2Nlf\nlPcHpiq5ZU+bYRjkE0GRlHyr5iZ5p2FcumSOUAsmG7kHtVWWPyixUnHXcB/SmJcBGIU4B6hvSpAQ\n4zHg4GTkUrNPQLpj8LOjDA3Yzx3oju3jhUbiccc9KrlniYMhJB6GlZ/MHHHU496p9y4ytrui+1yb\nmMxSfMcc8/54qDa0SgKAUU7gvQYqHJBV8HY42k9MHFTTMGXYuS7nBOeFWomlJESs2+iFa4hdDtEi\nuQAQ4+X19eaLeASTNN34IPqKjCg7vmGSCzAe4xT7ST70O4qVGFb261nUptpqIRaW5ZyY49y8MjDI\n7Mvfio7lzEj4yN7ZRscGiVN74DHBOCc1HczA/IuNkecVCpczu0U5dERRWwdfOlyzNyFzgCnGMAk7\nFHHAHBJp8bKI9hJyowDSIEc/cV/fNdNyI2WxQljja72yFjJjnPIH0q8FiSMbMEgYyfWlvLRZo1zN\nIoQ888VTUhCqI5XPem56G0qrat0H/ZzP+9KKqg44OTU0tyYQCSGXuetVgJlJVTxnJJ6USKElG+RS\ncdD1qY79yH725OskkiGUgFuRuH8QpLeNRjPK8ljnqaJXdtqxEmQ9BimbpSreYRkHacdzVWvddDWM\nXa5cu1Kp5qsTgZVCeMVFHLvjEhyM8j1pgjcxL9omwCeM/wAqdKSwCWsTEDq5pLyE5R5bPfuRMGYc\nZJ7c/wA6csYiCgHkcVnTalISUhAUd3NVzK7AneX44Of5jtVRMEtbs1G+WcSrgHv7iny3KRAlpVCt\nwQTWOgeYlgcAnlgDzVz7KqRcg4Ix5ijd+YqJSjEqxK11uAwC3BAYChL0BlypwoI6U0SrFbqjY+Xn\nIPWrqwwrbStIBuzgfSsp11BXsU4NlZbrMWGBJ6YFK982G2xrzVaCDaojUlC5LMQfuirAjiVG2YCL\nwWY5rZVIyjcz1W5NFcxSxjDFAOoJxUsbRhhJ29Cay54lSUEgEN90etKs88YGCpA6DbxUxfMtC2tL\nGs8jouVX5yc0EO3MvccjFVIrwsMunPr1FWA25Ad4xj+LjNPVCS7IlLq5b1PTFNgkD7ww5NQM6KcG\nQZx0B5pn2qLI3Z6ZDHvTTT0E1qaB+cZLAle+MEUm0HrjJ9KqrdqSSHDgngjrTxdop2k8Z7Dv3xSc\neg/QkimaCUK4JQjhvSpp5gsf7vAZjy2Puj2qibyJ1OB+BOKje6dDkbHBHKsODTVpOzE7X1NGKRXD\nIT+7YYwTzUFu6QytDISFU5U+tUjeBY2dFwQOF9KYFupl3gEqBk5bbmhxtcUnrZGosojBKkhG7nin\nW7CKWREO6NgDnHU1kTxyqkUjZ254zVZLhoJzyQd/3hznNPoQpnR/LuXavIyOc8elNkmSJlikYllU\nnb1BrPhuppIUkaVwXXIT0wevtUbSmBd2ASx6uetTa/maO79SzPIsdjnf+8c7tvp6VYs2k8sOG4I5\nBrIzJO+6V+pHFX4Z0giCg8Ad6vZWNG/d5S6mSxXjpSxwIyGUsNpG0IDyfrVD+01AO2H5v7xbAqvD\neXU5YByCpwV6AAenrQo30RSoTnFyWxt5CYbGOB+A96qEpJK8zPlB8qqPTvVLWJZ54reLcVVSFlEY\nwX596pws8uFiXaB8vA4FczpyjK6ehzaR3Oj80ZC4+Y8Bf9n3pyhEIaRt75+VQOMVlW7/AGXO1t8j\nH5mZug9qlF5sH7wux+nFapaGivbRF5pjswABkHkDBA/GmZUqMJwPvEetUjfZG1UBI6n0FIb4OpIz\nv6jceKE1shbl0MrLuDL6DjnNSRuVJUgkduMiqX2yNn+bPXLFVpwuEZN6tkMfvAdD707D2LrtlTk4\nA4B6ioIyeSrZI9PpTPOVhlTgkc9iKqT3v2SVZ5Cxj/i9DTXYlNX0NOCMOxG0xsBn/eqzbMhmkiJG\ndm78M4pzMrhHV1c43KynmqF9cfZ5YLot+7KGNj9cj/Csknzb6M0snoi0I/mDkgMfmwP61HLKY4Wk\nQ/PIxWMZ9+tR/bYltydweYkYUE4GOBn8qitpkdVPmAuq7QRxirjDl3IcbB5QQoN+5k56dzQWaZwm\ncKOvP8qsJAJsDZuTsDxn3NNuY4LVgnlpvx0ToPwpqpFvlW5PLNu5MsqRxHbktkEKOc01XV3wCCwI\nLu3RarxwTzniN1Xuc9BT7qaO1litUOZCdzbedoFUkrWNnyQhbdkrziG3UrtZ1zjI4wO/8qht4ZZZ\nPmlO5mVGPGcdTUYLSSpggDOSzHCgd/x6VOu2KORz8wxgknn0zj6VDjq7EPsiUSktGdpDkEYxyKRd\n7KWkARV6KDu/M0OWjkGxV2MvDEdT6j9KaZN4EV1JJHjsP4h2o87DYvnZ+R8EcHnjNQzxyuQ8RyFB\nBUg/hzSksw2wLlQOp5NG95ZEjcMCp4HQVabQKbi7oniZ2jU/NhM4Dfyp24NIXZQGONpA7elRyRPH\n/q2bceSEOP0p8cv7oCeIL/tZ5P4Vk7P3kyVvsRzoQWkQ545qKzaZ7s7V3jbkg/pTzPEOEd846bcg\n/jTLaY2t6C44lXHK496tN8rVhyenIXViRTlhHHK33gOA359arXsM0lu0bA7TyrZ6Ec/lUcrSSTcz\nMIF5cAZ+nB/pVqKVTEsZJI68n9KyjGd+a5pyOKsldD7WTyolZAPMfGfYY6fnSSQ7m8zeWck5VGyT\nUF4xhdbdPvSLlivQdsVbijhSIc8kGs5zVN3fUxjFwdooiYJ5e31H8XFUYI0iwu8ttAyTwPwqy0sh\nAjRenRmGT07ZqrPi2KmSJpBnhT34xzXRTTjdFK8noWNqSJtyGwTnHAH51XiglhGxydh43YoX51Ib\nzIyuCVzk/wD6qUMI3IjY8Y/H8Ktsak1dEFzF9nuEc8wudp7Y9KitiJJo4+MnDHHGfWrc6/aEMZIV\nuw7ZqOKzkh8tpBiRQRjtg1HMrakaPckmgit3ikUEFRsYjnnnmonCs7DOTjLHNSk7xzknPIIqOTKR\nqifMfujnvWUo8zvchq9ijKkiPuVd/IDDOOO/TrVwPAzyMhPGFVQMdfX8qfKVWMRD6Me5NUvsyxoz\nRuQ7Hjn09q35rGsallylh/NhAmRi7cAqfugVQdmmuPMmcEk4VAPlX/69W2E1y5imkG1QG2quOn/1\n6bc2+Ytq8MVLZHYjFOJUXGTXMWoUBjjyxDLkknk81BI6xS74yFbowPQj3FV4bp4j5MvGPut6jtU4\njSVXySoYbTkVbaSua1KKitSOWJm+eJUZT1UnvTTk4WXMZ/2lyp/Gp1kMKCNxyOjjv/8AXpquXLD/\nACai82zl5+gW+EdnkIyRhdo4H+NKWOQcA464NMfO0qMYAPTgioWMisduW44JP+NVa417uhYG7btD\nDgdAM0ErnJVlzz19KrlgSckpn34PrQ00sIGWyMHt0qeV9B3sTmMP3zzwMY//AF1EFaF8/MB1yeR9\nKlimSXBwOxyKnVW6gjP91u9F7rYNHuVxIAoB+71HtViKFZMYxlhwfWo2RQNrDr/Cev4GoUlNsxTJ\nKh9yn+lEJKd4kTi46omyUDRucZPf2qvK7RCQj5nK7V4z/Krc8iTAspG7OT/WqbF5VZQSoCZ+Rufx\nqYJopvZ9GOtFLuEY89mHTmnR7kljkPXOxx/n8KgixFMuRhenBzg1aJ/fyoRnI3g1o7qVzTEwUXdD\nnmKOAM7tu4fjUaRNK4UE4HPJ71GoMl4GzkY207zjDlec9D70pavQWyVt2SyW5ztyT7ZpgbymXDd+\ngqaOVBEGzk5zgetQwqJJ8OQMnmpUnq3sJK25P5rSBUYfKecDvTG2InmCPac43H3qaR0RAqKAelVS\nBIjvK/y9No7UJ3iVFcydtEiQtGi7EILEZJBqvNAqncMbv7uM0wowA2fLVy1liMBUttcY3ZHJ+lTG\nKW7JpvXQqQPMOSMk9C38NTrdRurKBv5wQB1pzplg2MbmVUBPaqfyCXzVbrw6nsa2i0jqUoa3Ftnk\nM0qg5CY+90HNW2zj7oBPof8ACmq+xSPLAB646n8amWMXTmOBiZByQRgisW3fQ5pNN3ObjSUxK/l8\nbTgg5/GlRPPlEaFsknnHP51evYXiuJCmY2c5YqMZ5p1oh86R9xD7WIU/dNPn93mGtB6Ryou5UJ4+\n8rc0q3iEmOYbSe5X+dQxztNeAgMrgfOQRjH0p91GGwSAG7Ed652pOS5tybOqrbEF4SbX93zJE2Rx\nnctTi5MgCk5UKM88k9azt375QMuO6irjwMU8iTcgY55GMj/9VaqkpLUulCovdmOSZWdm3ErnAPtV\nmNlnGC+2Mck/1qG7s4VtsWpEfTZhclj6VAkTHdHI42Rtjp1xVOHK7Gk4R+MddXIubtGjBMUfQn+I\n0159u1FQO/pUJuUZzFbK8knQtt4FXrGAQfOxBkPJzWslFRtE5m2tWRwLK8v7+Lao5JyeKsnYSQue\nO4pZmaTj7q9yeKi3KCFXBI9B0rPmk9Bq/wBoVlAXJU9e/wBKhbIH3CeOB1FTrG7YwpUk9cU1o2U8\nzD7p6npSKuVSDG/yHy29jT/OYIBIEwTnIHIok8sqdsoyB8vNSRJ9ogJQBh0YA5wau+gaPcYwWWM7\nSA3QGmo7s+1wQ4PHHUVp2L3NlB5IZJF/ulQp/OoruKN2EsQwQN2w8c1m5pslr7L+8gs0DXarNwpB\nyT61pPciCOWH5vLcbcbMge+aozAReXMoDIWyc9s8Uki+ajhQVZRuGOhqJrmnaWxpGFoc/QlLNPBL\nEAWAy6/lzTYrV5dJWI8PMCzAjp6VJY6erW/2ph5kjAcDgfjU6Sjz8OxA2AAE5wSfTtzWM6mrUHsY\nqMW3cqTqbIRJ94yruJ9OelQhWdyxBBPdh92teVQSnCGQDktzg57VV1GWO109HuGLtISNucFjmrw+\nJjU91bhKLh7yKMZL5BYAAj5iKjuXKyRRfKWc8j0FM85kQEAeYRlVHamInks00h3St69q7LDuraj2\ncpL0JC8gZ71NHOVfajxg9QCTk59fSoPmYFwCRjlmXr9KntAojPmMpl7ZPXjvVt8sbHTLEtQ5UgEk\ncuFuHG5OArn9Qaak7ohGX8snhQSBUsjW6p5jhJGwQOBzjoKWO3iWR5V4V8EIxOFIHT2rnnK0dDmn\n3Ytqwd2iWJDK3KYPb+VWTCsX3ndCOp6UtusFqGlSLZKf4xz/AC4pxO8ls557jFKE5OPvFQk+XUhC\nRsVHykMcBgMDNO8sc7cgn+HrStjBwC2RyOgpcgj5Tu2njNO476FaRVQgPuQZ4YfLgU0yCJsllUdC\nfX/Gp3jWZAADtY4I9PaqflyxyCNwGQscEYOP8mqixxV9EX7iyuo9ssbruxnb0ODT00+eWFWk2EOM\n+WWw35VJbFwE8x3kjVAgwMHj1FWmj2rksYweuRlc1yVK0m9NzJL3lzIoK0lo6I2QhOwg/wAJz1qt\nfRCWQxu25FlDMFPB74P41auZkeF4/tEMqgfw/MV/Cs+MNLchoOrqPv8Ayjg104eLtaR6FBUuZzm9\nhX8uNSscjxozZk285H/66nsIw+otKqstsqlgM8nNQX0MtrcK0jCWGT5W+TBDVO10FUWkLkPJhNyj\nJUVpOMVp0Lr+ylHmhubL3MmcIBGccbhzipobZCC7tvf17VWWNYY/LJwC25nJzkn+VONzGxGSxA/h\nAJzXOoWb5dDzZTb01Lfn4BSPO3pkd/pWVLC5uGmTLb8bijcDFWMmRgQOv3V9B7CmsisuM5x129vz\n6Vso8q0ZPxaWIVOWC5UAjn5vTmp1Zdh2BS/TaR0qFUCsducdypyBxT0ZvL+Vidx7kAfhR0LvvYnc\nKQAshkUjHTgH0FJIzTXTNxvHy4I6YHFMbCj9ygRjxtzk05/MZzyU3DDt7+1SPyHxNJCzoflLcnJ4\nFRmQCXhSx6jjpSTEEFU/eMOM1LZzRJCwkUByfvdeKG9Lh10COQ7SdhbjlmqCSTzZgojGP71K0q+Z\nxuSLPB9acXQk4+UD1pq29hJl4W6wxZAZWPJOcZrNnMIcLIzRt13LzzU6M05VYi5A6s3SpVtfIDuj\nAMwwzY6Cs1Lkfvslau5VkkcxBopIt7fKo6598GoreS4jaVW3AhC2Co2k8c57U+3MMd6zsMyOpVGP\narE0Ylg2dAw55raL0O+NdJcpEl0bqONgrS5w3rtA65qSNY5WKRhoj2Kycnn3qSCLyDsXLRjDAZzt\nycH8OabKPs5SVcPDJz8vIBHt1qGl1OarJSfu6DPIeNGmz5hT7wYYOO/PekJL7SSGU8qXp73kZRli\nZt7jbgjFV0UmRULBiB6cU09OxElbVMllSNSjSE5Y4weefamP5iqAQGA9e1CoGjJjLtxkDrSFsqfL\nQJk5+vrVLsxrVkUbDzUzwAe/atCRnC+qE4IxwfpVOeJWJGMbRk7Oakec+QvQDHGRWLjrZGc0rXGM\nPm3DLL0Oe39aaFIGxTkqcgfWohKQuFGecn3/ABp2biUHaY/cAY/WtLfzdB2VxSOclCOenpTZQFur\ncZGx+n40oaeIESRfKRg5G4fWoZm3w4zyCCD71T5ZDSuSN8lxIcZJ+XH4ZpPNXzA2MqoweOuetOdl\nkUSgjlefr0qrIR5qRJ8xHAx6+tTFNaCStG76DcK8iI38JxnHb0p7oxXcDgBtuB+lTJaHy2L/AFxn\nknNPG2IMgbzFbGQevBqFPmdrCdRyRTd5PMRGQsXO1SO/1qV4TFKFcFX7D1qwkhV+AMoeMHpSvIJY\nWySV7nPOe2BT5JrWLKikiu0i7SCoB/KoyVU5VQRj161MULDGTuwDmoDGUBHTAyQDiq5nuD00AmLg\nEbRzyOh/CkAVBgkMh7VHcOYoRIFJXPpmrlvDEU3yAhMcsoqryWoOLSuUTCYX3RH92f0qzBOUcoce\nqjHUY/8ArVM1grAyWtypHdScEVUKOJAZOcZww5GfespyUl5mbXNoWWdZEDBhg9j3qrIpA5GQemfe\nmRmKGV+Gw4LAAZA9amgngMziZPMKpwFOAOwJq4xT3OimqjXvbEMRKP1O33pzlYZwTwjKF9PrU93b\nxLh1YRv0KjlelQ7PNj2ZBz0B70+a0veIcV8hWQFCASSPTn/PNJNJueNtyKcYY5zzioLZjueAghl7\nGpjC8sqeWBhQSxPIWm7Jg29mFtgEMByOOKjcl8l8g9watJCILUAsGaRzjb0qSewEgVmdo8fMFbow\n7c/hWbq2d2F1fQpLKq8E4qVHBZTt49+c1BfRvaXRtyMFgTuY5zx2NIXCY+XAI49TWiakrouEVJ2L\n/mRZJxt9CKjkuDJ8v8GehxTLaxlmj86RcL/tcVYWCGMk5DY9OM1L5YvzImlG8IMrsSR8vU+lNW2k\nBxliw64rQgVA+doJH95j/Snz3UajYiID3EYPFJN7hFcpnzx3Qg/dKA4+6D1qS3sRGTJPJ5u/5nXG\nMVJhsKxTYg6DsTUwnJClkLKo/vc0pydrlSbY6Fd0K/uQcjaAzdBUF5cyWbbiMM4AJI9Kmkd1LFQm\n3Abk0+CWXbuiHB/vCuaVVxlzIap8xyiXJk/elmZsdHPStOGOaSEfaUIjIyOOBWdJbSK4YozDqMda\nuw300duIfMA9ya3rXcfdJtaTUihcMLeYSRSFSDwRziratLcLnerE9QF2ke4pwtI3+dwZRkgkLxmk\nnWcFFQcIM7ScDApxqwk+VboI0+XVsgsYVhEyklZi3zMRncPakurt44THKxZ0BPynknP6GpI5PMnO\n5QEAyTnPNRXFuoCzB85HAYcEetaqSejOujUjzJzHWd+Hg8zzMD5gML8xx0H/ANcVZt0RgSyF5G5w\nfmP/AOuqUNq8EyySOzkdAq7Qv+NaJuFLbWaZG/2RjdUzs9LmtapCTbpoorHJZrtlhkiVjkZ6H8RV\nmOcgYKhFP5mrSlNx8wMR0C5qO9hjnlWYEo6qFCbcL9ayUm52vocMrWutwLx7C0jjHoF2rVaW+CfJ\nEuB7DrVSaQ7tucke/Soljd/4gP55rqUNNTG6WxYNzLKQCz5ODjNOCY5IIJ5znPNNSDOMyHG3GDVq\nG3XeykbsDjJxk0nyorV7lF3VOScAdhWppcflRNKqtiU5JBz+lNEHlyACONgPmww5z/dpguJIJRDh\nncqSw6AVjUbcG4lRs3Y1BckDaIy56ADGPxqrdXGxWDxumeCVwRU9qSQJCAGbOPep5Y0O4OBnNcMq\nsotNrQUuWPQzomWaELuDRngEdvakEosxjzCUxxk5FQTx/YXaaPcFOcrjOTQ1vKyrJMNsbDOG7j2I\nrtim467Fxj0T0Zo2syLbMnLoc47cVC3lxSrOASpIXZwPxJqnIoWzMdu7edj5SzZX86V454zLAz7w\n8fEg/pWfsbNtdSY0OWV3sbMLxNG0mRu645NZmoSQzFZJJEBQjaTlhn8KrXN4c+TEuI8De55J9QKW\nBJpzlbdggIxkYH4VnQoezfOOpyu8URxSqWyu5yeSxGBn2qY+b1jhJJ7kcmrHmGOVYpRkkEuF9RUx\nmj+YyNgAEksf0FdrqswlF03qiiI7qVufx3Hp+FK1pvBwz70I/eA45qYzZGRx/SoBctbyMQCVYYIY\nf1qVKUnbqO9tSW2sFgIeVWk5+8TWgWCTPsHyEEEc4PGQf6VlJfqpIEbIc/wnKn8KnTUHEfESPzgF\nT2rKrCck0aN3lzMtB0UKQGUHupwR/jUTTyZBVST7DFV/7VRnAK7XHbpUTTyyctwfTORWkKcre89R\nSmlsiSW8kVQUGCPXmlsPNuGbewAyWwB1PpVSV+VEnGTzzwP88VbiY204k5JKgc45FXy6XI5nzF25\nV4osx4D9ee5qtDHc3zIhKKcZZkPJBqS4mW4Rlj3qCOeKzLV2sW8u2RnDN85YYx+NTFO3mdcGlF23\nNcMYZViIZJAehGNx9q1Y3xgsfNb3XgGsW7kk8tQzNuIB6kgfSrFpcqsSqsYLDjB7f7R55rGceaF0\nYNc1myhfadLHffaFwA5JxinQu9m/mzbowOpJJA/HpVu7vBLGyIeOjv3PsKgsbV5becyMRubbGo+l\nbU5VHG00VeMU3HYkubpNSjVI5N6pl22JgDHPJFI1sk1wq+WI5GwwIJGR3p9k6LC8DqIzlSNuP+Bc\ne9XTIY4mWHp1O04wK5J1+WXs0jNzfoRwqsHEW/AGQsg4P41ctTFO7CYhcLu2KSOfrVGV5IQirg5C\nELnDKMnp2PFEt0EjDLcCUAY2uoBP+Nc8ueNXmi9DVJyWpbljJHyg7SOB1BFV2DcDBx0O7v8Aj1qe\nwCXdmJ082MglWBJ5I9M0hjlQsN+4L2I/rXpxS7GVmnYizyQEZT3wO3bkcGnEyN8+z/ZHPOPpTDcS\nfwncgzuycChZ2YgBjnkj0+uaodm9yfKg79uB7d6C7tHtUFVzjkZwfSoTNltijK7jyeMn2qQuwATP\nOcZPvUt6pDjqSxpJEpmlXBwVBbgfhSS+U0isrq49h39aV2WUlWGZNvBBxgUyLy4wlqSNxGR64HrU\n+fUN9WPWVbnGVyEBAx3qtMxxjoCelTIy2odUPVvu56n2p4iE3mea43E4VCMYwKpaPyFotSSK6jS2\nccqd20YHao5r03BFvH8kYPzseSc+lV0URuAOV9R0FTgpJKuwEBTvZlAzx/SplSi3zMV7IrvFtXzi\npBx8v1PSrttdxyiNG+V/L3EHu3Q/rzUfDyRlugRgAD1PJ/nUJhWRBuX7p/KpcYvcIyfU00VU5chQ\nTu3nsSPX61S1GdW8uGHBYPuY54GPeqap5jeWzMyB8YLZAz0/lTo4289k2kkkk4H86tQ967ZSaRNC\nuCysSVx6cg44NJucxARHcXbkY5H0p3LKSOpUKMnIOP8A9VHJaMSHylXkFe/tVMNmI7Ku5Y423sAN\ntLn5Asb7hj5lK/dPpQBIWZ3VcEgqY+tBLSxnavHVmzyD9KBoWNI/PBiDqi8sPeq9xIGkYnKqDxUg\nbAKLN8394cZotIvMny7dB3FRJpK63J0vqOtosQliMZGMMMHFPeUgFgQqgEgCi4lY/KvzY7f4VFF+\n8gK9Crcg0KDteQnLWyJBcOvUhugx68c0klvFcrlP3b9h61CQVyMtnkkgAf8A66ep3En7p4Uc/rVc\nqYk2tSkS0DmKRcegNWbKHDNcPg8ALn170t+nn26yY+eMjkDqKgjn/cxgljtGMDv3oldqyHJcyLEs\nkrt87hVB4AqHy+dyB+TtP0qXy3aAzKQvsRT/AD7iWPaqKQB+tHN0QbWaIR8ynyiAp5Oe9EaBFxLw\n454P8qFMLAIE/edCuOac1q6yKjEjsA39DVXY29LMYrFXZWTHZeeuaGGZMEHJ4Pv3p3m7lQk4ZcHk\ncj1qSVxNtk4B2849RxQTdt2ZWyQGib5kYA81NYrs3xlj2K5NVlJklx0wo/AVIRIJlMHzOOOKco2j\nqbSg1HUsTh9pPUdfujNZ8s21o4mABY7QYuprTDSsCHVffaaybmJIL+OSJvK+dTkHndXA+Vzt2M4v\noi/FatY2xk3Df6uuCf8ACs67lNrdic2+VlUBgnf0rRYNN5a+aspZiCM/dx61ViidiJGmaRc/IfQ+\nxr0ISjY66NSMFeSuKkfnRl2D887DjHpk1KwQMwIXGM5jHH5VJCpACyYidTtDBht61XUuly4ckMGP\np+YrOclroYzbexE8JW8iuUIO1huxzkVYgmWKO4TGSHBB9jzU7lGVJFIEidTnGR6GsS41KNU2oMyM\nMfL0zmnC8tkYr3tDThkTETMAfLfJz6GrEUgM5VD5m0gHeeMVz4uHlOF+UN0yama8+z2wjyw8xsu3\nfFFaDauhvfQ0pZ0kjd32SMBuLY4RulU7dklmBbL7Rjd7ConD3tuI4w4jznGeMVBLdwW6GJnVMdfm\n60nCUV6g9DUkvxOVjQFlU/LzUilsA55x0BxWbbTL1yMkdvSroJfgA9OinpWaQoKTeuiJmdlXam7n\n36mkUBQQM8YycdaQRMXyRjnI3NinlGIx5kar7cmq0ZorN9kIrmbluMc1NMRa2yySclzgn+6Kr/u0\nI/eu/rjipGmjkQJ8uAc/OORinK0lZFyUX8I60xcuV5KrwN45+oqa8kaG2zGR5uem7k1XbY3AnUN9\nKrzKUf8AdqfNHDbiP0rlWHvK46b15UV5IvJBjeZjnqA1UXjPmxvAmSGznH51DMqq7eWNxzjJyc1I\nrSQr++OW7npj2rqcW1ZmV7u6NM3ERZEBO7H3R1pk1n5wzn5vbtVOOWORlaNlA3AMc85ParhukTks\nAo6g8Vzqi6KutQn7zvEqXMcrIS8vTITjGKhWRTu89yzuoTJ/hpt3f/aZyUAKqMKMYqOG3Z1eV84x\nhfet6cHy3e5LfKzaRFITPIYZB9DSzkfYpUkBfAyoJ/lWbatLb4jjkDrkjDDOTnjH4VFd38ko2qgi\nThmUDr+dRGnKTSZpKcY3ReinEiYjk8vB4DVZFluQvMyMuOcn+tYsI/e7S2x8ZBHRq0hLmIwSM0R6\nZHINTUpzjL3HoTHlS1MYz+ZcSCMMIlPAcc1ZRsYwcY6GkltJlbPDL2IOaYu4EblIINduyM1ctIc8\nE4OBwPSozdyx3nkAMh67yM4FINw+ba3qeKlWQqC7xLkjAJ4IFZSe6B6xZbE0zo3mDZnncepqOWYS\nxsisZGBwwbjApYpDLNyWjUJtUGpHUJIUCqWPLEL1rFNR0bJV1qQR3VxCBlQ6jjBNWjqJ8rAVx/sy\nc4/Ec1WmuRApbBLZ4A4/On6fIL+M7olyDztqlZrY6JVXPcYLkSTfvVDKQRxxg+tIhuWXZtyR8ikt\nxTrmOG2O9WwQfus2c/nTUZpp4nhVEi7knrx0q7XSt9x0Qioq6HmN4LsNKV2KVZvXI69KcsgvABbR\nhgMguTwFHPT8ajv2RbLa4ZX9QQCRVOz8yznkRwY/MJOxxgfX8a2tFLU6FTi6fNfU1Fs0chYJlDdC\nGUgZ5NVFunVipYowOM5zj6Vcju2j2mYCNVOVVjksfbFU9knzTmIRhiWBB5Ga53CL12OCtDlfcu25\ntlQszMxPUY4NRahNb3VqYmQiNckcZGfY0QRuSNsSz84znDf4Vags8Ahp2T/Z24A/CsoTj7RamEtb\n6GLbrIqcq4j7ZqZSwbIPXvuqrNI4unBx8rY+XkfhTo5OB8pz7KDXoNdUiY3SLZXK4fHoT3HNKIWR\nxglmIztIqOO4TG3dz6dfrVlXUplSMdx2z6e1KVpFbbDJIY7gbWXLdmFVEM0Dsm7KjpkVfYCQEKWH\nJAf0Pp9KjmQzWzOn+viJ3L2PeslPkdmP4XboxhKyxkOmR7YpI5poY/LDBkXswyKBtKeYnKjhgfpm\nnhItm5k+btzwKdlexLVtiWG5M7CN1SFR1Ibqamktn8vdGRGD8qqOS1ZzKGGA+T6lsVs293FDbxhy\nWlUfMzDHNYV7xXulw7MojT5EASWRnJ4EfT8OKY8UcAJkIIA4RR1q1DcPLO9yTwhCxg9Wao2tzJcT\nyvwitxThOS+IbluG5vKV1EYOflUcKvpnFEV4beNQXDbQCSD1brSTxv5z/ZyG3nkH+dWrXTCvMzZb\nOcKMAVstbs3jKl7PX7iv5++aONo1B8tsk84A5z7GljvZjGP3S5++HYc4/wDrUkEJuryWYkiJeFx6\nVfeER26TbRtDbWHs3esZQjOepzSfKrojghmms/tAdnZs8xt8wb0Ipy2D3Fwy3LFAygq0fZvcU0W7\nQvviZhnkEGr0EwnQvyGU4df61lCkk22XeyTi9xouRbqFkLgKCNwXIFLK5cBkk3R44NPmRZF3MPmH\nTjriqiuYyNhPHvwa6lIyi+V3RGBh5Y24Ocr7ginJy4BOAAB+P+cU+5ZZI0YfK6NnnjI7io0fG/LZ\nPfAzSlZvmLer5rFiHcJmLMflGCCf0p7SFJgojyHODuAI/CowCVYbSCzbuTyRih5dsKI6qAG4P9ah\nb3C6XxEkkQGZiq715JxnApXaJlM65BBAwOppuJZoh8zFVB4xkmjJTESqcSfNtNJa9QW1iWO2+0LI\n7qoAXgE8Z9ajCl1VAAZDwWJpn76CTyuqnjpkUrq+wyO7bhjaR6Ua9GCZL5MMMhHm7I1PXPU0yOUt\nKyCIqD/Ee1OtkR42lmIbccFT2qEyBZmjjyxzwad76bhvdFhiAqRgkBTnHr64qMOSJVXg7g3r3pZS\nUCDGGBz1p0S7fNk25dmwF9PT9KcdFdjjJKHmQvA8MTuepIPXrjmrVwsch83PXDDnrTWjcsFY5Yrk\n46elRRlohtOCoOB3xUQle9yY6sa+I5so2UjG4Eg4BPP9adAUMIeQknHTqKRm3Eqz7P8AgPBNR73t\nyw6qD90denY1afMrXKTuiVVZMPGCAVOVz096iklliJyuA4xntmmrPMxEm0oT0U89expI4Jp2Z5f3\ncYOVANVza6m0ZxSd7EABjtTGp+bJYH1zW0mfJGMbSAemcVnvb+YhK5yo4IA5HvViwuFa3WInoAuG\nP9axq3TuY2TIZscseAOvGc022YpcYB3BhghuKmkQlmyoQn05qrMrM+4YVhyDmtk01YxtqWZkA7cA\ngcDtUanLMy5GBgbDzzUpcTYbGwk8kDNRICUyQGx1OMUi0Om5gl+nP1qrbN0GMk9qmlbzEMauQnci\noUimgIkCuyKcs2McUNaFwTaZYknbbtKMB2xRClxCpcqUVu4GaiyZW3iPAPSrUl2/liMqNwGMnrU6\npLlJSuyvsInMwOXGOCcZqxLOjwsvI46HtUVy4MKLtVmByCcjP5VSlJ2FfuEcjmqtzWY1ruSJulGW\n+XGTnmn+VKhVhh0zyQc9R6VbsrJZYRMzNkngZxSSJ5LHj5W4OOx7UnO7tHoKc29lYzG3q7bgyl+p\nx2rTtZNkG2IqrEYJBGahnhM6EsDkrjOKiiLwIkMQYEDJYjk1Tk2jaKdVW7GmqIrEtzjoCelQXC28\n/wAoi3H1xzUJErrwzFuvPep0kATZGjKf4i3U1zqEHJt7mLTW5SS28lDB5hUFs88gfjTrh/ssCeZG\nnlBdoaNhjrmp23JkNEkiHqScFaoXl7aGB4Le1JkYYZlBAFaRu2XzXK51YPLN5S7klxneNvSmG7iQ\n4jd/mJLIR8v4Vkx2Ugm3PIQvcZzVzzYEPlRxAsOpro9nFbMXNfSKuPuLvdEVR+p6A96ms4ooYCzn\nL4yfYVlXNuXBk37mHIA7Y961EiF5ah42wNoznjBqJyjBLXQJS6IR5YLk/NFuTkO+MEfSq9sxiWQq\n3msCVGOwpr3TWiuCN5JzkjODVQC5gRwwba/JK961glsEV3LEE8pmMcGQcYGe3vVe5heHUnO1CBja\nx+8Tjk4q7YJEImkiJEvQ7uoNNnRWOXh3t2fdnH9adRqK02NJyhJ2iT2knybd2DjqRgZpW1QBAIU3\nAj72eDWXsJOBMTt67RwPzqysDPhkcMRyMiuayvdmDauTfbrhwdsagH0+bFXY47ideHRuuCF6fSsc\n3QiuGhnjUSYGcVfgvAhHv2f/ABpuT7FJp7mqLKVyN0qnJxgpzTDpxcf6xfw6VPbXaSAEdV/hbqKu\nAo5AP0qSrW2M5NNuV6NGR6Zp7WFyV2llI9CvAq4+6M5B79R3qGYvOmxZCp68cVcdrid3qc9FD5Th\nVG6ToCcHmnu0axMznCKdvH8R9KdJcfZIJXIYSAYVhjG49qggtY3hiW4MjANuAVsA+9QpfaZoo6mX\nMH3u/Khm4ApxUiNpJBuCHBz2q7P5Z1GNVQBEXO33psqBYJ4xzkbSfU561sndq5UnotB0duFuc7Ts\nC7+FzxVgyHBZicNHhTwQKgRwI0Zhk7NvOcj1xTjKrDJII6ZzjAqEuV8rMZR0THRsY49uMjPBp7Qp\n9odOCjpkH2NRS7fIaUMM9AcioZrpkICfMDhd3YClGMkzWM6fLaQ+MLNZRhuJI+jZ5p5uzIAjRl5Q\nOStVo2yCUY49DSAkmQA/w5+taNHP6EpZgTtPfpv/AKU+2uhvKToWQjg45B9Ki2At5annbuUHoaW1\nKtKrY4YYK+9S2rWsUkazbY4gVxyc8frj0qtLKJwoaMDAOMDgGnzTNPM6kYOMZ9Khn3QxLDE2OOW7\n1jBNb7m6lGp7trCuzTYGNuOvOc1IJpELJCxLN944psEIRT24zz1qS0dIo2bbktwDVSijnmlfQpXM\nNywy+FHbJzmpLa5ktbH7PEGQucs3TNTpGZWLSuM9uelTyLCoDAFj05J5NTGpa/MybdTPZQ6ZkeWW\nVxgKOg+tJdqlvCigESRgPGgbk1rwRLDAZ5Mc/dzVNinlS3B6k4HH3jWsLvU2U2iGCYXU7FowsxiC\nuvXJxVsoiwST3CgFU5Z+u4dAPqap/YW8ncwImdSwwcFfT8aaLcykmaaSQIwHztnFRaXNboa+2Vr3\nFsyXaUR5CBwVAbnGB/CevNX4zIg+VhIhGCCNrL/jUaQSW8m+MAE8FSOD7VZCiZfkd42/untQkvhu\nc9Sq5u7Ftx5KI5UBmUK4HQnPX+VJdXZRMspaQfLnpmmGV4n2Tdz94Hg0slpx/eUjBB5B96mVCCeo\noy0utzMaOORt3liMtncAOM0KiNhmKjIxyMY471daOPoYhkHqOD6cGkeNA5JjJ6d+a3u0Srydys0M\nciH59xX0BzmmOs0LEqGPIyR06d81dI2kjeVKkHJGPzpwUh9vm4Y5Jz0PHrRd7jfmVFnZn4BDcA+h\n+lSxvuk3KfvLwQP50rRq/sRyWA6mmLF8+EJyONo7VMmpaNWYO6XkMVzBJggbXGHHY+hp5dGyu7qM\ncetO2bsiYBTnCk9/WoIodt1EBKArNgZHQiqUetiox5tUS2yyttGxcAbRvXIz61pRh4htwrlQRjGR\nQwjhADkBWJy/Y0BcFn2bcnAJPBB70r3dyW+fXYbDGsNzl8uvP3eMH1p800LqIomBB5bAIxzihgrK\nQ4bdnC+1VmRUcLnkrx7/AErGdOzuiXG5Paj/AEiSTGW28A+g61ceXETOFYkoQvHc8VUtyrCJiMgx\nsrDHQmpWLRw84AC4UDpWsJdEOW6HRReTGF4B4LYqQnzrSWIdXX8jyRTI5ARGrYZQAc/pTrZJEJlm\n4UggA9SevSlLVJPcJKUG2yO3bdFGHOHXGfwOf/rU55Nk7TR5XJG4e3SoQrFiy8D1oKHDKecggsPz\nptqMbsurGCiuVlyRyQSoB54ycVWdskse60+P94M+w4xTEw+UY9zj8aXmTe6uxkg3Y+UZ6YPqafgR\nI3zcnrSTH5i5OQFGR/tClnXlVJXLKCeemRRe9kir+ZLFBLcoJsqo42qRSSXRfEbgoMbcY7inRXMm\nwD7sf8Jx1FRgxo/mSbgrMST3/Kp16/IWzJrWfyjtR+OMgnk0pkZrjz0+VM85NQ3E6z48kAYJwRgG\nh5fLyUwGYcj1ppK92hyv1Y6S6RpMD5mLbhz1FP8ANMoIwcbcZ7D/ADmoYPLWZVPHmEY+lLPudiFJ\nJ3Arj0zjmjS9rFJQcko/eyTYgG1G4GFJHfinQ7Vcnrjk8dB6VFEGeRkibCBcM3v7frSvHtR5N5CE\n7Qv973pSWthVIOLte5NEGuJyW6DLNnoKhln3ykRsQijLEGmgSEFF57kdhUnlLHHsJBY8kelPqK63\nIZJLiJMqzFSORTrW53oPMBAJ6/yqeJhKrK3Y4NEoRUAHbsB2ptrZod9B5I3AMCORg46D1ppVQQF+\nYY5JqoWMQIVvlP8AARkfh6VROu2Su8YnVvLOGwwIU+hJP8s1EnHqNa7GqXMcxDZ2ODg/3SKRpP7j\nEZ9O9Ydz4qsbeMsZS2BkruDBh7GuZuvGN8wL2rIisxEabeo6jPXJx+FDmk9NROmz0JJwr9cUMoRz\nJFjaxyVrzWx8YXyXCy3bR3NuxwoxsZvUgjsPfNdlofiOy1lJY4pUWSNiu3d1Ht61M5Ra5WO1nZG6\nGjnQ+wwR3zULYYeXJyp6kjkUEhiG5DL0YUpkLACXk9nUdPrRFtENEW97b5gd0eQSPSpd25BhyoPp\n3pDnBTh1YcmoykakpkhgTgjpWqakS7oV8RsEZeMZyDjP+NWJJljgXacDGelV2VmjU4ztOMimKDJI\n6EsiDkZxkihK71NYwUrNMtW3lPGzHG/OAFHSoxKgm8tVy/rtoEuyH5Rk55PPNO3xRqrOxDHv3Oal\npJ3Id1Jqw22MS3Ls5Jbrj/CkuZ45dxIVR0qIQkSY8oM/UnPapFeNizBdgQcAcYqnZPnHJX0Q6yma\nOIIrZC9j1HpmmXUzMGzkEn5SR1FJ9jLqH+4zfMOeR9aZFAJgBI53ZIYE96FGMZcw7qT12RNCzEKM\nqePXpSzSPJKMKH7AZxingBIljkX5QeD6UiqkZk3KGIPGRzUp3bYtV7zBLor8mMvjB46VPFIkcZBb\nkn+I/oKiyzRq0ajBGG3DpzT41ZTk4UdMhQayVOMZN9xym5aLYpateCGHtvb7qt39/pWYHk8sO8jM\n2Pu4wq0urKZtWYsziNcdVIwPQVBBIHuSZOig8H2HFdULW0IWvusq30zRsduS2OOKs6UIjZyNIQXJ\n5z6USCOUO5I92qrBEY/MIyFDDGP5VqmnHlNrrkstCxcOjKIIlXC8fQn3pImaKPAkIx/CasLsQK7A\ncHJ46mqcyxSxOzMxZjtXbxgdfxrJwi1ZCvGo9FoiaJUaUNJg45p93OJhsVc47isuK8ktrUeYpC89\nuTz1qZpX2ssR25ALFux64x+NONNRd2VOhNRuTxSJLExUfvAeRRBiMhs5VsgqfUUWal280RY3gtkD\njj/9VRvcws5C7tu4twOhpqTacTKUVCV0RPFtuZNgO3PA/wDr1LGXUgrjJ60/z4nTMb5cdR7USxh4\n2Ut8rYXOcVm1Ja2FqpXSIrgLcgFivmE/MQP60QlQNo9PunmmJujXHmfI3Rc9fXmgNtQsVCleAfai\n/Rjdr32LcTBSu1yjr90ZzurVs9RJPlS/K36NWMoDgBSBKPue9COXAjOMgkBqlpxYax32OuWQH5TU\nFyj7fk456jismzv3TCyFmA/MHNa6Mk0akHI/Ok9NUU7GGyLMzKYwASSdx3DHuKZNcQ2trGiD94Dj\nGeCKZZFpFdVVG2YyD3/GnT2N1dbZjD5rEYxwcgdKh2UtdjSm11GRruYYAeQtsGWxzU1vZxEBbiUf\nOCGwuTn0pkRAhKCP96gJYDnFJYRJKjzGcRhfmKnvVyTZajzXbK0kLQM8bNuVTjdyM097d3jDoC/f\nrk1LMFkWR1+UspHXOeOlSoCgUJkBVJYKec/yP4U3K6sJ7WMkr8+GUg+vr+FOES7crgZ/I1ttuctH\nKFl+X5SxIJx3qnMhh/fQEsp4dG70o1LaM55R7GeN0ZPYjHfrT0V5JVZTtOMNkcEVYl2SgGJRzyo2\n/mK1YZPKsYkhjCMV/eYXq1OpUstAjG+5nR2k+YjLH8wXAKnIIqeK0SCOFkVgyEZfIbJ+g5FTtIbi\nTYqmBjGFbIxk55x+lQTRiPasTgkjaQxHTNZc02tTaK5X7oxxLDDJLIp+aTaMd6aqSzyNKdoHRFI5\n4q1K7zSpG29o8bzh8AnpnFVnt5lUTMB5cY+cRsflB/vbjTjNv4lqQ4sjPmAsnLD+IjipYpiJVV2I\nzwFz0FOLAnywMAcbQagl2Kw2gF+wWtHHR2IlrZMuzSwNja2SehzzUtvGq4Jwe45qnDBIR5koVRjg\nDvVgL5eOSP4uTWVOk1H3mROWug2/mLlYVYqAMA9utKsaMqrIDtXGAeOackQCpLIOW9vTmiRiZcgj\nJOW3jOR7VvGXYqdrKKLNu/nTbmX5S4x9BxVK2Xfcz245DR9QfTP/ANarRlhiUARYOMK2ePaqtoSL\nx5AeVOB6UdG7WIeibJRI4jyVBKjB79KaNxQTQNznIxVmEjdsT7oJP51WDPa3UsaD5R/CRkUScZ3X\nUVpRdkTSzi4tV8wAMDz+VOhkfyBxkAYqoZFZ8MuAxwcc4q+I0hg2xdOSck1LWii0VKKTutLlSfeB\nuCKcDIA7/jSRFZAQOGP3gwxxUgbkDH12jil8oP1IAXGD0pJW0Fe6d9BijgFfmJGDubj9acpw5RpP\n3rnIXGAaTchceZ85U5B7j8aeUaFNyYkVR94/e5q3fqWnLaQ/H/ASedu3IHvmoZ4s/vYzmRByMYzU\n3mK+SFK4XH50M2cspyRg0WvoEG07PqRySxyhRj0IqupNtcBipER64HOfxqZ0YRkxqdydR1yKcgiu\nIsP0yRg9M+9Zym4e70FaULqOxO2FICqGUMDgnA4pjSQvKUK4yD8oyCT2p5GMx/KI2U5z2PtTgWZ1\nkONyjIyOnbmtEtLiuRqSI2Ksx45z60+0fdayI2Cc4Ge1IFwcZOTnJPP4CmwHy7ho92Cxzg96mST0\nYaalyOBfKwuMFs9eMY4qAIXHlHkoucZ9DT4ZxbsYz0PAx/nio55AkvmKcfJjnv61Mfcm7D5bpND1\nIkQs5wUzjA4+lJG5nhAZiRjGD1x3phj3ISX69sdaSQ+Um0E5CkDPv3rRKyfmJNOViZEZsfuzsHIV\nT0x61G2EuPLI5Cljjt/nNPt7yaCLZEoLMc9enb+lNKiNXd2y7DBPUnnnis2pNtPYc1GOnVixJlcA\nqCDjJFPkXA2N8r4BUiqQlmL/ALuNue5H+FTeZOq7pYmCgcsOcfX0rR3vqVJPoyeJBJamY53KwBGe\ntRtmRgkWCy4Lv2AHaoQ7hDHG20Oc5B/GrI2QRsHJAZcbe/PNLbqJvUjYOY1L4GM4J9PpUsM8SQGM\nQmV265HFQkmeQMUIyeA3pU73AhTbEHaQjqq8VL10sN6epWd2SQDHJ4CngA9q1oLOKP5pFDyEdXPH\n4Cspol+9LJmRuQoqWK8nhQoy5GODjr9RUVlJx9wcLNXZPfKEUqSrDcAijqCfSqjn7OqvK21AfnHU\nmnNdulwreQpBOM4+6fpTJYWuCHnZSB0HarpqShaTJatqy7DIksfIxGc/j6VJKxmO7A2L0FVPMCJt\nUZ2jAz0FTRSyFg9w6bF+6qLgVi3KOttQhrvsQo/mMVwVUH7uMEmpJn8tPkVVIHUmojK00zyHoTwA\nM4/CluAfKU9RnHWugOg61wkLHAy/PU0xhty2eTSiQgD5uelZGu6mmn6XLcFgr42pn1P+HWpL6HP+\nIPEUqtKlu/7hCVbH8fY/UZrkvs/2idnk/dxyt5kgQ4256L9eaHeKWNZJV3xbsAk4Gc4B96e7TbsR\nFVATcQvIIz6NWE5LqaL3VcoXF0JLd7dB5QEpWLaMcAkEH16U4TbrlSp+V9wKn+F9uM0lzAlysBI3\nKiNkdMYqvYKCCjH5VlIye4Wp0ceaJo+WUbxNOaM2y2kKjAijZR26Dr7fWqunah/ZGoQ4G+EKfMbb\nyW9RT57t5+Sm1MHCk8n3JrOkeAE7pC8mcYReB7VMkqkeUmzkeoab4kZog7ZmizjfnGPb2/GuitNR\nguBmOUFscp0I/CvEVv1tEVojK0nQANtT8fUV1uj6tdKqO6G3nABJC8Edsg88ioU50FaWqFOHc9NV\nuSY8AfxLj+VG5WUq6sRnIU8Gsiw1WK8CqQqyj0cfN9P8K1BNuKmQKQOAf8a6oSjNc0Dnaa3EU+WM\nIwYdxngUpkSR1ONsiU4Bc9BkjsM5/CkNusgx9PwrVSYruOo+KILHkvuZj27U9LcTr5igYXjmquyW\nEZByv6inJdYG2QMMHOAeDUyTesSubmepIzzZbABQjBI7VDLEI4fMQKSRg+9TedsQqmMFi2Bz36Uq\nRYmkLHO3t2FF77hexAL0mFcq24jBXb1p9qjsrSPlS3JAPQ0kUkbzbDxxxSmQxSAE4HY1UmF7bCpM\nZZiEYYPHK5waRneGPZIDvHPTrUu2NY9wHvTBcfaplVuMde2aXXRaC2Hi45CBcBx0pTOVbaiB37se\nQKdKFVs4IwOxzUJuR8wiXA9aSV+gnZEVzHJOmJ5iF647Csh4kabyYwApGWb2rWZDKrFidvc1SuYC\njF41JQptODzRZqSdwasU44vtUW7ewi3EY78cGl2GJYxywkY5HvUtncwrbtbDhlLOuR1B6iorl1ZQ\nyN8yHePqK1jJp2Zq4JxvEry7slVPBOcAVTtpJd0m5WCIQqseg9a0JpY3IlQYyRkVDIHDqydjlj68\ndMVcZNJ6Ec2y2C92C2MK4wy9fUmo7W3D28YVyxyDhuo9aLa32HzpSC5yVB6DPoKs+YVVnxgqcEjg\n4pNuSNXXaXKtizlbaFpGUEYKj5uhPpWOkIO8LkgZ+tPuZnmn8ndujjPyn19KXYysJY/vjqp6NUU0\n0rPqYSld37CbGjJ2nOR0ameY5KBeCBkgtwKsqY5FJAIOeVPaq8qAsM5AXgDp29ar3k9SndakP+sV\nA8eQeW9x7VPHL0XaD3X2HvVfITBY5GOFxwPxqzC0RHA+VflyeaU2paDu5D95ibIbcpHHt606UjzN\nwJ+YYOBxUZAUsvBCnjHvSb+NjZ+U8fSktfdYouzcWWg4PlsSeffoasQXktsxMcmM/rWcrsqkfKCv\n3Qe4qQSDGGxj2FSroPh+RbWMiz8uVDG556DJqWzuZHkUKpwFwOoABNH2l3wXZVzkA471CWeN/wB6\nyRhm2Bj69O1ZS5mjbWyS2H3E9nYupeNpVl+RgspXFJdRKEhktbaVSfvjdnP4YqSG1Vp2jYoSoIw/\nABzTBdgXhFyxxgBWR8j881pTslqa0pJO7HWUMVugWZ2WVyc7k3Af0pqsIyOBlXUrv67fTBPrT0uh\nNvMsghjDZ2A5J981H5m5WLRsY/mGepA9TilImWrL/kLdzfIkeNu5mZs/h7U2W3h4RlKtzkwqDz2z\nzTYMxW4iWYKg5+YDvUYnLyBY4YtoyQQTwPU81lLYxkVJrCWFPPgkLBW+YYwV981q290XslMqb3xk\n5bG0euajiYFcElifRsfyqGKKU3JjRl9SvJLfhRF33KhpuH2iFy8pc+f0Hlp2pln5COfthkDEAqGX\nAarKQ2MSyi2dfMf1BH4U0/Z2smeeCQSbsIjkAg+p5z+FVJJqx0z5Xbl2GvugZ5YHZ0kHKntVgi8k\nh3SBlhJ3BvMHPvjrTFszKLZwY1H3grEjoeevv/OpZANxXY0LLJtKsck/Sos+a5i9rGHcNLHP5Cuq\noOdg4zV21h2DeACw77gar3uLnUj93918hb+9VpUQcbEPoStdMfM55tWsS5BPX6kmh3875VzzwD9a\nqsxLFVySTyewqwg8qAthgVIIJ7mrkluDhFJdxblwsqx4+VBx+NRbnHzIMDBJ/linHEzB+hyce/cV\nLI5Q7cY2jgfrUdDJJLch8mQoQx2ggYX29asLGkHyL83v61WkuY7Zo/OlUPJj5epxQt7C4EEcm+4f\n7xUdBVWb1kXpJ+Q+3uZBMdqZGeT70+QuzbwVGeGDd/8A69EIhKht2VYfwnPFSSuFMeAcDs3WspRT\nkmEn7+iK8cW25EpJVU6qR1P41dkk3DJbHr6UPMJwVbliKpTTxxnZvBbOMCtXJySuU256SJSS2MMT\nk9xgCnJHkjjcR1J6VVF6qZXbknq5PSmG/cnan61k6nRCXZF5yFH3wARjbjimksSAgHT17Vn/AGqX\nedrDg8ntUZupCMJKSRwQgyRVJ9QaUfM1Au5+VCHoCpp/PV0VzjGWrF824kwod1HcZo8osc+b05wa\nbk+pTu3qbHmqhzvKdsnpUUk8LvkyRjoTjPX8KzAko6noCc5/pTyhOeQScdDVcy6kuLXY0xeQ5Kuw\nkXuT2qwkkWd6sDgggA4GP8msQx5BwWT0JOaUIRhopTx1IHP5dqzSS2Fv0OhRgFHzZC+nT0qpfDZi\nVc7gOtZ0V1IABn7oyD0IHtVmO5S5GxiTuPJXkg+ppytJX6kq6Za8xbhFkU5yOookUtEobIIYA9+/\nP6VDb2stlKVZd0ch3RnHyn1wauXEAW1NxGw2qvmY/vDripVROKbNPZuM04simcOloqZDZyxB/wA9\nqdcg4YD+FsAnv9KgM8cd5EGx/qzIRnpnGP50+5ut6/ueXZiqkngerfSplUtJJFxgyT7QscYQHBP3\njUiGPGUXcx71Sis0ijDyXXzH7q4OT9ahYytcJEZCFP3VZeCatSvsUsOtbGrE2SGTcVHLbOCR7U75\noypDYYfeLH5vcmss+dBaN5e0iJ8SBAcAmg6lceUEZ5pEA+VW6EgVD5r2M+R31RNHKvmMQQoDEEdh\n+NPd1fJEqkkjLf4U2P5mkV4SDgEvjoSOeKZLFsI5BJALJnHX3pudldBZouxyRQQnYQvq5PJpoZGj\n80zN+IqtbbIvMSZy8YIK44YexHTjrT5b4LMnllmdyAAcEY9+OKq/NG/cUFdkltJDuJU78cZUE1G9\n35t2yjGANmB3b0pVQPdSSStGsSdArEbe46cVMYbKZYy+I3K7jIvUfQ/hzU81tDSXKpaFiULbxiWT\nBUlQSB0J5FQMT+7dGyrttAB5FVY7iM25M6l/nyydBj1z1qPYsqSSBnVCv7vk8D0Ofaqh3ZrRowcb\nzLUU6zHyyVDnowOAarpeGV2QAoEbbzxk+tKZbW1tt8SDhCPmbOCeOKzrcvne2WGcMQKIy3bMJQdr\nx2NQy7SS4LEHr3qdriOS3fbKCwH3G4NVNpjG12UZ/vLkGnqsO074UZem6NulCbe5nFW0uM+2LH1J\nUE457GuL8cXP2i4ht1ORtTBI4G48nHrgYrs7mCBbZ/v4YYB6Fff3xXm2qXP2q4kO4ffEbY/IEfhU\nz0jdG8VchRRcWjxq6+Xgrs2Agj1NU7WWS2WeB3HyAAeu3t/WrGh3KBLq3fAk3BeDjgVWuSPtYkUE\n/LsBPU81jZP3X6lX1sQRvLPcvAQioFGXBJY+23tQ0H2aPdG4CgYGRVJZxaTNP1c5GBx1qea6aaPb\ntcDjgcHitIJW0Oylh7WlNaCRvJeyCKIfOxxweK04tJtI4wl0fNz1CnGPxqvYRxJZmVkiMqPnJPI5\n6A54z61cUvKqsI3U91xyKwqJr4TOa5W+XYgWwtLe4i2Q7oQ45dyWU/nzVm5leO5YliR2OeBVOe5Q\nv9mTcZsZ2Dgj86neRnUMWBfHUDFcNRylO8tjKo9L9S5b6k0ZUhwD1GTXU6b4sRsR3Qb08xeW/Ed6\n88kGX+8N55wepp6CU5GVH1Of/wBVNOVF3izKK5tGey295DdJvt50kTPOw5x9R2qxHMyjGD74ryCN\nrqJ1khudjjoxyCPxrZtvE2vWoAfbKB3ZQ3611wxqkveJ9n2PTzIGUdmx+NQybduD+I/wrjIfGsrr\niayEcuOGTO0mtE+K9OkgBkM0TAY+eP8AwrenVg3oyHT6G2YSDvQ5HcHoaRZihwxYA9j/AENcsPHF\npDLtMFwVORkqF/Q1dtfGWhXYw1wICeqyrgfn0rWNaD0bLS6SOjVFK7lAJHJ7VDNbm6YEswVedv8A\n9eqsOo2QIkhvYNvqkw/xq6H3rvQq3qVOR+VVezuiHBbDoAeIyWIBqaSKMmQrww5qtvcjCsBn0FKo\naOMgtknkk96TXW5La7AqvcHDMQuei8Zqw5gt15wSO2KrKxQZ446D1pqon3pDuPoOBTT6Dsxxke4+\nbG1B0GKRoyR8pIb0Jxn8ehoackYClcdsYIpis2fT2xQ1fQWzuUrlFjyzxAMeNxGP/rVnSIyuMbth\n5zVrxDq0Ol2++cEBsKoUZ3Me1Yp1a6igh3QD5VEgiIIcgnGB6n29qyVdQdpG0E46xW5pKdr/ADDI\nH8QqfzUkHBHXo1UX1GJlV/LaN25EbYyw9RVeXV7WKNZpo5VR3MSOgB3EDNV7aN9GTKDZoSyBJY2H\n3VP3agw22RROpVzk56isqXxJYoMYnBPovUVCuuxXDAMJEj7Ar1Fae1iupPs5PQ2YVUuSCSPWrMzA\nDuD69hXOv4jUP5cMW1V4y3JNNk1uWQYUD8q4q+Mg5JI0VLkWpueYG+8B9DSP90sMkH15rnDqd0tw\noZo41xk7kwW4yBmtKG/nmt90MMfnbAzRl+2M9PpW0cSnG+o/Z21LhZSRlcYGCB3/AAoQMjAKwIPb\npUUVx5ixmZBEGUnODxj1OMCpkIkXcp3g4zzyOn+Na+1jMTp2d0WMiVcjaQcYGOarSgHI+YMASCO9\nTIFUjlgF5DE0knUgtyDxxVLVeaIktbkMchKOVwScDaaesmBjHzfxVAwKTnafl7YqRHVXDYAHq3Si\n92Du/ma2bWSc7onBYk43EI3qfaq4ljvnxeF8ZLHaMDNZ0l/cXOdxb2x8qimxSbRtXzAxP3gcZqEm\nac11Y3I7pkUyR5Uqo4Dfebuc0lpIDGHmhDKjHIPB9unUVjifEg++rjrintc3UhG0nAGARVOI76WR\nrF1tpwwbzVl+8uMAA9f/ANdI5kuZ5AJ40jRCRsUhSPrWc5RoRMbgbyOFOQAaaw3QohmK8ZKg8VLS\nsF1axpQTAxmOaM4zkOq5HXPIq6rB7c+UqH1AYKMfjWFDerboQV3J60f2kAxa3LqM8q4yuaOVS0ZF\n0zdRp5LoJK3lISASOeD6etCP5Vw91u8tBu8tcc46EmsA6rcL83lBc9xyDT18QOFxKkLAdCUzio5J\nIaa6GtJdJdBS4UFnAHHO319qgSS3uLlxI8qBF+QjBH09ahTVWlXeNjBuMhAKkTU0TCzQKecA7QD/\nACpe8U5K5pQXklskYeVWT5jiUBlKVTvtReOJVi8lATt8wq27C/Umqlxq7sSLa1SMYwGZRk+9UVja\nVzLdTAnvx0q4x6yIlLotycXKpzuz6mpU1NV4WMOT3JqOOW3QAxbT/tEA0m3zGEnHA7DGa0comdlb\nUnOoiMEhQD71TlnnvDud9ydhng1KI0+VtytuzuDdKsLIkSCEsAsK8Y6nHpUOTaB+RBBIYFMiyFUw\nflOOSKmW4l8qKLJwq480jI+rfhimvcjmQg5XJYHHX6UiKzuTIRJEFLNJu6A1im72voSONvEs7TSS\nJNKw2oA5HtUMqRxkyK++QcIFPCmhTK4Xc6/IxyzPuwvYcVJIYvssojYPKVyvGOc/rXTTvfU0poZZ\nTNBb+WGO5m3MfQY5q217bjIed5Gx0IwAKy02wqFYEydWLfypyRb8O3yQg54GS3PSh+87IJS55XRb\nm1KSdDHbqVTjLdNxqsQArMzcE557mnkjAUYBxgZ6LTcrkBQXPTJHIostkJ6PUX7RDuEY++wJCkZq\nVpMRlixRO3qaYy7Ivm2h2PYVDszKA5ZmXnBH3R60KMYiV35DmnVcZUt/s5qZXk+YFQgUnK0/7L+7\nDAK4bptPSl84To287ZQ21u2RS577CiMF06xoTEyiRPyapEuCRt2/MCAQfapVaSWeW3iQMjMckj7q\nCowbRopTIxMykj03Y9MUr+Q15Cbv7jBgOhYdTRm5IO1DIvsM4otkN6mbeIlhwVHb8TWrZW13buxk\nkwmOFByc1nKqo6FRg2ZaXMqZDRuBnJAHHtU8bwyKNyNnH3l4wK0n+YDf8w6HIqqy2Wf3gWNv7wyp\nz9KlVL6j5UQMq7gytu75HX8a0raICIukSsCck9c1XSCFmG25U5P8R61NC8tgSquGjLA4BzjFQ6uq\n1BW2JT5QHLGInn50wAfWsZNSnlja2MOyNjlfm5P49q2JJTdQE7QYjlQ5b+npWHNGouRaKzyMEJVy\ncgcf54rWEW9ztoQUtGWZnluo1Jb5sbePvN7H3qxp6YTO2MOMKFJKbfUfNxUNr5cEylj5uxN2wLwC\nRxmpIZzEPvEDOHweR9RTcXF6GVSLTdiw7N56vnzmzg/LwAOw9qS5meCzRDMWJfILJj8M9KberMiK\n6PGOPlIXh/b61CFW7eORpG8zcBtY8McdPSrj5lU+Xl1LduMxsVZ28xiDsfJUfQ1VtoVuLgurlo4c\nszD+LnimXMkOTBGGRwOSvHP0qaAshdWGBKMKV4OfpUSkluYylzMcjSSEuoCgnByakiVGBDLmUNsY\ndQary3sf2ARMjFmIUyKCDxUC38SXDyjcQ4AxgfKfXFQ4z5blct0W7tkh8sKAAo3uS3T05p6faHUy\nxopcDAUc5FETRPmTzVZRjBJ4J9x/SpvMf90xYQSAbtq4/eAdTnuf8aqLvuTZ9BroVZXijSOMsAwf\nAyatRFXjK4K5GJGC8AfWqq+U0xWEfuyVLgkht3c/59arXV7FE8kEIL7yU54AGe/vSlDmBw1Iw7zs\nIom+6Pv9f51NNCIsySSt82CwTjOahhuEt4ztVcnknJ5qTzVkdAZBuOG+fpntVNyRm5PpsOGmy3W0\nFCoyCARggZ4q3zawy2rRCONl5BbBYUyC9lIJk8syB8YU4H1zRn7Y0jyttRNqp8uTx0Oc8GpnCThd\nMtR6PYtLFB9njZy+SuCM4z75rMuYJUfMDFvZuv51JG+W2yM4xw3fmpJJgXRYdzcc5Xr9BUUk4KzZ\nEnd6FWKUPGySM0Lf7Q+WvNNQi+x6jKGw0XmkEpzjBNeiz6rpxuZLed41mjXICMFf8M/yrzm8uYrm\neRypKyEkEn36frWrasVHRmVPG8UqyBgxzkH19aV7gFMlTnsBzipzGIpw0iPsYYDKM4z61S1KfypU\nS3clmGd2KTa2RtJ89raWKT5a8XcowuSAR0/Ct3Tba3NuZiFdyRtzztOOeOx5FY9lFt3Su5kkJ5J7\nelTRO0dy6RthWbP3c/pUqSRp7aXJyM3xaRta3FwfKjIIG0pjeN3OMc1NpqPO00TLtj2/udq7trc9\nRWDcXNzaMLiSNnQepxtHrir0GsJbQlbaGRGdQWLIeCGBB/TrWcrTZK63MxbxhKftKAMzYdl/ixxn\nBq4biJht80AngEjJqk1pc3UjybP3kjkk4wSM55PTk9qYsV3Cm37MViGN7PjAPv6Vz1Kak7ow8kXy\nmVKrnngjqfzojmHmbCTkE9ifyqnGC8ojhkMj5A2EkAH0qO5u3LNvx5qY2oxJz7Z9KydLmVrlQ5r6\nmrJfog2qsh+hwM02LVmBwQpBPQuA34VQSM3MAkhcswADAn05NVVSZ5PKVDuHUNxgVp7CMY2Lb5ly\n9TZvNS/0fzFJJByARwfbNQ2d3NeSxRrLHGHBO91LDjqOO/Ss/wCzSeYARtbPKsTk/h3FdGYbNrRD\nFCscgUZCqPlPfnrWtOhFIzk7WRRmeIXUMTWqyyngBj1+o7VsQ6Rp0t9Np9wjLgKYZ4ABkFQcY79e\nvtWQHzcmZYUZlOWXruP0P5Vtw3TahqdjNKsZO1IyYsADAOPxAwOnatVSitmNprqYrabNYTzQeaN8\nbbWMPJ+hJH8qnglubd4po7iT5mGGPJXnnof6Ua1Oy6veMxAkaU7sdHPQn9KzUnLNu27mPTf8361c\nFZgmnub0fiTXwqNHqwKMx+UqFJUcDnHfH61OvjPW1ALGMjJwGQNn3JGKyIrlty7o1RuxYZx9KeSp\nQM+1mY4O70o0eqYWNpfG+ohgrmyRu4ZDk9Pf61I3jDWAMlLLb3Own645rmpIrV8gxryepB5/ziqx\ngjiyYd8bDn5CcVab7isdTL4r1GQY+0CIcDAQKRxnjBz1qu+tamkCO2ozIjFgMnhmyOh69D61zL3M\nsXzFlIUdHGCPoRSW1zb3UpGdrHP3geTj09v60O/zJ5TUl1e7vbhBPK90sJLDDHPpjNbMGrpDGslt\nPiMtsFu2WK9+D7VhSrFJGuG+XttbCj8KitppoWmj2794AQr1JrFxUtSou90jemkMcdq0sLJ9nkO8\nD5vlPXGOnbH0rK1TUWuhAgjMSW8jMUPILkAZz69a3IpjPiKaJUAKo0r5Jcd+O/bp6VHNY29ygbzI\nUkPB3k4JHB5/h/GuRV3ezRpFXOJe8mM5Ysc1Ml7cR5eQM6Z+YHtU9zp72GorBdI0e77pY/eGMAD1\n+tWzFH5WFjJ2jHAyT2/XmuqEVMHozatbRDaxTgfbInGQEYqy9eMkHP4VDNpsrqt1YSCZW5aAk7xx\nngnr0I49vWqml3MtqA9vKwQhX24xg8EZHtWvbXwaZ7ICMRyMz5f+IHkDPsTx9aVXDRtdIi+pYW3W\nW3iMy7ym2Ncc5cnJAA9sVnC2SxuJ45BOk5R5YXYgqQAegznkgirmmTxvYvFyoil+0KAuDgDGCe3a\nkeGC11Zbm7uZpUkQrGqfNtBLDv2zimlZKxVnZRSKAuL+6gW7Z3W2ZcjCfdyOSOMVLPq7piXzZIzB\nAGC5O1mBwcjtkZ4NS2OoxyxJE0pEkTkeW0YKEEEHoBgZxwRms/VbhE1BJ4wsUTMduDnnsMd61UbF\nOm4nYWd1Dd2SypIpYqC6c4XPYe9Pf5h07ZwO9cnpmoTx6gHJcxxLI7RhgcDqcA/j0rqvORtkkGZE\n5HYnBGQffIq46amc4uydtGQ7TK20HB5PTtSlCz5JZlHTJ4pn2yBLqSEnbIihfm4yDViCe2dfL8xG\nZOGy2BmkqsXsyOVxY0wQnZClx5rkfM+3PWqVy6pdNDGWbaMljxUUPmxA5YKx6gdqjuJGjChFY5JZ\n298VVN306mXw6lmFsHOcDuSadHIVb92W3E96qRnKkudoHqKtoSnKMB9ec1b8irpocDiTMqqy54Ap\nrOsbAzZUn26ikN01opbaGBHTP8qrtNLdKGkBO3pkUuu5TsluWco7gsuB25NRxsgUnJPfrjmmpdPI\nF54XoFFNWRvLbDk4OcjtQyX8Vy0vbCryM9e1RErnnjB4yfemBkK5OA3Xk9abKSxBbgY429qfQGiR\nbVU5ibB64BoMs0Hy78jqVPQ0RzKW5yoyPn29anypUoxVsdxQ07XBPuEEqSjahAPXaT0PtTrhsInU\ng9Rj8xVKeEq2+LOOo9jUyT/aIwCMOjdKW+on3Hsj+aygDeBzjj8Kak0sDrJGxaMfeU1Pkg+eMEN8\n/NMkhKBwXVpDyFA45pXbRVrotO24HOdrLwVPTjio7SY+ayugJX5TJ0qvdOQsCiTBAAkRR1HtUW3y\n0bynbDD73TBpxSaEuVx13NK2jZoGkLZO/G7PU/SpJJEW3MTNlgF3DoCfSseG7uoGYK28EdCOhz29\nKsPcll3vslJ6Ben0PvUOm09CWi9BtiSR5NuMb2yuMj+tVo9rcqr7mGSWbtVaR5p28uR8JjLBRgAe\nn51KCirwpA6jng9qtJ2s2S3rYshEh3F2LZXAUmmzy+aEUR4XoFz1qtudmZUD57t2xQqsMsyDpxnq\nRRa2qGrrWJMJSnH97727rn2qfcylQxGM8ru5qiHhQkl9o6A1Ms9oWwAztjjJwM09egJE7Od37vGe\npyc04zDyvLdmA2/NtOQajifylXEALA53ZzmnNcSO4UFQqtnJXPNZ312DRBE7kJ5MpDgZ2r8wI96W\n5cTTxu/31Gfl702e9YIUWNQx+RWVcYzWlZ2JhACxAZGNzfec/wBKUpKOrKtd6GfDcsJXjjJPmdR0\nNNS5Bn/0iM+Xn5BtK/NWre27mwk82LLw/OD0PHUVVidL6WRJihiiwEJ6MaUaia5gcdbF3TRcW6yA\nxkQu25V6HPsKvtL/ALYIxk7h933NVo96phGDjouMGo5gHDIApyCNgBJrml70rnRDRWRHc6igjfyi\npkztBA/Wq0Gm7yr3Ex3kZC46detZcThb7ypSANwx6Y71tyGeISSNKGKgkLgFSe1dDXJblMW77hsM\nB8uNsIV3fLjP505w0DBWkkMvUqozUCxL5LNJIwL4UgL684FXI7eUhfmk3tgAthmx6dKynyrVkcq3\nZCbgxKrzqdgYjAY/Kc0mUuZS6xqv8KKAcsf6D2q8dPgVDDIZpJGPA3DG73qs1tDau8f+sULtPzEY\n+hp060Z7Gzm4oz5vP02/kJZpI95+YHkdxkHtzWhdzoWgu0lXLfu34wSD6io5lV4vnjkJAwhZtp/+\nvUdpbRxmUMzSBeFLdh9K19pdGrmmk+oksyNKyhnUdMBsg00LI2ZTM8iqQc55H41fuZLKNWGyIMsg\nZSMfd4yP51YF1aXCYcqT03qArfmKjnb2MOZ9zNKoxMiFpGxucNkk1LdSG68uCIb8R72fbtKHvx0q\nrcQvZagHUloXXAOOlSWcynz5GRuXCqVOQNpPWrS0uXCLkuZGxHbw2MClY4sryeMFu33qhWBLpJVM\na79g2u3VWz836VmPdSO20HBBBVR0/KrMs0sZSKcDLLuDAgjJ7fWoakn7zMZc0ZasoIfJvZrUYbAw\nrgYDY5xV8cMirhZHBckjIA/pVSS2ubjUGlWMrBE+0ycckr/9jUct0kcbKFwxjCszDk89vSt3ZvQ0\noybdmy5JdSEmCJtx54QD5R15NLbWSIN8iAk9WIqlbSRoMBTjqzE5zVtXDLkDAHOSwBA6cD8amTVz\naq4yfLHY0NsLRhEiTzCxAOz7341UVyqyoGLsjHacBQAO+KXLSunUKQQXRiMj/d7ZqNvLAXEDqD8u\n0OT+OTSdkZuK2EKlC0jeUwwrOit8p/SrnnQbZStuqoOC6sTs9gD1H1rOzbwIpll/d54EnH+e1QyX\nlo3DTwMWOSyHBx74olONuW45ScrJ9DS/dOodkhUFs4BKtt9cc1x2va495IkNtJNbWwJG4SHcx9fb\nit66vglpMY7fcojOCpJI461watIxmUtujRvlOMcVnIiK1Mq5h8hh8zXCKoLHOxu/U1NbhZdNGAQV\nk+6ewplw6m1QvIEQOTknr6VS+3yoxEDqVJyQy9celRG6euxTL0960VqY1PzNlR7eprOvA0U1tI+W\nTeFOT7U5Jy+PMGGA6nqfWny77yHyrdjM0fzbMHoP5VTSupI0g/ssjDtH5wUgh5EIOfzxWvpMCsZL\nyVcr/wAsl/vcdfpWZHay+Snmtt8thhXGW+b2HTp3rdkYKscEAX7qgBG5H1wOvtXNWk7cqHaxBeAX\nRVOCFLbz2wetOito0dGk3YLbQYyuSM8jJ5HU+1BSK1UeeZJZWHyxg8D60wmSYkkALyCWH6VgpPaO\nxLVx88wktJA0yCNDsMAcEs3chT16DmqDoqNuEn3uqsoGD15qw0Ech2vdKp6KuMU027REMVMqAfeQ\nent1qvmU7LYpSXchIWRAcjrHjJFVL3dhJSGXAxnAq80S3UbPGVd/QjIH4VVZRYvH5VosyFskyZK5\n+laRtfQbqO3LYqwzNby71wykdWTr9MdK6uBALXz9g8x4weTzj6da5mBYLlVkmZMc5RCQV46+1bSN\nNDYiDIbeu1PMf5yD6jHpXUrNGdR8yVivaNEZWYxgu/GcZP0AqyzhGDsrsOwxx+dOaFbVxsBPmLkt\n1Kr70sd9A8Lw7EBfhd2TzWkruNyKacnoSHy72HcI1RlOMA8iocS6cwl3s0XIZc46jFOgjW3PyOdp\nG4hupNWbm4Eto0MilgR19PcVklKEtFdEKSi1GeplXcyyxk7j+7A4wSaSz8sJIZ1dJYz8quuMiqdm\n7I7eYGBLZGR92rxmWSVQ+QpYZPt61XK2zocLSLLTJMkqsu3EpYEdxikMkefl5JzyVxxQiNDcKpG7\ngqwz3Xmolnij2pIvzBN0rA9P8mqVK2wW05kSmTB3EKTgnlsADGKrvcBBgnjB3GrEsIG0ksS3zbF/\nPmqAiEs4ikkVCSOSD83sKSmorUltE1nCN6TynKtz5ci52r2/MVeuvImG6VYolUYGRyB6D061M6pb\nnEYwB1ZenbvVXfA7nzGL455PFZ8/NqUo62h95TAdnxayMV/2lG00+GNonzJweu0DgH2NaMmBEQgV\nRjoBVGGIMSCQSCcZ9KftHa70M5VEr2VyxHfPBs3tKA3AIPfPatu3mimnjF9MZWVjGshI2lPfAznr\nya56ezG05Yq2cgr2PvVm1uRaxhGVcAZyR1rJzhy81hc0nqifXrVxAbUzGWFAHiP3thA42nr36e9c\n9DqDRADLOpHO0/MPb3rdudXMgBhBdlJ+Z3ztB6iszbE/XO09Cw9a3o09bnVT5W/f2JVukn2yxsGb\ngEjqf/r1MbrcAW++v8Q6ioTaK/zcM3qD83/16iMTg/Kd4HQ9CK2lrojJqm5PlZc+1Mrlg33h1HGf\nr69K2hLHe6ZMQi/aYgXGScbT1wPy5rkyxibDZ8s8MD296uWN69vNtLEMucN7d6yXuvQTUlr1QWVw\n+nXCQwyKu4rv80cvjoW/M0+/ZTftJAFkkDGNAGO3Hb/PtS306IXdFXzH+Xnmmw7LUW4wAx+Yn8K1\nnUTirHXVre0imkbFvoFxFtmaRXA6qoLFe2Pf6/nite0vntg4MiGERYiZRyRjJ75B4rMt9RRkJZGY\njncrYI96hvJbuOSaLy12uvnRuH4U9x6Z6giuebkzjcpS+Qjq9xcrcOzGFRyRnLe1MA8yUvDL94lh\nk7cVDZ3z+R5ASMIBhiWIB+lNkE1pJjY00b8jd0H/ANevJ9nO7cnbsaczS5TdF5vfeWzngY5yc1OG\nbeWLso6YB6+1ULd1towQw3AY3McYoG6eTdv+T+9XvKmc9Jc+stIoLxz5wVd8Sk5JB6D6VfMkfyrH\nJuJHOeKoRsrXSBRuRTk7j1q+FC87EB+uabkpaIyaUZe6QvGR8zuN3p6UCVBI0eCCB1zSSMDl3j/A\niomUEknqv3V9adiuo1ZjbzFApO48sasHgqc5jYYOO1UnkZZF8xMf3mq1CwMWI/mA6j1pvXUO5ICC\nXjVAdvYnFSK6SRCJsrjpuHaogwVgrgqehPpUiII4tgfzADn/AGqSYxywxlYmi3MnTaXHXt2ojPlo\nyMgB3bg2P60hVzI7TqET7wYH+lXWtWmjUxSvtBDYTv70+bl0bE+a1yAxytJmNC4PB2jOKieFo23q\nBuXgj+n1rUlkjtYfMIBYe3JqsZxM4YRmNxg+g/IVnCblLYclbUsWBW4t2j2BtvyAN6UsyiMRvjKI\n3T+HHrVBnWFzMjBU6v3xRLJc3TCPy3ZMADn7wHSs5KSle+g27PTqVbiR5bp23s/zkAE44pkihSrq\nSOMFs808KwuWBRhIFPyjjAqvEPOuEtgfk3557V0rRXRVNRcve2RMWQSgrkKo3DHUjPJojff5kzch\n5AVI6c9qsXYRCqLtznaPx61CCQgIUq2SRnpkHGaTlsRV95+5saACYxgM55OemajlbaN7Mq9Rn0qq\nZUt4cAuS3LHvVV2e4lBYCNOuTztH+NLlV7ozSsWGuwcLGCSe+2o1RpCSz49qfGkcTAKm49wnp9KV\nmdwDsBCdQwxTuihphBI3sMkEgjkflUYjTsQBnnJJX/61WlhTzSu4h2X5VI/lUsMAKqD8xAwxHWlK\nTiNwktipvmgOVkYfjkVYg1JtuJY0Zj91hxk1SxPnzAykAbTkZBA/lTVkUOF27X4ynUOPrWis1Zhb\nuXop2t0Mhcne2QuOamkvL2YfNLLx/wCO/wD16gIyRImSCOMcFTSxADOc7QeCP5kVlb3tjNtvcMTS\n4+UsnX5WwKcsc6LkAYx91+maTzplRNgDqDgFGyGp0b3BjEjD5ewJ5/KqBauwqS7Wzl4HH8QORV4X\n19EAS28dmU5BqrGyTFlUbHQbivYilEjQMMcxlTlfep5VLU2jFt2FmkjuySQwfr8vWr1jfGJZI7j5\nlVOGzjPtWY999otN7Lh146Yww6fnQ86Moz93cM8/pTdO65Rzpum7G1pjB0E0zAtklFJzj3IrYhkS\nBXnkb5iOrHgVySTzQvEzTZeRtoRT0H+RTpZrqXaZCznGFQDdz3wK5q1Dn6mfNZ6nTJcZ/eqCSBlM\nHoapMxdyMNkdv8azIZ760XZcR/upDwrLgg1NbzBjhcKufmx3P+c1lTp8r5bC5rs1kiRY90iqoHXr\nWZdX7Tz+VaRtIemUGB/31Ueq3xkcW8bfKB270WTraRM5xkDJ6EAD2rpUVy8zE5XdidNLuwu6WSKP\nPYAnP1qOe0uYAZFXeueWiP8AMVNBqcf27y5xJNuABaNv9XV2a5gtsRLIzAD7re/esnVqKSTRSUbX\nMovLPAI0Usx4AC85p0Vrc2r7p4iI26kEdfrV6xthb3b3UjJ5bKc/Ng+3FRX9+gyYsqfr1q+Zt8sU\nNpqOmxSBcXAbupxkeladuXvnXeN0anIA6k/Wsqa+SX7O7wqsiKQzeo7VrWF0LazhDAEhFGfU9Saz\nxLnybGnNKaV1qti1cyCLLuq5xu244JrNhe2uWzcQxzsPm2sPunH6Ump3Ut7CEiA2q2ZHb+H2z61Q\nhUxqyhiXPLMepFaYSLjS1MJNKTu9RsyC2VpASIy7HaP4QPf60231u1mkYQxu6g5LbhkccGsvxBqD\nNZiwtn2s5/fS4Pyr6D3rPVgLfym3SKOpkJDH8a5q+KUXodcYNbm1d+KlYhLENJKchpJBgqPTb6+5\nrJbV7+NGWOeaMHqysM4/H+dQPI7kK21sDhRxtNROCWVlJAHOQ/WuSVacveG77jzKzr5gnZiGwSTT\n/Mkjdj5kRwN2Ohx71QUq5JcvEGPJxSiV0beDx0GBu4rPm7Cuuhe8+VflIO04O1c7TTZhHPHtwYN5\n+aQciq4aYopZiqkEg45x6cmnx3J3DzFVW9Qch6qNScdYsdrldNH81v3twoWIHGUO369abJYaaw2N\nPMSf4ggA/nV27DRRbo93lk/Mn901CYhJHhxuVs4YHlT270RxFSWsmNQuVY7C3jY8mYZULhtuF/AV\nYFupQhFSJByFQEfme9SxWx3OjMGBcfMfShwXndYyVRSAT7n8qc6knuybalR5ZYFMR8yWJTuwOFU/\n5/8A11PBfq7cJgsnl5U5GPTFOzDnCKWA/jJwPwqrcwhWDx4UtxkHg0/aOUdUNt9SRU8yXGcv0HTt\n7UXEqKxQHcQcBTuNJDMIY8gDzMHAP8NQKhOcOGJ4O04P/AalNPfYdyQLCzBXZCSCx57f5zSeW6KJ\nEfKscBsg89qURSPkzSbEK9SpPHcYFR5eNo1WJigP3Qcha0jJMaYrKBLvTH910J/X2pFt0mZlR0Rt\npzlhggdwD3qbb5nyMxMjZw4HH51BIAfnkjU46blwN340bPTYnlV9DGlSfT7wlCPMUg8qCGHWtjT9\nSS4Cq5YOeW3ng+gH49qr6mplhE2AHRATjnisbCOATgN1BxXXCelmRKJ2LJkg4/h6ishreM3Ujq5Q\nBhkJ696owandW6hAwdOu0tyPpnpWrZXsTjC4RjncuMFie54rpjLlegqcnC9upYyghUKxVs/dPG6m\nRzNgs2epGQMZ5pWWMFgsoVW5Kt1qpqEywWxKNG3GCC2Dj/Cs402pOT6heLskiN491y7bWG7lSowe\nnPFJNIvlRhwPMBOHTK5BFQWd9CNqPuCk8ZOQfqfWpdQnDQfuFR5A3UPk1tGzN6bXN75o2konY+aM\nlFOBu79zxURhtrhJA6nzWyAFOPxqiD5cQVCSrDqKhtbpjMTEjswGMkZAPNNWbZtThB3lc1Elk8oZ\nYDtkmqE42TRZn3c5Cgdcc1IjCMAiNGcdWk4altRGHklcKHY4XnqP92sq1ntucs1FN9jYDBrdVVNr\nfxEnkmqMkJnukRSQqnJI7YpWkIHMkaDsO/5VLDIinjDMR2OQwxU0pxT13CFZxT5R7hymyLAQD0yW\nNUWaSzvjuy2w4c+hqybtUCMOUCqc/U5/+tUUTecXZsF3fexPQVc4qS1CM7LYtrKkiM5cBySMdsVV\nu7iOUBIxliQD6GqxZZCwRm255Kr19s0JGCMjhscDPas1DkjdkwpRjqty5LYwx2e9H8twvXrmsw3S\nRlfNPljqTj86sT+bFhZcHj60tvbxo6zFQ+ecvyK05m9iovlV5FyK2maESKF2EBlIOcj1qpeXz2jH\nzowVH8XcCtYJBOFYqVkHAZBWFe28qakIXmEiOSw38sMjr/IUcl3vsJSj9tD1vbfUbctEf3g6qahZ\nwoR+coaz5raS1uA+0q5J6fWtAL5tgJyON4Rh6HH/AOqpbtZotNW5SdyXudjegK1YugGYvnCrjB9K\nrRkm6iR/vr0J7irkqgK0ci4BlHXuv+cVp7rVyOaS90YsjRmSM9EZVI96uXl5nR/L25kdgu4AALjn\nH4iqYKtKsjYO9SWHrj5v60pjNy0bSHFvG2Rk/ePNCdo27nXSnT9m1MXRLRpreSeRwsaoGU5HJVvm\nIHcV0llLEloEmhWZDlip4Zhu49cDvjFZYvks4VjUoECkbWXJGR1B7GolmmkxsBj3cKOmFFYSoqTu\ncs5rV20NK13yRLIDHg8ryM/XFPkW5nBVWVR3JHJrNs4luZQdzL6sDxUi3EsF08TtkIeCOhFdkpPa\nOphLlizTtbXy1yzq3+7VrdtwwbH16VQjv4yQrkg461oK29FCsGX25rHVPUSWtyrOZZTuOGUc4HSo\nkIdpNmIyPyFEqsN8bApg5wOhprPLuKhVIH3iK2uK42UYXzJfmBHNFu6rhSrLFjCkdaMbEVS/8XzZ\n6UwMgkDkkp3C9qaY0aO3zIwEbcffiiOVIyoeM7ycHB/lUSMkgKY4U9c9aeX3MSCpU8AvwRU2Ww0+\njJ5ZkdPusOx5xmmwaj9kO0wkxDhdtNB+YY3AsertVe4Rdu8OvHHPBNS4paMDRubmK/hwOxz1qjHK\nBOI5Rtk6Ano1VAxRshiDRMxdCxJ+U9auKS0HDez2ZqjaDKMDds+Xj+KpNOvir+ax3cbRnt71lx3D\nPGTnnGCfSkg3IgkRsc4Ixx/nmonBTi4vVEwupXZpzyDzjLvJxwAOarRyiMmVvlCkkE8jPoage5Vd\nq5LN6bc03Et0SiZii4+8e1Z04tKyHyrVzZLFIJz5hYliOCfX6VaZSEL4wp7k9R7+1Z85EIVFLAY4\nI7kdxVU3Tuwj3F+xZzyevbtXTGOuhpRoub5r6E9xcSPdeW5VQB/ASVx7etWoXjWM7B77iKSK3kVW\nmEq7iOjd/wDCmPMy5wp3dMe9Ql0RlLV3Jmd8ZBRuCBtNQ/vhG4d9px8rZ/Q00ssMm9UIfgN81DD7\nSjbwY2DcknrTsLdFyGJtkYYjeo59DSi8WOQoMrIDjBGc1BvaGJkL5b+E+oqO3jSRiZJAXU8ZGKmy\ner2GrdCxakefhty/Nv8ALPellgR4t4URnftAYYyKY0ruPNIDlRye4FOiZpyAZGSF+Tleh96q3Ud7\nleKQ20w3nC7sOhGCtaDoflkib5hkce1U5sjLI48styM/yqWwmK78ndt5wau3MiZJ2uSwOJeVUNu+\n8hHWrnmxbVQvs4wqvx+FZDo8UrLGQcE7QT0HatfT7z/Q2S4VJHBwVYbhXK02/IdJIqSRvHMk0RzI\nnysM4JFMn1BGCsqllZtu1QePUmpbuWGQERRrC2OCrEgfT0qg4lSeK3RG8uRdpUHIOecmuinG1zth\nCHK3Lf8AMltrTdJPtfELbTz1z2q3/Zk0u0q6rBENzOx5JphS4jjj8sqNpwWkY5GOOB9KlhvdhaNO\nYy2VUr97PfFTOU2/cOSVSXNzEttZXMpDRxkLgkMSOlQR6g1uzmP5pPuoK049TWGwkhjI8xgV54Ck\n9TXPsD5pEQ3n+90H1zUQcnJ8y0Cry2Vty+8jlAZZfMm9B0FS28jRJgEZ5yT61SgKxPuaQOw6nHA9\nsVJCsZ3h964P3B0H0q6iVtDDltqyRMvdNk7ip5wOtaT2l46eaLc7hygwP5VSsWjivBIcyKO235h+\nFdDFqVtnmQj1BQqR+BrCcmtkVFbtlO2uIpbQK9qRcDr8hBzWV9m1Ca9MkZZyO+AMfnV+51Mtcl4V\nYRMyhscNjv3xzWlLfRqzLuPkAfIDzUxvGTSWjLdmtShdOyworl/NUdNvy55+7Wfa2rXEu+cpEg5J\nztNJq2rYjdkiHA+Uk/MT7CpIywtkSOQF8AtI3at4cyp6gnbRbMsTmG2TfH5bEc7XiDhqgN0JHCIh\ng4yUXopx2zV7T7FWUyzuH9O2foKNZNpZaVNOxbcqHYi/xHsKzVZJJS3KsrtbkN8lvDFme+IQcjYu\nQfcDqTWUmoJM3kW4kRT/ABygh3+lchb3F9fJHLcSym4jc/uRDkHnpn2rZgguLgq0yOpVgyqOcEdy\nf5ivPxNWUbxua+wi0pIfqRYNlWJA44Vsj8RWWG5LbFHOc5I/Wt51YAq0W9R1PX8+cj8qzLi2gZy8\niGMjoIx8oHqT6fWuONVNavUvm5VYpOU2gkYyeDnBJz6/lScM2FmYqBgbv/r1IbVXQmGYHPTaR+PP\neq0tpOhO0Z9weQKqMl00EvUlaFig2Egg4YZHSg7TK0PlARk5JyM5/KqYeRDgiQ46EHpStPtO5vmG\nc5Ugf1q+VS0vqD3uXQTCC8a5ckZVRgMKja582QBzyR021DFPCwxA6E9yRlhT0iRcPJKxB/2sD/vk\n0KK6mi5UtSwLtTGqZw6nkN6fWl80xSgbcxPgHBzg1GkKvHwwyT64z7dRzTzI0ab+H2gsCpU4I/vA\nmhR5pXHFMhvb+QRQtbgOjOCXBB+nfoMfrTI5W80ICOTvc5A+netKGPS7rTkmEjQ4Ub2cGRmf/cA5\nHoRWdKHiuZo1ARC3+sVcLIPVTj9KuotLIdSi4u3YklcGbcccAAZ6KO5pJZQ8Q2/NyDyabGY5CN7s\nkYHXHGc064LQqrINyE8yDminFxVkZWfNqJcxBZcg8OAQcZFRSyYdSwUcENgYzUjzu4BcOQOmMECo\nI4mnnaZMbY+pOB/So5bK7J7IdcXCtOA6hCBvRcdR6U3e8SzszlUc52+1TyFFRWfZK6NtVlPGKZeQ\nAhLnGAvLc4zSTV1dDcbq/UZCyRXEDR4XIwSx+830PFTzZLy7iFfIJGAQ30A4qowVUWQIeRkEjPWr\nUbiSFp5y6EbVAUAKw9fY/wA6oqL1I2USxnO5lYMvK7eD2xXMAbd0ZyCG2/jXViNlMgcDKtt3BTzx\n65rmb6PbdOVHJP51vTkE1YI18wfMoIzg4FPltoUUMSVLLuTb83fkcdMVIZIlt4c5zt28nIHf+tW7\nOFni2W+15pseYoPzMCOh9fWuiLszF2eiMgz3UC4FxIB6Md1Rp9pur1VZi79QX6L70+4hYXHkucMe\n+0Nk5xjrVmF1ttQiuufJOFZ+31zWkdStFsbreEz9mB+0Fp2HO5RtrN8u9tZlt7iBJFVuM8Y/+tXY\nxXEc8Uci4kKjIXPBrAW6ha4mW4lWS9llCqgHCYHzdaq6a0FG/Uy55iuydYxsbBxgYGfSnRXAlKxx\nHcTzsUEZramtVksSjfLtjJQjt/n+tclE8QuGIl8iUNldx+Xp61T5k9SozTWh00FtG+POQEdCCw/L\nNVpbVbGSRrZmKdcMctTI7vUGdUKRsDx5jEcf8CFaM9r5Ue6WRWIHYdPoa56lWMJJSJUXLUrJHA0J\nDr5hbgE1TI4IViAO5Occ+tTbskiNC5A6elVWaYXKJKAUdhgZz/KtFBJcy6l04ubttYjeQGUBmk29\nThPlB6/1qZA8sgjEzBJMkso5Ptjt+NTXECSReWgYEAkKwwM57gdahjgkV2CMSQFwEHGe9dLiox1O\n5qkqasaoht1t0jVSI14wG+Zqrv5anKKAfzNJEylMna2OCp4IqK4/eLm2gZ8fK2ztWEJxvynBKkl7\nxHJFLK4wykHjJPStFXcAKzBlA25U84+lQWVsypvk2pL1QdwPc9zUnmu8uNigj1OAaUYqLbZDlzad\niaOVM5DA5xkr1pLqzi1HE6lswkovzY59dvb61EIoZpD8jO3VsCpP7MQQgW95IkwI5ZuOMZyBwad7\nNML9xkdgSIg26TawJ3ncSD1/lU0Wmo9pdWauBIQJY5OmW560xXvIlLTW+SOpU5B+npWXfamztII1\nkEhTYytwRzz9aUkkXKNveHzzQxJA4LBmO0lCCQAOg46Cs9Em/dxLcOW2nIwdpZu1FqAblpgdoT5s\nZyp49KvWuqH7WfMHy88HkCsXJX1I530IbWWRnNvPlCMCRz0A7jHatdZY5LkYIaONAVC85Y1Snkt3\n1m2ZQrB48SLkkFs8Zq3cWyQs7QfupXbJ2LweQPu/jVxkCd9yU7EIdwC3UZpn22JWJkcMTxz3rPUG\nSeRLm7IdW27CQG96sh4Imx5TjHA3vgflVvm+yatQXxanXw29lBFuWJFxz93BFZVzIZpTIRkEcHGK\nFke5TEjEOpyuMionEqEkjcufvL2/CqpUnCV29zCTuOXZk/IWK5qVW7ouFAzwucVCrOVDqN4I5HSk\nMqAKWbhzwydiT6V0Xj0JTLXnS7djMSrc4J5H4U3bIfl3kg42tjGPWm5MhIZsqXwUPf8AwpoEm0YJ\nXvjqKnQfNFk/lpI7I6sCBnrUDJJGCYuFHDAjvTvPlXKuCjH+Ic5+venOSYy4YGM4DAfw/hSa00CU\nbIYk6gAEkMgwT6GrPmhkG5vNHc49aql1BI5ztwGNOEYPKhSNvUcU73JJ0Zc7CzEjoW9KWbzNqbFL\nCRtp4PFQLGSm0hXz69TVrSXYSS25DsQ3ClckGnJ3Q0nLYIdJv7iPdHA2V6jGM06wtZnuVE0Tou0k\now2k9u9bUU7RyGJwY2yPlZcfjUzBpAcjdjrmuNVpLWw3CxhjTTFPNCudrEqPYnp+tVIZAX8sjAz5\njD9P6V0ERD3JTBbcpIxycr/+uoJNCg82SV5ZUlkO1QoBCqBnp9aHiVHccYORh7iXL4y7ybFHrUxL\nqSu/nAO1lyDz69qtpo80Vwk7HfFEm0Y4yx74p95bSSxKqqBwNxIxk/4V00p8yvEiVk7SMednmYS7\nSzjI+YjAA7e9Ot2UqMhUc9VPINTMqKPs8ZVgm3L9s55qtEQ7xKoIjM7MD/s4yc/iK051sy7yRdCS\nOo3KQvTkUs0YttsivyBgg85FRLHj7rMoY52g8flT0Qht8a5YnOM0t9WjPnvox9uGnU5ddhH3CcYq\nK4uFRPLZTlW6g80kjFf4Dk8hh60KixLvaUOrDJBHQ0WGiU24lPmZ24HGeoNNgEYgZZcnB6qeppZN\nzQmOPlW/izUcQWMfZ2GepyeaFqtA1s9SyrxxFQrFyflDZ7+9KjSCSXzdgC9T3zVYFI4GERaTafpk\n+tSKflDM7LJj5gehp2C1nYfKVyCGBPZgvWpICg+eR2BwOeuajzGinGGHTA6ZohkiIAJGBzzxk0pO\nyF0bZL+6kPzMwbrnZ1pI2jRiYpATjG1uAPoaHNs4O58oBnCc5/GhTFj5YMAjIJbqKi1tWTFta2sN\ntkWaZw0rfLgyKBzx0q06+QjPsJ3DKg9c/WoLe0a5uS1mxWULjdjjFTTi4tkLzIW7naOGPbmiMryc\nXsaTqOo7oLH7TMqzzlS4+VkL/wAPr9adqd0kywxqSZU4LjsnfNZkd3JLtxlQR8qk9KVtyfvMFhjJ\n9D6D/PrWqoRc1NdCox195allLmKFi02WJPQDKj2roUNxd6ayCKMK68F/lArB0+1iZ/PlMnOctGwB\nX8K34riN1WONmK+3BrnxTe8RxUfsoxlsbyGVQkHmEc7lOQKYMKzbeu7kH1rpkSKE8K4cD+JcGsO9\nlC3Usly6OZW/dgj5gO/tWdCq6jaaCcU1dCxOUcEs+AMnHQfStNrHzocmaUjsC2P0qg0KtaiS0ZWY\nAHLyfNn0Fa9iu50e4uXVmHmGMDPUdDUzb2W5CgZkmmOjEpPgjpleD+FRfZbhnERlgQMcAAncx9K2\nWYmV43GxlbB8s/KfcA9R9DVa4jZfm2q3s64P5is4VmnaSHKnZXRjS2JKESFdrD5VUZYj60y3VrTC\nBsY4XeM/kam1DUYoELtsMmMbQ+eM8fhXM311O4DvMQX/ANWqkqD154/h/nW/1hRdtxKN9zrRr1tZ\nbnupmdh0Ve/t1rntT8RSajdwrJEEh27mQclAenPTP9RXMPcTQujPIZFOBhky3uc1PayrPDP5hG51\nwM8cAn8qa5Zu5tGml1NeO5gjvAhgSKYMpDl8Hb/d/X8a1/7QlVlSSV0yPlLrgH8RXKxEX9rG2fn8\nsRsPdcUqaldac/2S4iaaAjcnODgd1P8AjXn4nC++mjVJKNjqmu12Hf8ALKuNuD1Gax7iccs++MZ5\nZc4HvwaZHI01qtxHv8gjILdcetKrMTuUlweCOuD2xXDyKMn3Ie9mR+SrAruBIIIJcEsP8+tI0JVV\nAmjJ2ngjA/8ArUwxAPIoAAGG247U4RyqMqxAUfKByc/U0J3EmmOaOOQMpZWHU5NV3svmJRgPbGeP\nyqQx3CA5X5fTGRn0YU1lYEbkGEIwQegq7q+ozMmsnRy8b4ZTyMYI+hq1Y3rF1huVIPZ9uAasiWRn\nVX+/g5YucMv5D+dQXNqsx8yAFWzkY2nd+fOK1Un1HHsy5NubfKrMd38RYDP0HNJopt/tU0kl3Lbz\nqm1GzhGHpyDg+lUvMlngZPMdJcNuGDn2NQ+TGrlIx2I+cE5/OtIKx0U24O/Y1Z1DxkKV8sSh2kA2\ntj+6UHC/gKqR3jSMEWJRGZN4kwcgdOCe3Tj2Fbx1azmEEsb7JDGUZCoIBAwRxk+pGPWstI4oggae\nR9vzKxfbj6A9vaipJJXLr1IyXJYhlIUhtxkOeWzj+VCSK4KOx2vxyO/4UXhN3NI5VYyxygj428UW\nw8ogzAKhAOUGDn2pRUbXFGdONLla1ZEynPlPgsB8rFcH8as6fNGsBidQA3Gcd6qyRu99+5c+WFYj\nex5/H1pqvFFnGzEgyVIyQ3tSqx542OWOjuWLyOGe6Uxsq7Bl9oPzUXdxEtmUY7ucFSvH41XhkEcp\nLqwPVRxzU0Qiu3EuzLAkOr9vpWShZq+qRdmrSexEkwlijhVV3dBnpilWONImDq6tG3B6qadeNG3K\nQ4KjbuQdqSQfuTGknz9cE53VVidG+xM7N5bhkWNmVTjaAPbmsmKzW8d3Ziu0ZUgZwavM5aV1TGWQ\ncHmrGnC0j3C48rGdjuxYiLPQ5Gen4960py6hLUzm0ixZAsrSbiM7iNualXT4EUfZyyOD8jKuCD6E\njrVqSWHJSJg4Rm2uv3T7qe9RpdyI4aJmjbHEhx368GtOaUnuZmBe2rxu1wyGNZGOM/Nk9etMMvnQ\nph8FV2mMjj1/ma1tUja701olIMiuH+XdzgHqOh+tY8Fq5vI7Z1McjdmGO2R+Yrpi+o7D7a8ltfli\ndkHpnpUsM9xeXsEaAB1XavAA49/xNX9J0uKXzprogPFJsCNzx64/i59K1ks0mVXkSO3u4mZCFTbt\nHuKtSd3Ym6vYwr3XbpDJZyQhGjOyWQNkZ7EViSrg725jP8Q7VoamVlvW2jZIv+sU9cr/AEqJCihQ\nQCpcK6ntTc9BqF2R28klk4eJtvfHVWrYGsLOhV8p64rI8oxjZE52jseajZc43DBIByOnNTJQnZyB\n88djfidRCBtWVBznPGfelDojGR2cbsKeeBn+7XOq0kbbopXBHQg1PDqd9E4AZHI/hcVspkq5t4dB\nkZdWGF9BTZHfy2CRbnjG7cGxj6Vmvqd/sw0UY+bB4xxRC9w2R5bqm7mWOPep+tTdmvPfc2dPi+0x\nLc3BaYnpk9/qOtXN2wgKqg9sLjBqlaX8KW0cQhdD3yhAJ6U8X8GM/vAcf71NRSdyJScnqW1USjLo\ngz3+8KzLxAsmMnZnkqaurqCou1Ie2DuPB/GqVwTKdzRhRjJI70MUdGaUAhNsnlSq3065pzWjP80i\nhQO7fX9KqadKqOURApPO9jj8KushlbDOxHXA7ms3UalyjhHld2RulvFEVg4b1Tjn1rKtNPjllmd2\nJSMnPOST1zWvKEiTau93PYDiqbObWaTcMRPIu7HTHtVP3ldDm+Z3WxNZ2kJtwrRmETNuDMMqAO54\nz0qpqWm/Y9SRVAmiaPcJIun4iuiVWkjEUEJfkbUU8tnsKyNVW4tI2uZIFjLNjYrcjd/XNcvuyXKZ\ncuhnwR20D5iG1lOQSep96faSapIXuEgd0zsEqfN+o6fjVBI5Lu48qLuCzZbHA6811ujaext4okd1\nBwTFDku49ieG5wcZzz0qIppBE5O4aGW4me9V4s8N3YsOOfep9Ma6jDNtEsOcAM3X6VvajpX2ozzW\n88c/lAMyTxbXJzhhz6H36GueEVuy+YqmN8dAxxWrl7tmjVLSxvxeZEoLAMAMcdauJOhGcBgRjkVU\nO378fQ9FPUf40ibnPzEADuO9ehfSxhe0rSRKsWwuh3lSN3FOBhiuANo2lcqRTFaWKUkOrEcDLdjU\n8ECyo0rDbJnOD2pOVldj3ZFKFDtg7mx8wFNR5EDEEbC2SAOtNmm3FVQBZOhx6VauII40Ry+/0+tC\ndrX6iabXoRLM6NsljOG5x1IqTOcvEQCMAj1HvUf2zzWEZXLHjJXgCmo+Jm2jd649acXbccbrQeVV\n8HOwnuOaizJFgj51784pQzLlWXvwT3FLPGJoygkAY8+lJxT2JHq79fLOc/eA5/Gu106CaK0TzI0V\n8cMV5xXD2T3VlcCaLBkH3cP716FDLFe2i3EMoLkc4bkGuLEycbI0opXK1zA9xGY5Pm6lGBrNM7W0\nq7zwG2H3qxcTXMUhI359VXIqO1uTqFwwnEYZO+za1Yw10ubVaXM7xZtWdksatLnLuMDcMbRT38uK\nVYsZZs9OlUp7iaKUyR5Ib+DNQt5k1yJHB7kds/WueNCfNLnehoqairt6Ghd20c1u0KMEdjwwXPNc\nXf3sn2+axMqP5J8tnUYBrrJz9ntnlmmRO6gtyfw/xxWV5bPKZBGoHYAYY+5b+I104SXsm1c55x5k\npHNFXlYRw4K9yP4jV2ZIrKzUOR5rEDnsK3VcEsqqgPcGMdfcUiwbiSbWF3H8ZGcH6GtZYlOS02Fr\nJWObMh29SAR69acbgnA27e24nmt+60ez+xTzyo6vGpcmLu3ptrjo5ZWJJRgehBBH4YrshU51dGPL\nyuzNOOSQrvGcDJDHnFPG1mRpVVgRkgDAPvVeJd4d5Sy4HyjPX8amaaUEK8aFccnt+FactzSMbj1M\nSw71YbgcYPakdJpYo/mCc4GRmmbI2UFdxVeny5X60gaYH5VdsDONvSp1JsG7ZIFc42nlk5zUxZJG\n8wOiLjCn+9VfzZApTymwev1pgkXcAVy2fmUD9aq3mKz6mhH5IVVJYherY4/+tTjboeUkJB4w68H8\nehqqk0e3IRxx1Zv8P61KssYb5Bk9ipx370IabWzEnIjwpAAAHGPTpxTtOAvtQSLpDxuIPKj2oudt\nxbeXsIZjknPpSaXb3MV9GHjSKNjtLFuQP92spp7kNdzqEEVsjRxrHBEChJ3csR0ye5p140PkOGG2\nM8OR6elQT281xEYIZNsTEs7MN2R/Sq5gjLgyKDnhmyRnn6815i5ZT5pPY35UomT/AGYsMTTq7ICN\n6IxyuM4waY0Vy9wq5boQVbkL9Kv6r5jXUkUcbmJxtUkfKRUFrK4kA2OTFGI1wvBHtmu6FVys2ZXU\npWbKsUs9hOFkBAJKFgOM+9Xzex4JK/eGcL3+lUdSvVuMqR8zEZVetNt7c/PDISHwSPY10uCtudLh\nFRUupYk1Oa6YQQTyso+9u+8vtUsbzQBX3eYQOh5H4VCropTeFKsPlfFMkYmbZ82WOARkjPpWemiS\nsc05tuy0NnTJoJ4iojZXDbgu3lqugvEGPG4DlZDtC88c1n2VvOZBImWcgE5O3GKtRStdrITjCkIy\nFeOPeuaV7vlN4NpWRoRTLkI7CWXPGz6Y6/QVl6xdeTCNx2q3Gem7pwKslXsraS4nSOKMKW3hs5A9\nK8ym1O8vLue4uZmUSN3OfKQ9gP0qJ09LlOD5bvY2TKjuZRGhCv8Aec/KG6cH1rEkuDqGpnD7kGPn\nx2A7Cq0+oNOfKjysYBIT296lVPsduxPErrn0IB6fn1/Ks6cHfU5ne9yKbbIJ26AFgOOy1FpL+bA8\nMh5Id8jqBTJ2EVk0S/eYngelRaNKiXbb9uJI9gyxHbsfU10U3qaJ+6aUdi+FlaQoGUkBTlH75B9a\nuwtsjit5IxIhABbcf5etLGV8hcRtjYWBPQYprfdIWQbGAAzwcgdM1U+Z7jlUnKxJb38FnEkBQiBX\n38dhnOCD+P61ekjBy0ZASQhiw7D0FYsiCTIMot3BO0THjj1+ta2kxyOqwqsZbP3Yzlf+A5rgxMIS\nd6b1QQfcSWIhfMXIZV2+5FNEhjc5OUcYzwCv0rXltDCMMBJwSpB5HqMVTnhEM2w5a3wSkhH3x/Q1\nwyj3LavrFkQOUYD5l3D593TFOcxyZztBX5VC1UMDRMGgYLuHQHgH+6ab5xJ8soNzAqAhwRVpvZjH\nzQA5jbqDncCflPbvVdWYqySn50B3ZHXng44/SrBbczqDkAgbQp4HrmqszMrgsiZIKHcOv4iriuxS\n1K80Kud3l7eevGc+wx/WpEtXjG4OEHXcox/MYpXfzUPzKpxzk5x/OqtsZrqVoC0mwYBbzOCffpW3\n2bm8rcnmLJBDM5fLu+V+cxAZI56irVvFd3FvlREyxD942/DID0baeSPpmpFg+xxZWDcV69BuH1OK\nbITC4lEbx443A8iseeV9jm5rvQnn0+7sIhO3lXEBz+8gcMB/vDqv41A+yZV8skBsYHueKfJcCSML\nISY36EZx/OrdrHH56kgf3hjpxzSlUtG5Lu9GMGmGKMGcheM7Vz/M0ssAlgEEaquSGDAHPH86uzSr\nPeSjICRjcf8AP400hYmCbck5yoz6+2D61hQxMpys0XKKjqYN7b3MFwNsO6MNnzQACPYn0q7bmNDG\niIO+cd/rVy83/ZwQApYljszgAHgA9xWSkxeXhdy/dORkH2rqldxsUqjnGz2RM0iKXGVMuNu7ORTF\nj228khGHIOAR0NLHajaqtvUsGOU5x/d/CnysGQx7ixQ8ljxj0/nUuVl7oSldXfQiiUeY7kEIFAL4\n4qrLtMyhCdx5YrgD+daUI8qF5ckAAjd2NZqMTJiMfO3JJ7VpTsLVkgjVQPMOT2CjLf8A1qed4xgr\nGSeDIeT+FKkeW2q4LZ+ZuRipkj+beG+XOSQis232B6/nWrnbRCutkVzH1WW4YtjBRVGAfT3+tNS3\nsUYuqOsqMNjE4z3yf5Y96mMWBgqSVOWVOmPrUTphBuQrngELnBpqTW4tTW1XQo7u3E1o29ZQHARs\nHHPf8Kr2krrmIq2zBcpnkEdSTW34bht5dK3NKhdWkmdVcIIwOCxGQM9/XGai1jw09xHIn7xLkyYK\n7cbAec7xwRn09RXSppIaTjqjgNUu1utSeeEDaVKcDr6Gq0YL3G08A4PPHIqzc2i6ddyW911j4Bxy\nT757U+6itguYXDD+HHak5JWRnKb0ZXEZwGJBbcTzxTUZgiiQoCeTnpjNJCHOS+56WDcl0ZJYtyZy\nFFN9TeVSEkraAMFxkZDkLnsBUYQy3Gw44YjGewAqaa6ieUFMkgjgjBB7VWKl5Q/G4v6UK+7M3oad\n1p8kVrG8MjSlj8sbL1rcsFzbrKoMXmZfaTwM1z5vCZot6Eyrxu804PGOR61f/s65njXE5AxwrPwR\n24HStJK60FzW3Ll88cZ8xpY8dPvjFVYJo5W2rukA6hULAfjilttDjDE3LbyP4SNuavb0t08qCMoF\nFVCUkuUiS1IhbKSCN6+hZMfpSvpzkZWQcfwleP0qcSsxyCDz/DTxO23lDx945qlNt2aDUx5LR4ZC\nGjBb2NWVvntyDLwemKJpMzARgbjyxPenxxIm6UplsgAleaU4I25WknLqOS4eRTIeFH6URzi4SWPA\nkVuqn19ajksQ7kzkhtnDKx4Jpl0IIowEQoQCq4cjA9cmqjG5pGCmtC9a6nLakIAGBP3W56e9R3k5\n1SVGuJC0Ua7s4PJ6daqWEL3pY+e77ARnAHb+9UgZlwWiYqOvljG0dOecH5u1Yzio62MXBrRlpYVg\nntyBhFyjDH3QfSlS4ktwuG3RnkFWwVPqCKqz3kzfLGmG54cEMSe/pxUluuyISXyK0O8AAgrjj1HQ\n1h7T3rCsad3qzJL1kuL1o42OfvNkZ/p1PJrmorSWV2MqSoxZmICDAye2fr2rpZrG1RvtEEPlSbcZ\nRjkcjGDz0GevWqyXx842s/LKSEDIQJE7MoHbiuqMPIbi7aCRodnJYknIUdqkQoz7PL3EHnjgUEAR\n8kkAdSd1NQqycyYPv3rV3etzBu+4twGJDZUY4U1JFIQvzhhj+INTmSEW4RUYuOdwNVV3JKrMx8vr\njHJqr88dSdUyUHzICFUK4JO5u9OhLKU85g6kcc54qW9u49okTjjkHrSO4vIwY22hRkbeMe1Sm2tU\nN2QGMMxmbCr2FSQFVO7+HuM9KqAMyFfMJK9eamiVBAHBLDoVz1qoq6Ks2S3EkaIoII3HAZV6nrUM\ncx8sqDJtwWwB+tIJUuoNpUnuA3O33FQhS8hjt03knovSiUbPQU6co6MspA80scUYXezcbxtB9TXY\n6bHbWFuIoiBk5c7upNcTteGTMwKSjnjir0OqTRJmKMDk/Me3Nc9eHtI2Jg+VnbTys6YWTy4wOSOp\n9qgdMQFpGCkcr5nX/Guct/ENxE2JGXBGN5GWU+1aNjcJqclwEbPlEKR6nHX35rkhSdJandRnGUkg\n/tdPPWBVaYl8b9uMD6n/AApFvpIpQZECqTw+/l//AImnS2yQPtjQFwQx/DtTL9Iid0eGJX7ua3jO\nKeheInSlNKGiJbu8SaMKI1wRwDgiqUF/KspQ4TbxjGKksLJ1j+YknGBT9QtUNqoxiQEBH9DmsaSg\nnJx3MPaxh7i6ll5FuVGTtkGCpP1pFu0giL3TFcHjZ/F/n1qC28kDy5mYcbhjsKx72+jnuDGTlVXY\njeoPOadOClUvbcx5lt0L91r9quQqNIwPyLnArFklnnmErxvxyNgyBmpUgEbeYkak9Mk0hWYnHcnk\n54rtVOMXoZ1Jcz91aD4lAB3PuZjng9B9KmSO1iJLyBycgKD930rPkR2GGuCB32rVu2hUZO2QnqWf\ngVtyJK43GVtdy010ioTGoXBJDBdoFSLdhfmkIULlgo5qB9sblj856gdc1TmmYsIkGXJG7Pt/KoTX\n2Q1RYuLt7qUlydvGAOrH601dyrtRVR2HQcn8aaqhdqs4LHk59KkgCRybXRnUDlh2pJ66ELUcAGzw\nfTnBqwkZVd2wEAZximxywxspVEdQR8oPNU40uBK8gclWyuPQZ9KbajuVot0WnumiQgYU+o4qGJmu\nWV5GwnUKFyWOfej7J5/WZypcLuK8D1NTKRAro/LFuDtBXmhu5cpRa91D3uPIHlpI7MQPkLkhcc8/\nhVu91JhLAEX/AEdAkjcYyD/k1QZY2CrGg2scu2TlvxqNJyxxIBjiP72MY7fzrKdKLVrasUW+uyOh\niZFJwwaNuVPXIrNu5ltbxJYyrHZudT6entVZZZ1DJEMnBKo/+NRLG8s0gZvMbguAMHjvSpUFDV7j\ncle6LssoD7vvEH5d4DcfXrUbSrNKJyNj55weo/KgNbvbt5PDkj5S3YVDINrgxysWOSVbv9K2tqZt\nsTZhim7KNyuDypBres9RSKOOFwPLBAB/iH19awtitIrG4IIOfmTJNXFWFlAeV190Ws5xTVmOLd7o\n07nUTCsarl1zkE9QMdKz2v8Azo8p+6kT+5wCD1pr6eWXdDOrj1I2/nVaSyuIsgxsrDnGRSpqna19\nTac7Iq+KNZl/saOI/wCtJKAfl/hXKXn7mwiwCXYb/wCnNb1+++5R3AzHHjbjPzc81h3UUs6W1vDE\nzkp0549f51VRacvQ2jWbiolPSUB33E3KqwAB/ibr+VaEjBi80jDBOSS3HpUU9vFb22ZmkjihGVRC\nAzHvu9M/nWJPdS3iZmcsqEfKorllGV9DKSUldEk93HNPgyYXIyQPuio45/JuQ6EEKxI2g425461C\n0e0ABAD7jnr0xU8YIG4q7DuGwOPb0oskg5LI3ra/heFnWYDogwvzE9watz+ZIHUHbJgsoxxnqP8A\nPvXO2gESb0LMuOGK456GteykFwic4YdOa2hdt3JjT0u9izZRtful1GhXvIufulc5+lHmSaffLIVV\nwpyVOBmrXhSdbLVnWfakMrFJBjo2OCD2HfNXdesShKsMhTgEen4VyVly1ObubJ2jZm2JYr2zjuba\nEQwjCqhcNknOST9eAOwrPmBClHU47jHKn1H41hWGqzaYJAXm29GAJ55GdxxwK149QjuIw8ana3Rd\nu7isasL6gk+hW3KpEb/KQcjPKN70xlR4ysiBwBliB685H51Yk+zygAMFJOMf/WNV/JkB3RuG988/\nQ1zOFh26MhMAK7lYFCvysBk49M5/pTW83a3lkOQAQuc5qdopoGG5JIQc/NJG20H345/Cs6/uZ7aV\nI3t2AfkSZyo9x3x+vtVwTb0KtbUjmuikbMY2XjINXYbYrHuXJYAZ2jPv+NZizo5HmQq2euwlSfr0\nq9p97HG8kaPuh4Gw53JgfTtTqqSg7EyV2izBKJHETYI6tgEDGavfZlSKfGwxyqMrgEDBzxnkfhWd\nco6kXUDggHLYbgjvSpqKxIRkhT/dfcM/TtWElKSTgyVZe6Q2tun2qayZf3bElPY02GV4Dtbh4Xxz\n6ZqOKWQXW7769QV5x+FSt5k891KcKkgzz9ByK0ad9Q+Fu7uW1mzPOBwsrgn2AHIqe3dppZJnXqxx\nn0qjHIsKOzq/TlsZyB1+lDX7SMywRttHyqQMZrNx5Y2jux2cn7y0Revdtw0YaRVEQKhUGOPc+tVJ\nkVY0ih+VVyclAD+JA5qZIxGyrOylwOI1/hqS7ikltgkb7QrBmVWxV0q32ZENdUZyDYCM5AGBk8Cp\nIYRKCxP7vov+0aFibBLALAOpDbsn60s92mzZbgu+MAjGBWiizWMeZaDNRd/JCBep4AwQKrQJ5SAB\nuTyzDnn+tOhSctuwzNn1qVoYp5FFxPJEOhaNASPfA61o3FaJjqU23aLuORlcKgcDnHJyfzpVQEKQ\n27PAbt/LioI40jRR5obucZBpUuI5QBja2eMS8mot3MeVrcsLLMoDKysuAOR2bih92CxwSwwQ3JH1\n9x2oSTe2CTwfmUDGcUhZY23NgFz0xj9KaskPQdbC282Q3NuzW7rtkGcMvuD69voapzeKQmoGxt/t\nHk267IyOXAHTjp0wPwqyuW+ZQPlXJ+bApn2G0M7TqoMrAFmA79MZz0raFVR1aC/cqazE2pRxatcy\nzTzygB2YY4HA3Ed+2ax7m3e3IV0MeRuUeo9R7V1lvZxXlncpPdx20O8BTI2EjZh94r1IyAMise50\nrUU1NbK4lDNbJsGU3KoPQA9CCOQfStotz1FK8tjNja5tI+EOx+5XqPrTbf5pJpRHv28lDxye+a6u\n3k8myWxZMIvChueDzWHdWP2O+W7hXdARh09B7e1VGm022Sk/tGM584Bj8ueGAp8sJh3KAw+UOM/X\ng1YvZ0eBUbhUB2kjGATTLcNOI+QFf5V3HHHtmqb0sbS5eW8Rt6gEkU+zhgpJBx9ea19Ovw22Gc4Y\n/dfIAb6+hqhalZrU206lccoxHT/61ViWt5fKfII/Wri9LGTXY7QEmPaVyem0cZ+lUpUJb5Sqj0Hv\nVXS9RVwsM7/L0VyOPx960ymHXPCn0FWrJ3FsmZ7F4uSWYDn7vSrsEcc4B+bAGB7/AONEpjZdgU57\nVWgkkt2MavjJ4GOlKd5x03Ks+TVkkiR27sBhvQd6bbFjcb2OF4xxzmmiOTcWdHYnvt7VNtZrfzIw\nmMcIzEEj1qfaqK5Z7j5W0MvJkSMvv5rLihkvpQSeM9TyKWWKSYpGWyzNyR0/CtaCJYgkMeBxyenH\n1rSCstBqpyLlRXVlhPkxEsqdQqcVLHdJ9nkeRVT9584Axgdj+FOzuxGgAQYwSSRx9ah8hY4pUUsT\nnLsxzzSkk1Ylyv7zLU8luWzwd3QA9T7CmXF1GUKMoMLrs5PU9cfWqMSC3mMi5VmUKc9h/SpH3z2L\nZ3B437djUwppalNNehs6dKHLwZb5MhlztPTPAPXHp71neIEOn36XLb97RAIYmw3X+IdelRW1/Owy\n8Rk29WXg/j6fWp7wTawkBnuIWJLf6wlTGo+7lvfJ4rW7SvEmM5RZNHuXhQDnjaR1pQjEv5igMc4J\nqMgCXPK46054pJGUCQKAepPandcxnyu1pCvA8G1kGQ/3uelEkknyoiruAwrCnFSqqJmCqhAJBqtJ\nO1vJuQExg8HFX8TRC6osxSxb081cFeoxTlkWF38tfcH1FQqVUO75KN97I6Gn2jQyzYkO0Lk8c1L7\nodkldjYo2nLSHEb9t3pUUnnLIoQqNx55yPrVyVo0KyKw67gVOMj/AOtUT3SLdfIABgZPfmiMtrFR\nnYktYghRXfJbqR6fWrUMkFkkmEAdzlmzVSV1wjoxWYnGBxxUUcb3DsHPQZA9aGryEoqTvJ6F2S53\nsfKReAuCwz9TUMmws+070Y7VYUeYqxqRv8wDB2nilVJGdFZUKKdpVfvCiSV7ku3TYgmR2l8lRsOe\nQevvVzT7h9Nu/MjGSRh1/vCmuY7aAqv7y5bgd9uaYP8AR0LSY8x+g7mspaqwk0lpudDDqVteSf6w\nCTrtbg1PHCrSglg3OevSuQlnZADlsnJwOwqVJZRGALhkHDMM8BSOKxnh3y8yG3J6HXpcxrOdrgAk\nKw9QelUdW1BMfZkyXL7xt527axzc/Y7NvIdDM4yT1AFVFeS5uB587KzfKrgccdj6VjHC+9zia6I6\nNbmGU7IQonYiMeYcAMwrNu9GKzeZCsczRAgiOTO38KW1t3ku3iyzSgbtqHJP0qxBAbeQq6lfMbMm\n35mJx69BXXRp22Oujh3Nb6mSokLlY2fdgbsdqesk6/eiLKOxXr+NSatIkGtSrAojDqHManPPtSWs\nqFjvj3En6j61tJOKuYThKDd1dD1kjcBSTG3Xax4//XR5TpJk7sDnBPWrqwrMjOgUrjkxvuAHuO1Z\n7SmzYKOYemVOQDWVGpKctTGM5R1JGdVyXye/z1FZoJSZTkc49Rj8aSdmMZMeGX9KmgkWO2RSqgkc\n4rSVuhpPbTqKxc7nDIWzgbRyPwqeKGU+YiSqcjkfw9P51XhXzZGEash3YZh0xintH9n3hZArddh5\nzzST6kJ21GQwqjgxlT83zDqRTo7lnlUW+1mAx070xFEsBcSgyD7wWmW+Le43iTOTjBPp3oaUk7ly\n97V7lmU+VGsSyNuwQd3PFWktvOiU5xuTcWbJyfXFV72+F0mEiJYZCkdFJ6mnbJJoVV2kwnJw2SOa\nUW3G8tBeSFW7jRBDsjURnJJX7/FFpCn2VtwBLqzYPck1WniJuIoxjZt3AgYJx0pwkWRVh3HJ4247\nVaWr5kD/ALotv8x2qpyqtvbdxin/AGoQyp5O1gyff25J+tQqxgGUZuNw2FccU/7QZZU8uHEbDYUx\n/D/eprYVtR1xDF9qSMygbxw6qABntT5IirmNWWQqQA2OeagQxLcMNjblJI2/SnBGkdJHJdZFyPLP\nTHrQ/UCxG6khbmLDdMqcDrUoLx48tvNA5Kv1IpkULeXuYoEAzvzyB1zjsKzb0q0jYm/dDgDdwx9c\nD/GuatV5dOppTp8zLkRnW5cLIqwNyEkOGX244NWmuLiBAsqLMidFznA9iOaxI4vMwDPheuwN+pqw\n2uW8CfZ4zLck48sxY4PfPqD6j0ryp0p/FE6a3bcq6nuN0rGMRwFsiVjncNvCkY+979KzJrwxphEH\nXoeT+Pqf8ah1e/a72TBt8LDyggblR6/71Z0lzJbIDdfI/Q85Ga7KUqjilIycUulyLU5HlOzJ3EjI\n7AdapRoFZnxvJOAEP3RUwlSafIycDdlu5pkRAfLAZwckcEnsM/410FxfN8iaGEhhuDkk4yDk+tMn\nYGDlsZyMMO31FTIuwqgyJSMsC2KrTHzZNuXwhwNxyPpWcldkzRZUYtIwF6FgVPHpS6ddrFcRow6H\nOT6U5hhVjfdtReq9mP15qvIsgCurZKtwSMEmt4ySNqduTlaOj4huo5VJAkjyMdVYH/6/T611E8n9\noacCQC6AA4AwR9BXJWbJd2SJypDsAfYjIB/z1rat/tdlZPK8JkgVeW3A4Hv6jr0/pXPiNVboZ2Vj\nPurYr9wnjj+9j+uKq217Lb2N7EViV8MwZVB4wB3657DrmtMXD3AaRIGYryynJIHrULCJ42cqArDB\nOP0PvXJGfIrTQoVUlYmtZbeWxG3blFUSHd82an1Dyo42lgWRpBwWBClMgclTzkdu3NFtbS28GxXj\nj/ercRyxna0PBwACMZPpz0qKdZoo0WOHzfMVi0hXb+QPUjNUpxTvc0pVEpJyLdtqki6ZBG1yJoMk\nmOfDsqgnADHnnnr2FQajM93CsRIZEYsqjlV9OevFZwjKKj7wzHCurKQR6YzWhbva26hAQXB+bnoa\n5K0uV3SE5qTfIjAmtzFy9ttU/TB+oPX8qZHqNtGyrI/XgfM36DArpp1WfCRRRhj3YZLe+T0rnZ7y\nJrkQRjfIwxtJB/ArzWtGp7RaonmZcDnO+Isv+0rFT/gagMNzczrE7nbIdo+Xb/8ArqQ280KAM4Rj\nwEQg49toA/KpIpZrQpLKrJtO7JXp74NPRbGzT5brcnOmJAFG1WEfJbHOfY9RRLIIch49i/MoKnkN\n2yP61aEn2yN3L/IRnfjgVmXS3byho2kZImBb6+lY03Ju0nqZQUXrI14rWKdXkV8IMtwpCInHO/8A\npiormD7JdKshQkKGRo23Kw7EH8qzbWeWaGH7KY9qP8yNksBnnI/GrMkUsyLKZW+UsXlChd2egHpX\nRUjTcX3E00/eLcBZyNnyg/efuT71NcSJDZOAFZ26ZrO2DA8uVnxnjdhvwPeo1VmkPMm4cfPyRXIq\nal10BPmeg8JJIn7wMF9jUJl2ZzIo9gc5rQgicr80gORwI02fmKhv7UXEGRI/mquVYfLgnoD612Qd\nlY2p2vZlQSzSvtjVj+AFSLBGnzTPhv8Aay1Ns3kVA2Ru6HHT9adPFLMVlkTesagBgByPwqJNN22B\nyu7LQT7MofBAB67w3aoGtSULRlQQcMrE/pU0krvbqYsRMhBywp06AhZZACMgbyMCmtVZgnzWTKJe\nVTjJ8xOnuK04bhblOMCQDJIAyfeqb7ZgHTYCozlR1qFSYLtCrfxZX+oqeXm9TJxsy7MHOQSjZ7hS\nCaVTFGqpHIrngshQqw9VOf5jINTFRPbKxUIfXOSfwqunlwoAQhIPVXyfzpRm7akN3RYt4vtEc1kx\nAMgIVmH5H1z/APXq0J7i31C0lvlzLbRiCQkdY8cHPcc8elU4JAk24gkAEMEOWXPcZI5H5VuLd2Ot\nWsQLlJljKtvBzG3cHtg4yDnua6KUm46BDbQk1LR0ubf7RZEFlG9QCD2ziuXtp45ZJ7clGVUU9egb\nqCPUVt2VxcaRdQ+bCfIlcDdjg+4PSujmtIUnmunjVJJCEd8YGOcE9iefbg1vCreOg43lGx5s+kQR\nyA+SXhLHKZ/kaLzyJoUgVDE8XyiN02kD0r0R44UZo5IVQYwwT5FOfU9OfbjpWfqnhq31C2K2xVbg\nkhEc7g3fAPrwcU7g4s83mjkgkjLrwAcGQcBadKizQ5B37Mc98VtQ26MGtJym9ew+Y9+RWbdWNxp0\npcKTEpznrx71S0aBIz/LdFLx5K8cjmr9pq00YCbldccI/B/A1H8vLxYIXnb/AIUkkcMyO8XyzKpY\np/ewOta03e6E/d1NuOae52mM7Fzlt0YyT6Eip7eBVvPOnbcw5AK4A/PrWFBLLYENG2YyB2/pWvb6\nnbXWI3Ply44Vuh+hqoyT1RlNNlpsM8hyAxXIJ7VUSEW7bp7jcFU+g3c8cVbCJnIIOPb+dRXUqWyB\n8gHcFyeefaptFvUvmklYroqvcJFGvCLlqnZyAx4jX371FpqFllmKjdkEk9DTwXcRbWFwgO5mIwRW\nl7oFHqIHJ4DjapyGUcGllQxNHCo3lzyO9MYuf3cIDhmzkjkU1vlvFyxEoBBGah6IbfMrIW5US6iI\nlGRwzNjgexp0B/fTk/dlw/8AwLpUfmRpPuYhFZcnce9RJOJC0kfMe4AEe1XHSJrCV4crIJlMdx8h\nO8fhkGtCzcyRbupzUbp5jpKVztQg/TNOgmWFXwOCeV7Vn7Sz91XOaT5tCw7ieFLiLOQPmA6023u9\nimJhlWzgjvVKN2gmMeDjPT0qV3KN5iADJ59D9a6eRSQ4b8rNYEs28opBBOO1Lc2yopAAPY7ePyrP\nilUjMRZWPVCOKl8+WQlScccnHas+SSdwcJa30GWzqJWZ5BIpPJY9u1LKrgb1hIGMFwuM0RWiwyEk\nZXqpNW9xwJCR1wPf2pylZ3M4wQmnJbyRjzt79wM7cn3Pp64pt8qmVQmz5RwqrwBVZnaF2SPhWJ4P\nShy44bAJGQaSg3PmuNtMWCYRzYVMgdgKmmlfCSK4Vwfu4qWytbdrZvMIDgkcnvUG6FJJIMkhuN39\n2jmUnoK7vdFq1EiQ+YqZZvmJHcVHFumLiG3xLLzkEce9Qx5EWxmOCORTklCsQvEY7jrRUemhGpp2\n+mqCcyJvPLPuzk0smlCJXle4hIHLEfePtmqguUUnDlkA9Kq31+8sBijiCg9Md654xqOWrKhFLcqC\nKbUL8eXG5XPGARgVLJuF1Oqk5VeMVdsIxbQFAfnbhjUSIGuWkA+Urtb6V3tWhdDc1KViK1XzrTBJ\n3FsAD2HSpY2WeJYW2DYAp+XJ4qKx/cySwtwpfdUt9b7GEsb/AD+x5P4VjKOqZvRUW2pE7OLeWGR2\ncoh2t2JB4OaX+07sxFFkVlHKnO049KW3uYZ4xu8gygcCc4A98dz7U19NFt5kbSZcjKOOhHerTtsa\nuTprcrRKzqzs8bOzcgDg/jVoBolDmLcuSGGcEf41A1uYDnA8qXsTwD7GpBO4XZy+SQB3zWcne6e5\nzTlrzs27cwyKk8Rw4/jHykCoNUQSxF/k83GSW/iHcVSSZUz9+InAyaSWaaQc9T0bHBqKUeS3N0M2\n4v0KqDYMiTYh5VW6kVMuFzGXYEcgY6VCrY+8AjA4Ib0PpUgIbvtzk4JzkVq2+a7BE3mvEfM8suhH\nAx1pZJjJIssqR7du3Zu+77UxWDIVeXdxnLd6asUUcivJhkJ5HSpVtg12GXMhjX5QVHAJFaMNvE8C\nBFAkJGWznFU3kVwY3LEMMLn0qHIU4EjDg5GPSh+8mNaFmeX7PcmAOJAwBzjPNJDLJabm34BGeRzx\nUUcqxOu0Zz1OOvtUkredKGVQWQ8A8in6gxHmkeQTAEogABzT8hiu0MQ3I4/SkjuJLcYbAB4KFf8A\nPrVdyWmzGpj5yMDv9KEnfUlblgma6kaPYF+XcHZcinMJ3iE5Y5MfVR1HrT4Ltp4mLNtkB+bH86T7\naUuNr53cDr/KhzadmipXTaaBZtz4j/1pQAFz0qwrFz5jgKDwPLf7g701raaSATxfLGuOdvHrjPr1\nquFmThCMKDwG6Gpc0xIsarIZdOnRXdNwyXbnJrmbPSp5WUyyylT0BOMj/PrXQOlwAF8owgdXl5P4\nCqt3dJZRtHFkyvwWPLYrkrVbvlidMajUWole5litoTbRspc4DgHr7D2qkbGRMSzTJFISCuF2hfb3\nq9aQR20bzOimQj5nPOweg9/esm/ukkcoqxgnrsHOK5vbNS5IK5mo9yrJND5QWIbGDZK9l96rXdw/\n2R4pF3mT8cH1FXIikKmIqpLZKb2ABPoTVTyGub9coqHbhFP8TVrFps3oV1C6tdFIN5aAcYI528Gn\nWwJjcEjMZ5YDseatyRhkLFUA6nBxtOcVU+WKbzIgSjnBXPQ1vdNNGcW07kzrsgfoLdwOcfN9Khtl\nLy79uFX5lU98U9o3nbdKzEA52g8Cp1ibazsvBPIU4wO1JDk7tCEBsEru3Ak7eSMUmAzozsWZTkZ6\n7fXFPY+WxYsfMI5GOQMcVVcqsgXgBhgjHODTvbQbZt6ZHI8kUSopaTtuAGcnufbFbE8FwsHlNKI4\n5WHmxIuWBXjP9RWW/nxWEclrbiaZlAEZGRjH885rdsI82kUl1ELeZh+9Y/Mqn0Fc2KquC0FG9TRE\nujQTWU8dxbRuJoHVid/yuvRwRjjPp71Pe21tczSyG3W3jf5giNwB6fyqwLwQQxoWLxoNvmAYI/z6\n1A8cs0s77ozAy4OCR+leVLEzm3B7DqfzbDLwSzWaiCP9yqbWXH3V7Y96z3eRpod77Y1weDwv0p/m\nOsbxzS7Tt245+YfnTI0e9zM4KxrwCRwPpVU704sT1aRBchHnMUDqC38RHH+NNe3MDAuWHZskDOad\nNC0Nyv2eTzDnjHY05mQorSzHzy2ACP5Vo5y0aJSUdENYhIvkw+exOP171XFhNauLwwMPMXIfaAuO\nnFSXBRpGjMQiRsYXnH+eta0UymyaARbjICjSNx9Dk9MY/pWlN2i9Nxxepy9zPLAwkA2luAdoLH6Z\nPFVoZ5Jm2bgsr8KNw4zW9sEi5ZB5jDYhHYeoFZklkokKx3Hluox/ER+YNb05xS1O+NWKb5ty1YwQ\n2rgkbx1+fna2fark26OBlWTgrk7j0569D7VQjeHyN1zexogB+VAcn047VQgvJm04yPHug3lUOdvF\nYyp87ujCVpNyb1NW3mtri1Rd646HKkbj680t1fQrGtpCN6AhmyMdOgFZ6qbhUkSQTxP0BOfwJqaC\nzCgAxInGRtbcKfs4xWrMbJu7+4vxEum5MHj5kYA7v/r09oy4ztZSvKnqV9vpUEcYRhvcxk8LJjKn\n6mp5Wu7NQXaOWLGQyDII9jU8jt7pLl7N3REZ7lIWkwCv8RVd3PTpSG1aTBn27wMAqP60lvdCScIj\nAb/ug/yq2kqjruUnllxnBq5ScfdOmNZTh7pBsitliRpMHJB3Dk0pkNtC5Xc4J4G3JWpryMXMOxWO\neox0/OoLNY4kGXXcV6GstkY6oQvD9kCMu/f3JphdDtjnHCjIb71SFUW7AfBjJBxjGPeh5IFvGa3i\nKrj5lxwB+Jpp67DuNngiClmUJjHlMrdfXNUrqP7OyndujA3qw9KtPA0lwECbFU52560tzscncmwF\nVBUHIA9auMldalb7DYNwdiXOB19qsTZZtxPyoOCeuaoCYgbUDHJ3HYuTj1qxHKkkJ3ZLEcZPWhw1\n1J5Wtw8zywyFVyeoHJNIsktvKJrZzDKBjOMjB7EdxUsqeYqqAq5HO0ZBogeSPMYjWRMEnaOmO4oh\nJozu0WtN1S6imWB7mcWkp2zQrgI4PGcEYyM5rq9JkV9Ph8uRiyAZZ/mBAOOU74964aZgo3ICpHPX\nBFdF4fvS9xIqNxMu8oOcMMc+oropTuzSOxtyGFoyLUxzCQ7jEiiPJHbBGM4z2qv/AGXFFLO9vHIy\nqgk8sIGKnIO4c9QSOBWg5lMcTNIzxw9SF+cc5APYjqM8HFEX76KGD51kDkqlquSduecc9voSM1s1\n0HbsYl/oseokug8q4hIQMg+/xyD6DOQPw4rnry0uNMkh+0EyWkuF+Zfuj0Jrt7hTcROz28Jbe6B3\nz0IGQVz15zmsq5y0aBEVHRsEbvlfHbBB9j34IqldDcLq5w8XhjUzbJf2iLLA7sq+W2SuD/ECBxiq\nk1lMrbZYvLcHAwDx7D/CvV42EdqXSMRwAZ6cRjuODjbUV7YRyxK8vzxykBWPIPryO9K+tzOWuh5W\n0pOVkA4OCVPH5dqh2bty4DAqSnfBGOK7u/8AC0U7NsYgrsUNjJGfX2rltT0G90523xMUUkMV/mKa\naZKRVt76e3UEsxjHQMafPqxlUcvlTnIAyD3PtUMi723yuN20YO3g++arTwmSEYXrnkrnv61UXbcL\nM6iyi8mEiTG9hlgrcfpVedUijcKzCUvwo6VHaX0sqRmUPHtdclQMt7H0zxVi4ZI5ZRjcw/iJ4zW6\ndnoS17pXz5MCBJM85AHUGkSKQusk7fMSD6EioViIJkdmZ85A7USm4kvVVnZIgu/IyP19ab6he1+U\nnm2GQknA4wKBIqwKUAGHGeODULK0hcb8OrYBPQ+lWCiRRpHjAUDOOSTWTTdhqDTSYhcDeSrYVcjH\nIAP0qC4hmERddu9/mwpyKmRGDEkYGMZB6/hTzLEv7vYGf1X+tCSi/dRVrbEl3bGaEXEakOn3u+fe\noEfeCDwx4I6g1fimZGBHzDPTGM0y4slkBlhHTkrjkD1rohpsYN3dzPDeS49B056VcSRXQsDk/wAh\nULQFiEbODxkdRUNmksN1F5oOxjsY9j71o9UaSnzqzZa8+RMDzA6fTGKmjcyMhLYCjAx2qqI/MnER\n6OWAJ+nH60xZNkKuWIYnAA7mosn0MeXl2NOYQwwM45kJABz3/wAKqTXSSxxpHEzspP3OlNaOSV1j\nlYhR8zmrUbhFwhWKMEKfUj0zRtG5rJQilqRJJM/7sqV5+bLVJEIEViD849BzUrlCE3gYRsnauCaz\n5P3bqcfeFTD3tDO943Rajhedj82xPpyalnt4ocATds4Iqvb3LLxksfpTp9kjAsxLZ6LRrcWlhI42\nkZtnIHOO5pQdk8W8HOOh9aUzKdiRqyn+IE+tSRx7LpvN+YdMt0HFS9rjRKhcSsrHO3nIHSmqcNwO\n/JqCLInaVG3Sj5T6ZqZ5F2nemGAOSnY9arna0Qly9dyK6wsZYfKTx15Ip97IPIhOMYRFwPWq4V7m\nfJzgt8ox1q1dR7kkjI5ztx7VTfJuNS10KyxsGUn+JiBxV2KUy2+yQ7ZYixDY6iqq/I0T9VRs/n94\nVcuktyDJHMuRnn17UKSnqmPVPUct4yeZGAAAnmKB61Gs/mlmyQWIcgnvjrVeORA42jcOhPYipntW\niXcMmPnaw7VEkntuTLTToSM21gvX3PTNQElSdpIB7A8Gm+YVOG59D7VM9s/kiRD8rDsP50+Z7SWo\nkkR+avR4j165zQBgDaXz1PNOjtllUj51PXKngVItk6Pt3Kxxxk7aV4h8iOPexyDu9OOtKYbiMheW\nVvusvNPWKaBwwBwOelXPkkgKltpxkEHoexok0aWb6aGcVlT55CWb1btV23iieEMybmkUnP4dKWwL\n3SESlEAY4LDJPHSmTxPCpCORjBAHQtiolUTfKhW6kaWm9jG7NECOQBmiWCS1AZH3KuMbhzj1pytc\nLcLKqtIwGGwD8q1LLKSF82Rl8z7jJ0NU7/Im/UqSXMhKk/MOgzXQ2OmJd6GZpJXEpk4boAMdCPrW\nFGPLlO0l1PVD1FaVhqeNMkshwUkLxuDhlyP170SldaFU1rqVLqxurSZZCgMgH3gR84/rUNxbNLJF\ncquG2qHU+orRjvdRuUaO1TzJCcbe3PfHStWLw9e3FmknnQJIUMZhJZmP4qCPesfbdS5S5mlbYrSB\nBpdvbAgxxrjGcZJ7msS4vTp0UjsEM8rgRjqR0yT+FaF9YajpRVpofmI5dG3Ivtkd+RXOzuZoJJuG\nYAgE/rShTXLK5VOk9ZN6FqO+3oZd0ztnCh0Gwe496ojeXlnfJKvsVj69SakgLyxxxtJ5ZUDcEbcu\nPeoJp0NsqRZK7iwJ+X+dcluV6Gko2QuozsYLe2jO0SLuOKpqbeItGFDNkBi43A57Y9KQO80zHaxc\ndOe1RyR7ZiSAdp5z3PpUQg1e5lZvQdNtRSApUbWYDPTFQQzeciR9ZAcAjgg88fjSzT7YmPU9MHqT\nWjpGlCxxPdqTKR8sPYNxjcc8nrwK6KEHJa7mkKcnoZEhMw3ldrAfMHOcHsdtTx6TLeWhWC1aQL91\nkX77Ht9a6e9v9PuNQAFjb23yeUfLXIPIPOepzg5qG/lv8pNBMr3cTKFLqFOOPvH0xWji09Byi46H\nLS2d5pswtbqJoQecuOAfrzSlWYfLKu4uFCHqR6mutt7+W7tXeXZNHIWEkTIMEdP8nrTD4Us7iMXF\nhfIkZHz28gJKfT1H16Vi68VvoHKcxdAWxZ5GG7ptHXFVtK06bVrxVYOYwcyMOBj0zXbQaJploMG0\nimkPV5RvY/nx+VTbUQgAL5Y6Kp8sr7YNZTxKS0Hyrqx6YggWG1iUqBgqOFX8a09Ri0yDT42tXeeb\n70kpUjJ7AegrMY7lAUAL6A5pkk3l2MaO7eWG2FR+nFcHtXsTCTpy5kyoNWliDK0OwE/f7ValaWaK\nNgAFI/AinW1jBIgujt8oH5Vjfafx96rzeX9vlktfOkgOBt38nvjFOPLL4B1nzWaQXEyFfLkiIbAH\nA61DG88cLxeaPJIJ2+hqe9vo7mdYojiFV53diO1V4LP7VNiMYHUbP8KmF4puRG5As4RVht2LSIfl\nIoubh2HIIcDJPvTrm3a2u/kVWLLltv8AWpw4NvhUAk43HOc1ba0luOztYqxB5nEjOCzMDtI+X8a0\nNNngs3eSWCK6/duqhiQEbHB4Pzc9jVBftDXRjiZFiZSWBICj2H9Ka8U/lhIjGCOPmTOfxpSbi7ol\nuyJricmRpG+aaQ9B0UexPaqD2zSli+MlDtXsPTJq4YWt1DXG0OVIwGzlv51VluGLMQFy+3PqAOxq\n4a6i530Kcdt5jO6ltqoH5z9P6GrEK+ZEYD2UlSeqtn9PwFWdORF0/JHznjHsD/h/OoEh/wBJmiHW\nPJH0rbmak0xu1mNhtgJVczfKTg4+Q/jWiNPkWz+0210brYyJNbshEiOQeQf4l4POc1QtCZI3jlJ2\nvuXI/hYd61dO1S5tkRWEbSRb0fzBuWVTjBI9QMgVrTUZtwkbUqansVreUS5BGJFPKng/jVsLHLZP\nsKk8q0TD5uR1H0NS61FHNE95FDBCUaMEK+WT5RjPfHBGefz65P2iTdvKMD/EM4z71hOlyuyMZw97\nQRNLXzFYOI9pHDf4itAqUAw+7A+8BgVKrxzRLLGQfVT1HtVcuFZgIvmIwCvWsFUlP4tzSNNQ2GfN\nGGIcAdT82SKQWwlCHc/mhsFiP0FSGVS5IfBI74zjpzTCrSSmZo+F/i3YzVqa3Kcr7jfKiDAyyMJs\nkbweKDdL5TWhdR1IOw8Nj26Z9+Ks20tvBdmW6jlmicHKx4yGxwcHr+dRvFD9p2hevyjJBP0OOpqr\nvdAves+w0pM9msZI+Xn3/wDrVUuIn8ko7FgCPmUdKsoryXL24xGgGRuPB9s1IWeCJojJ8pPPY0c9\ntOolKzuypazi1D4JGG3LsOMEdOaZK0s90Zixy/JBzz6nPvS3EEbLllG/GM5+YU2MtHCqBSCpAy2c\n/pWqavdGlN2vpuWyyIWIkcNnG7PGOnHfn6VH5hRhlcFW4BAamJKCxKP0z8jryDU3yy2glbaGDBfl\nGOKiSM5xtqW4I7O/Qp9qZZ+PvQnZuPUE9QAM9iDimQq+nS+dDMQqndxkox6Anvg/nVTDRusibhIv\nRlOCK2LJku4/PnWbAODtyfbv1Ge3anGV9iYtdDqtP1OHUrfzo5ld0+WTPQ4H3scf5PrVl7eJ8l8h\nWA5To2OQcc9O3TvzXPf2bJYt9v01g2BiUOuQVBByuOR0/wA81t2l7DPGrr5SJKdoUj5WA65C5A6f\npxXZzPaW5bsMubKWOYSPfrMrnDEqEJBAwM8YbgdunWq0MRlklKxmQozbCcKJQMZKsAVPB/P0qe7F\ntf6Q5jlsLmFy8BCykPbuDwQ3HTsOhH5VNpHhx49Dnvf7Q84sxcqqkYOMHAHTnnI5rRzfLYuVVuHI\nSxu8kklmry26OQdjDqCCCG7HrjjvXP2ks9ql1b3TZtUuF2SL2JyBwORj8+Kv2t3POXhaeMwhhsaR\nCZEk5zhu3XODx6c0PJ5V2kkqRvulBVwNq7vUg/zNZKM1K5jGPQfcWbRXEsJkVRIChO4DJIwCCQe3\nesgajqVxqE9vqkEUbLEjJGCJPMPOHH1/+sRV+XxPpHia8/s60hDSwZjUsgKOV9D+eD6k9qryQQyx\nP5+VKLuDpw8Y+o6/57cVbpyirtGvK1uclrmktZ3J+zxl4ptrgAYCMTyv0Pb/AOtWZPY3nlq1xG0E\nQHyrEm8keoPQivQdUtIr/RY4YYptyMZEZXX5888jjp2xUEWjM9hE32iSOfywxVhnB9x2oU7K7Ieh\n5yqQRuHMsuR2I/pVlNQjTCcEDs/yn8D3q3rmh6jZuXu4laKT7k6cZ+v+NYT2wRdxR8EckHIpJu92\nZc0mbkV7ZysF37GPZuKsHymyrT/LkfKegrltoBBK9ejrViC8ki/1ZRwBzGQc4xXQpXNIyN/yg6YD\nDbnfk/xCh4zFvyNoHOMcf54qraSQXUe5Mh8YOOoJ9qlZGkfO4sc4BHpTd2ReTvzCO8ZAwdowGyo4\nJpqylnzGhy4zuXilWBA4Znd2DZHGNvFToNqHaePQVPK35DckiQEbOCR2oM2wAqxU+uarrM0yGSCG\nRl7lRkfhUagyjg+2P6V0xsYssNc9Ffv0bp+dSBWaNiYyUBUFgOh7YqnNbyXDlII2ct1UfwmteG3u\nbW1ELkSxlQDyO1Y1ajjpHcmC5ivINrDauWD7sA85HNVk2Qv5jD7jEgHuSMVbWVvMi3DDBZAfY9qL\nmGIWsccOFPCg+vaiNZ2TaBxs7EO1nUsWzI3JVTnH1pscuyUAoC2flqLyZ7Rj5yYmzkJu4z60qrsj\n3SSZYnLHH8q3vzIFZaM0WkEiqiBQoOSe2agu5Y/NjjizhB8x/pUccUjdmjTsWH5VI8AiTcI32KeW\nPcnvWcUoFNpq0VoNO7ywQ23d0A7042skMmWOX7ikbcV2x9eobGPzpyTXAjVwGyp+96inqvmQE828\njIIfgFcUKpkjkaYjfkBNrbadHC15IVzscHOT1WnCBPOYNy545PH5VLaWg/MiR5vtHyRZ3KBg8Ae9\nWzHL53lMuHC7hkfy9aqxCaMOkkYEh+bg/eFSNJII/OTDZIXB/pRJX2Lkou1nqTD5DiJUUsMbs4Jq\nQRB+CMYk3EE85PtVae5LTBGBGOqsORmpXlEB2jBjYcVVrrUlJK3cbdxLHdOMAKse9R1570R6dFcz\nbANpPTPQ/UVK8hmlicKQ+wqykdRTtJuVivVDLujHb/d7VzawLncW6sVtnayJCtG2M4xgj60WlxMu\n+1mUeah444YVqNa6fch7+7uZXkmYyGKMAcn1aq+pzQTXMdzFF5e0YKg9RnirjPmM1sZ1wkYbPlqq\nZUf99dKak7wLtViUPKhs8e1GozR+Yvz4VTuY/wB49sVAZTJETsYLwB8vA4+6K3i+aOojStbhSVVz\nskJPBPB+hpmpSv50Mav5e45DMMD86ySzuVQB1YnK4XJ/CtuZFa22yySZK8mQckf7tYyjyzKpu+45\nZGiVlkkUyLlvlP8AD/jSAR3UG9WZwOOVwR9PUVlYNvK0yxM+07dwbr9asRXNzFbs2whWGUzyrAdR\nROnr7ppKKhs7k/nCSMg/f2qrHPAKnNLBLH5qNK42oWPJ4yfWqEW6+kdfuqP4gMk03Z9lnCsdyNxz\njI+lWqd7lU4c6ab1NK7uWLfIGkJURoi8HHcnHtSWE8flqzxorquAGPo3FQWqxlCd4Vg208cH04qJ\nWxqJIV3Jb59644A5qGkvcM5zWy6GjNcPJx5fmAe+Pxz2qmtvLcS5RWVz68Z9t33alN6HfCAjBxwe\nT+NV72PcgNzOZD0EP8Cj0PrV8rirIUH7x1fh+NoWkjupYY4SPOdXGC4AIDYHPete5sxc2g23C+Tx\n5JhYBc9D19+M+ua8hn1O6huVNl5kwQKWR5GcMQee3v79M11Oj65qUFpH5UcccLHAgjkAL+rtuHX8\nc8e9cSw8pSuzrpU5Tn7m7PS4LqS4sJJW2W0RtmieOQqQScY3bucjGPT5uK5vRvCNvLFerJBFNaOp\nY5iZZYSBkMGzke/XI5xTfDOsXeuC6+0yJItpNsBcD5kxxlsYYkjgdhXXX9nFfaVKksBUBD5isADI\nncIQcZ9PrWlWTT5SrKndM83n8N7pjbedL9mdWZZoo9xIH8RHTjIyM9+DW3baVoulWjadc2loHttq\n3E00YO4MPkZW+9hvfuCKwdP8Q3NxLb6PNdTQQujizuFIXY3PPrkggEfSrN1q1xa+IHsLyZLmSJQY\nFPzZRiGMJ4yRnpnoeO9ZJGPPzajr/wALaXDcobCc291Pkw20o3RTf7Iftz6k81z0NsY7xrWSOMeS\n5WaKbguehBx07iu417SI7lY9WhYxpBIJwCST0HIH5Vn+JLRZLOz1mK1jDAATykkrnHySEe/Ix9BR\ncadmeaX9tHZ6ykUD7oxIsqLnJVWPQnuRXRqVnZ3D7UVtkYx2UcsfxqOeW3nuyYoYvtMpJkkYZcAd\nhx8vFKbbyVMnmMkafwgcfStadRJ67msZKMr7Ed0zCRniiX7RtIV3XnpWWi3UaSwSyjIwS5JbIz2H\n+e1WJb6VZN85UQlgFVFyQxz1qTU4Glj82GcRsxU8LuLD1HtmtJpNXZpKK3bEsJTHNPbjAEQBGRkD\nPrV64gvba3bULBcrGN0vlNyg/vFf7vuOlZkMjLO8iFVkQ/K6JgsvQlvXuMV0NvdSKkdzE2GGCSvO\nBkCuKdr36HPdyZV0PXDqt2ltcRqS5wSincPcY/kRWvPHHFK0YDMQcYKfzHbisK806JroXdtiKXOQ\ny8KT6EVdt/EZbUEh1PzHhxsdHO51GASAx5O08rzWMqcKq93Rjuuu5Mz+WMNbqgz2bIH+FAlhdSky\ncMMcNyPcGtuXSFjiicXVuY7jaIXLFA+enUcfjWRc2U1vKYpIgrKcEbsfy4rlcGt0Vyxej3M26g+z\nKPIlyjNgIx7/ANKkf7RZqFK24LbW+XDZz15Hp70+a2LFS2QOx7A59KmWSPBWVQHXqG7+4NS2oRs1\ncylFxKrSQ+duZAxbgCQYIx6D+tVjvsWPlznfv6NyV/HvT72UvIm087hswaJLUeXmV+W52qP61opq\n2vUSWxCX3zht2COGxTpYRJMEhYh/9g9aYtnNI+Qjhck7gec/jUh+02SmThggA/d4LjnqR6VXLdpI\nqUE5csWLIwhjCFSD0+amrKoO9mBC8gA8n2p3mt8xkUKe+4jIqNIXuBvLghz8vuKHHuaexVm+xBI0\nl05JYDAyxP3VFKIFK/IvGOWznNLeS+QUhRdxyPlAyKmMxKCPaoUcuc1Nm1oY296yRURXjgQrx5ch\nY+mCB+dWJFMcy3S84GJB1yDSQkMrpwf4lH96rEahUCZODkK3t/dNEpyTVyYSSk+ZEKwAZ2kbS27p\n2702QNuD4JIA3rtyGI9qmytuCXGxeuc5X8KhFyn+tjIkTOXGO1ac65uZG9Ncsk0y8jrJbyxOnG1m\nWZ2yy9MjNZMTEHaFcE9uo+vNacghfa0bbtw5QjFQD5VfcojVzkKDnH+FOVW+jJc03fqPhLkDZuJy\nec8CnAAur71yDkNj3qJn3uvyHI6sDxj6VISY22EqyYyDkcVjbXzC9tGRyWzozSLhS38QORikW5eJ\nGjuFy7ZCt1AzR5U0sYuIxiPsM9feplWOa3k8wEGMZIParv0eobFZbhWj2hAAXJG373/1qmS1Hl5D\n/vOpOcAUkliC5RGGX+6R0buKh2ScDP3gFBA4HPPFNStqgU3F3RdjsbyGwN4yHyhKYmkjORn0PcVG\nkKz3KEjO0hiS2N3+H1qp5skeR5k6xyfK0atkso5GQferiNC45nZD6ChzS1JlJ3uyq8RS8lZgwiyQ\nCSCVHbnvQZRHDtfLRk7lB64qx9mjzld0mDn950zUUtvdtIzMsZJA4HGPzqnUjLZlOo5Mr48yPEag\nbuCWPQVcijLRNCFYqeDjqKpt9oidXYIQhDd2/MUouTIi+Yc4OTgYWnfQTlcnaJgcZ3e2MUsLvHLF\nGZNi7xs3PhUYkZbnp7nilWTk/dIGPlBxTsxuNrxAg5zk7hj6Gs7uLuQlZ3Ou03UiqLKUK28pOJlR\nXELk449jjI9KkuLOSeZ3toXQMw8+GFtocHhmC9Aeh+vauBju7u0U2Rjgksi/VQPNBwPfOK7ufU0b\nRo7hbq2LmL5kj5fgYALAZB7nPcV2qWnMVfqZs3heXSrS7vXnW5gCgsjKVYt6kDoD/Out8E6jDN4f\nmiBk3Q3Dq+5txLHk5HfOa43w5rS6jPJZ3Uf7iZGD3Ei48l2yOg6IeR7ZqHQb+78OanMHdNm8CRGU\nEuBxkEZ5xW0HfcTbZ0dxZ3Oy7Wyi3223eQYlaWEdiOhwcEYOauRX2ka9p0iqoRY4VWVLjgSHoCO5\nzjFc/fD7Rq1trNqDmWMxyL5HmqgBOeM56D34NaLXViyfakt7cWsaMI3ZSZSMggjA4x0PuO1aeZ0R\njZXOd8OLf2XiU2NtagLLI0gIQEKmTyG7Dj9a3JlnsrsrIsqSEt/pEREioT0Bx6jvipNQaewMGpaZ\nFiSSNvNZm/duR13HjkjnPFRnV31Kzha4t3iu0dRJCFOTG3IbGeR7+5pym2bTqOpbSyLd5GRKLScL\nI0gzwTtPqQB09cds1k6lc6hYMPs5i8t3EeChMin077lP6Vel3Sar9pVgkccRCFlz0xzkHII5/Ue1\nWWjW5gCyA4k5/dtu2/Nkdu+M5B/IisZ6qxx1N7HNjUJDJmULNYybC6NlliHtjoeuc/jUs3hvS5gJ\nYFZA4yDG2eO/WnXVn/Z9y04Ek1s5++B8yE+wGPUZqzp6q9ksYIJQnAI5Htj6d6iEve1Cna9mcpf+\nF1ViIpVJJ4UjaTxnj8K526sLi1GWBkjzww6ivRtRlENpJ9ojIHylflypb09PWsoR6RqMjxrdNAxb\naAenTlTkYBFbztHQ1qUuXVbHCRTPBN5iPhv739CK6K31G3niQsRFN0OehrM1rS5tJuMSYaNhlZIz\nlWH9D7GqURCYAAIIzg9GFOM9DBqx0/l4j+Q7gOQQetKCQxzyfesK3neMbkW4CjqIzux74q/FqsDA\nAkE/3SDmtVJNESiy8kgtUECu+4dGB2mpH2hwXkjeQ/xKuCfY06+SMxfaYuT1DdSv41RuHEsUc8WU\ncnJXHBHfiri+Z6mcY8zWtjTuI0jnR1bamzepxxmo4rq5upUDRMSV+fHb8aejiS2zkOpGQw6imKwt\noldX3Bjsw/GW7fhUKK5uZjpxu+UivN0kzgfuwSDv25AIPGasRW5tZR50u+RRgYHGfWqEU11JI8Ei\nqMj5ivIzWnFJG6qUIcoAq5PWlWjpdM3rUfZ27FbVmVVhaAlp2bbhlwMVWiE4bO9C+Bk7Nx/OtG5U\nyf6tUVl4cqeB6VU+YFQyBdx+XcMA/SnRairMys97EkSTbhvcsx746VYaR1VoW3BTwe+agWck4dVz\nxyrU+aF5YjLG+ducgDBpVNdbC5m9wlLmICB9zL0z1+tPS4l+ziKRSnqR2x/SoIbpgiYAKqe/FSeS\nz3IZJd24Erz90dMUJq3vE2G22YJZG8xS46L1G0/ypIJ2mmZpIzhedx/z6U+F0kYoqfMB8xPNPeOV\nbsmDao2/d7fhTbT1C1hoWT7QJ9wMWRgtzj606G2SS4cs4Lr0QHAPfio2WWSB9jAv94rngL/9anMr\nwwCcOJCx5KjkU+gDkkgMjPM7KM885wfT6VYeKOHypEYBxwrVVMFu8K7csSMSKRzT5nhcQoAcqQWU\n9+KNL3DRaliGctdEzJscMDtPAYexoFk0Fy+wMcktGccn/Z+tPmkWR4YxEqAKVyRnPI/Or0W1LZyz\nAFMIp7Zzz+lYyldjTvuRtHGbpEhYeY+N4HTcayr9ZVkA3DYZCnHqDWxd2kp0ZWj4e6bG48KiAcjP\nvxWBCiNMDFcNPsOc46f7uaqK6jlFFyWwtwiYGGK5JC5OPU0yMy2rZ+YxkYyGyuPSpZZ7maVfIRSo\nGGZSAR7fWlBc85DhjgOO/saLtbkuPcrSMsMqsuQznqf0x7VNdmfyx5situzwTx/9eqOpQbFjuIhh\nDkMvoamtB50IlkkMaryoK/eq5KL95lxSS0GSzXIt/s5XdngEH5frVmJ5JIFSRu3OKbDFHayvuAmB\n58xj1qC4hDSSLEsmN2SVPt2/Ok3zOwrbaDWMlvM7W6sw4+UDn6Cpre2muh50sbJtOFVsLx3wPWp9\n7iMW75RT8uW7jsaW2nEKCAvuUHII+uaOaVr2HzWdkR/Y41uvMEv7rJOMjPH86WSCMRMI5JPMlUYT\nrx7VI80YTzSw2EjluC1RxzxQXZMUmIiMFsY5qPek7olq2hQ/fwsEYeWQM5c4A+lLIEIVWcyyNwSO\nAo9K0pWW6Jd0jcKCFXI69qqzRql1DIAowDjH3cnjP86t1eZaBFWZnXpaFAEjTKtjbjHYnj8OK19M\n0a1v0kW5vJoxyAikcnbuIJ+lUfK3SsrDKsgjIA5GBwfrU+2WBJHjZV8zdwcc7hzU8yjpc6FUcFZP\nU7GCMW2jW1tZ20axrLmO5jXPnqy5DA+oyeCc+1b+l3Ej6PdQzASNHKYljY5Unbnb7Z5wc9emDXAe\nH/EUemTQWN1Efssp2ymM7jkZw23HXscdvzruG8p5riRoZWtrwh5GXKlWyGDD3yP54rmqfECu0clq\nPhefTgbgI/kKwaN2fe3PP3jgjHT+VYkltaec0kqsJt+fMUnJPPXnmvUo7N79ru4kEl5bmLdCuwRn\nJwHQZxghhn8eK5LW/DFxBE9xbKxgUZYSNl05AycdRnoR+PWuV0XzcyZKp20N3TfEunzyWWnSKYpJ\n4iMIpMYI+Uqepx3z6Go1t4tPa/0a+ndUaI+Q7pgcngY9iBke+a4W2tZGuBujDIjKRkhRnPYd/pW9\nY6jqms+KljVoLtot221ZU2+20NzjIx17ZFdFNt7vQ1jBa8xywWSOE7lAmhLAYPBIz09utdHpVvHq\nTalpQILzWatD2y45X9RVy+8LSXaPNH5Fjcsxb7M2dhOem48A5P0rMs9+keIIftscttNCRG0bHaTn\nkDPp3z3H1rV3autinTbXMc8LdGeM/MssRIBXqQOMEenWobOd7ySV50ZIkOzZIpXHA/w/Wuo1Sykv\nNRe/sUB8zmWBfvK3QlR3HH61jXRMTkTRnK/u5FHBXsc/nilzqWxm3cjkiaNm+Z1Y5AYcZ+tT2t2b\nV/LmBWPJJwu4Bc9h61GpZlbY4kBBOeARj+Goy3ln5t6Ic5VvujLetQ7XswjobNxAFCuNrRSKGXkH\nPpz3qhc2SXUXkzAYGVWQ/eU47U+xu9rfZJZAyyZKZbgHP3RVhuHVwTnBw2dpFcc04O6NHC8eZGl4\nev7pbcaXcu0kcQzHtRTuwPT+93HbIPrXTX6R61ocmpwbPOt9omKIVJxgNuXswJH4Z9q4cny5I7iJ\nyHGAQF5HAAP4810ej6rDb6vO4ZEj1BAs8WMo7D+LrgHBP41qqkZw5GRLXYzZRutnPRwOM1nrE80U\ni5KvC20MP8a0nTEghjmSQuxjUq3XHHGcZz60klubdVjKbXbghuM5+7XnpS6otTVuVdTKtIGGJZDl\nnGQcY+XPWpUTfOFAyev0FXERZLcFcbWix+GcVA8nkCV8ZdxsUUSld6GKi3Jt6lckSOQCGA4zk4oA\njVOVHB6CprW2aQ5kZlVeoX1/xquzK9yVQfJuJ/M0463S6FT93QEhgnxHOC8bHlVbYxPscHHNLdyL\nApFvGUUFgiltzY7c4wcUO7xzwqp+SORi2Rkcnk471Z1G3Cu0aPvUqRvizj8+CK0j70b9CYO8tTn1\nhM8pkYltpyMP15qeQZWUtghuh27c4960VtyHIA+cnuAck4289jVKZ9kwVDlkPAzjP4U3K7NeUrID\nFNGxJxhlJ75x61q2cSXlpMQ6rPEwLR99p/i+gPX0HXFVTAZLVUBUNnLnH8qihS708ySCYooUncj4\nBB9cV0xiuXmaLdG9PmHSgTW0sbY64yD3qo9u6OXCgt146kVLJPPLdi8VjHJnPy8D6cVaV0zkxr/C\nASfun1FczvB+6crWpTtn/foQBlW3jIz/APrqxtCyfOuVZeV65od1ChCH2McAY5+tCOqx+WQNpGMj\ngk0c932HcaApRuCpYfKhFAj2fK6FA4wDjpUgkj3ElSHHG1uholuVEahoAVPdfSi5SdyMTXNl8jZ2\n9AVII9uvvTpC8R3uoiDcFSMcfyH0qGd9l1A3GIzkZ9KnuBNdZaLDDadxDArj1OelVFXjd6F04pu8\nmNEkiyKEXiMjGD0oaXgfKd28Jtx1zyKDFJZyIrlCwO04OQQPQ9xUrp5sokgx6kk45HtVJ6lppWbW\nhE8aPuDbACOWJx71SliEOGjyAw3BSe3TpWhGiE7d21gcAsowabJAWLFmB4xuH1odlIW6vEitrsIm\n2Tcjf3gOMetXxMsqgsSy46gbxWQ0YGXUoRnkjg0sUjKcA9eaiVNN3RKknuahVWAYMGXoCh6f4VSm\ntEkyR1/vLwfxHeporrzGYSMoYc8DHFTlPPAaM4btu4qE3HUlpGQ0boSSVwe4GPpUgjRgcyMcg9e3\nvU8inqp2sPXoaagjYbigz0YMMkGt4yW6Ity7kYtoZW3M5Ynq3tT4b+WKGS3hs7Tyccvhg7egJHB9\nfwqzAtvuBuWZYc4cwgEqvcqCefpUd9pstjND5gV4JIy0Ui/Ojg/pn2raMuo1qjN3NHOJo5EikHQl\nq7LSrXTfEVtBd6pJZFovlxG+Gm6/fPY8cVyRQFIlCEvjByAf4uCPSmMmwNDEv3+ZPm4J6j8q2jLU\nbVj0W80xLWwa30qIWxYETQxkOqORzgnnPTv0rnbaSe1uLexkhlto1jIuSXJLyYOxtvPGB6VW0Dxj\neWyzJNbrcxxAJ8zkNgZwB9K6e31HT9c0+G6W1uIGScQpcYyVbGc9Pu8429+2DW12ONSy5XsVNCnU\nC5sLp43RhhYieCAvRfUHg4/rW1b2lhbjzQywxg5YvtU8Z6Ecevfjb71ylxJ5ckcc1vFBicoyoCF8\no9Dnkjv+FUZ44rjVPsCTBjv+XzgcMcZxxnB5/TNQ6luhTqPc3JdWW715YA8UNoHwM4BxgEAEd8V0\nCoz/ALho2DAAYbgD5uw7V588TWVyIpk2HggA8FSOx9PT6Vv6TqaXFpFDcyBTCoG7JBzk4x29sHis\nk9dTN6G7KixhwRG8bDBRs9zyMD2rHezk05mubVZDYucSpt3GMjoR3Iz+Nb0UrbPKnQiT13Y3jvgE\nfp2qrNFDbmSa0LeeXIEecI0YyRkD5c89T9DmtHBod0tUV8mRVYYeOQDDopKnjPf/ADxWDrtn5RW5\nYKdzDDqOGB9QP4h+o+lblxGNOdbu2tXeymAbaowASp7feHJznBHtSC80+7iNq9xF864aJ3wG9h69\nv0obvoy1J9djlrx01DSo4p4HS4jcgS7h5cseDgAHuD3ripojZyyQH7qNuQ+gr0S+0SS1mjSA+Ykx\n2xknJUn+Hn+dcHqMjpq09pcxeXJExjx9KVOWrJloQ+aInB/hIypU4xULtJLMSgOSO/FEcbKzR72G\n3JGPSnpIbYkrg56g1rypO5nJNPQ62yZTG0Mg+SQHt0PvUW14x5JKIqjgsuQaRZoJ41KNhz/Bjcal\niuJo5csyOB2cYat3zR1RmlfcS3tJlDNxHD1Jk6flUkpjJ+yypvP3TjmqM11LeXrBsouScMOcU6aE\nS4MjHd97dyCcfypa3XMON2nJItXMaQxEwqVU/M/PUen601pEMaKEaPIPlbDzmominu0RhNIsUyls\nbs8etSrBC4hUgoVLKecqfSjmXzNE1KyewWE8qEySbxEp5DZGPWooFkmdzJhWJxtIP/6vSrs9u6W+\nZJFcjlARjPtTUlQBV27QfunOKc582xdWaexHImFLmMhcDnHfPSpBeb4fLjQK3G1iMZ+tNF7sm8px\ngY4HQmpYxHH8rA7X43ZBFRZrc5FuPaJktA5dQpHPy9PyqgI5FkUK4AY8ZPSpGCHfGJDhTuIPtU7z\n20lkDu+dMjPFNNlDZrZ4HWRXO9uPekjmuFKsVIUcEAYI561CZHdEO87PfjntU/2kN5UbrsCk4w3W\nnrbUBlvE6SksdplzgLUhMdsBEjldwwXPVT9KdGplUBpMqrZDBug7fhUiRqCwLbxnHzDI9j9Kbkuo\ndRyRiK9Sd5A6FApx9O4qFo9zHCL50ZyAnRh7e9TJAowzLlNvy8ZHBq8IkZNxi3IB95gCAPr1JqHJ\nCabFtCl5HlwSqpvJ79cY/OopJi8MqoQCkZITt1Ax/X8Kna7tzE8VuPlYYbJ5I6/gM1iXkjLcOybh\nlsnjrn0qVqxyurdzQvb6V4fIEDvFGFCEdj/dqhMzu1rHEhaYSfeUYOPRqVb2TMcUyyB15UAjiowX\nkuJY4HZxINz7R0NXF23KjO+o61DQ3MkcxO9gSgjPSrVrHcJPJ9pkTyudqYw3/wBaqsEsdscmEkKC\nrM/QkejVLIzXFsJ/NKQYyc9/oe9U9QSLAZSXyAFJB9hxUNvP5M8bvvhRwAgc5zz0+lInyR7UkJJI\n6jFOZ28z5eTuOAegX61nLsJMrzefJdskm+EckAL/ABelJaeXCrxySsOOVHUNVmJHR5XVzh/vAHLA\n1BcWILpLGhLAYcnkn3xWkGpaFRSvYkU+bM4EuV6YU8io085LgLs3AfMTjtVVHkt3iXYN7OUeQDqK\n0brCou5gEHy8HBzVSSWiZc1GMvdEvpUX5CMhvvAjhWPfiqyN5Tx+bF5ifxDsDTZfNblRHgsQcfLj\nNSXEJt1CMXRMDcAdxI+tTBxiuUzerJFztKDKyPIADH82F9dtNZSZ4Qrbo1DByfXgUoXytsqz7RIu\nFY8tkf5xUL+ZcKrRqVjbIYhMZJHf8qSSerLjFXV9ircL5h3o7CRMFXU4IP8AWr1temay3GLkcNtH\nGcUiWjgYCYXuTzUi3phiMMWAT6CsZOLqaEtX1KEtpHcXSyXI8xI+RH2YfSug8H65cNrjbzcvEsRa\nIbtoVw3U/wB0dfbIrLihRy8txcPHFEu6QL26dPeorK5hF1HHJH5VtJIolyQWRCecnHvnGKcocy0O\nqilJO+h6TD4guLpEuJoUeQ/NFMkmUL942IxgYHoM4B6Yq3LdTf2fGLdftccrLGxlnDRiE8sdxxu6\n4B/wrk7dL6x0+fTFCG0z59pLaR4+dW3Z3+oHb6j1rp9Ju7OWHMUURhQ8oi7y44/h9iM/hWPPyaC5\nlHY5i80p9OuZLaYkTQuqgFu55yD6YIPNYW+50XUrbVYI2kltpTJjoWjzyD6jBPNdprkc1zcI7b2i\nlHmFlDHHX5sEZ6dvYZrnriBfJQkq8ZAJ+YdOeQR/9Y81zRg3KzIhBzlrqdtqeq6frFsZbS8jRLiB\nXjDDYxds9CfcAE4PNY1zFD4w0q01KJozeQRhZlZwPNx2OepBBNUADBbRYnik2RhI9j5KAgjIP1zx\n/jTfCiXOmKLN7yK6sVYyLFOQNrAj5skgA5yOCM10updcmyNKkmly9ClFvMpb58njJ4qw3kyrie3j\nmQ4znliPqOat6tpcMFw80Vnc28QCYRnyo/HHTNUtkiEk4iJzgs/euKScWZJIyrnQ2X97psxbH/LG\nQgN+B6H6cVni7cMILpGjlUdHXYfUHFdPtLEZeM7cr8vYf5FQXUEF5CIrqFZAB8pB+ZPo1bQrKStI\n15bM5+Q4Aw+0ZyDnAz71csbwTBoXKiRcOv8A9aq11pNza5aFvtEA5wwAkUfTnd+FZMs7xssqEh1P\nBH9fzq5QU1ZG8EtkzrmjOWXcTgg7c8DI4wKguraeO38+FciM5IUjKr349KktLuC70+CaRhHKADtP\ncirEQgVf3L4bODuPX61wwjNy5Xsc05JR8zMVJIZVkVt2wbgM5zj27/TvXS32r2moaHZXn2hAVAyS\nPmGeikDn+f6msORDFKmMhcLtPTayn/D+VYuofaNPQom1ra4l+0owbldpO4H0Iyceox6V3wjGScWV\nRpRlq3qdhAIDChjkDxEIwlCnB9vY+ueRUMkQNycrzngEdOazdAvnktb+zLEwPGsuCfuuDww9Dzit\nJX3CNfuqR06nA6E1xYqlGMvdIV4Sk2Ry4S3YLtSFRzgZLn1NVrKHdumYHA/nU92Xu5ViUbYF5OAM\nmp7jbb2wUDaCMKP61jtDlXUzmijLHmJ5DyFO36mpTdidFjlLs2zbu67VHYe1Iy+bGEVXIBGFABNQ\nPaTREFCUPGQzYyPpVQcUuUISS6D3LupNuVZW6MEOW+tR2mkko8s8nzAFhCp2lupOPy6Y/KrP2ho0\nDSKpYjnYu0U9JfMKSbGIUYADYx71UeVbF1KjtoUBAspJL7cHGB2qtfWzIInBO2PO5ATxmtYGCSdv\nljMrbgxycA9u/X86gdI5A6tEXYgYyxH6inGTb1HOTcbGWFiLDjaScZxnFOewuklLJ5Y253gnpxTh\naDzzHP8AKVI3DGePUev9avyxguMrI0WSdwBXeucZwajndm5E2SKcRmCvIySGJDsZ1GFDHnBPYnBp\nfLhdQ0ZIYcZBzipkghlUearwuB83rjtVSeGRfLZwMsOCpDZHqfQ1VlIGkwktzEQXTcB0weB70rSr\nFDjYH/uEn9DT7e7Ib7Nc8hjhHIpWXhk2k/7tTtoyUrbELR/aIudkbBdzY4AX6+tLby/6OIzGW28R\n92I96bbzfZ7oCVWaMjbkjkZou7eQIWTezP0YE81rHXQ6aaU3ZEeoGa5PlxXcksCZEQcDK55OOpxn\nPf8AnUlpOIMRyE5PGSOtR2rrbx+TIRkkHd6ZHSkvQkkDcfvFVW3f7Wf/ANVXK7XL0HK7tTexYvYP\ntflHIZU+YEEA8+nrUxRPK/c7goH1zWet28SRK2MAAcDr+NTSTFZ4mUeaH/i6MPqe9FpOJMYVEk09\nh0kYyXmIA9JOMflVV4zE4Y4wenPX6VoeXFPuQh0YMPm6Aj/CoZo9vyOUCdnXpis+Zt3M277kUR3K\nAoy69B/Q1Mr8kp83Z16bapndCyPlgM43dj9asqwkUEEZzg/3WFU0nqtxJt7lkhLkLnj+HnqaqqhE\nrxP94dD61IrYfIC84BPp6U+4G/bNjDrwcVm46XQW5lYquzsTHkLn7xNMKOsarFMdiHKxs5Kj6DtU\nrxu88YQH94C5+lLGD5phkVlbsDVRm0JJpaEW6adz5ccUKnJ4diqj0BPP51II44ICIwDJJ1kYDOKa\noLK/rvAIp8yrGx8zkIOQatzbdmG5j3qywXQuYtgSJVR4h8pPH3iO/wBa6Pw94ktV8NXthLbuUlmD\nbg23HAOD6cqOR3rLe4WZCJg7qOeDwD0xz1GMfTFSLNtCqgVB0wBgGup1XFWREYuSu9jorzVbLWUg\ngMbRzqp23Dyhi2B0cjr2HSqcem/apVeQyhHcbJioBDEcEg9Rj0rGnZ4ityjbdp9M/ifp61HNe3dt\nKbb7d50KcrxkDcoGQO/HapjH2nvMprRWNy9tLoWxguZmmMRO0oAcEY3AnPBA5461Xgie1Ecwmljj\nPyiaP5tsg6BwOme1aupiWTwnpt4GkjuQfKuGYguQOULkDkgg4J5want9V0+4D3l1Numk+WSFYhiQ\nk4OMHGfr7461XLeWrLgrq5ftr5XtxcJP5cshV1B4LychkxjGec/yqa21KOW6FsZ4o2ywAbqTxjI/\nhznpj3zVFLXTre7W0jLu05Mq28zHLKOCB70y706KZ4GcmO4RuDAMvszwxBweO4+vSuyKVrNnb7Oh\nyWe4/WNPaO6SW1QG7ijIMWMhl7jHqBn8K55LiB7Qw3ttbSIwyjnGN3v3BBHXtxng10t7rMDXtst7\nFJFIy5LSrjqegI5K9SPrjmm3uk2lyDMLR5N/3niYhien4HPrXNJRvdHE9DmYr9LW2msZA8lpJkBX\nckJxxgemce1cfewmW8aYA5wOg4yPQ+ldTeWCwzsInlK+mPn+h9+1VGso5QTI8q4HOOw7cVHtIxJl\nK5zjrMrKxQg4K8+9IuXHK7z3Cnn9a15dIyMwShhjjcOKzJ0ntHy8QYdPv/yNaRrJkNNnVT/ZrZDD\naRRqx6sByagji8hCQfnPLN6VBCQ5L5GwYxz2qeUmQLCp5Y5Yj+VdsfdiyYyfwoaZ/NJCKrjduJJ+\nYcUz7PIxMko2oOWLMefYCmMojkMSfwjke9EvmSSBWYnk/hURi27omMLy30JYL2WGQiNPMRB8ox1/\nvf0q5HeWd2HEcMpkdPuscDPrn+tVY49kowOU+b8ajQC3vN0YyA2MezUpU4810Vdp6dSaUTzzRCcH\n5TgnHc+vvxUzFrSZradCYpDlGIyOe386llzHtkjIZNuCP7uOv4dKVBHeRhZGdRuG3D/cpXTRmr31\nG3FoJpU3qUdcYKnqRU3lRgrG7lQwPKjn/wDWKgnuNlyYZ8Ar0c8E8dyKVA+oRI5k2MvJX14/nT1s\nrhoiFYvszPEGLZG9SB0xRBDmeMBec5x2b0P/ANarsyTR2weBvObngDJFLG7PAhZQJ1A3cd6HN8t0\nNJJkMsaFJCqGNkLEjn+VKsMU0StC4LdG704vcX8csbIAVG1mDe3UiqdtBJbSKPMHmL95M549fpSv\nZXLUVy36liOzRkiPPzccn7pHOKnihkeNJN7Kp6qOARmp7NELshfG45A6j/61aIst7xxLgIo5bsoH\nJpe0TWhMbEMFqASvGAeWbkD/AOvV1rbbbSSDBjjjLbGPL8cfUk+nSmyRW8kMk1yCtvADtQMRz7kf\nmTVSW5udQQWzTx7NvLKcDgY6VnNSSTRu4txTRyVnNPskIJC5yzMf4qnNyPNC7N2OwHH4Veu9Hjt5\nWUTMYwhKyMBkEnqVqncbLR/kkBfqM9cEddv5dK7OeM43RyRTXQu28EP+uuJGEjdcY61WhuGglcRq\nz85B/luo8qRwDLNwwzlDj8PUUyYpER5RLHHIDdv61z6XsUtNCYlpA7MQCFODz8p9DVZvOe3+zgMy\nLgll6ZHtSljKpVJJULYLI3yh6B5qOqyblH+1xW8YqKuy1aK5mEXmR5CyRtgcqFyfxWg3cwyJCAp6\nMvA+tSM4bAYAsPut3pN2GJIDDuB6VPOr6Inn10RMt1Ig+VlKbw+M7ScVNJdGdECttUNuxsxg1B9m\nVoBLCd6AYZe6+9V2jPXGRjOQCGH1pNLdD2XMi25dDlI1aQng7cnNVZ7e5lIRgck4x6VLa3LLdJFI\nQQwyjD0PatBYY2bzjMxfaAq4+Uep4qXNoftUtUUVQ2ylRJ8xXoBknj9BU1i32i0WSUl9rBnX09aa\nUKhTL0ZNzd/qD/OqlwZI1DKWDyLkFTg8daIrmfKxxvKTsXFWG4RHRGEjN8oZxtB+lSTPtmgjkeKH\ny8E7ACM88CsJ7+dA6oVDuo+/97HfbUtlZMwlnucqGbcsec44GacoPmsy3TaXPLYfPqc7F1QGKLdg\nlf4hnrTtOYyvLMwIVflVc9T3P+fWmuNpBdfUkDqBU0Nu4spoUdOWzE+cZGc9fwqHDkldFP4bFpwz\nWzwD+P7xqnLbeTGpJ2qDxnguxq3bGeM4uIkJU8BHyG98+lV7y1kuJklYhSuAigdKOZIjmtoWtH1i\nWzspisbTwGVgELYAC9SAfoDU8PiywilWdHu7RZcPkJ1B75B4qqIVstLiiGN7Y4HbvWHc2v2jSROB\n91iWx2BHA+mRXPVw8Z++ty0n1Ori+IcNz5e+0kW1ZiS7kM4PTdk89jWvF5JH2mG5hlgfkqHUZzzg\ng9G9DXlsSsLXyxkjnGPf/Oabh5m8t13oiDjuvPY+tT7JX3saqailynr9/wCIdDsdGgi+zQ3kslx5\nb+XgFVJHz7h0DD8iMVFdaZNZyLtUTRyKGgm27NwGcE9s9z3rznRtQGmSFSh3P8oEw4cehOO/HWu7\n07xLHcQ/2ReW/mQAnapIJD59eT6jrTlFNWMZNzlzMuW92tsohWWWzU5Ei7ctngfN6r+GeTT0aNmQ\nSQRyKxJYgc/Md3JHA/w+lNltYyZElI6NIrjJBPpg9cdPXnPNUZUntGCBy6MgdQ/yj2Oe46iuaSKi\naHyeWsivJDJ97J5AYZ6HtVWUmNB5qsFKHBI649DVcatJt5XywVIAHbpyOwPAyRT5NU2bgkmQ2flc\ndegzjHP/ANaoULuyOmMJPYcYz96PYSMfxYANULyys7ri8to3lIBBQlX49cVILxblkWJQJzhFTIGc\nehzjGfyqxFcX1ndEKdrrwehx27dRVShKLCVKWvkRJpkEFqsUCqYlAPzPhh64aoHjkhYBXDcfdkTP\n8jWmt9HPArSxRAklCYjgcdz6ZqlfxW1wjeTJIOoJIAAP+z/XNc0ebms7nJONtyGKTzQY3VYmHRc7\nlPuM9OtRajaRXGntE+0lBuXJxVNmvYNqShZlA+WRWwSOvINSrI7RPJKCEQcg9T6CtlOUJApWjqJ4\nTtpZ9Sktpl8uTySyoejYIJ+boMDn866b7Iqlh5rRfOVCkDJTHDdeR7isaGSW3iItkbzT98s3HPUV\nnah/aLRtulneBeqh/uik5qo720J5m3ds247i18xhNchAu4AsOGYAHaMd+aRbSfVr9pYY422ABYoS\nBt7cKT1P865KLdvjZXkUZ3FY5ChPbIx3HrVmx8R3Gm6ml+DFKkoMU4cAqx9SBjjOD7fhWqw8ZK5o\n0dMGRPkwp/4Dx+NMuX227tGo+QdF5rVlhXVtDttX0+BY3RTHcwQrhflz8w/I/hWT5m885DdOev51\nyypSpv3iJRluxlkkbWxSbmYnPPORUwZkRkXDKewNRCAmQMvU8kjihpwJGTG8+pG78DSUFLVdTSEZ\nTVuwY/fu0yHLdWxjI/CmO4aVmkk3DPAPGfapBu8wylgik9P4R9KqyyeXcxys+VLdWGBSd1J6ahrK\nTuLjyXMrQFASMnqQPept0asCTuLORsB61JJuWJU2oHJyzdWbpx/n3qtNZqlwXCNknIRDwPf/APVT\njFSXmS3bfqDIGuQyvsUJhgx6+3NMfFvMskmXQfwBsAj61JslWZ7edPLZ1Bzww29jURjMYVdxKoOC\nelN3T1E1Zala4jjlyUUjIyFPrUNyXiKEjfG6BwSOxrUuhbzTYhLY65YYIP4VG0e2OKE4JXOM+nWn\nLa43a5RtYWu7d5jGwiVtuV5yfWiOVoG8qRmAb7m7v+IrQlRQiQQIVduFUc8n2qhJpN5OypGYzLIS\nNrPt5+p4/wD10U25b7EK6d0MmRJS21skfL/+qqwtmWTagLc/MzH05AArRvtNa0ZDGziMnaFl5wB1\nwRzjj3Ge5qnbTAq4kIWVSrKccE1q3JR02OyfNH3W9xrRLNCrhuG5De+ahw1vxKCE+nH59qtk/Zw2\nMBWO5R2INSeSJEOwoQwOVJ4FCq6abGcasorlexTt32kIN6jPy5PWtDzAIwpYED7rZxiqrWwjCkls\nrxkcjNIr44LevQ8H6g1L1d0Yylfcllt2eKQcSbSMHNVoZBlcndkEFS3Q1bhnIBUkDKkHHv29xUNz\nGY3EqH5S2cdRmm9dUEVd2Hq6ZwwxjvUkTD7T5RIO9fl9/X8arPJskilTgEYYVJIgIVgAOcgGqtfV\ndS3G0eYtp8ku75cKu0qByABVe8f5beUcOkgyfY1YF0kkYVywLDBzz/kVWlH2qZRjCdwOn0rKELN3\nQuZLUc6BLiUdEI3n2/zmqNy8l5cysisIwxyxHGfrV27O6QoDxgbzn9KpyCQLmKBXVf73AJraNtG9\nyLNpxiVpSFjKpuPckdqdbxsP3mGZiflHYe2KBGzY85UVuyK4AA+hqwCyptCEg/TH5Vq3pZGqq2hy\nR3ZIGxA7ScLjB6Aj3FUp764uNM8mWwQ3AO9blEG9e2Nw/hPp68irbhLhQjBNo5ODwv0qNtuAIyVA\n56k5NEJuK0M27qy2Oo8Oa9BLoUVs7meIENgjDq3p0OVHJ681neJNFSCVZ7R5ZDJJvWNFBUjk9Rxj\ng9Kx9IDQ35ji/fJKTiBeG98ev0rsodRtQRAyXFqUCbEZB5Y9wwPynkEg5BBrpUovVs3o1FCV5K5l\nQaz9o1G6/tACXUoIi0DTKwCP8pZNnH58d/WtG3vYdRuFa5mSExurrkkbSMDJXPI6fnS3UVnq+pxx\ntHLK6RFWlUbiWHfcOox36cUl5osmjSvJEiTQQKHZl6EE4Oc5waU6l22tiqlRTn7ulySfTpPETQXU\nF9A8zRYjIHlo3zH90BjIIzwSelM0/UZ4y1jeh47lCQ/nSBMe+T+HHerekXUbyhXMk1nIVBaRjC0T\nj7oOPvJg9R0PoKqa3rNjZ6ldWqWPnhd8e45JV8g7t5yf908UmZzSi9Rb3TpNTthM6LFdhN26NiVf\nAzge/vXM3cNxaTsrRbX+9gfMD/nBrpdP1dZ5Ua5uYVIQKE27TM2cAFqtyW0Go2Si7szaS43bCwyn\nXjP8XHrUcsZ6oyspHHOEuFW4jAQk4cLzsPsvXFRmyW8yAyxonG9jgtz78fhU95Zz6ReNDKB8w3jH\n3XX29arXTBVEicxnsOOax5XfluLyKxiEcpRDhWcfgKuWPzNJNjoNsf8AjVGWUbkdTw4yOaZLdmBF\niiALkYzXrNNxt1ITsrsvxwKQ6j7zMM7uhP8ASkHmQyAsAyA8E/3e4rOUXBwXZwByAOuaDI6Idjkj\nPTr3p8pCNGS7iAKqSzkc45xUEeXc7j80mWxnkn29aijdR5hOFUDAKr3z3p4YhVYjt1XtQkolLYuw\nTQy24RkIkVOoJqSNbffIAHXcNw3Dr9O9UYZpUVULBlOcHPeralZ4vLLeZIpG72HbFZtNCWo6RYFL\nZUeapGVJ3ZWpbG0SNyRPt3H5Bjj6H0qELBKJRsPnDIQn+LFR2809tcRNIVIBKnJ4xS1a0AuQSG2k\nl+YvH6Yxz9Px7VQa6MU/m7GjOT8h6EfWr13MJwywhVcEDaGGGXPf/PerJkgBlt52V5QASjDI5FJT\nto0JeYlvd5uPMCKuQMFR29D69qiRT/aUzN1YYxQrIjYLDvxnNOl2uA+/ZJEDhjwCM4xn8qUldFuO\nlkLcq0CmQEsyEMrHALDPQ4rfsJ45oZRxkxMR34rJuA81gNqM0gIxgdf8KjuGmSXZbEBYmKtIW2gj\n0+ma50mpa6E3VrGrc3EMel3nnR+ZtwQhfaM88+//ANauXttYlhuS5TG/gMV4I9vep5Mz4tZH4PIC\nHIOfQ/nVe9gW1RigwQpCx/3iK6oW2ZrTqcqfmaT3P2+QRTSgoGJ47DHSudu5PLkYEq29PL3N8zGl\nnklSUpHkbSRuTuKfb2axSBt6ybl3HAxg+hFdEYqAJxhDR79B5WTyEVcg7MqueeP8acIXQjdgZ+YN\njrTZQ0Q+YEgklWPYe9TR3T7VjZN6gkgcHtis4pOWuhzttK6F85DbyRtgOnPX9ahRJrmMLvPB4zUF\nyoZsx5OBgg9foRVmxEqwb1RinZgM4PviqaezH0uiZ4gIcNlZQCWRhwfdasWPk3UbLgCYDg46kUyH\ndfxNEFw6c9M/Wq6W1zakzrBIgBzv6f8A66w5ldxuCjpoEFwba4DH/Vtwwz39DipZcebLCpAlQ5UA\n9aqmdbm9SUurA/eOP0NWb2IXEgeLiVO3Q05b2YS12KMv+rgmH8D7WX0q9aztISMq2GZcKegzxn8K\nsQ6X5lu0ty4hTdhty8sewx3psc2mwXcUUt07qWxkRhQn4nms/axi7MVtLFZ7n7S7npAHK7sdhx/S\nrDr58pkZcqo2ooPAHr71of2VZW7GLe58sYA345qkbmDTorgRNJM2S+HAwGqYYiLkaLSNkZd66xOq\nsA7E5RD0+uKmsD5zhGJZlPJ7f5x/KsBrh5LhmZ98shJcngVt6ShU4VhyMcHtW6ktSk7asuXltuhy\nBgjow7GorFzLBLE+PMQ59iPWrc5ZQxVnGBnIbj6VRtGC3pPqOR6jbVa7MuF27FiABHfAKsVPA4qw\nwCgseST19BQIgGHPcp+BH/1qhadJQHUttDbAp5yB6VnNK+pMopy1HyTw3UO5X+dRkkjowqDT4mNu\n3mKAMYKg8Ngmp5Ps0EKshCjPINPLRmFhnaSPl5/KnHzKb0KotbWP5hGqHoCBmsa5t2hvJimPLPKE\nfStK3tHW7aVW3I+BgtwhqRzAJ/JWVRIw4Uj7wxzipauG60OdkUlRuSTrv3swwwx/+qiJ3W3WRpHY\ngptKsNq/NyT3H4VpXVnGUWJfLSRgNqu2FAXuBWTA0Mlu7SpuEUe4Nu/2hgfqeKza96wdD1XwzrLa\nxpElrcKjXNnGuTjabiMH7wbHDjI7cir7XrsJ7ZrW3uyjhgGK5Izgd+pGOnNcPpmsRCznazuyl1bj\ncpYrtZMg7Fz2XIGOvpWvbalbaxGTMCjR8HcAWQfj1PP0rCotdCopNa6GxfaTbzM7w213a8BRFPAS\nFwvI3/XgZA61kvZukaEfMrDOAQRycjpn39OtW0utW0/P2XUcCM9UfKk9uD+HH+FVbSG+naSXzUkd\nDvKBhGeRyVGeQMnpzWFtdDaneOlyttijuI9pV34b5VOFPoc9TyBWkL0uPJWMYPJwmG/H1qvqEiWc\nnmwKuwgDy3ORntn6c/lWqirDpwngNq5KFpA7BpGPrxyCOBx6A1HNze89TGc3N3uV/JgkRcuwfcAF\n2/e9QD0qNlt/JZCRK3QDJG0hvbqCO9OsRamKS6kk27AzmIygDB6MMn17c8HtU1zYLOwlF2wkj2rJ\nG0ewqp7/AO1298GtnDTlbJlGzv1Mi6sjZW8dzcPiWY8KSMhexIz+vQ1CxV4AudodWOO2ccVcWD7c\njvKpZYuC2eMZwM+3NXb7R9Ln0qW4025EVzbJkxTvt87kZ6nAIAOMcGudxciWm9zES+IxEZWQY6Dq\neKkJYPzyykYzx+FQmAtEzBfMVcEkdTnjgd6fa3G5QzZyHwVPUD6GiGmgR0Kl5Zo/IwoZflJGASKw\nb2WaLbFLt2qCQGGcZGCP0H5V2DxIsRRgGj2kEYIB9P8AGsnUrF2jYbPNVotyYXGcdPofat6UlF3R\nonZ+Q3wtrEunXttJBJEiuQjrKuUOD3PXGetdTqloba+mtpYRCytlQhyNp5GPbBrzSxeIv5G4gE5V\ns4IPavWLy9i1XStPusFrlYvJmZj/ABKARj2wavFRUqd+xc1FqyMqFriGQNCysew7n2qGcyNO8sic\nknouAOfTtUpfa6q/yhzgE+tSSKkkYLDcyt2PNcC0WhMXy3RnRyZuR5xHUAbhwKtMUkOd2frTQdyi\nRlTPQHGM1WJiS6VefmOAufvcVOkndCi73Q5I2kdfLchc5UdquSPJZ3au6h1wQOM5z14qK4JLK1tt\nT5VQYBI9jTpo5JY97nlBjJNO7clf/gidmiJpTcXavJHhUVgDkljmkjSch2cYiJ2qynP55oQvL+7w\nGKnmn/bZIg0Wz7+OOo4q7Jr3htSj7pAimOfaPmOMjAxxSk3P2pQ5OxenJ4/wpEjaOUGYcnlRu6e3\n1q3JOpQN7DgDriok2tETypiSNiaNo9+cnDj1oa6k8srGIY/LyxkCYZweoP8AeFRlIZcLHnf9fu0o\njG4+ayM23p6iphNxVmVJq2nQkuJBdQR28oJiEvmxImFCsRgnkdO5A6496zm8PSyEeXcwSExkh1Ox\nScE7cHnPHcDpU9tLOylY4i7A5AznApHLMxyvzt8ucdK1dV35WSm1qzLiZkj8mYEFCcH+6acUdXzE\nq5x8xHcVdksd6Owl+dMYV168cjPb+tVpbSe3kMcqujpwQwwwo9y9wbuRpMqhRIpGQSf7pPYfWlJj\nlwBgDJyo5FNZXIzncOxHWoyrbvnD5H8QGCKq3UZKYjtXDE/XGR+JpYpdmY5Ecx4yrgcD2J7Ukchj\nOGLlevAqwsURQzZDMOock/pQ58m4JaaFZ9oRlOc5+Ugjg/1ppWO4MMoX/VNtK8/5NWvKEqZi+YHk\noMEH6f5NZc/nWl75i4MTfMQeo/rXRFa+6ZyTktDQlKieRcfMJFEYA+9uNI0ypJlORu2fQ+hqteWl\nwt1GjZR1JZQp6HqOn4VZn0z7GAnmZ43qA24A9x06j07VcqTte5qlGNtdyONxPd+X/wAs1+Zv9o9q\n1bmZIY1hjwCFGcVjrBJY3Pl3BxJtD7VGTgjI+lXY3LsNwZR/drirwvJX2RatbQYuk+bG8xldHPK7\nuQTWdErSF1/fOwPVsdO9bTyux2x53Y5PXFZNyY4tsA2gE58tfUnvXRRlLl98xaTnaO5HsY8Fm2+g\nwcfXNT7F2/f+uRj/APXVUNDkKZBu9NtWNqlAFbOe6kofyIq210L5Ho2yukpXUYDGdvzbt/Pyj145\n9+K6TUma5vS7lTM+GaRW4bjhwcd6xUjRV2BWjc85mYICfbI/rVyK1ujhRkl14IDMzH0B6U7q1hNr\noX9Lur6zDOomMTIyMEUDHIAIPXgnmtq/nu9StDdWEkaTovkmFCxZ0KjO7PU8HB6ds81zMV81pIRI\nBsxzu/hz3xgnj0qeDWbq1uPNAinjlILGInBAPQeh7/WtYS6gpcruXLSa7sGW3u3Ns7MCfLU7xnq6\n56dqnvdDmd5Z7WNLoq3mSQyIHZh138dvUdqtlVvbSP7VFtjkBYSwgErzgEjsOQCeg74pLN7i0vZo\nLlmkgjTBlUg7QfuncO3TjPepl72jFKTk7s5+a2dE+1mHYjMh+SQMAG5A3duQRz3GK2NM1BZnltrq\nYSzRN+5kZf8AWL9COvYirOo6SJYpbuymijV4uLbcQrYOcqOhxzxjvWQLm3k0iOcXm3VbZwzxGPbt\nO7BBA9ByCKcVyMSVti9r1sTYsXT9yr5diy7gc8EHHHHBPT19uTG63llikU4DcqRgg13iTQXGnxyG\neKNd2x9yA7z0xk8/0z1xXGahZmOJrqBkeKNvLaRQcEduD0PbHaprK+qKtdmBFG726HBUL0Bq5aWD\nyTyTMu7YpIH4V0r2ajjygp6DA5pJYDsyVywGQcc//Xrqlik3ZIzauzmhZ3M5YhWUAZBI/pUBEjSR\noEJcKSxAyBXUBlFkhQ4DvsyKmk2RxsdvXjnGaqNZt8thculzkVcrwTjaefl5FPxsKsc47c9q0tZt\noo2tpMbGkO0kcfLWeg82WW3iLSeXkrt53V0KzV7lWXLe5PCEdPLwFLdc9vSnKlwsZeICRVIHPB60\nikRfIEzL3J/h9qlWcAH94xPsO1QRy32H/bVQIshO4jO1xyD71dsJoLWO586N3V1PBQEBvX6dBVKS\nS1mYtJEMkDJPXOOtTNB5kG5XAUYAKHJxjqazbshe8tWaWnx6dAjXMsWDMNrRE7lQdSRUc9vp19eo\n9mTbbgu8nlfqOc+lVGe5W2gktY02hfnDDO7nrg0XMAiiO+F/N3DcidFweCKXN1uNO+hoxaWk5dHe\nSRiT5bW4xnb3wRn1qd4hbQm3uZo2QrtK7csTnqfSobRT9rM/nYSJN5dW7D/69Yhmu728M6+XsAIB\nd8EL2rTlXLc6KkIqCkmac16LVljEOzCK7ZbdkHp9O1MLG5OEJ2hixAFZ720M7c3Jjdj16ge1KNPu\n4DkzxexDdfesZRg3fqcraJph5G1wBEVPyZPT1qi8U9xLvaZWI7d1+orUtrHcRLdOZzj5VQZUY9fW\nrcjoEA2rtHTA4H+faqTsr3LhK2hkRWNww2xQksw5lkPH4CmSaXLAUmS5jWQHO0k81atUudRnEMSs\nwLYVR3Pr/jW1FpVjaMfNd7i5U8+Ucqh+vAzUyrKCuyOVzdkcqZpkOwIT/s5pGkMS5khKKx6qMgfh\nVrVtPmtLjzvvJIcqgOW/HFQwC7lxHHA7HH3dpNXTnCUbhJcr1RXku15LEEAkKwPI/rVm0fezFflk\nH3sVBNbtHKIriJY5GGMA/wA6jjgltn3orng9BnP1rW6cSrQcezNexl+ySiTftkJ+Yg5Vvb+Vb015\nD9mMnmLkjkE9c+lczJdx3a5KMku3DFEOD7UQWc1zbu8IVViHzknp9K46tCNSXMyoycY6oz5lfzC6\nJuyPve/p9a29OWTUIogHzIjchjjj2NEWlRy7Q+ZYGUyEodrJjnmnWUM9vesumTstntb5JFOc9s+p\nracozVosSiVtVvgZmgjGREWVVPPOece1QC5QI7pDDHPbgZPlgnJqmY2uIWMgVJAx3KTz+lU2lniP\nzAhgc8HOf8awdKztclrW7OgtryN7O4a7gMSBNzyxvgg/Q5B+lIthag+W7SyIDk7GC7yec1lTX11q\n0phjgZYiAAgTA6cmriXsdjFtlPzqm0DPHHp61EoSjsGsSHVltoVVILeKEY+6Dlj75NZ+nyta30Mk\nZwN21x9eKYxkuWaeXdlievap7eJpZolQfNwePbmt4uyTQ7nRGRZ4M4HQhsHvVG0HmPbygZYgEe59\nKswAGGUL0aYsPo1VrM+U80B6xybk9lYZ/nmui6Tujai0jQMwRJRGAW3/ACZPZRiolZGUu6KrM33V\nHf8AzipECM+5gXbj5R2H/wBepLjmIquQ3oByaluNrPcXlbUgWIXcBeVgm1ug603TyiSudpIQ43MM\nZqC1Rrh8KWjLZBLVaieG3Y25Ybm52dh71PdD2YTvFFOGB6nkdcVHMEMgMahvkwD/ABY70pggtpTc\nO+d44Vj3qVmjiVpEJzIhO0fSn6Cu1oZuoWkc8KYbzPmGQq8+/wClYLx+TLGxiKwBwhWTkkH19q6Q\n27tGpZmAb5gI/YVU1uEvbqx5OcEn6Z5qJR6oC/Clsug6lGLZHby/PjcgfuiCNxB9ME/Wqvh6G1v0\nRp5ng3LtDgjYkg7nI4HTntVPTf8ASNJnspGJKsePb0/WotKuGs72W2nH7qUnaQOAR/8AWrKSQHX6\nE88HiqbTb3GNm0iQD5Hz/F/eGduM8c10GrWz2mrwywI6rcRoqoMBsjAZSc9QR9eleZ3Oo3j6vJdK\njHaqxb26OqgAE4Oewr0rTtSfxToHltbtJfRPvDRZKnsSD2bHUcZxmsZxsrFXs7PqVL6Ge4QlopRG\nGGWaEqcnqGOOvXHFUI5YVglguEd5BzCBgBD657/TvVxNzyZN08TKMr5rEfOMkdj0x9fSmNeSySJc\nSwiaeE/JnnPJz/P9K5bWuug7XlYbaSRJdRC/VUtcjKiENzwehHT1+vQ09bl2vXSMRmEnaXQbEZhy\nOvb6e1MMUcsd08qGPzQPKAG7nuDzgDGO1Vo4ypEA2iQHccDkD0qovoEbLY0YtlhbSpPKqmQMPl7N\njA57qe+KjggS5Mu22kMScMxbfznr7rj09qhV5ZleO4hXdkBQOCCMZIHv/jUn9qSrbxWtrGElViuc\nDJDY4Pt9emadurJs+XQjjhjEYkAQOGyCPboQfWqNxbByT8xkwx8wnLMSc81qRwSJaJK7xGNVIEbN\nlsD/AGh/Xt0qvtLxLI4UFk+4pzg+v/1qiUXF3FvqipaXhe28mUuHRthYrjPpUs8Il/eLIxc/cyen\ntTJF+SJgMgtz9RUqHcqbg2AzYI/+v9B+VJO8hq8Wn3RlXGlWkjhZIBvReCh2nA54rpvDiWU6vpNz\niKZ4xJaXhLYkIySrY74zz6fSqV5HD5o2bjEfuvtwQc849v5e9La7oCkgbbJHIpVx2P8AhVX5dJao\nF7rJ7mN4nktp0AZHG+Nh0K/561B5bx5Cn5cZxjH1rQ1q6F7fmZvLWSVFc7M4yBtwcn2zkVnqyLyS\n4Y89Aa55uzsir2bSCGbd95c4P3mPBqpOqtc/M+GCAq4HJq6GhyE3gZxgHioLlYpFGwhiBj6Uov3g\nhohvnS+XGzbUXPBJ6VOC96H2twRlj7VGjxzQoJigXZ024ANELSQPtjQ+UfkyDQ/xG9VoIC1mxbZ5\ngJCghhnB4BqUwxmQzOCoxuVqhuY5ptrphRH0x7fzom84Q43ckHgnoKLJpMTj1THTstwwi2BmLbQQ\nM5pyWiQpidHwByMfP9feoZmgNtGsQ2TIMkilNxcS7WBkGCAXBAIIrSNlZoTWlis0oGY0LAITh8Yz\nVqIwyxZP3h3J6inq8cLCSJD5jE7xtHPuPQ+o79vSq/lmWbcr7UPXBokubR6FSjJQTewsdwltKw+d\ncjnB/X3qYRRTyBmQ8d1OM1HPE5VV2ZU9cDIq1JIkUIjUAEDBx3rCavbl3I0bIJJY4zsiVyR6Hiod\n687mQeq53GpY4sLnA3Hr220DySq/wqec9zzVRgkgtcqvJEwG4KD2Ibb+VIIEcAqwPsTirBjBICgb\niu7j24IqGa1jVztOxv8AYOP0qk+iGo9EULqLyHHl7vXBqPKOgJLJ79RWj9mZgAzq2RxkYP1FUpzG\nI3HlIHHWRWIyOMZXpx1yMVvBp77ikmmRRXhjfarqGU/d7U57d9Qv440aGJjyWc/Kue59R9KLbRGu\noYrl5S7GQIyW8TMyrxyex69OtbBtUtpbi1hsrnUrKUrDE24MFI5OSOnXOOPQ810w1dkb4ej7SWhj\nyiVN6u0Enlq6+duwrgngj0b29qdCJ5bgDMhLdCBudxjsuepHvWxd6Fb7HtPJtyso2gwq37styAQS\ncE9sfWsy1sr3R1E99OUjVGCKWBG8DGMY7Eg5rWcHB2bNquH5Wxtzby2m53ZHkmKkSBwWCqSMEHkH\ngcdqrlm8oBZmQ55IXHFT2iWt3I8tzI8tw2CW34Az3Y9c+3tUuqW9pZywSQyLcGVM/upxsB/LP8qx\nk9ThaKBmcoVGdvQsDnP4VLa2weUBRtzj5j1NVF3ZYlN2eTtPI/WrkF2gBAJUkYOByKxm5J6EKVot\nRL8lnbQR5jRGY/wnjP5VTjktwlwZrVvMDK0VwjH5T0ZXB7dx71ctpHll3RtER2UnOPzqndgRXchh\nY+YyBiQcZNFNzt7xSTew2Kd5FkaTaEVsESZBP0Hf+VIropZcTBV4yigfn6fhUcMboCyqinP3du4k\n/iamjtpoxN5kLAty+G+U/UGrlGI2kSxXrSRsChcQrsTzPmwPrnP50ktzFcJEdixlRzhiQzev1qOO\n2iVI1tYS0rfeG7kn29cen86YFjaWRXPmSq2GXf8AcNJoTTNGG4t7S7MhExjBKq8MrBkBPJGOD6Y7\n5rprKG2too3tVK28ilBucMjH0XJ4zXEQIEuVKyQRu2cPOgKYwe/Y+lOhuJYCpSVXKMThieCcc+me\nOtXGXLuJM9Jt2e6DTKx+b5slNrIO2Rxz1574rKutMN5qrXdmqCVwqSJnG855PsOvXI+lcit5cJGB\n5szIFVcM+7AH1/zjiup0zVLnVYyqyK0gzxA53BR0GCcgcGt4uM1YpWZBqMEcbCK6sVkiR28zlsMx\n67lGdpHPT8iDS2N5bPc3Nq0KwgtuEDcKR/snuOM1u2pm2+WFaNM8Z+bI6dDz7EH0rDvNN03UL9E8\n2SBUzuZADHu55RsAnPPuOQa05VHY00huTwxW2oTb2uJIMLuaUqGQ+o7bfarb6HBdXsEemapFNFIp\ndhKcFMemMg1FJo8kOmx/YpCd67tuOnHY9zVfT5NsZlAVZo/kfBwc9jn1rmbdOF5I3nhV7NSuYmrW\nkumXsllKuwmQsPQ+49RT3VZXRnJCD5yPwrU1bdqCfvjukiCsCecCqk1usgWJT8oVS5z6jLUqVdNX\nOacLaIzzbR6jN5twreWPuqDg1LKltYW7SxQRxMVxnq2PTNaSQqkYO0heu4jH5Vzur3QvLpYkYCGM\n88/eNaRnKpOy2JUFGN2ZgQkebK2ATkKoyTzTxOiLtSNjIemOoPqKe0TzHKA4H8WP5VGVjtELSHpy\nQDya9DpqRH3nbclSFyQHQySNwEY4q7BBcWe6R/LkGSMIeBg4/mKzoY5pGEsgKg9ATz+VazXwigVW\nwyO/zpjv61lPQckUrbUJmdoWiJjfIDBen0rQYQLIXG0n+Jg2Hz7io7yQwuJYlEYY48xl4I9j070y\n0FrdXscRfCzkocdveoTvqkQjchk0+20OeIXKGaTG1eQWIPQn07/lXM3t20TiKJdqA5P+0fWobr7f\np93JDETIFP8ACcg8UjStLGjyxkvtweOozWiet3qNsElimYMGKSAfMK2UHmaa6SDLJyGwePr7VgyQ\nbQJY2P8AeB9u/wBRWvp85mtSBhWHyOCOn0qasbK6HUgnG6H2MuYTG+S0Z3KQf4fSo7u5ZLOP+KWQ\nbR+Pf8qjgcRx3JTOYpGQdzjtVdMlYmJX5Gxg8gAdqUYXZMG5I6eJU0fTo4VwtxcJudu6p2Ue56n8\nKkhfZbhvm2tuIKNjp1rmL/UJbu7WYygzJw0gXv6itqx1eKW0MlzgNExV89z2NclenNxuiqdk9SXU\nU8u1TcAZZH2qCOlVpm+xxwpHzvb95hsHbVO81l7q63rGhKAlS3Owc5P1pkUs08hEaogYZ344C/T+\nlFKlJRXMKrJN2QkssUjsZYeeVCsOg9azJJ3RysGQx+6orY8qIuhlcsScIu/72R6/hSwOLbEsdtBJ\nscrIA20kEcYOc/56V1xaWwrNnWaHpuoyeHYpzewfaCCDa4ErgdhgdCfQ1Rj0xYPPYCWJpCrsjjGf\ncVFLPFp62sun3L2V1dujBpZC/AUkgnGM7j+PtWpb6v8A2xqc1pf3i7Io/wDWGPYYSBxsAHKn0/Kh\n0W480Tplhqvs1KS0KMFjbwSrMqYlIYbg5xz6ipGljkjIRVDAHA9/amX0nlSGMMHOccHGT6g1gXl1\nNG+9JTE+c/vFBDEe4rzfZzlPnvqQ48ke9zIMgW8mUcJIxkRvQluQaTTYTdXt1j5UjbI/2UI4/Wq9\n6bicSSpa7icsTCdy57muk0qxiXTFErgCRdzgMBk+59q6q1TkhzPqYxi2zGkvoZJBECI0faPNc435\n9T2Wr99HYQQTWl7AJWyBC8UmAeOTj0zViKztIFeO2txIvTc/LZ9j0Fc3Pdi5vpZMMwDeXGndiKiF\nRTb5egWcVqI6+YQiFkRTgBFz+tXhCthEiuR5s4IP+yo7fnirNjZ/Z0Dyn983J9AKz7yU3epp5Z+S\nJCv49a1p3c+V7C5WkbNim+3EnTfyPagR77yLcSIwwJwetLFMiQLGCdoUKcnOMVVW781iVRlQcEt8\nua7EnJ3RtRpObNCd1ki2rGDuHyKB096ot5iNvbLA9B71aFzuXCKuCPTFQtJsw0gYqTjCr933pSbW\njRU06el9Su0++8VclGYZAByMA/pVqWxEjpK2Ny8jJ5Jpk4SRFeNQdvzZUcnimtcTSqu4spjOCc/e\npK+ljN6b7jyE1D92sZxGcnd6+1PVY/8AUTOOAcKvcUksb2q+fGR5hA4zwfeoi6ssRaJvO8wK5A+7\nzjFHSw22MD75FRFACnADHg02BGnUeayfNzgDp6VcdEnmK4AQAHnsarQFFhjCDcATkjqxHGPzqWHk\njEu5ZNK1BmQEqx3gY/MfrVaXUxesFtbVt+ck5+7+Paug1DT1vYlEow69CDz+BrCmgOmoRK7MsjbD\njuOtZtNbIGn2LsF3NJpEkMJPmbcOc5Jx3/StvwjfpomqwWl5PE0F/GfM8tz+4fsW7bl4Pfqa5C2v\nPs97HvYiFmA8w/MME9c1e1QTAwyrtZoxvyOAR0/Xmp5U3djhGLd5Hres2kVxMLlnMdwVHzKucnHy\n4B4KmuZcyA71Yq3BZe/PUVc8P+JIU0KO21p5Z0+/FsIYxjj5Tnnpnj0NbEmnw3limo2+420ilhKQ\nFKAHncvqP1x7VyVItO6L31RgD/TcKsyRs6nJ24GR0Hvn1pssg0fUHlBXYQY/lIII7j3qe+0m4tHZ\nPK3BQeEG35ff2Ipsj2z2sf7oAqACG5DEHrjtx+dYyknpYJO9mJIsmoSQQQ+Y0xkO1XIIcdAB33Y7\nHg02CKTzWjZlDxZQCTjbjPH9KLu0lUx3ELMyOBgY5+n19qrJNthkjkto3aQgrKSQ0fIyAMgMCO1D\nV4q2liV2JmujIREpKkjawVs547Gpp4lWygijd8hvuSDiMfXv+Q6VWjmi82GeNUjkhGMY3A/7RJ9u\nKsljdRXE7BY0ZgNqLnbn1HYe9O+zHbTQrtG32JSe0uAw7sO+aSMGSAlT904OOo96uIWW2ktJAyhi\nHdWHRlzj6cEnPp9arSq2m6pIu5JYn+8UbKsMA5HpwR/+uoqR+0htNrQEmdkltS25GOU3oMjHcEdD\n71JC3DAg5xyp7/Q1TcIsvmREoScq6/db6gj9auAnIYn5iM5HQ0pv3biSuiK8lCyRDcTtO089iual\nsNOutTmEEMsaOV4SQfefso9zVJ28+8AHKqdo9zitGWAKVMTqxCAb8/xY54+mPapp6q7GtXcg+zG3\nmxIvzqeQaQMhYJtO09AKty6hbeXbM9o4cMRKfMy7LxhsYx689/rUDkB28ncEJ4J6496c6bFKLg7M\nqbTDLtkXdH1U+1TAxyYSRcsANpZuMdulOkdN7QyDBAzwOgoEAZFKnI7EGspdxxavaQWzGKRvOk2q\nDhD14pLR4o2keU4ByQMZ288fhSS228gOoI6g4wQf5VXlhdF+Vgef4etCSa33K5Fe1yUhGmEirt55\nPc0scylmWVGU5yABnJ9aaLg+UoQdSBtx1J9akkQNcxh2AQnacepol5kzp2K2Ll5JW25jC4L7ulLC\nS1x5csuxSvBb7h/HsP8APFTtL9ncALwckY6Gq08WZzsB8vJII6r7VqqvM9dh0rL4tideJymWO0jP\nZkNOcbUSRyMnIJI/OmWwggYtIgYOm0OpwQfUf4GnPMDOuxd6qxU5Hr2PvUPV3Rm2rsXh/nAwARkn\nGCvrSbGjjUSxlnZsKuen1p0qAyqIinyqTtJ/hqOYuJQtw+N5GX61NrsL3I8hVLoW3BcnaOMe9Rtu\nkIYk4YkKwHBHrWgyglVVQIxwAR/kVTvGENw64x32Cqg9bFxk4vQSG4MLGPBII6qOarTxeduGOGH3\ncVajtJXTc8mxz0VRmhoPK+9PIv1+Yf4ineKHa78y54b1J7LUGjYGS4kjIj+bCk+hHp05HSr7anfW\nulm1htoYZ0y6sU3I/PzAEHniucYsDmNW3D/lo3y4qRr+5bZC88k21/OKn7m7sT2J/X3rrp1bqxS9\n2Vzd0iGS+ukSaGKO1t4wwHluDz0Ge4GfyxWrqN3YjTPs8lnA3lklopFPyDOBjGcdR+BpVkjdReQ3\nBitZABtX5lUYPGB39jWVM1tqUTXK27IsG2XHKmUJ1OBjP8PXtn61s2+o6tZVZczOLkWNZnjJf7Ok\njBEUY2c5wMfWq808UjbLW3mjTjLyyBsn8P61q6jAfss97JGcmRcS8ho+wHX7px36Gs9U+bcrYJ7k\nEA+x9PxrHmsubuYuV9EMiYBcYLN3YjIFSFYm+by5sDq+M4NTEyxKGljyg6spyQP8KekvllVOGjfj\nPoayUn03MYw1uyIFipEUqE4PzFcmpI7dsbmbzGJySOhqI20TfNgjnII7HrSxXHkOqO7Ak8HH8q0j\nJJWOnnXJyxJo5IVVtyspH3WVulRMrTSvIqiOTAxuBw34d6dMG8wNNuDM/OePz9KlvIMwoFmwGOCF\nHH4US7ky7ohnuI0cQ72VZOcBSig+uMmn2VxcJIR+7GG+/KM4x7gVG2zatvI7b0+ZM5GfypzNJePJ\nFBNCpUHEbbtx/wB3PXIHShdkSu44XUBE3nHy/nysaMhDH8RU/mMyCGS3G4PuSTOCFI5zjKsPTpVN\nolFtG1zAU3/MC0WQy/3s46fnTGVXmiNtKqMykM/l4GPqP/rVUbDj5k8qeU+6PLDqVIwcfSo23Wzr\ncwEjjHBPIPUVcGZJPsc0LRSIhCSSR7HJ685+v5VXj4HlSAbWFS3yNNE26o7vQb+PV7VlVx9rEe8x\nrJubA4OFxz69areQs8zRlEB3F47gSOdgPVQoOQfXiuJVms7pSjMjIweNxnp6cVrx+J7mwcTSvcTI\nTyv3+MYGCeg/DtXUpqQWZ0tlqZ0xmjuUEsTsHRgQDnqT161Wh1Pzbp7lzCXnk27ZIwyg/wB4D29f\neublWe7hjjhfy2TOAjkqfz71YSWaO3MM6LINww8eBtbPTHT8uK8+deXLy3NJ89/IvTTst1tljEci\nnG0H5WznZ+FQ2OGnWaQkiWU5JP8AD7/X+lXJbGG4ljFxPIowGYKuSPQc1O+l2j2pezeaeOI5EMgA\nk56n5eo/wrnpUXO846lucUrMpz3xugnzCPeGAcjnnvg/lUT6etzbn7NHGhV+YiMAtjqRVFZpzIW2\nhFU44GST+H1rofDs0CanJLdFJl27UikIKqx9Qf8AGumjWneyCUFazOfvvDerJEGeRGyM4tjv2+xX\nqD+FYT6TdxtlMyY5K4+avYp9G025LSWuoS2M2fmRY2kGfXGcgfp3rntRtWtpGhv1RpM5jnRcLKPU\nDrn2616DrThujJRVtDhbSJpG/eEg9M9x+H51ba0j3FmkLnBOCdoHHet2O2gu7gwAEXIXfuA4K/7V\nFppVnqOofZpL+GAouXIGTg8AZH9an27nImUW2ZtpJtgiR33w+YPMU+n09qXULqGG9WPT4EjVRkSL\nw3P+e1ejw+AdEudO8jTbxlKNvFyWWQMe67R6H3rm9X+F9/bxedp14t9IW+dHXy2P0OcH6ZFaLlEo\n20ODkMzO0mX3HnI656ilhtjcI29mDEbQd2Qp7Voz6FqenXAg1C0ktZgDgOcb19iMgjtmqKO1pcSB\n1DJ0byvuj061rEVhQMpuZdro4Dj6inxE2d7Iy/ceMMB1x7/X2qvLJtuHyf8AWAj8RUL3XnRoQwUo\njLuJxjnitZLmjZjgtGnsXroeWJtrEtcRlgxGO/YVRlmVYIoO4YsxzjPHA9gBUMt6odW+fES7Fz09\niKtadBDMTNdZKon3f7zVEVyp3IS5dCKMQum6TzWVzxsOAR3q2Fiiyokba3QD7xc9c+3atBJ4lQSK\nFiypGRwQPp2rPh8wzFyQoZ+ARnAH09aq2tmEXzX8i3bW8IBViWb7zL3PsT3Bp9jPFeJ9mU+X2Y44\nXn/IqO0V7y98lJ1iQ7g0jcAcVoJpdnpSySmTzlyA8h4/yK5asoxdnuKEW9TF1CGCyuUgtprmRcBo\n9wGM/h6VUd2kvmjuJeG+b5OCT2xV2TUI5Lwo0IcycKw7DNJcrFbWqI6KzZ6oPm5rWEpRSi9ylNJ8\nyFcWl5I6zFhDhcO3DIc8kVswtC1sqQ325kxmMggufV26E4564rn3a2mh2yxlH9R94/8A16y7wz3M\np8oKEwFCRdP/AK/1q9ZaM66Up137zsvwO0uZolUJbr8xHWWQAe/Q9KzhDCx8y4LOgHJXkewA/wAO\nlYln9pVI4IlQO74HPf3rY2s7rDEd5HWTpz3NclWFnoYtKLauRzyrKjCCJYgOAqgqPyqGyvDFiz84\nGZByrEA4/ka0UhSPCoxlb2HeoLuxicCSSOPcnKlFxj6etYRnBXg9haN6l2Ikwl9yooXhmP8ASs+B\nLS03NCm0sTubqWNTtEfKzG+5QSoP0/rWfOAoYtIQo4OGwce9ZwtGTaerHbm0F1O8a0iIIMcz5ALt\nnA9ciobG1byF2/KXBOSOgPf8qt2GmoR9ruikUYPyK+dgPuO59qhheSa4mc7yQxHyNg5/3a76EouR\nMo6F1mk+7h8cABvmOKg+zeewUyPGvUntj0HvSStdwJ5kbedH3BXBFSW7Q3oMkjuBnON+a7VNbIal\nOKujTSNYowIRxjkMM5qldSGVdjpsXvg9astPDAAm50UDqy/L+dU50M8gbdlQOh4FctR80trMSTtd\nk8MUcdvhDg44NKB+4WGXHOcsO1QLbSwwllyd3IRTTkSVX3nBBB3K1a201YczHMiG0VyxlVTgY60i\ngfaGeI/K4BXngc96WFEVnUEpySR602AK0kkYbtyjDHQg0PQQ4ODGFZcSMMEH1rPtiRbqF4XzCqL0\nHJzj9DU947GWN4mHyNtdR3z3/Cs6eSSJEMKM7x/MF7Zxnn6g0r3LszSQuSofd8zEKWGCQKzNfj8y\nGAqeQ27HtSwXDKyqisdwLmSRsKW7j2qb7ZBdQnz5Iw54ba3y+2Pbina+hai3qcwSGBRgM45Cqat2\nN6Yv9Hm5hfoGOcH61Jcw24J8uYFeOP1qlJCoOPlPqCOtZPsxWdzqC/2ZjNEwMUg2lcY2nsfetyx1\nV47qylSSQQRziSSGNuHGCCSO/HauAtbm4tOI9zwnh42OQRWrZXkMhQC4EbKAMEkc9Dz2qUovcIcq\n0b2PT7tYIZYXsLiJWuI1lginfY2P4l54OD79KpoE1KCdQqPcwtloQSCQOxYdhjGeTXJ2UjW7xsxL\nPGd6SNyM+prsZXfWtPi12z2Wl/FI1vfRxMV4I+VwR90HGD25rCVHruQprWXUr3MatLOli0jCLG+3\nfl1XGdwxkMBnHqPSoo9hyI1WTC7wrEDP4d+2afJNrn/CR2Wo6avl2U6Kv2iJQyszcFJc8BiflGcA\n5FNu44re9e4h3+RIT5fygEDOCMHoQeMUppQXMbc6UbvqSNp8EuUDxRXCxh9vMfmE44APHHqOKrtp\n11ZvIBl84Vl2ksozjtn2rUhu4r2KO3n3sBgFCFAbHQ8c5xxn+dKLKWCFbuFDJH8wJRlyrHGeOvP+\nPSsVGDfumas3a5liQoS1xHOVZRt+XIyOmScYwOevbpUmZbiFFaEjBGGbhiO3P1z+db8WnQ3Ft56x\nxvAeXKyAlR6levfk9alg0GNbiO9s7kSx4PnQKxJK4yQp/UZo5NS46aM52bS5Z7RdQhjlYOzYbAKy\nlfvY7hvbv9azVnZjhAZGfgL6fWuqivEjkitp5pm2rkb2K+ZnkAYHDjkZBx61rzafpkjiO0SyF75Y\nkjEodQePXgZ9/wA+tOdBWVy6lKULNrc4pdJurdBJPC0AJ+/Lxyf8alaaO1kQE7wQA/loMjByOfx/\nlVnWX+1R2k9zG3lxFof3EgCjnkFc8gHoayhLaqqqskoVVLfOo2u/QEAH5Rg+9TZQWplzGwNbjuJY\n5JLOGacZYrINyYIx07EY6dKa8ltdR29tHEYmjYqHBGAGJOTxk81nQz2qW8sMihpXPytjo319Oaqp\nLe2oAuid2SFKNlcexptO3MOEObUuwwRIxE7Mki56x45z9aY2y2u3SCb5epGDimyyyXGZn5IIG7GO\noPJ9elVJP3LEKS0jfO57knvWElHW5Elb3TTWU8ghTn+OM5B+opudwX5lJPUde/T+dUlaOUc5Vgee\nxBqVVlUjbKxHTBPI/GsOSwJivDE3OWTdwMdDUYhEa4aYsW+6rL0qYOyEE5we/SnyhZHDKrBVU8Z+\n970XtoVz2ImiQ4DsqFidoTnHvTfs/lrhrk+gx3pp+SbcMdOCeppMyGUOxYjuQeDTs++gr2ZCsRjl\nZZ3Bj7E9DViC4htXaSIpPHIPmU+vvRcTLI6RxRNhuCQKJ0SO1jSMKin0Hene9rrcW9h0VuhdrhWG\n4rtU7slR6/8A16Ykct3l5MBQcYHJP+FLcLDGkb2pkZmbBVgAy+/HGPwomDCWOQYUMvzgcfN9P6VW\njVhJJ7AsVxHKQoVm4wSSce2P61A0W0kuWZurEnAzVt5XlmdYsqq8Fh1FV5GRSdo3epxmpTQRdtUO\ne9aDCqrlyO3QVVJJczzdFGQPftUiXKpneHV2/jzjFPMkJiww3N2Pv61uoqxvGpGMLJakkFk8sInu\niY4zyeO1VpB5gYou1TnYD19q1jPDcWSuse5yMjb90c8jFMQQSqQ+Y5Bg7TnDDPODURkno2c9zHNs\n5k+/IF+Xox6GrsG25QW85McgjKRSgn5TyQD3x1HFW5o40jPlsrMRheeP976VRkQeaiwsGYNkEdz1\nzVqUrFQipSsjKNrPLOx3nzFPzAnII/wpsgSAgNCFGMMF449asXKyJdNLC23a3BqSRnuo1aRBuBxl\ne9NtdRNOMu4yF1+zSxrukiZW43YCn345FUo2/czJncFxj3P0p8toTgxylG+vBqPcY8iWLPGOTwfe\nmlp5iStsSKscTIsko8t9pLelAbbJGrKcnkZbrUYaEog3DIzuLNxjsB71Iky7lGVIT7pIp7uwSJZQ\nl1sVH+ZeRTVLh4zH5kbRnJJORnrkenaolKQyF/L3Fu6nvT45ZV5jDnnDZNCk1oyo32XQk/dSmaeS\n5cT53LlM7iT8wJHQ9/zqAxSG1ZljVGB2rJnDKTUz8yOqgLn5enNDqyTsZX82JVyAfX3oTuGkivGs\nixYEszzKCVdXB2k9QfQEHn1p0EqeS9qzhC/IXHf0z2/KpHtEV90AKFo85B3VXlBRfNLEtGQhz0Oe\nnXpVXvoBM08xMCyySlYMoqyOH2gdAGH+RU817C2wPbTMqDBaPBx7nufWs431wgwhjZCc7GXgnpn6\n1LbXSF8zW7xOOjxNn+fNaKGvMxR0L0tmZ4d8DCaPtztP0I7GqgiKfJOhRT/fOVP4+tLG1gjl2edX\nPGYiAMe4q75gMRNvcRSpgblkhDfTof5VXLpdHQ6UoRTkjW0NYVY3RUgod2xurfjVC7vba4uWuAI1\nc4AWEcYJOSeevTtzTrSymgAmuLcn5gCjsAPXGB97gfrWVe6WkV7mN9sTZ3I/BBJ7H2/X2rzY+yqV\nbykCjZ3Opu3aKymeMl4/M8ozwnJHBwAvHHPftWhoOqQ6fbNcXUiHdtYBMKwIGMiuYtg/lC1ieWTP\nyhdg3Z9+wqqkd/JeSRzQxjaNu1zjIHH5cGtqUY03eDFGjFaSZNetBc6rcyWamKGMAlWbfg9Sc+n9\nTTmuN1yGjkjdT2K+XntnA/GpVlCLKLX5ULHcVznnqD7f5NF9YoLaCdZARKSGUHBDeuBRNQnK7Kq1\nE/gVkbQv8qbe5uZpGBPluWJwMcLnOcHnIpFurkRmNbqcoeGV5N/rjIJP9Kr6ZYSeWRuluSSAqqo3\nfgK0Lvw3q9pb/ao4GYKAx8sbhj/aA6flirTqShaOxmtVYp211JY6ktxtCyFdhYZAZcYwcdu1dPfn\nTn00a7azW9lcW2GeN5NgYMuNu3ucHj3HPeuOGpW11aMfKlYpycJnyznBHrniptN1pvPNuHgt41jY\nuZFySMAEdOpwelXRnKKtILKzbOx8M3Phqx02QaP/AGm0Msgm3MXIO0Dpz05IIHfr2NbNzf3UUK31\ni91MgHmXFrIhd9h6KgOCpA5wffuK5C/Edlot3qOk27Qu9uVPky4TIwCSjHALD0AOcHPNa3hzxBp4\nkt0/tr7RLcofKMwAKqeQhIAyVORk9a61K+qMzI+JmqJqVvpcluZ4I9zR+VNGUZSRu3cj04P4V5nK\nnkoqBmIxlWxjcpr6Muo7XWLR7TUQk0LgcEn6hgT0NcrffDDQbohbL7XDKpXcgm3Bge43D/OK0jKy\nsJxbPGVYyqy98Eg+9EtlLCnmSIVVmBGa6y+8DXGiarFFczCWzkAkWdV2lkDcrjs3Yj3GKyPEVw1x\ncu74jQn5UXnp0A9h61oqlnZE2aRjxAyRGPkKwBIX9BVh0kt3US4Rtm7Gc461p6DpckhEsi4/ug9v\nc+gqnrNwL7VsQYNvbqY0z0Yd2P1PNR7V89lsTsrlcTqmHxuJHAJyM1HvmlmRVzvckEeg70kFm4iH\nlRPIWbCjdgD8KurA1upcDdkZLqevt9K1dTS5UZ2TSNDTYPKi2BTuOec8/l3p19dn7M8K3IIOdq4z\nnqM/qRWNeXc7sixM2VHJHqetQRwTMN0j/LnjJ5FYeyTanJkLRepcglliBbGWHfGAKf5880pkkhZS\nOdgH3SOhqnFM5nSNRuOeV6E1vQyJaoX4LbcEKemP54oqTa95rUXLypQijIubaQSm4lUKXwNvQ/XH\nYmoJLMBdzEDvkmn6hqAm+6jvg5BLe3P4VQWKS6mBO1iegAzRT9pJXloaJSjux8U6xXaKkwGThnHR\nRitya4t4gVimQImSZMj5qxngWMhGJ5/gU4Lfl2qzBpUcgAZVEZyMY5JI7en1qZ8snoNSSJYNTSS6\ngtoWJj5eZ/VQM4/Grn9oFfKRANzNjP8AdHNVJtOkj0976IAxiTAUDCkEAH8en0/GmRabNLKJbe4B\nVSBh0IYew/vVhOlG3kXe5Ay3WoOxiZkZ94Lrx06k1o6bplus88t432meLayq4JVjkcZ/r+VaJ0q4\ni08vH5UEUZaXLtySOpxjk1Lp17p+o2JnSXy/LOHiLgeY44+8egOT64zxziqg21dLQcW+XUqanexT\nSoi5VT8kYaPALHjjPoM4/WqKBjubuhBI/iJGMc1S8RXw1LVbWKCR/LttwjQ8BQTnA/M0W1yY74rM\ncLMCu7pg10027JMyqJ30NeGTzoDJlc7N544IqhJG8Li5hBxuwyk1btF3NNGThSjR5HuAT+VOiIdG\n3ACQkeYvo2K1l36ipzUXpsIJN6Eiby1GMh+mPwqNkkiUvHuDLhgVGVPNSOgispHThkIIPY1GLpJY\n2dVO4hsyqN4HfofpV2TjYbjZ2uSxXG9yjBVdThkz9w+n0qwsrqdpLEHgg8g1UZ41uUkVom3KR8v3\niScmrcUgAwF3DocjpWew9ehYR4yynHJ/hbg/h61zerM9jerd2r5CH95GTyFI/piuic+XbyEYAUHa\nAOCa4sRyX2pyrfnypFBCbHyAR1A/A/zpu1y4RT30KMN/PbXU04JKyHeR7jkV1tuY5oxLGcoUULt+\nlcrLZ7IWx5hAJU7Vztan2091FAIVRwpGcADcfwrCp7yvB6hzRTb3RNq84kuzbQfMAdvyHgseuKpN\nbxw8zyKSOiJ8350FC0gZOWxgZ7Crmm2jMpk4Rc/eYYz/ALtPmskrlKpKKsupS3rtOxSF69OD/jUq\nrJIwHPI7iobgmS+cOSzDqAOn1q8JBb2xcqAo4BBxk1MnZCk1shGjt7VC0od5T1yePyqBmif/AJZY\nPt1qsGmmJfazevTmrcIDREs4HVMZ6gjnj8qiNDW8nqZOK6iW889rIGt5GXHIUtgV2mgeL4rXULcS\nSR+VdAwXET9GU8EH068GuLVJXG4xkAle3GcfzqS5kjW3WBLaHKjLTHlzz09qp3i7F8kbXPS9O36b\nqN3opc3VjcytDLEzYyATgr6E8flXQ6rDFLbtYR3E10wc3FqxxuQEfMrd+SD+NeO2niG7Sdpr2TzC\nz7wwXBQ+oA6dK7eLxuL2Oy8i0dtTiVmkuwAmUY9Ao6njqfU1E1zIhJ30LEErW10k8ecDkqOc/h3N\naaaxZSTbmtpVkJG/yG8sOemdnI96lAtNVe6tX+S/hdpVkCj9/nkg4656jA4+lZd1p8kauXTeF5OC\nG74yD/hXA+aloi1e5rwz2YAmgjEgOBIjAq4znOGB5+v6VbJsGtzNAYkLudyLCASOMnJ6gZzx+lct\nEZVl3QJKzjkjHTHc5/nVqC9uNKeCOWMsjljKg42/Ngbfw21dCUrXmdSptq5tSm/gkWNIo2ZyPJaS\nUfIR2568EdavxRNcCSLUktIJYAXjJGFcngHj73PHTjHNSwPa39oIvOAQ9FkQFfpz09q53xDFc6Xc\nhYp0lguCAYjLvK4HQlucdO/WuyrNvdhVrymrS6FCWERRszuoukIGNpVguOD6HoPTGajiRIYyk8Bl\nUMXCsWAJwRnjBxg5rSi8x18m4ghAZSqvdL0z2DDP4E8fSltmsWuJI9SXydpKsdp+XHqAeoxg44PF\nc9aPM/dZywT9WYURQcLuA7sSCfzxUN2kk8kcUrs8f31z0H/16luPKjvZ0tJfOhRvkk2lcg0qsSmc\nZGSCDwRWElJPuaXlHV7mpFBANFcrOwkHJQKCpAxjPOc5zVCLb5oY8+WQThsED/CogvyzbXI+QOvH\n3huGfyFNvJxC2XRUk2CJyOjqe5Hr71SjfQyUXK6Oi1GOG/sits2+e3DmPK4doupVv9pSeD3BNc95\nkkYbeCpIJwePpV221e6tJ43thlg24gMV6jB5HQ4/n0pt5ZMPs0nnGQFMqz8BsdsZyuM9/enOKaua\nOCilJdSF7szQGN4YHYjhwCrfXg4P4in29woDW7fK0bYAzwRVVhgfOyA56BcYpsq7v3jMVP8AePes\npbeRjOD3LsyfLuBG3upHH/1qhVxGnHyscY9DUcN6VUJMNy5wCDinv5Lodr4+o4H1qF2aLhJ2tIke\n3SVxJHsbdg9fuflSSs8kTwYyF6OeMVSaOSIE5OD/AA5yDT7bVJI1ljMMTblydy5P0BpuErXWti3D\nlV4u5aht2gIRmDyFQwYdzioEn3xGKQHr1A7U37VLK7MilFbgeuPapYo4o4slgD6GlqtZEt3d5Ev2\nrmRlAC4wvGSPoahWDLKrZLcE/NjBPr6fXpSEMEDRxyMuewxmmr5xxlWVfQD+tLbXYWkvQmEagAhQ\nSx6lunvRJCWG0Lkd+2DUfmDHCvuB4JI/z+FWXEaHakkhPuuD78U3zaWCUfMhgaW3QxKxCntjgGpY\n4n+/MwHoq1GUH+saXcmMjA6/4U6FX8ozsQCWIjXqceuKzq07arcOVO1yj8oc5ByuQPpVmO4hVSkZ\nAdhg4Xa1QtAWuCu3DkZ/GnmAjaegK7lI4II6ito2XxMu/u2ixA4DbcKCOgParZcC0w+wtnr90AVB\ncRfaIEkGPNA4PrTbeZgQHUAjoR2pKSlEFC8brdDfKV2AjkjX3JqN7dwoaQ/e5yfmzV6aWaVQj3Ad\nQQ3zqA/Ax97p0/OqhdlQ7sR5ABKnOcVcXFrQnk7lKSwjlHK4PXcDVU2bI/7mQ8/wk5B9q1xiRpGk\n2jgc/dx+FRPas4BjK8js3Oaak+jJtbYz0aRAVf8A75NAmMasImI3dQalkgnU43tj0qDZKefNznsB\n1qrRluS+VvsSR3sAkJkQhyCDu7fSrPyzOWQqyFeVHPPvVXbn7ysPXdShWjPDMozyQcgflRaPVj91\niyTXEaKixbtg2gsccVSlMtxiOSRI0znbnqfWtUZKZbEg75PSo5LaKdCVVkcd81cXy7FppameNkYU\nedEWHPAxU1vPEZmSMHGASI8gj1+vOKhlhkT5FiRm/iUghz9COv0qGyaKCQvFJ5bNwQAcn860he+o\n4a6ou3dshXcjSlvQgE/zqK0ZlOWnkTHQrGc/kOP0qx9qlbiNOB1ZwOT9BUT3rq+HkGR/dyP5U7y6\nnRLEtx5WW31pIv3vleXGMiNGYMcdQMj3q5Z2r3fz3R2tJlmYgBifYHisZbRXl8xFZpVON55/DitW\nPWJf7RYXQ3TYQr33DpxnqecVy+ygtEZttNNljSStmJ7i4yFifyiBgk8jkAHg/N04yB1plvO1zcyf\naEGXdgPmB2nPJJ6Vms9v/aM0zQfJLJt8stsCsBxkEc457U6KC6sVZURirsH6EkD1z0raMdTsoxoz\nTc3qb2saPa6esOobdsE7ECUHaFbk4P8APNZbyNJHFMHMiN0Jbj/63ati68QfadBn0vEa28seGkcb\n2VhghgvGOlYcc8tlIPNjAj2FwSrFZF9cZO3OP61FZR2gc1SEW9DoNGnmjubZlHylwyN2z26V6LbR\nR6tYLcJJJGHQ7QMAq3TI9B+leUWt60Z3207iKQYKAgkEYJ56gf8A1voOkl8Uanb6ZFa28UVzFIuC\nyk+YWJ56dRgYxVYaq4x5ZEtxUbo4SOO906e5iaOSKRZSJSzn5x1/EHjmrFveeQZHa2ikMnL7xkEd\nsemK3vEml6pev/a5sbhUkwZjDEflc9/x9uKyI45fszujguveQBSh9amfM5XOd3lqztNLub250lor\nWB9RQr89oSpKZHUDPFYPh3SJv7UmWO28uSBg6xXYK7T/AHuOuMn86f4T1nTrbUYp72+itUiGGY5C\ntk45x36c13665o95fiEugmwDFMso+ZTxw2cHr09xW9OLaV2aqPZHN2OtXGlS3FjqksgSJt4fG8xH\nOenVlPb68V2Ona1De2i3NjMlxbnI8wdYznoVODmq2qeHbTWUVpVK3KIUWaOTadvoV/iAyePfqK4u\n2afw/LJYhzHOkhVwpGD7gdR2OfpWt5U9JbFuLszuNU0xtcsZvLu3DFS4jdQArf3/AKjH4g4rzC28\nMvNd72LXc21mOMFUCjnjvgV0kfjC5trqG0tgrAAqzyDczjHfPQ8GpIby10/xY1ysJhs3h8xkhGcY\n+9he3QmsJ4hN2gzBbXZyeoNdmJre0hKx4+Zhyz+mT2+g/Gsm30O6fPnKIYAcsT95q9y1XTbbXdLW\na38ssf8AUy7QNv8Ast7dvyNeY6ihsGcXKNlZDEyE8q3cVXPOPuk6PVlBLFMBIwI4wfmPciuVv9Tk\nR7u2t3ZUlm4zzgA9vyrorrWAiQ/Z4lPnIzlm6KoOKxluGhLvbRMDkmSTGN319B7VrSm4t8yuOy3R\njCUgAvKMn1PWrEbSMdqEMT0AOa1l1OVf9Z5LH/aQVZV9KvlInsoxIeCYTsJ+tbSrq1rEu5jQ7xL5\ncbIr5+91P0zVx4CU2earMuC/OFH19TVweHE3F7S4kRsZCzKGX8x/hTf7DvIgNwLJnOY3Xr3zntUT\nqxk9GZwi3K2xTj0uW7kRSzMuOCvyjHt2p99Eml2j2iOr3E2AX242jP8AKtyKznjTEcirnpuOR+VZ\n9/oN5cXMLecskIPzNnDL1PQ1lGtzS5W9CpRaRm2SRxF55PlzwDgZp0ly1yPLt9wB4MhXH8+laKaG\nyne0SKB3lYcflUckUMY2ghsZyQePoPak2uhMVcsxagg061slUEQKQWHQk9802z1OS2kW5jwI93lh\n9gJHuKybm4DLtUEAHAAq9btbQWMC3ToFXDYdsBznJ5P4D/8AXWlOXPqzSMnc07u8nmsbi6kZxtRx\nBGzHe7HHJH16cVx8lo9nYIiHcrt5kiHpu6Y9/wD69dNeajA0P2ku0rsS6gDgsemDz29B6VmKjSyi\nOUYyh49zj/CuqFtzdpRjdlSa3SW8hmTABUMD+HIqFiTH5cg+fAVgR+v9KtkmG5jDjjJUj3qa7tkl\ntwyn5lOQ/p65/Wpq076omdJ8qsV9MBglZ4kymzcy9uvT61eu7uIwl4WyVxICU/hwQAfz/nWRYTTx\nTTwhHcMOdpyakfcJ3gMSRGQ4+XpgdKxpKSjqYdRsN3c3LgTXBU7SUCnanI4/GrtqXe3KFwBvKK8Y\n5J78Ul1EAI4fK3LIvJ6cjpVEST6VmOSNdw5CE8rmt78vxD3NB7ZYpUkIO+M/K4bnAyOf1q5Ff2U8\nqhJQznoo5z9azGEmowblV/L2cRv/ABHtzVG3L6Zc7p4j5f8Adj5YEU+pcd7HWXDI0DxMkexlP+sl\nx/8ArrmL+2kVlkgkaRhg4Axxzzu+tayamssYchgGHyo64J9zVSZpLgtGgxGOW4+8fSrSUnqddGN1\nZuyMq51F2ZoAir8+Se7ccZP41VdYguQuZM4BznHvitiDTreW8ElyvnIpwADjn8OorMvnTz4WQ7hI\nCdx4I52/lkfrWFWCtp/w5hVpwc+WA2BHnaRljbyyxO77ox6ZqwJJLMhREiluAJF6/Q1Zju/s9sye\nWDMmQydyRWaNSZ8goPJZsNG38PuDUcze6M0uVWuRLEDKWACjdkoDn/6+KLthvUYywG5tq9vQ+tT3\nVmVRJUJDY4+TqOOaSUPLbJKrbURcFVPAODx+maI6guowfZzbDykcuerHjmpbCRbO5JkBZSc7j2+l\nURGFIAzjOTtPWpUhWdlEmXdgcBicAe1abXZvGm5RbtpY2vPs5ZtxdAFPC5xk+/0rMuHhnuHEIUIM\nHO/cM9zmoI4EZAXIZDxljzUojMsarEBHGPvY5yc8g1EpRiZSlHlUIotW0CS3LFlj8uKPzDuTOPw9\naktrhn1VpSz4ceXubgkdsjt24qusv2cyxv1kABI9KdJGIZZYy3zsVcN2GORUxtuZ9DfVrq1lF0s8\ngkSQlPm+4oAwB37fSrV3r1yuiWzw6gRcRqcwvGAWYttwD0AxWSNSWeG3jOd7uA4I4XHXJqhaL9re\n4VslYi2T26f4gUvYxk2pbDjJxR6X4YEOqaJDqJAM24rMoY7SN2Bx24/nXQXGjwNDuQfujjch4MZP\nQg+h6V5v4P1aXTrnCKZYmYRyQL1dWz09xmvQbTWrEao+l3001tPFuFvIFKtcRuOFZR1IwePVcdxl\nToK3LYtVHe9yxpumPDuiAJwSgOGRuueVIIIGAAf/AK1ctrGkXVhqDyXUKxNMS6GP/Vn6c11tw1xc\nWM5gP2i5jzNDJAcFYhgEqepHTj61Q1W5ub+yhS9jRD5QVJUzn3O3IByP5+9YVI20QqkpVNzmop3h\nwChdM8xuc/rVmeRdUv8Ay7K5IZQqq0qdABzux1+v+FbVr4Unkt1ulvoZQT+7RE5YjnB9DVObTLqO\nfztnmBAsvmoArKM9egGRWVKHJsVR/dvmW5QudHvNNt4pbqFFjf5Vk3KyEexB/wA80jCA2PyFlnDZ\nCsvVfZh19wRS6ldTanEFndht/ikc8kHkkD6n8vaqbWN1aWZuXjL2+cecnzqPYkdD9acpdRzk5O8t\ny9ZyRIoS4hidGU7XI5GeOo9/X1qKeK2FizPMDcBmCoq5XbgcA5zjqBnPSltmkmt5bfdGYm/ejcQN\nh9QT0z0NQ3tldWs6STRYiYhQ3ReMDI49qhPSxK0QkcErm4dJgoMWGVzjJ7gd845pDPJcXcUablH7\ntflGdzfxEjv0FMucRXBQPuC8HbyOO9KpZtrGRYy44C9QKlysTql6nWR6LpJtrk3KM86kqLrDPIDj\nIOPY8YHY1yd/Z3OmXr291ARKmOFIPUZHIq/Fe/IkTTEqrHmXJ4I2n9CafqUWnNpU01vNI93G4H3g\nE25Az649O9XK1Q0nqYZi8xgrrIhPYNz+VSbUR1WJNuP4h941HZM8zFRlVP8ArHz1HpWgzJAmUX5u\nxrmndOxm103ZSNqgDF5CByTk8fl2qszIAHAaRMkYBwfwqyyvIHeRj5YySPXjpUTRnLtjpltvt3ql\nKV7XFzPYYGjcjbNgkcbhinLPPESgZkPQleuPamPbbm2gEhj8v406KTfCPMHzJ8p5ppuV7bhdvRk0\nE/mnaZG3Z6HK/pV5HTy2EmQAD8+/p7+/0rNeLcgBBMg68cY7c0+3upLWeGQqZYweVb9Bz706bu9R\nWXQ0Y0hVxJGN4VsqWGMgeorNutQxeMjKATnajHOO4+bvWj5okC7EKhlyAnCd+hPv2qtd2sU4Mpk5\nC4AHVvrWsbJ3Z00uRatDJrg3EsSkBlA+ZQNvPcGn21y9zdkFcRqpPHc/1qnbTrp4m8yEOZcKhwTt\nPrVm2uEF0AflMnyJk9/85/SnKKtoZK/NqSWx3Sec3HmZCfUHqKmlkVk6YXBbHpVeF0/sm6tnIV4J\nfMhycZJbDL9f8Kqw3AuLiW3DhpFj3KAfmYEc4HcgjpROgpNKJp7K8vd3RbGXj2Dc2DuAGCcd+tL5\nfyh9odT3wVNZEV95Uwt59rKeY36Y9varD6nJpuqLA0iPA4DNu5BU/X0pTo3VkEoyU3I0MHOFc47b\nxnmoNhXJ2APznHc1biT7WjT24LouA23nB9/yNVpJeVVWUZ5PGcgelY2a2M+e+hFGxbHmDKsp+uac\nq4gVgrb054PWnWbiaZsowUHDFhgmpSm2FeD6fiKJST23HKKb0IyCFUggqaie3hlByTHIOuP51KhO\ndhGT2x1IPpTSCFRuSo7kdKSm1uJruU57Boc8kqOj53BhUIWRclGY98EjP4VqRSNG4CsQ+cjHINO8\nuG4IAQxzdMAfKxyenpxjj1zV3T2M3EzY7pMncACDgjt/9anyKp2tk+uVOT1qeax/jGJAM5Azke/0\nqlskhbC8xt2NEW0SnYe2JAA5DjqGrNu7d4ZPOjOA33gBV8SAjcnfnaeMGpSFlUqeQeBnqK0vbY02\nd0UoJ/Ns18v5Bg7u569KRI1ALEhR71VMc8UjbZApB6hef8asRyzOAs0pfA9a25uZXiU7J3OjiMFp\npaF5Az7epfAUdwqjjNU47D7UhndRvcbUwenuOO2KzbmWZJVR8MqSfKq4cZHqM4INXluryKe3Ep++\np4ZgVGBgfTAHFcsoyvoVe+pWubMzPBFK/msCu1EIwq88s3c1v2KwXiyBEeRoCFZhyfqeeR+Nc95Z\nuJVkkdcImAGJy+Ogq9Zzy2Vs1xZSxGXzQWEhA3DpkDv1p36FXLN9BCjlNyxTAZBYY39+g6Gs0XY3\nxmBnCAFQoP3QeMehznGKnkt5tba4lZjFMX84IgIU4xgD3wP6VD9mSNzNJGsbK+0LEcjHHfJ4pKK3\nkJ1H0LtvIfMhKsGZ3GwBMBucYPv7V2HhLTftWum7QOttbJtWPkbnJ7/SsXTo/wCypY5BtZZkBSVR\nkKCcFsdqtahbuyWraTqN39oLMVt2k2/a88t06NkccYHsK6aFOO4tbWR6Pq9kLrTJIQ7xqyhQY/lI\nOeDn6147eFrGC8s7mCdJgxhJV8HOTxz1rotI8ZTJMdI1xpBPG4VEu41IbkFDuU8kcZwcVa8SW8d1\npja5o14Eu5NsslnMMsxJ27l7gnn2IGa0nTCMTzi3t7KKOSGMGSQYJA4Vcdz71t2ULX2ly2lpFJcs\n6ECPaN27IyR/hWDYXiySPHcymEhicoMbjzz6HjpXV6TcuGjFhZ3bLBh2kt4y4A6k9M5GPrWME4zu\nzWmrMm8OeFfFkUkRmlGnpGeHlny6L7KOPwJFW/GVnfabq0V1diJpJv3aTwnZvA6ZHUED+XtXqNpd\nabqujRzDyJbW4XKsQGVx/U9vUV5V4xsFstTMqz3E9lcANHucyJkZBAb1/kDXRXnzQ1FWqOerMfSW\nBu0nblQxLc54+v8AntXVQrKrzSPLFDOgAtvOfaZMcMB9c/TpXGNKLLT52hBIkIQEdE78e9TeHzPc\n39sZ7hyuAcsN3HbPfn+dclKnCPvzMlH3fQ7q1vdQ0NIjLKZbK5hJfYfMUS+mcDDDr78VW+JHh64n\n0yG8t7jM7GP7WSu1SAMCbPp0B+oqbTPGkGiWcrTIzwxSeWzBDtBZsjcuO3qK6nzLTXEiu4hvhZGV\n4N2Y5AeD9Mcjj8RwK7aabV09DWNFy1toeB3jIm2IN8qKFCg7TVNUlk2kSMCT8qxnAFdH4k8O3mkX\nTyTwxx20kjRxElXO5f4WI6MOPr1rncKoCl38vkbWGce2RSs1oZSSvoAkKKrvtaI9JkG386tfvFOP\nNcjsOoFTBIprNkO3DL+AFU4v9TsflRwcmk22jnldbGhDNtXIlII6rjcKvwXrgg8rnkoOePpWRA+G\n8qTDKeFJ6VOu7LBCWIPJ6Fa5pavUd+pux352qZFG4nGU5BH07U6fVkVQRFGCvTrk1jiQ/fRgB6kb\nWzVWS+jjO2EhsdXbopqYRu7lLmmtNi3dXtzcczOFULwudorKlm3ZUMT2LelOxNcgsxYBgBz1b8KZ\nPthUIuc5yTmtnK2iJej5URoDNMkOQSx/Q03WXDqiQrvEUpXd2HGP580+zkIDTZ+cksjH+HtkfrUc\nV0bS8eG5eNlx8rBcHuMV20qaURE+izD7PGzOVRVyVPI64+X34Aqa6kKXSynGJQR+I5qhJNFBfKGy\niuyKhU4CjrWtbhJJFLgFyhHPvkVTbithy2uV5itzGFbB9c9j/jTUQxOu+R5Mg7Q3QY7UpZY7+eIg\n4wF/n/UGnygTWME6EFsLz79K01aNYzkoqN9CnFugs7gjaZGdgxPQjn9MUx7aWSN5FKrGvG0H0PGB\nUzt5lkZFHLrxz3Haq9rD51mzyg/NJkqjds81nYmUbOwtvdsY2VnMs6gkMBnIqOeGZljS7cgABhID\nn6j9cVcvLyzSXzIELlDgrH/F0z9cYBqO6sxdt14dOo7UK70FvoX44VjhVInO3bx71Ak0SSEybFx3\nb/D8qhdl094Y8GUMCFCn5Q2T0/CoJ7Z7mRXcMj4JKgZ28gAfzqVO+iHtKw43+/VI5PKyWXajMT8o\nz1xVy9kFvYStEDlUwDjlmPeql4+8MEYIqDG1RznqBntjg0lpfyXzXMMqDYg8yPA7YHBrRz0syk7E\ndhcEQ3EeRuQq3P0P+fxrJSJpJcO2VBxz6VpJZzx33mWy785DKeAR1wT7ZFMuLNliknU4IViAVzyD\njP5c1m02tDdXXvJjtUtvNja5iwxX5m29SPUVlR7XPzHJYdfX6/hVxFnijBjbdFyc7s43fLiqx2E4\nYiOT0bofxH9aznqjnlqzQtZwbb7NKzDLYBXqynqB71T1K1EMzxh2QE4w3PP+TSCeSGRVYbGU5B45\nq5fsl1CDD87kKGLH5g30p0k2tQXmZYdY1zIx2lQF4z9asAKAG3rweCDSJbSLIQqbhs3MxPAHWqzQ\nLIwVWJP3cP8AnkVpfojo9q4aLYkMgOACCqnn07mtdIxFYNOzLwF2qvQBv61YSwt4ifJiAcFwrMex\n4wfpWZdSSJaGBw6nAI3LjI6VlWhLQwbVQhjQywi4b7jEgfhWhaG2naM3Sbwq7cBtuQPftUGnxm6s\nDbjAaOTcfoas3lnLDbJfQMoTeQVUfdA4H171SXQpLzJr6KCwvgluzvE4DI0mN2ccjjg9etQWETfZ\nAEzmVmZj6jIqO7c3WmxyIc7H4B4xx0q1pYW4hhXgqwwfz5rayitC5QjT0XUSGWSynD7XA7tjYw9M\n/j/OuzN40ssevxaklxPZKkaCSMl/LVC2/HfHIPbIrl54ipAG1gMgpuzn+9+NS6NfCwvY3ZmEZOyR\nQcbkPUfj0qH36GT1PXPDV2jeHY7qzWDzZ2LFpG2qZDn5fYZHHPBrZ1JLPWfD9u8sHkSLIDJ0DIOm\nfccj6YrzbwjPFFqdxoE0gMP2kSxhSCMYyrA/THHvXVWt3BHPdJp8qTJPIXjAB2xcncpyOOhH5fWs\nZoI7FfSryNFmjuWuI7qycp5yqChzwNw7Htn3qSx1CC5YxSkeerF4wzHarZ9c9OuBUOvRxafqtvdz\nSLPC0mx5N2XkXAZencDgkjtWfewyCSC5iCRiVyY1ikDcZ46VzSvHYq9hdQ00LfGKOQhixB89gd5O\nPunOcniopdC1OC3keaCYIuQGQbgRj27dPzrbs7hrq6jjukha4hOIpGUnD9RnHJ7fpUQvdYutVjgS\nb5GmYv5aD5UI4znhk9x9KSg5alRptq5i2ejHyYLgyJNBISiLbyLuz6bTg9e2PxrWvnkvNPtraJNo\nhVoSm3gnPBAIBVuvGaz7uxcvPMfs84QBHmQ7cgDBwueGHfIz+VVJdQZEtojG7YDFkXjcO2eeeD6d\nqjmafKjOWrsiwumxDUVa+MezAHmW+CpAyOccbvWjV49JmeJLAtAVXaUmhYs57MWBIyeeeOn41Zsb\n6EWJgdfLVo8FjkiIg45HUrz17Z9qty39xpUjLaRYKAB45SJSpx1Vhg4OQcEU2tLMtvucv9mBKwue\nhwHb7oH19PemtYy3cUghiaWKElnIOdoHGc9xXc6ZrGmavIsN1Yxw3IbrGpKOx44xyMgd6x9Y0u30\n+5kEEmcZyknDDPQdMdO5waVktiZN203MO1spVhLJby7FTeSemP7w9RVeV97oOSzsAB7VbuN4iHmr\nLtGQoPOPUD/61V9mLhZCCpX7qtwRUODXvM09jywu+ogzcXAhA+ROuPWiSMM8zgjacbf93pSRqRMn\nA2q5Ygjr9avWcYuY3VSzODwHGGAx1+lZRVmYJdyg0LCzL7uYiCDVe4jVLhWGdkyYPsRW5HA4jZIy\nm5s5BcDj+RB9aoXdqpiJUcYBAxVwpvnsNRu+VmcnzFYndVIHy7+eaeFbGWC4YYyhxVmKGK6TcwRm\nC4yeWHrUTWcsRJgkWRQOEPTHJ4FNxVypr3iFRgFcAYO8sF6j096uRr5aDJULwAd2AOOtV0KSrG2V\nO3p82akMe4biBkcDjrUSq20Zk5yWiFZFlEe9FVT0TuT71XkCCZmYZPmcZ/MH64piTlNRgzym/YT2\nUHiruqW4sZo/OXIVlPBBBU9x64Pf3ranHTmNk+dK4ssEQl2uCFG7dgnBauf1SzElys9sdhX36Dv0\n/StieZmY+/OR2Jo8pYYy7kZJUrno3rTpTlD3jenKVB8z3Zli3uJ4opDIrzp8ys3OSDnB9ener2o3\nTX2lCG4iX7bbANH1yYyMYHbAIzmo9/ks7wn5A+Qp9D2qa91AzaUsKOrEt8qnqo56Ht9K1c9W2ROp\ndXZi2lzeQXUWwNDICF+ViMc92/8Ar1qxu/nTQTzjzRgL5ifKo6jn3qkyCbKSb0XP3ugFDpcCPMc7\nyRRpggDliOmKOaFR2OaEXJm1NcywDdJGMZ+RUJB56Hn/ADxUq713RScE8svcH1rLbWIL+BBM0/mB\nQuAAQevOTzn86a9xeR3KSPKoh2bmMjknOOgOO/HrRPCRe25vUtRSVzScZQfgQfSkVmGARuK8gnqR\n3pcLNHvtpNySIJEbHB9jgnHOPzqqwmQ7VHJHAOfx46+vSuZ0ZrVArMtdQNrDaOQhXoKYdy7eCpxw\nyHOKhF2q/LPEyjnGeoB96toyso2sjbhnLfnWVmtiLXGJcMo5xtPUj1pzpDLEwf5RjHmAnr64pCgO\nACDkfMtQqxhPTcjD5lPY1UJq+pLiVpbeSM7JMYb/AJaAZIph3qcHaxGDla0Q3yttdmBGCF7VXDhg\nquNsixlS2OvPHHrW701EynPCHmjdBlWUsfpWdcM8cAWMZkbsK2XtpRhhcbMDG1RmqkkaA5OS/bK8\nVMZpaAnfRlm6Lw3srDgxDCqMgMfrV22tI9Tt7ied4U2qPLzwC3XrzVm9t1uSt1Duw5wdqgnNZxFu\nigGJ1ut4wI8knjGW9/5Urpo1TtGw2Wwj+12ahAI3/d7FJYv+A9fUVNLbRNcFoCxiCNxyrQ46jB5J\nBOanEitbyQzXJM0LeYFRwhJAzwen4cGs58XUpaCORAMqzFySSRnv/Sp5u6BtWuXoFg/suYfJ8qYV\nh0f1z3P1+lV1hRbKWOVX8uRSfMC5IIGRgZHBPHNT2aQ+SkIclUzkLg5PXk/56U+/vLa3khgeJmIT\nJBQYwT0yKrlbV2FrLmZWgvgnkW255LeP5YCy7G2kg8/r+dbt9JdxFPs0ojd1IISU/N/h7isrYpkM\nqW8rxHMirgEZ5A+g6/iM1p6NPJNLC1yvmsrAs8jjJB7jNFKpeQRd2Eenwa1th1aWc3Drt/0dgyKc\ndcHqfyq14P8AKsrK9tdWZr5bG6PlfvuIYgCrSKuc7ehPUdfSuj0Oy0+1luZ44JrmWN2GCynYuBgc\nEYJ684zWF41nt7nUY3iYQSJCd8u1kaZGBXY2OSBzz9RXdZxj7xZm69Bpkt7FfW9tLd2SSM0s/lMs\nagMMbOMeWexA5qxD4jj0u5ntNKC+T5oKF2IA6EqR3XOeTVG/v59Tjt445oRb25eMKqmHKr0yvTb6\nD8xWQtsI54ZxFtkOZDCCTksQRn8zXHKuk/dIbI9Qhv7O4dRczQJvaWNYHwiEtu4H93J464ret5L/\nAFLwzeWs+oNLeealxBblf9YFBDKvUk4z3HSo3MF3aCOdVMiSnIY8nPbH1qzMi6bbbwFuWjIK28JP\nmA5yQe5X6eldEaiqLlYjCnljk0i0ijO8yNk4/i+tT2Mhs9skDFkVhvfaMEDsPzNZt5cW7yTi1QrB\nvPlZHOP/AK3THtW9o7D7K6OFKqMqT0AC59O5Nc7i7ha50j6NDf6MHgtJb2zuoXWSJJMGKTOc7iOv\n+HvV/wAFWjeFLd31Ke++xzHECbSURh1yBnk9sdcGufsoNXiF7cWd40S2xjM0Jb5VUjIkG3qvv2Ga\n3I2kMktjq2ppNCdjiOOQOlxGc4MZzwQe+M9K6vav4UW6k+TkWxa1O00WbU7z+0dl7p9wy3Mixsd6\nuq4ywGCOO/fmvMPHFjZ6VqqTaJMp0y5TfCY33FTxuVs8jHbPUEV6dp50y4kncwGWGKIATRgJLEM9\nHUcnGBzz3x6VzPiv4eatqkcF5YW9s0sSeX9mt5Nu/wBXTPfjJHvx3q4x7kSairHLag0Fvpoh22wu\ngEeNrd/MypByGI6dc4PpWZDuVQckMOoVsVYk0qfSyba7sjbzofnV0+bPqfwqNFLvh2IGOCKyqO7s\njnqNyeg8gZQyAovcsO1SMQdnnfLsJ2kHnFRt8pXdknphlqrLICTLICoOPlXvUqPMVFCzXck4yo2q\nD8o7kniok2xje7YUD7x6D6VCXkcZ2KCPU+/ek+yiZgC5IzjCnI+n61pZJWRo5KKsWk1DzGMcI2jO\nN38yaBBJe3KW9uCx5OfRR1Y0nlpGoij2r/M/Wug077Pp9s6W7iSVx++kAxnp8o9l/nV06ak7ozSb\nXMYji3S9e0Z9m1APnOMgDB/nWZv+0Xha5yXjBCjaBnHA+nrV3xHCrTpc45kzuB9RVDTYBNc7WHyI\nufw6f4V0NFNaXRLqACwRJIAJsbsA/d7Yq7pVwzrFk5ZQoHuDn/8AVWXqJPnuW+/zU2hHfK0ZPOcj\n2BNOMnfUlO90zQmI/tEytkq5CnAyc8//AFqdbCRPMgYDyjzk/wALdSP1pk3zSb0ZUZcspYbgTU80\nrlFjngRgSSHTkE/5zV7I0TcY8pWt08yG4iJDxGVijqeM/wD66heGaEqYzuiz88Z64/8A1fzrQj+V\nQhUAL04xSPE/LdVXH5UrJ6k3vuZbIfs7XSERM2FCnjnIqaxnihi8qeTJPzKW7+tPkt0KrvyxA+q5\nHT6darNbNG0Rk2zQDJznjPIGTUPQLEx1BZ2DLEWRSd27njpwKuLJHOEhglXfgDap5B7/AM6zEljd\nPJhwwYEDHBQdT9aij2rJ5y8NHzgLhue9O47lvUTsP2dE2RqcsPWkjK22nSOD+9mKpkDoB1+n/wBa\nrl3brdwgGQrIYxh9+efTPfnFUIYWa38lsrLGzZBXn6VHKlK7EkPt9XdHEkkWLUN5W1Rk/wD6+lOm\nvoBeRyRyq6RhldVPIB6H68VRhw9pHakbSH8zn8OKRkUII05kdwT6Ln/P6UtR3fQ1rtbVdNkd5Qsb\nANE2epPb+dc2gcyMCQIw23d2Nan9niW4kj2q6wy5UNwQhGR/WoJYdgdhgDODz0HFU1oPcqKqvEox\ngHnGMgf4U0pKoypDqB6c075mXByUHIA/lSFiDkDI5wCME1DHYfBdNapKFHDrsIPbnr+tT6XbyNaT\nXCjLRuPmaqyuhJSQBVJ4f0/ya2TaFEYROyCTlk4KtVpaaCsTW1wkpCk5l27tq88f/rqDV4C1i8vJ\nkVlxt5OM9KWC2liT9yke4Lh2985FS3DMkRS4CYcDHlNuGM/40JPqw06GPYzra3+WOUb5SR0INdDc\nsBGkCruEhIwBxgj1/X8K5y7gMczI+NpYtGemK09KvxNF9lmOHClQCPvD2oi7e6yuW75kV7KNIroW\n0+CoyAGH3X7GpLJjbX0lseFY70H88VJqMHmRrcIhSSM7cO3zMOoqpJJvWOZTiRMEH3HWreqD1Nh3\nERJZERSQQF4A4xUDKS0QKlGdejDtuGCf1qSzv45lBX5GPVCflJ9PanyS7dSViSAqZBPTJPandONm\nJPoy3p94g1L+1rlJmjhiRJRCQGUrgA+3Tr6161YavY6vb20sMUu6XLKhX5oySQxJ9+D/APqrxNJI\n4LryXV2tpCI5I1PLJuBx+Yr1u2mlhtLG3tN8MHz20ElwFVztVmUHOOfXrzyOtYSQLQyfECifWG8k\nN5YUEKp+6wGCM/hWd+8SSNldNscgzEMHJ7n19MmuheOO5gMl3cKIQzIUt5BI0cg4OQOcZ7dqyXic\nqWIVQq42sxy/qA1ck9yizIWkuIQk1zNcSnbsz905O05Hf29Mc102k6xnz7K5kt9kLMRKw5b0A6cd\na44I1ntYI8LsNu9GY71OMcf1/nU++6t5PsTwqk24cTKASQePwxSU3DceuxsHxDA2prDe2JjijUq3\nmBWy3bOOQcd6xJrGfUJp7qztHeBSCUTB2qQegHbiuit4YNe0ZormK3ieIbIdo+6SOBnrnP8ALmuQ\nRLrTbg4YxTxtt3p0JHalK6s3sTZXFhheS6VcMFxlx7dfyroNdlttRs7fUl2RXJcxylRgAgfL0Pft\nxjrmsWe/ubliruChJfaigAHoTj368UqiHbtkQBDwcKf8fx/CsnNJoG03oLISrverLEDG+5pFAXk8\njC9sdDirFi0upGVpImkLZDSq4ZwO2AcZ9OetUrdYLu5SSeCVoyc4MmGI9QTx179+lX71Z7MpLpz7\nHjQuVSMndycEqc5yM5xxxWtNWWoJFS8tJreULITHKMbW5Xd9D+HSp7hUu5DdFfmEKEFS3zduc5x3\nroY7hdTsFFys8cmwCRUj3IxwcnaRkCsI21xpd00lnN9ojC7drLhgMcqfbjr9KucW1YpttGTjdFtJ\nI4y5DYwfSnQM1vcQyxHb3wMHI9D71pTfZbuNGhJSVAwMErYYMMkHJ61Sng8pySvQsBnBJ9ORwfrX\nNKGliXHmRoWc0dyIyknlXILKVUYGO5+mB61NIkUqSWz+WyuhKPHHk7iCBnoAe/FYMigH5Xbchztx\nuH1z25q7FqEi2Yt2jXy/uRsGAOSep45wM+nXrVxn0YGNDFPayI6u0bg84rSkunI3SJHI2d3Ixlvc\nj1rc/sNbizRHuNrElvNVS6t6YPbGOnrmse5026sZNk22RG4SVDlW/wA8UnCa95bEp3KskenXT+Zb\n2qWSsBgBi315phjkiIR2UkA7WQ5Vh6g1IY1Y8ttP51NbxJHHL56CSIqdo6fPjII/zzWUkqj1JaUt\nzIkTCBSh3HpkVMN0VtEyKmWGTuXJxTGCoPMJLlxu3e39DxT4ZAturXG1SBhf9oU3e6US9iokckci\nodwPZs9V/wAR0/KmCMzBfmbjIIFWWJYBlU4BBGRjPqPxFMRSoJQFlJzgfeX8O9JyZLve7J40WCJR\nsI4Jz3znjFIYoCQ8iI6OoYOowTSxXCEbKPIBCiI5UNu2Y6Gomm9egOJmXGwCVYJcxFvlLfyqY3EQ\nkikniRVAAwPpWhKqtaspCR+X0P8AjVA24bdsAZVwwC962hJS8hpcoyNYpWbzBwxbBXg0XGZ/9YnC\nYA2qM47g0P5bIdhZZckkj7u36etV5PO3ypFOnnhcru65z1rZTs7stRTlzM0NKv7ezItpEDWjkELn\noejMM9MjHfGRV28aG4JFvIJQHBRinJ9sDODz07VnwWttNarPeRZm35wjbVY91OOfc+ual8/y5W2K\nBkHKIuMenHpW1SUbLl3CbimuUQRguIy8gkLZ3uvA5+6R7VVZHjIkg3xBzxxwT9KsmTMYRo/NDNnO\nMkjByC3Xjr+lREBIm2P8ka8ru5y3oDWL1Ho9gi1IFSJVyB3Ufd+o7CrkckdwmEcOO3qKzJkjkCna\nHVQAu/5M56YPrmqZkdCZI2AcHLAHqe/pUzoxmtBtK10bu1oZMrwe4x1pXmUn92m5hwT71UtdTFzF\n5M2Gx909TirHmwDCuwUH+Ltms9YxszGUuwoLkYbYD6CmSwec8Y5+6c47mpQhAyrgr9cimyeYm11B\nDDsO9QlqJeZft1ETBQOJF6dgM9AKgjUx3cwRiPLZlGecgf8A6qKKdvfRo+hVvoooZN5iVjIPMbtl\nsdaim09TdfZ/Nl2jgktkngH+uKKKh/Gy6cU5HQ2EMGnaSbmOIPI3yDechV54/SsLWkX7WZQD843b\nSc4z2oordO61JqO8iCyGLeeYs37krtUHAOT3rYaaaSW3VZNnmqAeAcDIBA+uAfwoorFbMcErs3ZN\naFsfINqHuFGVufMIYkDPzAcMO2OlYeuRHUbTRtSuZpWuJg8cuGwGAZduB2wHI98CiivQn/DHPcqe\ndNb2ckYlZt6mQ5xgMOAQO3v61Tidpt6uxKowKgHGCO/6UUV50VoSti6gBnhwAuyTI28Zyf8A61dP\naaadUu5LcyiFzKAJETpwe2faiitolRM/UPDkdkkqST+aCpUbU2bQOeOTznnNYnh6+HnMTApMSlPm\nJOeeD+GaKK0SsxLcq6hqr3kgURmEtB5Muxzh8OMHB6fePHSn+aGkhvpUWUQSBxDIMqwUA7T7cmii\nuphHc7pr+6hudMEDRw2d8BLJaxphcHd8u7O4gEZHPFdh4Q1B7lrjTp0V0QtLE5+8gzwPfGOtFFVF\n+6kRVSVyx4u8PWGuaNdtcxBbm1geSG4ThlIGce49q8Ek+TZt4yoY0UVjPoYxKbnJOR6/yqsy5nUM\nSxPf0oooXwlNtQbROEXc2RnbwKgkuHB2R4QE/wANFFJk20CzjWW+ihOQHJLH1xW7tEca46HqPWii\nu3DfCzXoZWtHdBGMdJD/ACx/SqtgogiuyOdyoOe3Wiiq+3YSRUuR5l07Nyx6k1PpqBbzcvDKrH64\nooqPtEdS83yTMOoOev0Bqwi70DglSeTjvRRWxrHsNXHzYXarJv2jpmmeayyMq4wGAG7ntmiiknuS\n9GNSQzKTjaQecd6pTw7o1ZXZTzx1HByOKKKUi+pDGdkSSp8rDC8enf8APNL5CT6hHA2QgIBGev8A\nnFFFZyYSW5rz4kJjwAChAx2wOKqSySQwKN5O44PbPH/1qKKtkpEUVuLh4i5wZA2SoxjpVnTYvKXz\nM7jLtDZHoTRRU9UV1I5pBBcNIq5YRYJz15oVVks3lKjc6k5HvRRQDRmOA1qsuAGOQSB1xUTovmKi\nDb8ijJ57UUVAkQtGP3ikkhcYrU0u5eSN4X+YIOCetFFXBajW5cYeU6SqTmQEYz0xzTJ1Q2zMI1DB\nguR3GRRRQT0YlzFG6CJ13Lv8s568Dr9ax7iHyJAFcnGCD3oopS3LgXLS7mknSOVt4Qgg9PaoAuAZ\nUwpbqMZFFFXsX1BYFZxztY/xLwalWaWOZ0dzIVO3c3XFFFJbkvZFkszajEpPYn9a9A1m6m0e50dI\n5GuEnkhu2W4O/EgQcj0HPT2FFFTUJ6kekXDyX1/Zxnymlla43r0GUDFcemT610+yKOdI4YlSRI/P\nWT738J+Ug9RxRRXKylsykL64EckqMqll2nC99u/d9eMfSqF2isZXbJJRHU55DMAc5745/OiipmlY\nY/wdfy3niq/spAojit0mQqMEEnaR7jnOPWutvdJg1G1kvGJjuEykhABWUAdSD396KK1snAl7o43U\noDpkzIjlwPUYzVa3i+3TxxyOw39TntRRXBbqC2ubemwQNeppl1EJhJJ5cUo+UxH1A5B+hqjqdvLp\n+sS6YJ2dEcgOMqRwemDxRRW6CO50cetXNvbQMnMafuvLY54VTjB7VbDx6gD50K5YYzn/AD60UV1w\n+EuOlK5z/iDTYLNfMhLDBKAZ7DpWDbSNcq43NHgfwt+FFFctWK5mTDZjZCUuHjYBsYPAxnIyarPl\nmLkk4+UD0FFFYW94JbF6w1i604N5TBo1PMbcj8PT8K7BZU1LTUleIJ5zKcKfukdxRRXVR+Fmdtyr\nd6Hb3kayqxhl28lAMHj0rjrtTbXLx5DFf4sYzRRXPiEtGUkdD4R0211sXOm3UQ8ucM0Tj70LrxkH\nuD3XpXM+UIbmSM/P5ZxkjrjiiipfwxEyP7Q08gyAAR0605gqMpAO5yc88Z45xRRUPcRHIquivjDe\nopATvAycnnNFFQhLccB5zhX5A5p0yADeOD0ooprcrZlN41DqCNwbBINRyP5QIHO3hfaiitVsL7RY\njd1jfJDKwBwR3zTuGTcMghex680UVfQa2IlYPceWq7AA3KnqR3qjdTvFcNKcOxdsFxkg/X09qKKr\nsVJCW1y06sGAARVyB3Jyc+1OuGJuMPg5HBAxjj/61FFUOXwol0uBHneA5/ekFWz9z8O/b8qVmbnJ\nyPcUUVTS5EYrciguJIgzRMVCnBUnIP59K0IbgyIG2gZ5wKKK52V0P//Z\n",
+ "text/plain": [
+ "<IPython.core.display.Image object>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "render_deepdream(T(layer)[:,:,:,139], img0)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "colab_type": "text",
+ "id": "mYsY6_Ngpfwl"
+ },
+ "source": [
+ "Don't hesitate to use higher resolution inputs (also increase the number of octaves)! Here is an [example](http://storage.googleapis.com/deepdream/pilatus_flowers.jpg) of running the flower dream over the bigger image."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "colab_type": "text",
+ "id": "mENNVQd3eD-h"
+ },
+ "source": [
+ "We hope that the visualization tricks described here may be helpful for analyzing representations learned by neural networks or find their use in various artistic applications."
+ ]
+ }
+ ],
+ "metadata": {
+ "colab": {
+ "default_view": {},
+ "name": "deepdream2.ipynb",
+ "provenance": [],
+ "version": "0.3.2",
+ "views": {}
+ },
+ "kernelspec": {
+ "display_name": "Python 2",
+ "language": "python",
+ "name": "python2"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.11"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/tensorflow/examples/tutorials/deepdream/pilatus800.jpg b/tensorflow/examples/tutorials/deepdream/pilatus800.jpg
new file mode 100644
index 0000000000..90a0f31864
--- /dev/null
+++ b/tensorflow/examples/tutorials/deepdream/pilatus800.jpg
Binary files differ
diff --git a/tensorflow/g3doc/api_docs/python/framework.md b/tensorflow/g3doc/api_docs/python/framework.md
index 18a2f80d9d..46bd36cfab 100644
--- a/tensorflow/g3doc/api_docs/python/framework.md
+++ b/tensorflow/g3doc/api_docs/python/framework.md
@@ -2399,7 +2399,7 @@ The value of this dimension, or None if it is unknown.
Returns a context manager for use when defining a Python op.
This context manager validates that the given `values` are from the
-same graph, ensures that that graph is the default graph, and pushes a
+same graph, ensures that graph is the default graph, and pushes a
name scope.
For example, to define a new Python op called `my_op`:
diff --git a/tensorflow/g3doc/api_docs/python/state_ops.md b/tensorflow/g3doc/api_docs/python/state_ops.md
index b35de13783..6a5c1d1539 100644
--- a/tensorflow/g3doc/api_docs/python/state_ops.md
+++ b/tensorflow/g3doc/api_docs/python/state_ops.md
@@ -1334,7 +1334,7 @@ then all its sub-scopes become reusing as well.
Returns a context manager for defining an op that creates variables.
This context manager validates that the given `values` are from the
-same graph, ensures that that graph is the default graph, and pushes a
+same graph, ensures that graph is the default graph, and pushes a
name scope and a variable scope.
If `name_or_scope` is not None, it is used as is in the variable scope. If
diff --git a/tensorflow/g3doc/api_docs/python/train.md b/tensorflow/g3doc/api_docs/python/train.md
index 3a12b6ab17..5285a6d1fd 100644
--- a/tensorflow/g3doc/api_docs/python/train.md
+++ b/tensorflow/g3doc/api_docs/python/train.md
@@ -1983,7 +1983,7 @@ This starts services in the background. The services started depend
on the parameters to the constructor and may include:
- A Summary thread computing summaries every save_summaries_secs.
- - A Checkpoint thread saving the model every every save_model_secs.
+ - A Checkpoint thread saving the model every save_model_secs.
- A StepCounter thread measure step time.
##### Args:
@@ -2240,7 +2240,7 @@ This starts services in the background. The services started depend
on the parameters to the constructor and may include:
- A Summary thread computing summaries every save_summaries_secs.
- - A Checkpoint thread saving the model every every save_model_secs.
+ - A Checkpoint thread saving the model every save_model_secs.
- A StepCounter thread measure step time.
##### Args:
@@ -2594,7 +2594,7 @@ return sess
* <b>`master`</b>: `String` representation of the TensorFlow master to use.
-* <b>`init_op`</b>: Optional `Operation` used to to initialize the model.
+* <b>`init_op`</b>: Optional `Operation` used to initialize the model.
* <b>`saver`</b>: A `Saver` object used to restore a model.
* <b>`checkpoint_dir`</b>: Path to the checkpoint files.
* <b>`wait_for_checkpoint`</b>: Whether to wait for checkpoint to become available.
diff --git a/tensorflow/g3doc/get_started/index.md b/tensorflow/g3doc/get_started/index.md
index a0e563b18b..32aabcb027 100644
--- a/tensorflow/g3doc/get_started/index.md
+++ b/tensorflow/g3doc/get_started/index.md
@@ -37,7 +37,7 @@ sess = tf.Session()
sess.run(init)
# Fit the line.
-for step in xrange(201):
+for step in range(201):
sess.run(train)
if step % 20 == 0:
print(step, sess.run(W), sess.run(b))
diff --git a/tensorflow/g3doc/get_started/os_setup.md b/tensorflow/g3doc/get_started/os_setup.md
index 18da3bbfe5..7f7da3d5d1 100644
--- a/tensorflow/g3doc/get_started/os_setup.md
+++ b/tensorflow/g3doc/get_started/os_setup.md
@@ -7,8 +7,10 @@ github source.
The TensorFlow Python API supports Python 2.7 and Python 3.3+.
-The GPU version (Linux only) requires the Cuda Toolkit >= 7.0 and cuDNN >=
-v2. Please see [Cuda installation](#optional-install-cuda-gpus-on-linux)
+The GPU version (Linux only) works best with Cuda Toolkit 7.5 and
+cuDNN v4. other versions are supported (Cuda toolkit >= 7.0 and
+cuDNN 6.5(v2), 7.0(v3), v5) only when installing from sources.
+Please see [Cuda installation](#optional-install-cuda-gpus-on-linux)
for details.
## Overview
@@ -20,10 +22,15 @@ We support different ways to install TensorFlow:
Python programs on your machine.
* [Virtualenv install](#virtualenv-installation): Install TensorFlow in its own
directory, not impacting any existing Python programs on your machine.
+* [Anaconda install](#anaconda-installation): Install TensorFlow in its own
+ environment for those running the Anaconda Python distribution. Does not
+ impact existing Python programs on your machine.
* [Docker install](#docker-installation): Run TensorFlow in a Docker container
isolated from all other programs on your machine.
+* [Installing from sources](#installing-from-sources): Install TensorFlow by
+ building a pip wheel that you then install using pip.
-If you are familiar with Pip, Virtualenv, or Docker, please feel free to adapt
+If you are familiar with Pip, Virtualenv, Anaconda, or Docker, please feel free to adapt
the instructions to your particular needs. The names of the pip and Docker
images are listed in the corresponding installation sections.
@@ -53,28 +60,30 @@ Install TensorFlow:
```bash
# Ubuntu/Linux 64-bit, CPU only:
-$ sudo pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0rc0-cp27-none-linux_x86_64.whl
+$ sudo pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0-cp27-none-linux_x86_64.whl
-# Ubuntu/Linux 64-bit, GPU enabled:
-$ sudo pip install --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.8.0rc0-cp27-none-linux_x86_64.whl
+# Ubuntu/Linux 64-bit, GPU enabled. Requires CUDA toolkit 7.5 and CuDNN v4. For
+# other versions, see "Install from sources" below.
+$ sudo pip install --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.8.0-cp27-none-linux_x86_64.whl
# Mac OS X, CPU only:
$ sudo easy_install --upgrade six
-$ sudo pip install --upgrade https://storage.googleapis.com/tensorflow/mac/tensorflow-0.8.0rc0-py2-none-any.whl
+$ sudo pip install --upgrade https://storage.googleapis.com/tensorflow/mac/tensorflow-0.8.0-py2-none-any.whl
```
For python3:
```bash
# Ubuntu/Linux 64-bit, CPU only:
-$ sudo pip3 install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0rc0-cp34-cp34m-linux_x86_64.whl
+$ sudo pip3 install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0-cp34-cp34m-linux_x86_64.whl
-# Ubuntu/Linux 64-bit, GPU enabled:
-$ sudo pip3 install --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.8.0rc0-cp34-cp34m-linux_x86_64.whl
+# Ubuntu/Linux 64-bit, GPU enabled. Requires CUDA toolkit 7.5 and CuDNN v4. For
+# other versions, see "Install from sources" below.
+$ sudo pip3 install --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.8.0-cp34-cp34m-linux_x86_64.whl
# Mac OS X, CPU only:
$ sudo easy_install --upgrade six
-$ sudo pip3 install --upgrade https://storage.googleapis.com/tensorflow/mac/tensorflow-0.8.0rc0-py3-none-any.whl
+$ sudo pip3 install --upgrade https://storage.googleapis.com/tensorflow/mac/tensorflow-0.8.0-py3-none-any.whl
```
NOTE: If you are upgrading from a previous installation of TensorFlow < 0.7.1,
@@ -126,13 +135,14 @@ $ source ~/tensorflow/bin/activate.csh # If using csh
(tensorflow)$ # Your prompt should change
# Ubuntu/Linux 64-bit, CPU only:
-(tensorflow)$ pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0rc0-cp27-none-linux_x86_64.whl
+(tensorflow)$ pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0-cp27-none-linux_x86_64.whl
-# Ubuntu/Linux 64-bit, GPU enabled:
-(tensorflow)$ pip install --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.8.0rc0-cp27-none-linux_x86_64.whl
+# Ubuntu/Linux 64-bit, GPU enabled. Requires CUDA toolkit 7.5 and CuDNN v4. For
+# other versions, see "Install from sources" below.
+(tensorflow)$ pip install --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.8.0-cp27-none-linux_x86_64.whl
# Mac OS X, CPU only:
-(tensorflow)$ pip install --upgrade https://storage.googleapis.com/tensorflow/mac/tensorflow-0.8.0rc0-py2-none-any.whl
+(tensorflow)$ pip install --upgrade https://storage.googleapis.com/tensorflow/mac/tensorflow-0.8.0-py2-none-any.whl
```
and again for python3:
@@ -143,13 +153,14 @@ $ source ~/tensorflow/bin/activate.csh # If using csh
(tensorflow)$ # Your prompt should change
# Ubuntu/Linux 64-bit, CPU only:
-(tensorflow)$ pip3 install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0rc0-cp34-cp34m-linux_x86_64.whl
+(tensorflow)$ pip3 install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0-cp34-cp34m-linux_x86_64.whl
-# Ubuntu/Linux 64-bit, GPU enabled:
-(tensorflow)$ pip3 install --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.8.0rc0-cp34-cp34m-linux_x86_64.whl
+# Ubuntu/Linux 64-bit, GPU enabled. Requires CUDA toolkit 7.5 and CuDNN v4. For
+# other versions, see "Install from sources" below.
+(tensorflow)$ pip3 install --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.8.0-cp34-cp34m-linux_x86_64.whl
# Mac OS X, CPU only:
-(tensorflow)$ pip3 install --upgrade https://storage.googleapis.com/tensorflow/mac/tensorflow-0.8.0rc0-py3-none-any.whl
+(tensorflow)$ pip3 install --upgrade https://storage.googleapis.com/tensorflow/mac/tensorflow-0.8.0-py3-none-any.whl
```
With the Virtualenv environment activated, you can now
@@ -175,6 +186,95 @@ $ source ~/tensorflow/bin/activate.csh # If using csh.
(tensorflow)$ deactivate
```
+## Anaconda installation
+
+[Anaconda](https://www.continuum.io/why-anaconda) is a Python distribution that
+includes a large number of standard numeric and scientific computing packages.
+Anaconda uses a package manager called "conda" that has its own
+[environment system](http://conda.pydata.org/docs/using/envs.html) similar to Virtualenv.
+
+As with Virtualenv, conda environments keep the dependencies required by
+different Python projects in separate places. The Anaconda environment
+installation of TensorFlow will not override pre-existing version of the Python
+packages needed by TensorFlow.
+
+* Install Anaconda.
+* Create a conda environment.
+* Activate the conda environment and install TensorFlow in it.
+* After the install you will activate the conda environment each time you
+ want to use TensorFlow.
+
+Install Anaconda:
+
+Follow the instructions on the [Anaconda download site](https://www.continuum.io/downloads)
+
+Create a conda environment called `tensorflow`:
+
+```bash
+# Python 2.7
+$ conda create -n tensorflow python=2.7
+
+# Python 3.4
+$ conda create -n tensorflow python=3.4
+```
+
+Activate the environment and use pip to install TensorFlow inside it.
+Use the `--ignore-installed` flag to prevent errors about `easy_install`.
+
+```bash
+$ source activate tensorflow
+(tensorflow)$ # Your prompt should change
+
+# Ubuntu/Linux 64-bit, CPU only:
+(tensorflow)$ pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0rc0-cp27-none-linux_x86_64.whl
+
+# Ubuntu/Linux 64-bit, GPU enabled. Requires CUDA toolkit 7.5 and CuDNN v4. For
+# other versions, see "Install from sources" below.
+(tensorflow)$ pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.8.0rc0-cp27-none-linux_x86_64.whl
+
+# Mac OS X, CPU only:
+(tensorflow)$ pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/mac/tensorflow-0.8.0rc0-py2-none-any.whl
+```
+
+and again for Python 3:
+
+```bash
+$ source activate tensorflow
+(tensorflow)$ # Your prompt should change
+
+# Ubuntu/Linux 64-bit, CPU only:
+(tensorflow)$ pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0rc0-cp34-cp34m-linux_x86_64.whl
+
+# Ubuntu/Linux 64-bit, GPU enabled. Requires CUDA toolkit 7.5 and CuDNN v4. For
+# other versions, see "Install from sources" below.
+(tensorflow)$ pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.8.0rc0-cp34-cp34m-linux_x86_64.whl
+
+# Mac OS X, CPU only:
+(tensorflow)$ pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/mac/tensorflow-0.8.0rc0-py3-none-any.whl
+```
+
+With the conda environment activated, you can now
+[test your installation](#test-the-tensorflow-installation).
+
+When you are done using TensorFlow, deactivate the environment.
+
+```bash
+(tensorflow)$ source deactivate
+
+$ # Your prompt should change back
+```
+
+To use TensorFlow later you will have to activate the conda environment again:
+
+```bash
+$ source activate tensorflow
+(tensorflow)$ # Your prompt should change.
+# Run Python programs that use TensorFlow.
+...
+# When you are done using TensorFlow, deactivate the environment.
+(tensorflow)$ source deactivate
+```
+
## Docker installation
[Docker](http://docker.com/) is a system to build self contained versions of a
@@ -191,7 +291,7 @@ code.
* `gcr.io/tensorflow/tensorflow:latest-devel-gpu`: GPU Binary image plus source
code.
-We also have tags with `latest` replaced by a released version (e.g., `0.8.0rc0-gpu`).
+We also have tags with `latest` replaced by a released version (e.g., `0.8.0-gpu`).
With Docker the installation is as follows:
@@ -229,7 +329,7 @@ You can now [test your installation](#test-the-tensorflow-installation) within t
### (Optional, Linux) Enable GPU Support
If you installed the GPU version of TensorFlow, you must also install the Cuda
-Toolkit 7.0 and cuDNN v2. Please see [Cuda installation](#optional-install-cuda-gpus-on-linux).
+Toolkit 7.5 and cuDNN v4. Please see [Cuda installation](#optional-install-cuda-gpus-on-linux).
You also need to set the `LD_LIBRARY_PATH` and `CUDA_HOME` environment
variables. Consider adding the commands below to your `~/.bash_profile`. These
@@ -370,20 +470,25 @@ Supported cards include but are not limited to:
https://developer.nvidia.com/cuda-downloads
+Install version 7.5 if using our binary releases.
+
Install the toolkit into e.g. `/usr/local/cuda`
##### Download and install cuDNN
https://developer.nvidia.com/cudnn
+Download cuDNN v4 (v5 is currently a release candidate and is only supported when
+installing TensorFlow from sources).
+
Uncompress and copy the cuDNN files into the toolkit directory. Assuming the
toolkit is installed in `/usr/local/cuda`, run the following commands (edited
to reflect the cuDNN version you downloaded):
``` bash
-tar xvzf cudnn-6.5-linux-x64-v2.tgz
-sudo cp cudnn-6.5-linux-x64-v2/cudnn.h /usr/local/cuda/include
-sudo cp cudnn-6.5-linux-x64-v2/libcudnn* /usr/local/cuda/lib64
+tar xvzf cudnn-7.5-linux-x64-v4.tgz
+sudo cp cudnn-7.5-linux-x64-v4/cudnn.h /usr/local/cuda/include
+sudo cp cudnn-7.5-linux-x64-v4/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
```
@@ -401,6 +506,9 @@ Please specify the location of python. [Default is /usr/bin/python]:
Do you wish to build TensorFlow with GPU support? [y/N] y
GPU support will be enabled for TensorFlow
+Please specify which gcc nvcc should use as the host compiler. [Default is
+/usr/bin/gcc]: /usr/bin/gcc-4.9
+
Please specify the Cuda SDK version you want to use, e.g. 7.0. [Leave
empty to use system default]: 7.5
@@ -423,6 +531,8 @@ Setting up Cuda include
Setting up Cuda lib64
Setting up Cuda bin
Setting up Cuda nvvm
+Setting up CUPTI include
+Setting up CUPTI lib64
Configuration finished
```
@@ -517,7 +627,7 @@ $ bazel build -c opt --config=cuda //tensorflow/tools/pip_package:build_pip_pack
$ bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
# The name of the .whl file will depend on your platform.
-$ pip install /tmp/tensorflow_pkg/tensorflow-0.8.0rc0-py2-none-linux_x86_64.whl
+$ pip install /tmp/tensorflow_pkg/tensorflow-0.8.0-py2-none-linux_x86_64.whl
```
## Setting up TensorFlow for Development
diff --git a/tensorflow/g3doc/how_tos/adding_an_op/index.md b/tensorflow/g3doc/how_tos/adding_an_op/index.md
index ec5020bf11..8ba5780f73 100644
--- a/tensorflow/g3doc/how_tos/adding_an_op/index.md
+++ b/tensorflow/g3doc/how_tos/adding_an_op/index.md
@@ -1089,7 +1089,7 @@ to a shape function. For example, the
the following:
```python
-@tf.RegisterShape("ZeroOut"):
+@tf.RegisterShape("ZeroOut")
def _zero_out_shape(op):
"""Shape function for the ZeroOut op.
@@ -1104,7 +1104,7 @@ A shape function can also constrain the shape of an input. For the version of
would be as follows:
```python
-@tf.RegisterShape("ZeroOut"):
+@tf.RegisterShape("ZeroOut")
def _zero_out_shape(op):
"""Shape function for the ZeroOut op.
diff --git a/tensorflow/g3doc/how_tos/new_data_formats/index.md b/tensorflow/g3doc/how_tos/new_data_formats/index.md
index 5f6bdda9c9..e1d1524903 100644
--- a/tensorflow/g3doc/how_tos/new_data_formats/index.md
+++ b/tensorflow/g3doc/how_tos/new_data_formats/index.md
@@ -39,7 +39,7 @@ are in their constructors. The most important method is `read`.
It takes a queue argument, which is where it gets filenames to
read from whenever it needs one (e.g. when the `read` op first runs, or
the previous `read` reads the last record from a file). It produces
-two scalar tensors: a string key and and a string value.
+two scalar tensors: a string key and a string value.
To create a new reader called `SomeReader`, you will need to:
diff --git a/tensorflow/g3doc/resources/index.md b/tensorflow/g3doc/resources/index.md
index 2f0bbb455b..096a8ab948 100644
--- a/tensorflow/g3doc/resources/index.md
+++ b/tensorflow/g3doc/resources/index.md
@@ -35,6 +35,7 @@ The TensorFlow community has created many great projects around TensorFlow, incl
* [TensorFlow tutorials](https://github.com/pkmital/tensorflow_tutorials)
* [Scikit Flow - Simplified Interface for TensorFlow](https://github.com/tensorflow/skflow)
+* [Caffe to TensorFlow model converter](https://github.com/ethereon/caffe-tensorflow)
### Development
diff --git a/tensorflow/models/embedding/word2vec.py b/tensorflow/models/embedding/word2vec.py
index 9cb15d3f41..f7bbe5a9c9 100644
--- a/tensorflow/models/embedding/word2vec.py
+++ b/tensorflow/models/embedding/word2vec.py
@@ -81,8 +81,8 @@ flags.DEFINE_float("subsample", 1e-3,
flags.DEFINE_boolean(
"interactive", False,
"If true, enters an IPython interactive session to play with the trained "
- "model. E.g., try model.analogy('france', 'paris', 'russia') and "
- "model.nearby(['proton', 'elephant', 'maxwell'])")
+ "model. E.g., try model.analogy(b'france', b'paris', b'russia') and "
+ "model.nearby([b'proton', b'elephant', b'maxwell'])")
flags.DEFINE_integer("statistics_interval", 5,
"Print statistics every n seconds.")
flags.DEFINE_integer("summary_interval", 5,
@@ -517,8 +517,8 @@ def main(_):
global_step=model.global_step)
if FLAGS.interactive:
# E.g.,
- # [0]: model.analogy('france', 'paris', 'russia')
- # [1]: model.nearby(['proton', 'elephant', 'maxwell'])
+ # [0]: model.analogy(b'france', b'paris', b'russia')
+ # [1]: model.nearby([b'proton', b'elephant', b'maxwell'])
_start_shell(locals())
diff --git a/tensorflow/models/embedding/word2vec_optimized.py b/tensorflow/models/embedding/word2vec_optimized.py
index 3ce795d5c8..2d89aabe52 100644
--- a/tensorflow/models/embedding/word2vec_optimized.py
+++ b/tensorflow/models/embedding/word2vec_optimized.py
@@ -78,8 +78,8 @@ flags.DEFINE_float("subsample", 1e-3,
flags.DEFINE_boolean(
"interactive", False,
"If true, enters an IPython interactive session to play with the trained "
- "model. E.g., try model.analogy('france', 'paris', 'russia') and "
- "model.nearby(['proton', 'elephant', 'maxwell'])")
+ "model. E.g., try model.analogy(b'france', b'paris', b'russia') and "
+ "model.nearby([b'proton', b'elephant', b'maxwell'])")
FLAGS = flags.FLAGS
@@ -422,8 +422,8 @@ def main(_):
global_step=model.step)
if FLAGS.interactive:
# E.g.,
- # [0]: model.Analogy('france', 'paris', 'russia')
- # [1]: model.Nearby(['proton', 'elephant', 'maxwell'])
+ # [0]: model.analogy(b'france', b'paris', b'russia')
+ # [1]: model.nearby([b'proton', b'elephant', b'maxwell'])
_start_shell(locals())
diff --git a/tensorflow/python/BUILD b/tensorflow/python/BUILD
index 38bd7bd75a..9c1ac63ce3 100644
--- a/tensorflow/python/BUILD
+++ b/tensorflow/python/BUILD
@@ -67,12 +67,27 @@ py_tests(
)
cc_library(
+ name = "numpy_lib",
+ srcs = ["lib/core/numpy.cc"],
+ hdrs = [
+ "lib/core/numpy.h",
+ ],
+ deps = [
+ "//tensorflow/core:framework",
+ "//tensorflow/core:lib",
+ "//third_party/py/numpy:headers",
+ "//util/python:python_headers",
+ ],
+)
+
+cc_library(
name = "py_func_lib",
srcs = ["lib/core/py_func.cc"],
hdrs = [
"lib/core/py_func.h",
],
deps = [
+ ":numpy_lib",
"//tensorflow/core:framework",
"//tensorflow/core:lib",
"//tensorflow/core:script_ops_op_lib",
@@ -478,6 +493,7 @@ tf_gen_op_wrapper_py(
"EditDistance",
"MirrorPad",
"MirrorPadGrad",
+ "OneHot",
"Pack",
"Pad",
"Placeholder",
@@ -953,6 +969,7 @@ tf_cuda_library(
hdrs = ["client/tf_session_helper.h"],
deps = [
":construction_fails_op",
+ ":numpy_lib",
":test_ops_kernels",
"//tensorflow/core",
"//tensorflow/core:all_kernels",
@@ -997,6 +1014,7 @@ tf_py_wrap_cc(
"util/py_checkpoint_reader.i",
],
deps = [
+ ":numpy_lib",
":py_checkpoint_reader",
":py_func_lib",
":py_record_reader_lib",
diff --git a/tensorflow/python/client/tf_session_helper.cc b/tensorflow/python/client/tf_session_helper.cc
index 5ffcc514d5..0eba9b8569 100644
--- a/tensorflow/python/client/tf_session_helper.cc
+++ b/tensorflow/python/client/tf_session_helper.cc
@@ -13,10 +13,6 @@ See the License for the specific language governing permissions and
limitations under the License.
==============================================================================*/
-// We define the PY_ARRAY_UNIQUE_SYMBOL in this .cc file and provide an
-// ImportNumpy function to populate it.
-#define TF_IMPORT_NUMPY
-
#include "tensorflow/python/client/tf_session_helper.h"
#include <cstring>
@@ -636,8 +632,6 @@ void TF_PRun_wrapper(TF_Session* session, const char* handle,
NameVector(), out_status, out_values, nullptr);
}
-void ImportNumpy() { import_array1(); }
-
string EqualGraphDefWrapper(const string& actual, const string& expected) {
GraphDef actual_def;
if (!actual_def.ParseFromString(actual)) {
diff --git a/tensorflow/python/client/tf_session_helper.h b/tensorflow/python/client/tf_session_helper.h
index 107a1f6346..55a92787b6 100644
--- a/tensorflow/python/client/tf_session_helper.h
+++ b/tensorflow/python/client/tf_session_helper.h
@@ -16,22 +16,8 @@ limitations under the License.
#ifndef TENSORFLOW_PYTHON_CLIENT_TF_SESSION_HELPER_H_
#define TENSORFLOW_PYTHON_CLIENT_TF_SESSION_HELPER_H_
-#ifdef PyArray_Type
-#error "Numpy cannot be included before tf_session_helper.h."
-#endif
-
-// Disallow Numpy 1.7 deprecated symbols.
-#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
-
-// We import_array in the tensorflow init function only.
-#define PY_ARRAY_UNIQUE_SYMBOL _tensorflow_numpy_api
-#ifndef TF_IMPORT_NUMPY
-#define NO_IMPORT_ARRAY
-#endif
-
-#include <Python.h>
-
-#include "numpy/arrayobject.h"
+// Must be included first
+#include "tensorflow/python/lib/core/numpy.h"
#include "tensorflow/core/framework/graph.pb.h"
#include "tensorflow/core/lib/core/errors.h"
@@ -110,11 +96,6 @@ void TF_PRun_wrapper(TF_Session* session, const char* handle,
const FeedVector& inputs, const NameVector& output_names,
Status* out_status, PyObjectVector* out_values);
-// Import numpy. This wrapper function exists so that the
-// PY_ARRAY_UNIQUE_SYMBOL can be safely defined in a .cc file to
-// avoid weird linking issues.
-void ImportNumpy();
-
// Convenience wrapper around EqualGraphDef to make it easier to wrap.
// Returns an explanation if a difference is found, or the empty string
// for no difference.
diff --git a/tensorflow/python/framework/gen_docs_combined.py b/tensorflow/python/framework/gen_docs_combined.py
index 79a38b0b3c..2dbc5e656f 100644
--- a/tensorflow/python/framework/gen_docs_combined.py
+++ b/tensorflow/python/framework/gen_docs_combined.py
@@ -53,6 +53,7 @@ def get_module_to_name():
tf.contrib.layers: "tf.contrib.layers",
tf.contrib.learn: "tf.contrib.learn",
tf.contrib.util: "tf.contrib.util",
+ tf.contrib.copy_graph: "tf.contrib.copy_graph",
}
@@ -127,6 +128,8 @@ def all_libraries(module_to_name, members, documented):
library("contrib.layers", "Layers (contrib)", tf.contrib.layers),
library("contrib.learn", "Learn (contrib)", tf.contrib.learn),
library("contrib.util", "Utilities (contrib)", tf.contrib.util),
+ library("contrib.copy_graph", "Copying Graph Elements (contrib)",
+ tf.contrib.copy_graph),
]
_hidden_symbols = ["Event", "LogMessage", "Summary", "SessionLog", "xrange",
diff --git a/tensorflow/python/framework/ops.py b/tensorflow/python/framework/ops.py
index e4ce548cd7..ce12fc3fe0 100644
--- a/tensorflow/python/framework/ops.py
+++ b/tensorflow/python/framework/ops.py
@@ -524,7 +524,6 @@ def convert_to_tensor(value, dtype=None, name=None, as_ref=False):
```python
import numpy as np
- array = np.random.rand(32, 100, 100)
def my_func(arg):
arg = tf.convert_to_tensor(arg, dtype=tf.float32)
@@ -3696,7 +3695,7 @@ def op_scope(values, name, default_name=None):
"""Returns a context manager for use when defining a Python op.
This context manager validates that the given `values` are from the
- same graph, ensures that that graph is the default graph, and pushes a
+ same graph, ensures that graph is the default graph, and pushes a
name scope.
For example, to define a new Python op called `my_op`:
diff --git a/tensorflow/python/framework/ops_test.py b/tensorflow/python/framework/ops_test.py
index 57c11ab16e..1bbc9148b2 100644
--- a/tensorflow/python/framework/ops_test.py
+++ b/tensorflow/python/framework/ops_test.py
@@ -1323,7 +1323,7 @@ class ColocationGroupTest(test_util.TensorFlowTestCase):
with ops.device("/gpu:0"):
a = constant_op.constant([2.0], name="a")
with ops.colocate_with(a.op):
- # 'b' is created in the scope of /cpu:0, but but it is
+ # 'b' is created in the scope of /cpu:0, but it is
# colocated with 'a', which is on '/gpu:0'. colocate_with
# overrides devices because it is a stronger constraint.
b = constant_op.constant(3.0)
diff --git a/tensorflow/python/kernel_tests/conv_ops_test.py b/tensorflow/python/kernel_tests/conv_ops_test.py
index b59bb5f3b8..d15d3562dd 100644
--- a/tensorflow/python/kernel_tests/conv_ops_test.py
+++ b/tensorflow/python/kernel_tests/conv_ops_test.py
@@ -327,11 +327,26 @@ class Conv2DTest(tf.test.TestCase):
expected=expected_output)
def testConv2DKernelSmallerThanStrideSame(self):
- expected_output = [1, 3, 7, 9]
self._VerifyValues(tensor_in_sizes=[1, 3, 3, 1],
filter_in_sizes=[1, 1, 1, 1],
strides=[2, 2], padding="SAME",
- expected=expected_output)
+ expected=[1, 3, 7, 9])
+
+ self._VerifyValues(tensor_in_sizes=[1, 4, 4, 1],
+ filter_in_sizes=[1, 1, 1, 1],
+ strides=[2, 2], padding="SAME",
+ expected=[1, 3, 9, 11])
+
+ self._VerifyValues(tensor_in_sizes=[1, 4, 4, 1],
+ filter_in_sizes=[2, 2, 1, 1],
+ strides=[3, 3], padding="SAME",
+ expected=[44, 28, 41, 16])
+
+ # TODO this currently fails.
+ #self._VerifyValues(tensor_in_sizes=[1, 8, 8, 1],
+ # filter_in_sizes=[2, 2, 1, 1],
+ # strides=[4, 4], padding="SAME",
+ # expected=[72, 112, 392, 432])
# Testing for backprops
def _RunAndVerifyBackpropInput(self, input_sizes, filter_sizes, output_sizes,
diff --git a/tensorflow/python/kernel_tests/one_hot_op_test.py b/tensorflow/python/kernel_tests/one_hot_op_test.py
index 2944d4e298..06f7f84ef8 100644
--- a/tensorflow/python/kernel_tests/one_hot_op_test.py
+++ b/tensorflow/python/kernel_tests/one_hot_op_test.py
@@ -24,20 +24,25 @@ import tensorflow as tf
class OneHotTest(tf.test.TestCase):
- def _testOneHot(self, truth, use_gpu=False, expected_err_re=None, **inputs):
+ def _testOneHot(self, truth, use_gpu=False, expected_err_re=None,
+ raises=None, **inputs):
with self.test_session(use_gpu=use_gpu):
- ans = tf.one_hot(**inputs)
- if expected_err_re is None:
- tf_ans = ans.eval()
- self.assertAllClose(tf_ans, truth, atol=1e-10)
- self.assertEqual(tf_ans.shape, ans.get_shape())
+ if raises is not None:
+ with self.assertRaises(raises):
+ tf.one_hot(**inputs)
else:
- with self.assertRaisesOpError(expected_err_re):
- ans.eval()
+ ans = tf.one_hot(**inputs)
+ if expected_err_re is None:
+ tf_ans = ans.eval()
+ self.assertAllClose(tf_ans, truth, atol=1e-10)
+ self.assertEqual(tf_ans.shape, ans.get_shape())
+ else:
+ with self.assertRaisesOpError(expected_err_re):
+ ans.eval()
- def _testBothOneHot(self, truth, expected_err_re=None, **inputs):
- self._testOneHot(truth, True, expected_err_re, **inputs)
- self._testOneHot(truth, False, expected_err_re, **inputs)
+ def _testBothOneHot(self, truth, expected_err_re=None, raises=None, **inputs):
+ self._testOneHot(truth, True, expected_err_re, raises, **inputs)
+ self._testOneHot(truth, False, expected_err_re, raises, **inputs)
def _testBasic(self, dtype):
indices = np.asarray([0, 2, -1, 1], dtype=np.int64)
@@ -58,6 +63,7 @@ class OneHotTest(tf.test.TestCase):
depth=depth,
on_value=on_value,
off_value=off_value,
+ dtype=dtype,
truth=truth)
# axis == 0
@@ -67,22 +73,54 @@ class OneHotTest(tf.test.TestCase):
on_value=on_value,
off_value=off_value,
axis=0,
+ dtype=dtype,
truth=truth.T) # Output is transpose version in this case
+ def _testDefaultBasic(self, dtype):
+ indices = np.asarray([0, 2, -1, 1], dtype=dtype)
+ depth = 3
+
+ truth = np.asarray(
+ [[1.0, 0.0, 0.0],
+ [0.0, 0.0, 1.0],
+ [0.0, 0.0, 0.0],
+ [0.0, 1.0, 0.0]],
+ dtype=dtype)
+
+ # axis == -1
+ self._testBothOneHot(
+ indices=indices,
+ depth=depth,
+ dtype=dtype,
+ truth=truth)
+
+ # axis == 0
+ self._testBothOneHot(
+ indices=indices,
+ depth=depth,
+ axis=0,
+ dtype=dtype,
+ truth=truth.T) # Output is transpose version in this case
+
def testFloatBasic(self):
self._testBasic(np.float32)
+ self._testDefaultBasic(np.float32)
def testDoubleBasic(self):
self._testBasic(np.float64)
+ self._testDefaultBasic(np.float64)
def testInt32Basic(self):
self._testBasic(np.int32)
+ self._testDefaultBasic(np.int32)
def testInt64Basic(self):
self._testBasic(np.int64)
+ self._testDefaultBasic(np.int64)
def testComplexBasic(self):
self._testBasic(np.complex64)
+ self._testDefaultBasic(np.complex64)
def _testBatch(self, dtype):
indices = np.asarray([[0, 2, -1, 1],
@@ -109,6 +147,7 @@ class OneHotTest(tf.test.TestCase):
depth=depth,
on_value=on_value,
off_value=off_value,
+ dtype=dtype,
truth=truth)
# axis == 1
@@ -118,22 +157,165 @@ class OneHotTest(tf.test.TestCase):
on_value=on_value,
off_value=off_value,
axis=1,
+ dtype=dtype,
truth=[truth[0].T, truth[1].T]) # Do not transpose the batch
+ def _testDefaultValuesBatch(self, dtype):
+ indices = np.asarray([[0, 2, -1, 1],
+ [1, 0, 1, -1]],
+ dtype=dtype)
+ depth = 3
+
+ truth = np.asarray(
+ [[[1.0, 0.0, 0.0],
+ [0.0, 0.0, 1.0],
+ [0.0, 0.0, 0.0],
+ [0.0, 1.0, 0.0]],
+ [[0.0, 1.0, 0.0],
+ [1.0, 0.0, 0.0],
+ [0.0, 1.0, 0.0],
+ [0.0, 0.0, 0.0]]],
+ dtype=dtype)
+
+ # axis == -1
+ self._testBothOneHot(
+ indices=indices,
+ depth=depth,
+ dtype=dtype,
+ truth=truth)
+
+ # axis == 1
+ self._testBothOneHot(
+ indices=indices,
+ depth=depth,
+ axis=1,
+ dtype=dtype,
+ truth=[truth[0].T, truth[1].T]) # Do not transpose the batch
+
+ def _testTypeBatch(self, dtype):
+ indices = np.asarray([[0, 2, -1, 1],
+ [1, 0, 1, -1]],
+ dtype=dtype)
+ depth = 3
+
+ on_value = np.asarray(1.0, dtype=dtype)
+ off_value = np.asarray(-1.0, dtype=dtype)
+
+ truth = np.asarray(
+ [[[1.0, -1.0, -1.0],
+ [-1.0, -1.0, 1.0],
+ [-1.0, -1.0, -1.0],
+ [-1.0, 1.0, -1.0]],
+ [[-1.0, 1.0, -1.0],
+ [1.0, -1.0, -1.0],
+ [-1.0, 1.0, -1.0],
+ [-1.0, -1.0, -1.0]]],
+ dtype=dtype)
+
+ # axis == -1
+ self._testBothOneHot(
+ indices=indices,
+ on_value=on_value,
+ off_value=off_value,
+ depth=depth,
+ truth=truth)
+
+ # axis == 1
+ self._testBothOneHot(
+ indices=indices,
+ on_value=on_value,
+ off_value=off_value,
+ depth=depth,
+ axis=1,
+ truth=[truth[0].T, truth[1].T]) # Do not transpose the batch
+
def testFloatBatch(self):
self._testBatch(np.float32)
+ self._testDefaultValuesBatch(np.float32)
+ self._testTypeBatch(np.float32)
def testDoubleBatch(self):
self._testBatch(np.float64)
+ self._testDefaultValuesBatch(np.float64)
+ self._testTypeBatch(np.float64)
def testInt32Batch(self):
self._testBatch(np.int32)
+ self._testDefaultValuesBatch(np.int32)
+ self._testTypeBatch(np.int32)
def testInt64Batch(self):
self._testBatch(np.int64)
+ self._testDefaultValuesBatch(np.int64)
+ self._testTypeBatch(np.int64)
def testComplexBatch(self):
self._testBatch(np.complex64)
+ self._testDefaultValuesBatch(np.complex64)
+ self._testTypeBatch(np.complex64)
+
+ def testSimpleCases(self):
+ indices = [0,1,2]
+ depth = 3
+ truth = np.asarray(
+ [[1.0, 0.0, 0.0],
+ [0.0, 1.0, 0.0],
+ [0.0, 0.0, 1.0]],
+ dtype=np.float32)
+ self._testBothOneHot(indices=indices, depth=depth, truth=truth)
+
+ indices = [0,1,2]
+ depth = 3
+ truth = np.asarray(
+ [[1, 0, 0],
+ [0, 1, 0],
+ [0, 0, 1]],
+ dtype=np.int32)
+ self._testBothOneHot(indices=indices, depth=depth, dtype=np.int32,
+ truth=truth)
+
+ indices = [0,1,2]
+ depth = 3
+ truth = np.asarray(
+ [[1, -1, -1],
+ [-1, 1, -1],
+ [-1, -1, 1]],
+ dtype=np.int32)
+ self._testBothOneHot(indices=indices, depth=depth, on_value=1,
+ off_value=-1, truth=truth)
+
+ def testStringDtypeError(self):
+ indices = [0,1,2]
+ depth = 3
+ truth = np.asarray(
+ [[1.0, 0.0, 0.0],
+ [0.0, 1.0, 0.0],
+ [0.0, 0.0, 1.0]])
+ self._testBothOneHot(indices=indices, depth=depth, on_value=1,
+ off_value=-1, dtype=tf.string, raises=TypeError,
+ truth=truth)
+
+ def testSingleValueGiven(self):
+ # Only on_value provided
+ indices = [0,1,2]
+ depth = 3
+ truth = np.asarray(
+ [[1, 0, 0],
+ [0, 1, 0],
+ [0, 0, 1]],
+ dtype=np.int32)
+ self._testBothOneHot(indices=indices, depth=depth, on_value=1, truth=truth)
+
+ # Only off_value provided
+ indices = [0,1,2]
+ depth = 3
+ truth = np.asarray(
+ [[1, 0, 0],
+ [0, 1, 0],
+ [0, 0, 1]],
+ dtype=np.float32)
+ self._testBothOneHot(indices=indices, depth=depth,
+ off_value=0.0, truth=truth)
if __name__ == "__main__":
tf.test.main()
diff --git a/tensorflow/python/kernel_tests/pooling_ops_test.py b/tensorflow/python/kernel_tests/pooling_ops_test.py
index 7e0993bba3..24932c26c0 100644
--- a/tensorflow/python/kernel_tests/pooling_ops_test.py
+++ b/tensorflow/python/kernel_tests/pooling_ops_test.py
@@ -370,32 +370,34 @@ class PoolingTest(tf.test.TestCase):
expected=[3.0, 6.0, 9.0, 12.0, 15.0, 18.0, 21.0, 24.0],
use_gpu=False)
- def testKernelSmallerThanStride(self):
+ def testKernelSmallerThanStrideValid(self):
for use_gpu in [True, False]:
- self._VerifyValues(tf.nn.max_pool, input_sizes=[1, 3, 3, 1],
- ksize=[1, 1, 1, 1], strides=[1, 2, 2, 1],
- padding="SAME",
- expected=[1, 3, 7, 9],
- use_gpu=use_gpu)
-
self._VerifyValues(tf.nn.max_pool, input_sizes=[1, 7, 7, 1],
ksize=[1, 2, 2, 1], strides=[1, 3, 3, 1],
padding="VALID",
expected=[9, 12, 30, 33],
use_gpu=use_gpu)
- self._VerifyValues(tf.nn.avg_pool, input_sizes=[1, 3, 3, 1],
- ksize=[1, 1, 1, 1], strides=[1, 2, 2, 1],
- padding="SAME",
- expected=[1, 3, 7, 9],
- use_gpu=use_gpu)
-
self._VerifyValues(tf.nn.avg_pool, input_sizes=[1, 7, 7, 1],
ksize=[1, 2, 2, 1], strides=[1, 3, 3, 1],
padding="VALID",
expected=[5, 8, 26, 29],
use_gpu=use_gpu)
+ def testKernelSmallerThanStrideSame(self):
+ for use_gpu in [True, False]:
+ for pool_func in [tf.nn.max_pool, tf.nn.avg_pool]:
+ self._VerifyValues(pool_func, input_sizes=[1, 3, 3, 1],
+ ksize=[1, 1, 1, 1], strides=[1, 2, 2, 1],
+ padding="SAME",
+ expected=[1, 3, 7, 9],
+ use_gpu=use_gpu)
+
+ self._VerifyValues(pool_func, input_sizes=[1, 4, 4, 1],
+ ksize=[1, 1, 1, 1], strides=[1, 2, 2, 1],
+ padding="SAME",
+ expected=[1, 3, 9, 11],
+ use_gpu=use_gpu)
def _testDepthwiseMaxPoolInvalidConfig(self, in_size, ksize, strides,
error_msg, use_gpu=False):
diff --git a/tensorflow/python/lib/core/numpy.cc b/tensorflow/python/lib/core/numpy.cc
new file mode 100644
index 0000000000..576bb0ce2e
--- /dev/null
+++ b/tensorflow/python/lib/core/numpy.cc
@@ -0,0 +1,28 @@
+/* Copyright 2016 Google Inc. All Rights Reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+==============================================================================*/
+
+// We define the PY_ARRAY_UNIQUE_SYMBOL in this .cc file and provide an
+// ImportNumpy function to populate it.
+#define TF_IMPORT_NUMPY
+
+#include "tensorflow/python/lib/core/numpy.h"
+
+namespace tensorflow {
+
+void ImportNumpy() {
+ import_array1();
+}
+
+} // namespace tensorflow
diff --git a/tensorflow/python/lib/core/numpy.h b/tensorflow/python/lib/core/numpy.h
new file mode 100644
index 0000000000..35d7883ed3
--- /dev/null
+++ b/tensorflow/python/lib/core/numpy.h
@@ -0,0 +1,46 @@
+/* Copyright 2015 Google Inc. All Rights Reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+==============================================================================*/
+
+#ifndef TENSORFLOW_PYTHON_LIB_CORE_NUMPY_H_
+#define TENSORFLOW_PYTHON_LIB_CORE_NUMPY_H_
+
+#ifdef PyArray_Type
+#error "Numpy cannot be included before numpy.h."
+#endif
+
+// Disallow Numpy 1.7 deprecated symbols.
+#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
+
+// We import_array in the tensorflow init function only.
+#define PY_ARRAY_UNIQUE_SYMBOL _tensorflow_numpy_api
+#ifndef TF_IMPORT_NUMPY
+#define NO_IMPORT_ARRAY
+#endif
+
+#include <Python.h>
+
+#include "numpy/arrayobject.h"
+
+namespace tensorflow {
+
+// Import numpy. This wrapper function exists so that the
+// PY_ARRAY_UNIQUE_SYMBOL can be safely defined in a .cc file to
+// avoid weird linking issues. Should be called only from our
+// module initialization function.
+void ImportNumpy();
+
+} // namespace tensorflow
+
+#endif // TENSORFLOW_PYTHON_LIB_CORE_NUMPY_H_
diff --git a/tensorflow/python/lib/core/py_func.cc b/tensorflow/python/lib/core/py_func.cc
index e03f9939f2..d0d3bb1ae5 100644
--- a/tensorflow/python/lib/core/py_func.cc
+++ b/tensorflow/python/lib/core/py_func.cc
@@ -24,19 +24,10 @@ limitations under the License.
#include "tensorflow/core/platform/mutex.h"
#include "tensorflow/core/platform/types.h"
-// Return type of import_array() changed between Python 2 and 3
-// NUMPY_IMPORT_ARRAY_RETVAL is NULL for Python 3
-#if PY_MAJOR_VERSION >= 3
-#define NUMPY_IMPORT_ARRAY_RETURN_TYPE int
-#else
-#define NUMPY_IMPORT_ARRAY_RETURN_TYPE void
-#endif
-
namespace tensorflow {
namespace {
static mutex mu;
-static bool initialized GUARDED_BY(mu) = false;
static PyObject* py_trampoline GUARDED_BY(mu) = nullptr;
// Returns the py_trampoline that is used to pass the control to the
@@ -46,18 +37,6 @@ PyObject* GetPyTrampoline() {
return py_trampoline;
}
-// Module initialization (mainly import numpy) if needed.
-NUMPY_IMPORT_ARRAY_RETURN_TYPE InitIfNeeded() {
- mutex_lock l(mu);
- if (!initialized) {
- PyGILState_STATE py_threadstate;
- py_threadstate = PyGILState_Ensure();
- import_array();
- PyGILState_Release(py_threadstate);
- initialized = true;
- }
-}
-
// Returns a single-thread threadpool used to execute python
// trampoline and the python function. It is single threaded because
// GIL is needed running the trampoline.
@@ -229,7 +208,7 @@ Status ConvertNdarrayToTensor(PyObject* obj, Tensor* ret) {
Tensor t(dtype, shape);
CHECK(DataTypeCanUseMemcpy(dtype));
StringPiece p = t.tensor_data();
- memcpy(const_cast<char*>(p.data()), input->data, p.size());
+ memcpy(const_cast<char*>(p.data()), PyArray_DATA(input), p.size());
*ret = t;
}
}
@@ -291,7 +270,6 @@ Status DoCallPyFunc(PyCall* call) {
// Calls the python function in a separate thread. Arranges to call
// done() when the python function returns.
void CallPyFunc(PyCall* call, std::function<void(Status)> done) {
- InitIfNeeded();
py_thread()->Schedule([call, done]() {
PyGILState_STATE py_threadstate;
py_threadstate = PyGILState_Ensure();
@@ -306,7 +284,6 @@ void CallPyFunc(PyCall* call, std::function<void(Status)> done) {
// Creates a numpy array in 'ret' and copies the content of tensor 't'
// into 'ret'.
Status ConvertTensorToNdarray(const Tensor& t, PyObject** ret) {
- InitIfNeeded();
int typenum = -1;
TF_RETURN_IF_ERROR(TfDTypeToNpDType(t.dtype(), &typenum));
PyArray_Descr* descr = PyArray_DescrFromType(typenum);
@@ -324,7 +301,7 @@ Status ConvertTensorToNdarray(const Tensor& t, PyObject** ret) {
if (typenum == NPY_OBJECT) {
CHECK_EQ(DT_STRING, t.dtype());
auto tflat = t.flat<string>();
- PyObject** out = reinterpret_cast<PyObject**>(np_array->data);
+ PyObject** out = reinterpret_cast<PyObject**>(PyArray_DATA(np_array));
for (int i = 0; i < tflat.dimension(0); ++i) {
const string& el = tflat(i);
out[i] = PyBytes_FromStringAndSize(el.data(), el.size());
@@ -339,7 +316,7 @@ Status ConvertTensorToNdarray(const Tensor& t, PyObject** ret) {
} else {
CHECK(DataTypeCanUseMemcpy(t.dtype()));
StringPiece p = t.tensor_data();
- memcpy(np_array->data, p.data(), p.size());
+ memcpy(PyArray_DATA(np_array), p.data(), p.size());
}
*ret = PyArray_Return(np_array);
return Status::OK();
diff --git a/tensorflow/python/lib/core/py_func.h b/tensorflow/python/lib/core/py_func.h
index ea4d563257..f34a3eda3d 100644
--- a/tensorflow/python/lib/core/py_func.h
+++ b/tensorflow/python/lib/core/py_func.h
@@ -16,11 +16,12 @@ limitations under the License.
#ifndef TENSORFLOW_PYTHON_LIB_CORE_PY_FUNC_H_
#define TENSORFLOW_PYTHON_LIB_CORE_PY_FUNC_H_
+// Must be included first
+#include "tensorflow/python/lib/core/numpy.h"
+
#include "tensorflow/core/framework/tensor.h"
#include "tensorflow/core/lib/core/status.h"
-#include <Python.h>
-
namespace tensorflow {
// Called by py code on initialization.
diff --git a/tensorflow/python/ops/array_ops.py b/tensorflow/python/ops/array_ops.py
index 78e10de933..30d2a6ed44 100644
--- a/tensorflow/python/ops/array_ops.py
+++ b/tensorflow/python/ops/array_ops.py
@@ -1817,6 +1817,112 @@ def _DepthToSpaceShape(op):
[input_shape[0], height, width, new_depth])]
+def one_hot(indices, depth, on_value=1, off_value=0,
+ axis=None, dtype=dtypes.float32, name=None):
+ """Returns a one-hot tensor.
+
+ The locations represented by indices in `indices` take value `on_value`,
+ while all other locations take value `off_value`. By default, `on_value` is 1,
+ and `off_value` is 0. The type of the output tensor is specified by `dtype`,
+ which defaults to `tf.float32`.
+
+ If the input `indices` is rank `N`, the output will have rank `N+1`. The
+ new axis is created at dimension `axis` (default: the new axis is appended
+ at the end).
+
+ If `indices` is a scalar the output shape will be a vector of length `depth`
+
+ If `indices` is a vector of length `features`, the output shape will be:
+ ```
+ features x depth if axis == -1
+ depth x features if axis == 0
+ ```
+
+ If `indices` is a matrix (batch) with shape `[batch, features]`, the output
+ shape will be:
+ ```
+ batch x features x depth if axis == -1
+ batch x depth x features if axis == 1
+ depth x batch x features if axis == 0
+ ```
+
+
+ Examples
+ =========
+
+ Suppose that
+
+ ```
+ indices = [0, 2, -1, 1]
+ depth = 3
+ on_value = 5.0
+ off_value = 0.0
+ axis = -1
+ ```
+
+ Then output is `[4 x 3]`:
+
+ ```
+ output =
+ [5.0 0.0 0.0] // one_hot(0)
+ [0.0 0.0 5.0] // one_hot(2)
+ [0.0 0.0 0.0] // one_hot(-1)
+ [0.0 5.0 0.0] // one_hot(1)
+ ```
+
+ Suppose that
+
+ ```
+ indices = [[0, 2], [1, -1]]
+ depth = 3
+ on_value = 1.0
+ off_value = 0.0
+ axis = -1
+ ```
+
+ Then output is `[2 x 2 x 3]`:
+
+ ```
+ output =
+ [
+ [1.0, 0.0, 0.0] // one_hot(0)
+ [0.0, 0.0, 1.0] // one_hot(2)
+ ][
+ [0.0, 1.0, 0.0] // one_hot(1)
+ [0.0, 0.0, 0.0] // one_hot(-1)
+ ]
+ ```
+
+ Args:
+ indices: A `Tensor` of indices.
+ depth: A scalar defining the depth of the one hot dimension.
+ on_value: A scalar defining the value to fill in output when `indices[j]
+ = i`. (default: 1)
+ off_value: A scalar defining the value to fill in output when `indices[j]
+ != i`. (default: 0)
+ axis: The axis to fill (default: -1, a new inner-most axis).
+ dtype: The data type of the output tensor.
+
+ Returns:
+ output: The one-hot tensor.
+
+ Raises:
+ TypeError: If dtype is `tf.string`
+ """
+ # Check for bad dtype specification
+ if dtype == dtypes.string:
+ raise TypeError("dtype must be a numeric type")
+
+ with ops.op_scope([indices, depth, on_value, off_value,
+ axis, dtype], name, "one_hot") as name:
+ on_value = ops.convert_to_tensor(on_value, dtype=dtype, name="on_value")
+ off_value = ops.convert_to_tensor(off_value, dtype=dtype, name="off_value")
+ indices = ops.convert_to_tensor(indices, dtype=dtypes.int64, name="indices")
+ depth = ops.convert_to_tensor(depth, dtype=dtypes.int32, name="depth")
+ return gen_array_ops._one_hot(indices, depth, on_value,
+ off_value, axis, name)
+
+
@ops.RegisterShape("OneHot")
def _OneHotShape(op):
"""Shape function for the OneHot op.
diff --git a/tensorflow/python/ops/batch_norm_benchmark.py b/tensorflow/python/ops/batch_norm_benchmark.py
index 534de6ab0f..5cdaa7af05 100644
--- a/tensorflow/python/ops/batch_norm_benchmark.py
+++ b/tensorflow/python/ops/batch_norm_benchmark.py
@@ -37,7 +37,7 @@ def batch_norm_op(tensor, mean, variance, beta, gamma, scale):
# pylint: enable=protected-access
-# Note that the naive implementation is much much slower:
+# Note that the naive implementation is much slower:
# batch_norm = (tensor - mean) * tf.rsqrt(variance + 0.001)
# if scale:
# batch_norm *= gamma
diff --git a/tensorflow/python/ops/linalg_grad.py b/tensorflow/python/ops/linalg_grad.py
index 0b8f00fac2..92911009eb 100644
--- a/tensorflow/python/ops/linalg_grad.py
+++ b/tensorflow/python/ops/linalg_grad.py
@@ -78,7 +78,7 @@ def _BatchMatrixDeterminantGrad(op, grad):
@ops.RegisterGradient("Cholesky")
def _cholesky_grad(op, grad):
"""Gradient for Cholesky."""
- return linalg_ops.cholesky_grad( op.outputs[0] , grad )
+ return linalg_ops.cholesky_grad(op.outputs[0], grad)
@ops.RegisterGradient("MatrixSolve")
diff --git a/tensorflow/python/ops/sparse_ops.py b/tensorflow/python/ops/sparse_ops.py
index 214f0373b0..b3edbbf3f3 100644
--- a/tensorflow/python/ops/sparse_ops.py
+++ b/tensorflow/python/ops/sparse_ops.py
@@ -706,7 +706,7 @@ def sparse_merge(sp_ids, sp_values, vocab_size, name=None):
if ids.dtype != dtypes.int64:
ids = math_ops.cast(ids, dtypes.int64)
- # Slice off the last dimension of indices, then then tack on the ids
+ # Slice off the last dimension of indices, then tack on the ids
indices_columns_to_preserve = array_ops.slice(
sp_ids.indices, [0, 0], array_ops.pack([-1, rank - 1]))
new_indices = array_ops.concat(1, [indices_columns_to_preserve,
diff --git a/tensorflow/python/ops/variable_scope.py b/tensorflow/python/ops/variable_scope.py
index e929b33aba..e1e5ca1625 100644
--- a/tensorflow/python/ops/variable_scope.py
+++ b/tensorflow/python/ops/variable_scope.py
@@ -950,7 +950,7 @@ def variable_op_scope(values, name_or_scope, default_name=None,
"""Returns a context manager for defining an op that creates variables.
This context manager validates that the given `values` are from the
- same graph, ensures that that graph is the default graph, and pushes a
+ same graph, ensures that graph is the default graph, and pushes a
name scope and a variable scope.
If `name_or_scope` is not None, it is used as is in the variable scope. If
diff --git a/tensorflow/python/platform/numpy.i b/tensorflow/python/platform/numpy.i
index e58090e610..955b42fb99 100644
--- a/tensorflow/python/platform/numpy.i
+++ b/tensorflow/python/platform/numpy.i
@@ -506,7 +506,7 @@
return success;
}
- /* Require the given PyArrayObject to to be Fortran ordered. If the
+ /* Require the given PyArrayObject to be Fortran ordered. If the
* the PyArrayObject is already Fortran ordered, do nothing. Else,
* set the Fortran ordering flag and recompute the strides.
*/
diff --git a/tensorflow/python/training/adadelta.py b/tensorflow/python/training/adadelta.py
index fb28248df2..a1cf625ef8 100644
--- a/tensorflow/python/training/adadelta.py
+++ b/tensorflow/python/training/adadelta.py
@@ -29,7 +29,7 @@ class AdadeltaOptimizer(optimizer.Optimizer):
"""Optimizer that implements the Adadelta algorithm.
See [M. D. Zeiler](http://arxiv.org/abs/1212.5701)
- ([pdf](http://arxiv.org/pdf/1212.570.pdf))
+ ([pdf](http://arxiv.org/pdf/1212.5701.pdf))
@@__init__
"""
diff --git a/tensorflow/python/training/session_manager.py b/tensorflow/python/training/session_manager.py
index d418604499..6dc9541a6b 100644
--- a/tensorflow/python/training/session_manager.py
+++ b/tensorflow/python/training/session_manager.py
@@ -145,7 +145,7 @@ class SessionManager(object):
Args:
master: `String` representation of the TensorFlow master to use.
- init_op: Optional `Operation` used to to initialize the model.
+ init_op: Optional `Operation` used to initialize the model.
saver: A `Saver` object used to restore a model.
checkpoint_dir: Path to the checkpoint files.
wait_for_checkpoint: Whether to wait for checkpoint to become available.
diff --git a/tensorflow/python/training/supervisor.py b/tensorflow/python/training/supervisor.py
index 676209ccac..1fc538eef1 100644
--- a/tensorflow/python/training/supervisor.py
+++ b/tensorflow/python/training/supervisor.py
@@ -587,7 +587,7 @@ class Supervisor(object):
on the parameters to the constructor and may include:
- A Summary thread computing summaries every save_summaries_secs.
- - A Checkpoint thread saving the model every every save_model_secs.
+ - A Checkpoint thread saving the model every save_model_secs.
- A StepCounter thread measure step time.
Args:
diff --git a/tensorflow/stream_executor/cuda/cuda_diagnostics.cc b/tensorflow/stream_executor/cuda/cuda_diagnostics.cc
index 87dd42063c..f24bedc61d 100644
--- a/tensorflow/stream_executor/cuda/cuda_diagnostics.cc
+++ b/tensorflow/stream_executor/cuda/cuda_diagnostics.cc
@@ -17,13 +17,18 @@ limitations under the License.
#include <dirent.h>
#include <limits.h>
-#include <link.h>
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#ifdef __APPLE__
+#include <IOKit/kext/KextManager.h>
+#include <mach-o/dyld.h>
+#else
+#include <link.h>
#include <sys/stat.h>
#include <sys/sysmacros.h>
+#endif
#include <unistd.h>
#include <algorithm>
#include <memory>
@@ -45,10 +50,15 @@ namespace perftools {
namespace gputools {
namespace cuda {
+#ifdef __APPLE__
+static const CFStringRef kDriverKextIdentifier = CFSTR("com.nvidia.CUDA");
+#else
static const char *kDriverVersionPath = "/proc/driver/nvidia/version";
+#endif
+
string DriverVersionToString(DriverVersion version) {
- return port::Printf("%d.%d", std::get<0>(version), std::get<1>(version));
+ return port::Printf("%d.%d.%d", std::get<0>(version), std::get<1>(version), std::get<2>(version));
}
string DriverVersionStatusToString(port::StatusOr<DriverVersion> version) {
@@ -61,15 +71,16 @@ string DriverVersionStatusToString(port::StatusOr<DriverVersion> version) {
port::StatusOr<DriverVersion> StringToDriverVersion(const string &value) {
std::vector<string> pieces = port::Split(value, '.');
- if (pieces.size() != 2) {
+ if (pieces.size() != 2 && pieces.size() != 3) {
return port::Status{
port::error::INVALID_ARGUMENT,
- port::Printf("expected %%d.%%d form for driver version; got \"%s\"",
+ port::Printf("expected %%d.%%d or %%d.%%d.%%d form for driver version; got \"%s\"",
value.c_str())};
}
int major;
int minor;
+ int patch = 0;
if (!port::safe_strto32(pieces[0], &major)) {
return port::Status{
port::error::INVALID_ARGUMENT,
@@ -84,8 +95,15 @@ port::StatusOr<DriverVersion> StringToDriverVersion(const string &value) {
"integer from string \"%s\"",
pieces[1].c_str(), value.c_str())};
}
+ if (pieces.size() == 3 && !port::safe_strto32(pieces[2], &patch)) {
+ return port::Status{
+ port::error::INVALID_ARGUMENT,
+ port::Printf("could not parse patch version number \"%s\" as an "
+ "integer from string \"%s\"",
+ pieces[2].c_str(), value.c_str())};
+ }
- DriverVersion result{major, minor};
+ DriverVersion result{major, minor, patch};
VLOG(2) << "version string \"" << value << "\" made value "
<< DriverVersionToString(result);
return result;
@@ -98,6 +116,26 @@ string Diagnostician::GetDevNodePath(int dev_node_ordinal) {
}
void Diagnostician::LogDiagnosticInformation() {
+#ifdef __APPLE__
+ CFStringRef kext_ids[1];
+ kext_ids[0] = kDriverKextIdentifier;
+ CFArrayRef kext_id_query = CFArrayCreate(nullptr, (const void**)kext_ids, 1, &kCFTypeArrayCallBacks);
+ CFDictionaryRef kext_infos = KextManagerCopyLoadedKextInfo(kext_id_query, nullptr);
+ CFRelease(kext_id_query);
+
+ CFDictionaryRef cuda_driver_info = nullptr;
+ if (CFDictionaryGetValueIfPresent(kext_infos, kDriverKextIdentifier, (const void**)&cuda_driver_info)) {
+ bool started = CFBooleanGetValue((CFBooleanRef)CFDictionaryGetValue(cuda_driver_info, CFSTR("OSBundleStarted")));
+ if (!started) {
+ LOG(INFO) << "kernel driver is installed, but does not appear to be running on this host "
+ << "(" << port::Hostname() << ")";
+ }
+ } else {
+ LOG(INFO) << "kernel driver does not appear to be installed on this host "
+ << "(" << port::Hostname() << ")";
+ }
+ CFRelease(kext_infos);
+#else
if (access(kDriverVersionPath, F_OK) != 0) {
LOG(INFO) << "kernel driver does not appear to be running on this host "
<< "(" << port::Hostname() << "): "
@@ -110,6 +148,7 @@ void Diagnostician::LogDiagnosticInformation() {
<< " does not exist";
return;
}
+#endif
LOG(INFO) << "retrieving CUDA diagnostic information for host: "
<< port::Hostname();
@@ -149,9 +188,13 @@ void Diagnostician::LogDiagnosticInformation() {
port::StatusOr<DriverVersion> kernel_version = FindKernelDriverVersion();
LOG(INFO) << "kernel reported version is: "
<< DriverVersionStatusToString(kernel_version);
+
+ // OS X kernel driver does not report version accurately
+#if !defined(__APPLE__)
if (kernel_version.ok() && dso_version.ok()) {
WarnOnDsoKernelMismatch(dso_version, kernel_version);
}
+#endif
}
// Iterates through loaded DSOs with DlIteratePhdrCallback to find the
@@ -161,6 +204,29 @@ port::StatusOr<DriverVersion> Diagnostician::FindDsoVersion() {
port::error::NOT_FOUND,
"was unable to find libcuda.so DSO loaded into this program"}};
+#if defined(__APPLE__)
+ // OSX CUDA libraries have names like: libcuda_310.41.15_mercury.dylib
+ const string prefix("libcuda_");
+ const string suffix("_mercury.dylib");
+ for (uint32_t image_index = 0; image_index < _dyld_image_count(); ++image_index) {
+ const string path(_dyld_get_image_name(image_index));
+ const size_t suffix_pos = path.rfind(suffix);
+ const size_t prefix_pos = path.rfind(prefix, suffix_pos);
+ if (prefix_pos == string::npos ||
+ suffix_pos == string::npos) {
+ // no match
+ continue;
+ }
+ const size_t start = prefix_pos + prefix.size();
+ if (start >= suffix_pos) {
+ // version not included
+ continue;
+ }
+ const size_t length = suffix_pos - start;
+ const string version = path.substr(start, length);
+ result = StringToDriverVersion(version);
+ }
+#else
// Callback used when iterating through DSOs. Looks for the driver-interfacing
// DSO and yields its version number into the callback data, when found.
auto iterate_phdr =
@@ -192,6 +258,7 @@ port::StatusOr<DriverVersion> Diagnostician::FindDsoVersion() {
};
dl_iterate_phdr(iterate_phdr, &result);
+#endif
return result;
}
@@ -236,6 +303,29 @@ void Diagnostician::WarnOnDsoKernelMismatch(
port::StatusOr<DriverVersion> Diagnostician::FindKernelDriverVersion() {
+#if defined(__APPLE__)
+ CFStringRef kext_ids[1];
+ kext_ids[0] = kDriverKextIdentifier;
+ CFArrayRef kext_id_query = CFArrayCreate(nullptr, (const void**)kext_ids, 1, &kCFTypeArrayCallBacks);
+ CFDictionaryRef kext_infos = KextManagerCopyLoadedKextInfo(kext_id_query, nullptr);
+ CFRelease(kext_id_query);
+
+ CFDictionaryRef cuda_driver_info = nullptr;
+ if (CFDictionaryGetValueIfPresent(kext_infos, kDriverKextIdentifier, (const void**)&cuda_driver_info)) {
+ // NOTE: OSX CUDA driver does not currently store the same driver version
+ // in kCFBundleVersionKey as is returned by cuDriverGetVersion
+ const char * version = CFStringGetCStringPtr((CFStringRef)CFDictionaryGetValue(cuda_driver_info, kCFBundleVersionKey), kCFStringEncodingUTF8);
+ CFRelease(kext_infos);
+ return StringToDriverVersion(version);
+ }
+ CFRelease(kext_infos);
+ auto status =
+ port::Status{port::error::INTERNAL,
+ port::StrCat("failed to read driver bundle version: ",
+ CFStringGetCStringPtr(kDriverKextIdentifier, kCFStringEncodingUTF8))
+ };
+ return status;
+#else
FILE *driver_version_file = fopen(kDriverVersionPath, "r");
if (driver_version_file == nullptr) {
return port::Status{
@@ -267,6 +357,7 @@ port::StatusOr<DriverVersion> Diagnostician::FindKernelDriverVersion() {
ferror(driver_version_file))};
fclose(driver_version_file);
return status;
+#endif
}
diff --git a/tensorflow/stream_executor/cuda/cuda_diagnostics.h b/tensorflow/stream_executor/cuda/cuda_diagnostics.h
index 42336c337f..e98d32f286 100644
--- a/tensorflow/stream_executor/cuda/cuda_diagnostics.h
+++ b/tensorflow/stream_executor/cuda/cuda_diagnostics.h
@@ -26,8 +26,8 @@ namespace perftools {
namespace gputools {
namespace cuda {
-// e.g. DriverVersion{331, 79}
-using DriverVersion = std::tuple<int, int>;
+// e.g. DriverVersion{346, 3, 4}
+using DriverVersion = std::tuple<int, int, int>;
// Converts a parsed driver version to string form.
string DriverVersionToString(DriverVersion version);
@@ -72,8 +72,6 @@ class Diagnostician {
static void LogDriverVersionInformation();
private:
- // Logs information about the loaded nvidia-related kernel modules.
- static void LogKernelModuleInformation();
// Given the DSO version number and the driver version file contents, extracts
// the driver version and compares, warning the user in the case of
diff --git a/tensorflow/stream_executor/cuda/cuda_dnn.cc b/tensorflow/stream_executor/cuda/cuda_dnn.cc
index b59e988212..fbaa42effb 100644
--- a/tensorflow/stream_executor/cuda/cuda_dnn.cc
+++ b/tensorflow/stream_executor/cuda/cuda_dnn.cc
@@ -211,9 +211,9 @@ CUDNN_DNN_ROUTINE_EACH_R2(PERFTOOLS_GPUTOOLS_CUDNN_WRAP)
#if CUDNN_VERSION >= 3000
#define CUDNN_DNN_ROUTINE_EACH_AFTER_R3(__macro) \
__macro(cudnnGetConvolutionBackwardFilterWorkspaceSize) \
- __macro(cudnnGetConvolutionBackwardDataAlgorithm) \
- __macro(cudnnGetConvolutionBackwardFilterAlgorithm) \
- __macro(cudnnGetConvolutionBackwardDataWorkspaceSize)
+ __macro(cudnnGetConvolutionBackwardDataAlgorithm) \
+ __macro(cudnnGetConvolutionBackwardFilterAlgorithm) \
+ __macro(cudnnGetConvolutionBackwardDataWorkspaceSize)
CUDNN_DNN_ROUTINE_EACH_AFTER_R3(PERFTOOLS_GPUTOOLS_CUDNN_WRAP)
#undef CUDNN_DNN_ROUTINE_EACH_AFTER_R3
#endif
@@ -271,6 +271,22 @@ port::Status CudnnSupport::Init() {
auto status = dynload::cudnnCreate(
parent_, reinterpret_cast<cudnnHandle_t*>(&dnn_handle_));
if (status == CUDNN_STATUS_SUCCESS) {
+ // Check whether loaded version of CuDNN matches what the source
+ // was built with.
+ size_t loaded_version = dynload::cudnnGetVersion();
+ bool library_loaded_matches_source = (loaded_version == CUDNN_VERSION);
+ if (!library_loaded_matches_source) {
+ const string error =
+ port::StrCat("Loaded cudnn library: ", loaded_version,
+ " but source was compiled against ", CUDNN_VERSION,
+ ". If using a binary install, upgrade your cudnn "
+ "library to match. If building from sources, "
+ "make sure the library loaded matches the "
+ "version you specified during compile configuration.");
+ LOG(ERROR) << error;
+ return port::Status{port::error::INTERNAL, error};
+ }
+
return port::Status::OK();
}
@@ -286,12 +302,16 @@ port::Status CudnnSupport::Init() {
} else {
const auto& version = result.ValueOrDie();
LOG(INFO) << "running driver version: " << DriverVersionToString(version);
+ // OS X kernel driver does not report version accurately
+#if !defined(__APPLE__)
if (std::get<0>(version) < 340) {
LOG(ERROR)
<< "cudnn library is only supported on 340.XX+ driver versions";
}
+#endif
}
}
+
return port::Status{port::error::INTERNAL,
port::StrCat("cudnn library could not create a handle: ",
ToString(status))};
@@ -377,28 +397,14 @@ class ScopedFilterDescriptor {
<< ToString(status);
}
-#if CUDNN_VERSION >= 5000
- cudnnTensorFormat_t format;
- switch (batch_descriptor.layout()) {
- case dnn::DataLayout::kBatchYXDepth:
- format = CUDNN_TENSOR_NHWC;
- break;
- case dnn::DataLayout::kBatchDepthYX:
- format = CUDNN_TENSOR_NCHW;
- break;
- default:
- LOG(FATAL) << "Unsupported tensor format "
- << DataLayoutString(batch_descriptor.layout());
- break;
- }
-#endif
-
// TODO(b/23032134): Even if the filter layout is not supported,
- // cudnnSetFilter4DDescriptor will return CUDNN_STATUS_SUCCESS because it
+ // cudnnSetFilter4DDescriptor_v4 will return CUDNN_STATUS_SUCCESS because it
// does not take layout as an input. Maybe force cuDNN by giving wrong
// inputs intentionally?
+ cudnnTensorFormat_t format;
switch (filter_descriptor.layout()) {
case dnn::FilterLayout::kOutputInputYX:
+ format = CUDNN_TENSOR_NCHW;
break;
default:
LOG(FATAL) << "Unsupported filter format "
@@ -569,7 +575,8 @@ class ScopedPoolingDescriptor {
class ScopedActivationDescriptor {
public:
ScopedActivationDescriptor(CUDAExecutor* parent,
- dnn::ActivationMode activation_mode)
+ dnn::ActivationMode activation_mode,
+ double value_max)
: parent_(parent), handle_(nullptr) {
cudnnStatus_t status =
dynload::cudnnCreateActivationDescriptor(parent_, &handle_);
@@ -583,12 +590,11 @@ class ScopedActivationDescriptor {
switch (activation_mode) {
case dnn::ActivationMode::kRelu6:
relu_ceiling = 6.0;
- mode = CUDNN_ACTIVATION_RELU;
+ mode = CUDNN_ACTIVATION_CLIPPED_RELU;
break;
case dnn::ActivationMode::kReluX:
- // TODO(leary) should probably do a post-pass to clip at X?
- LOG(WARNING) << "user requested ReluX, but providing Relu instead";
- mode = CUDNN_ACTIVATION_RELU;
+ relu_ceiling = value_max;
+ mode = CUDNN_ACTIVATION_CLIPPED_RELU;
break;
case dnn::ActivationMode::kRelu:
mode = CUDNN_ACTIVATION_RELU;
@@ -607,7 +613,8 @@ class ScopedActivationDescriptor {
// Always propagate nans.
cudnnNanPropagation_t nan_propagation = CUDNN_PROPAGATE_NAN;
status = dynload::cudnnSetActivationDescriptor(
- parent_, handle_, mode, nan_propagation, relu_ceiling);
+ parent_, handle_,
+ mode, nan_propagation, relu_ceiling);
if (status != CUDNN_STATUS_SUCCESS) {
LOG(FATAL) << "could not set cudnn activation descriptor: "
<< ToString(status);
@@ -1282,7 +1289,8 @@ bool CudnnSupport::DoActivate(Stream* stream,
}
#if CUDNN_VERSION >= 5000
- ScopedActivationDescriptor activation_desc{parent_, activation_mode};
+ ScopedActivationDescriptor activation_desc{parent_, activation_mode,
+ dimensions.value_max()};
#else
cudnnActivationMode_t mode;
switch (activation_mode) {
diff --git a/tensorflow/stream_executor/cuda/cuda_gpu_executor.cc b/tensorflow/stream_executor/cuda/cuda_gpu_executor.cc
index d10405614d..f4b31ad304 100644
--- a/tensorflow/stream_executor/cuda/cuda_gpu_executor.cc
+++ b/tensorflow/stream_executor/cuda/cuda_gpu_executor.cc
@@ -15,6 +15,9 @@ limitations under the License.
#include "tensorflow/stream_executor/cuda/cuda_gpu_executor.h"
+#if defined(__APPLE__)
+#include <mach-o/dyld.h>
+#endif
#include <unistd.h>
#include "tensorflow/stream_executor/cuda/cuda_diagnostics.h"
@@ -194,7 +197,15 @@ bool CUDAExecutor::FindOnDiskForComputeCapability(
// would return /usr/bin.
static string GetBinaryDir(bool strip_exe) {
char exe_path[PATH_MAX] = {0};
- CHECK_ERR(readlink("/proc/self/exe", exe_path, sizeof(exe_path) - 1));
+#if defined(__APPLE__)
+ uint32_t buffer_size = 0U;
+ _NSGetExecutablePath(nullptr, &buffer_size);
+ char unresolved_path[buffer_size];
+ _NSGetExecutablePath(unresolved_path, &buffer_size);
+ CHECK_ERR(realpath(unresolved_path, exe_path) ? 1 : -1);
+#else
+ CHECK_ERR(readlink("/proc/self/exe", exe_path, sizeof(exe_path) - 1));
+#endif
// Make sure it's null-terminated:
exe_path[sizeof(exe_path) - 1] = 0;
@@ -860,6 +871,10 @@ CUcontext CUDAExecutor::cuda_context() { return context_; }
// For anything more complicated/prod-focused than this, you'll likely want to
// turn to gsys' topology modeling.
static int TryToReadNumaNode(const string &pci_bus_id, int device_ordinal) {
+#if defined(__APPLE__)
+ LOG(INFO) << "OS X does not support NUMA - returning NUMA node zero";
+ return 0;
+#else
VLOG(2) << "trying to read NUMA node for device ordinal: " << device_ordinal;
static const int kUnknownNumaNode = -1;
@@ -902,6 +917,7 @@ static int TryToReadNumaNode(const string &pci_bus_id, int device_ordinal) {
<< content;
return kUnknownNumaNode;
+#endif
}
// Set of compute capability specific device parameters that cannot be
diff --git a/tensorflow/stream_executor/cuda/cuda_helpers.h b/tensorflow/stream_executor/cuda/cuda_helpers.h
index c52516c589..9ac50ed77a 100644
--- a/tensorflow/stream_executor/cuda/cuda_helpers.h
+++ b/tensorflow/stream_executor/cuda/cuda_helpers.h
@@ -44,7 +44,7 @@ const T *CUDAMemory(const DeviceMemory<T> &mem) {
}
// Converts a (non-const) DeviceMemory pointer reference to its underlying typed
-// pointer in CUDA device device memory.
+// pointer in CUDA device memory.
template <typename T>
T *CUDAMemoryMutable(DeviceMemory<T> *mem) {
return static_cast<T *>(mem->opaque());
diff --git a/tensorflow/stream_executor/dso_loader.cc b/tensorflow/stream_executor/dso_loader.cc
index caf10a9003..bf7faef209 100644
--- a/tensorflow/stream_executor/dso_loader.cc
+++ b/tensorflow/stream_executor/dso_loader.cc
@@ -17,12 +17,15 @@ limitations under the License.
#include <dlfcn.h>
#include <limits.h>
+#if defined(__APPLE__)
+#include <mach-o/dyld.h>
+#endif
#include <stdlib.h>
#include <unistd.h>
#include <initializer_list>
-#include "tensorflow/stream_executor/platform/port.h"
#include <vector>
+#include "tensorflow/core/platform/load_library.h"
#include "tensorflow/stream_executor/lib/error.h"
#include "tensorflow/stream_executor/lib/str_util.h"
#include "tensorflow/stream_executor/lib/strcat.h"
@@ -41,8 +44,8 @@ string GetCudaVersion() { return ""; }
string GetCudnnVersion() { return ""; }
/* static */ port::Status DsoLoader::GetCublasDsoHandle(void** dso_handle) {
- return GetDsoHandle(FindDsoPath("libcublas.so" + GetCudaVersion(),
- "third_party/gpus/cuda/lib64"),
+ return GetDsoHandle(FindDsoPath(tensorflow::internal::FormatLibraryFileName("cublas", GetCudaVersion()),
+ GetCudaLibraryDirPath()),
dso_handle);
}
@@ -51,33 +54,33 @@ string GetCudnnVersion() { return ""; }
// different version number than other CUDA libraries. See b/22397368 for
// some details about the complications surrounding this.
return GetDsoHandle(
- FindDsoPath("libcudnn.so" + GetCudnnVersion(),
- "third_party/gpus/cuda/lib64"),
- dso_handle);
+ FindDsoPath(tensorflow::internal::FormatLibraryFileName("cudnn", GetCudnnVersion()),
+ GetCudaLibraryDirPath()),
+ dso_handle);
}
/* static */ port::Status DsoLoader::GetCufftDsoHandle(void** dso_handle) {
- return GetDsoHandle(FindDsoPath("libcufft.so" + GetCudaVersion(),
- "third_party/gpus/cuda/lib64"),
+ return GetDsoHandle(FindDsoPath(tensorflow::internal::FormatLibraryFileName("cufft", GetCudaVersion()),
+ GetCudaLibraryDirPath()),
dso_handle);
}
/* static */ port::Status DsoLoader::GetCurandDsoHandle(void** dso_handle) {
- return GetDsoHandle(FindDsoPath("libcurand.so" + GetCudaVersion(),
- "third_party/gpus/cuda/lib64"),
+ return GetDsoHandle(FindDsoPath(tensorflow::internal::FormatLibraryFileName("curand", GetCudaVersion()),
+ GetCudaLibraryDirPath()),
dso_handle);
}
/* static */ port::Status DsoLoader::GetLibcudaDsoHandle(void** dso_handle) {
- return GetDsoHandle(
- FindDsoPath("libcuda.so.1", "third_party/gpus/cuda/driver/lib64"),
- dso_handle);
+ return GetDsoHandle(FindDsoPath(tensorflow::internal::FormatLibraryFileName("cuda", ""),
+ GetCudaDriverLibraryPath()),
+ dso_handle);
}
/* static */ port::Status DsoLoader::GetLibcuptiDsoHandle(void** dso_handle) {
return GetDsoHandle(
- FindDsoPath("libcupti.so" + GetCudaVersion(),
- "third_party/gpus/cuda/extras/CUPTI/lib64"),
+ FindDsoPath(tensorflow::internal::FormatLibraryFileName("cupti", GetCudaVersion()),
+ GetCudaCuptiLibraryPath()),
dso_handle);
}
@@ -109,7 +112,15 @@ string GetCudnnVersion() { return ""; }
/* static */ string DsoLoader::GetBinaryDirectory(bool strip_executable_name) {
char exe_path[PATH_MAX] = {0};
+#ifdef __APPLE__
+ uint32_t buffer_size(0U);
+ _NSGetExecutablePath(nullptr, &buffer_size);
+ char unresolved_path[buffer_size];
+ _NSGetExecutablePath(unresolved_path, &buffer_size);
+ CHECK_ERR(realpath(unresolved_path, exe_path) ? 1 : -1);
+#else
CHECK_ERR(readlink("/proc/self/exe", exe_path, sizeof(exe_path) - 1));
+#endif
// Make sure it's null-terminated:
exe_path[sizeof(exe_path) - 1] = 0;
@@ -126,8 +137,11 @@ string GetCudnnVersion() { return ""; }
// Ownership is transferred to the caller.
static std::vector<string>* CreatePrimordialRpaths() {
auto rpaths = new std::vector<string>;
- rpaths->push_back(
- "driver/driver_sh.runfiles/third_party/gpus/cuda/lib64");
+#if defined(__APPLE__)
+ rpaths->push_back("driver/driver_sh.runfiles/third_party/gpus/cuda/lib");
+#else
+ rpaths->push_back("driver/driver_sh.runfiles/third_party/gpus/cuda/lib64");
+#endif
return rpaths;
}
@@ -175,6 +189,31 @@ static std::vector<string>* CreatePrimordialRpaths() {
return library_name.ToString();
}
+/* static */ string DsoLoader::GetCudaLibraryDirPath() {
+#if defined(__APPLE__)
+ return "third_party/gpus/cuda/lib";
+#else
+ return "third_party/gpus/cuda/lib64";
+#endif
+}
+
+/* static */ string DsoLoader::GetCudaDriverLibraryPath() {
+#if defined(__APPLE__)
+ return "third_party/gpus/cuda/driver/lib";
+#else
+ return "third_party/gpus/cuda/driver/lib64";
+#endif
+}
+
+/* static */ string DsoLoader::GetCudaCuptiLibraryPath() {
+#if defined(__APPLE__)
+ return "third_party/gpus/cuda/extras/CUPTI/lib";
+#else
+ return "third_party/gpus/cuda/extras/CUPTI/lib64";
+#endif
+}
+
+
// -- CachedDsoLoader
/* static */ port::StatusOr<void*> CachedDsoLoader::GetCublasDsoHandle() {
diff --git a/tensorflow/stream_executor/dso_loader.h b/tensorflow/stream_executor/dso_loader.h
index ba1690c320..2afbc294df 100644
--- a/tensorflow/stream_executor/dso_loader.h
+++ b/tensorflow/stream_executor/dso_loader.h
@@ -91,6 +91,11 @@ class DsoLoader {
static string FindDsoPath(port::StringPiece library_name,
port::StringPiece runfiles_relpath);
+ // Return platform dependent paths for DSOs
+ static string GetCudaLibraryDirPath();
+ static string GetCudaDriverLibraryPath();
+ static string GetCudaCuptiLibraryPath();
+
SE_DISALLOW_COPY_AND_ASSIGN(DsoLoader);
};
diff --git a/tensorflow/stream_executor/lib/static_threadlocal.h b/tensorflow/stream_executor/lib/static_threadlocal.h
index 7098da3453..25d97ae000 100644
--- a/tensorflow/stream_executor/lib/static_threadlocal.h
+++ b/tensorflow/stream_executor/lib/static_threadlocal.h
@@ -18,7 +18,7 @@ limitations under the License.
// For POD types in TLS mode, s_obj_VAR is the thread-local variable.
#define SE_STATIC_THREAD_LOCAL_POD(_Type_, _var_) \
- static thread_local _Type_ s_obj_##_var_; \
+ static __thread _Type_ s_obj_##_var_; \
namespace { \
class ThreadLocal_##_var_ { \
public: \
diff --git a/tensorflow/stream_executor/lib/statusor.h b/tensorflow/stream_executor/lib/statusor.h
index d9b7787e30..bbaa385a62 100644
--- a/tensorflow/stream_executor/lib/statusor.h
+++ b/tensorflow/stream_executor/lib/statusor.h
@@ -110,7 +110,7 @@ class StatusOr {
//
// NOTE: Not explicit - we want to use StatusOr<T> as a return type
// so it is convenient and sensible to be able to do 'return T()'
- // when when the return type is StatusOr<T>.
+ // when the return type is StatusOr<T>.
//
// REQUIRES: if T is a plain pointer, value != NULL.
// In optimized builds, passing a NULL pointer here will have
diff --git a/tensorflow/tensorboard/components/tf-graph-common/lib/graph.ts b/tensorflow/tensorboard/components/tf-graph-common/lib/graph.ts
index d27de477ba..066522f500 100644
--- a/tensorflow/tensorboard/components/tf-graph-common/lib/graph.ts
+++ b/tensorflow/tensorboard/components/tf-graph-common/lib/graph.ts
@@ -896,7 +896,7 @@ export function build(rawNodes: tf.TFNode[], params: BuildParams,
_.each(opNodes, opNode => {
let normalizedName = normalizedNameDict[opNode.name] || opNode.name;
graph.nodes[normalizedName] = opNode;
- // Check if the node has out-embeddings. If yes, add them to to the
+ // Check if the node has out-embeddings. If yes, add them to the
// node.
if (opNode.name in outEmbeddings) {
opNode.outEmbeddings = outEmbeddings[opNode.name];
diff --git a/tensorflow/tensorboard/components/tf-graph-common/lib/hierarchy.ts b/tensorflow/tensorboard/components/tf-graph-common/lib/hierarchy.ts
index 1624c07b0a..5723899596 100644
--- a/tensorflow/tensorboard/components/tf-graph-common/lib/hierarchy.ts
+++ b/tensorflow/tensorboard/components/tf-graph-common/lib/hierarchy.ts
@@ -199,7 +199,7 @@ class HierarchyImpl implements Hierarchy {
*
* Continuing this example, say there was another BaseEdge A/K->Z/Y/W. When
* we look at Z/Y's predecessors, the best we can say is ['A'] without getting
- * into the details of which of of Z/Y's descendant nodes have predecessors to
+ * into the details of which of Z/Y's descendant nodes have predecessors to
* which of A's descendants.
*
* On the other hand, for an OpNode it's clear what the final predecessors
diff --git a/tensorflow/tensorboard/components/tf-graph-common/lib/layout.ts b/tensorflow/tensorboard/components/tf-graph-common/lib/layout.ts
index 3d7e97f956..ac39ab54da 100644
--- a/tensorflow/tensorboard/components/tf-graph-common/lib/layout.ts
+++ b/tensorflow/tensorboard/components/tf-graph-common/lib/layout.ts
@@ -588,7 +588,7 @@ function layoutAnnotation(renderNodeInfo: render.RenderNodeInfo): void {
a.labelOffset = params.labelOffset;
});
- // Calculate annotation node position position (a.dx, a.dy)
+ // Calculate annotation node position (a.dx, a.dy)
// and total height for out-annotations
// After this chunk of code:
// outboxHeight = sum of annotation heights +
diff --git a/tensorflow/tensorboard/dist/tf-tensorboard.html b/tensorflow/tensorboard/dist/tf-tensorboard.html
index a253b800cb..75bc976785 100644
--- a/tensorflow/tensorboard/dist/tf-tensorboard.html
+++ b/tensorflow/tensorboard/dist/tf-tensorboard.html
@@ -3833,7 +3833,7 @@ var tf;
_.each(opNodes, function (opNode) {
var normalizedName = normalizedNameDict[opNode.name] || opNode.name;
graph.nodes[normalizedName] = opNode;
- // Check if the node has out-embeddings. If yes, add them to to the
+ // Check if the node has out-embeddings. If yes, add them to the
// node.
if (opNode.name in outEmbeddings) {
opNode.outEmbeddings = outEmbeddings[opNode.name];
@@ -4484,7 +4484,7 @@ var tf;
*
* Continuing this example, say there was another BaseEdge A/K->Z/Y/W. When
* we look at Z/Y's predecessors, the best we can say is ["A"] without getting
- * into the details of which of of Z/Y's descendant nodes have predecessors to
+ * into the details of which of Z/Y's descendant nodes have predecessors to
* which of A's descendants.
*
* On the other hand, for an OpNode it's clear what the final predecessors
@@ -8645,7 +8645,7 @@ var tf;
a.dy -= inboxHeight / 2;
a.labelOffset = params.labelOffset;
});
- // Calculate annotation node position position (a.dx, a.dy)
+ // Calculate annotation node position (a.dx, a.dy)
// and total height for out-annotations
// After this chunk of code:
// outboxHeight = sum of annotation heights +
diff --git a/tensorflow/tensorboard/http_api.md b/tensorflow/tensorboard/http_api.md
index fef03a6031..115a6a409a 100644
--- a/tensorflow/tensorboard/http_api.md
+++ b/tensorflow/tensorboard/http_api.md
@@ -331,7 +331,7 @@ if the process had to restart from a previous checkpoint).
The returned values may be downsampled using reservoir sampling, which is
configurable by the TensorBoard server. When downsampling occurs, the server
guarantees that different tags will all sample at the same sequence of indices,
-so that if if there are two tags `A` and `B` which are related so that `A[i] ~
+so that if there are two tags `A` and `B` which are related so that `A[i] ~
B[i]` for all `i`, then `D(A)[i] ~ D(B)[i]` for all `i`, where `D` represents
the downsampling operation.
diff --git a/tensorflow/tensorflow.bzl b/tensorflow/tensorflow.bzl
index 508db022a9..8c92443d11 100644
--- a/tensorflow/tensorflow.bzl
+++ b/tensorflow/tensorflow.bzl
@@ -9,10 +9,10 @@ def _parse_bazel_version(bazel_version):
# as a tuple of integers.
parts = version.split('-', 1)
- # Turn "release" into a tuple of integers
+ # Turn "release" into a tuple of strings
version_tuple = ()
for number in parts[0].split('.'):
- version_tuple += (int(number),)
+ version_tuple += (str(number),)
return version_tuple
# Check that a specific bazel version is being used.
diff --git a/tensorflow/tools/ci_build/README.md b/tensorflow/tools/ci_build/README.md
index 65e171abe9..128412ab66 100644
--- a/tensorflow/tools/ci_build/README.md
+++ b/tensorflow/tools/ci_build/README.md
@@ -14,7 +14,7 @@ run continuous integration [ci.tensorflow.org](http://ci.tensorflow.org).
You can run all the jobs **without docker** if you are on mac or on linux
and you just don't want docker. Just install all the dependencies from
[os_setup.md](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/g3doc/get_started/os_setup.md).
- Then run any of the one liners bellow without the
+ Then run any of the one liners below without the
`tensorflow/tools/ci_build/ci_build.sh` in them.
2. Clone tensorflow repository.
diff --git a/tensorflow/tools/ci_build/ci_parameterized_build.sh b/tensorflow/tools/ci_build/ci_parameterized_build.sh
index 1d04e0606b..605cd10d47 100755
--- a/tensorflow/tools/ci_build/ci_parameterized_build.sh
+++ b/tensorflow/tools/ci_build/ci_parameterized_build.sh
@@ -38,6 +38,12 @@
# TF_BUILD_APPEND_ARGUMENTS:
# Additional command line arguments for the bazel,
# pip.sh or android.sh command
+# TF_BUILD_MAVX:
+# (unset | MAVX | MAVX2)
+# If set to MAVX or MAVX2, will cause bazel to use the
+# additional flag --copt=-mavx or --copt=-mavx2, to
+# perform AVX or AVX2 builds, respectively. This requires
+# AVX- or AVX2-compatible CPUs.
# TF_BUILD_BAZEL_TARGET:
# Used to override the default bazel build target:
# //tensorflow/...
@@ -124,6 +130,10 @@ TF_BUILD_PYTHON_VERSION=$(to_lower ${TF_BUILD_PYTHON_VERSION})
TF_BUILD_IS_OPT=$(to_lower ${TF_BUILD_IS_OPT})
TF_BUILD_IS_PIP=$(to_lower ${TF_BUILD_IS_PIP})
+if [[ ! -z "${TF_BUILD_MAVX}" ]]; then
+ TF_BUILD_MAVX=$(to_lower ${TF_BUILD_MAVX})
+fi
+
# Print parameter values
echo "Required build parameters:"
echo " TF_BUILD_CONTAINER_TYPE=${TF_BUILD_CONTAINER_TYPE}"
@@ -132,6 +142,7 @@ echo " TF_BUILD_IS_OPT=${TF_BUILD_IS_OPT}"
echo " TF_BUILD_IS_PIP=${TF_BUILD_IS_PIP}"
echo "Optional build parameters:"
echo " TF_BUILD_DRY_RUN=${TF_BUILD_DRY_RUN}"
+echo " TF_BUILD_MAVX=${TF_BUILD_MAVX}"
echo " TF_BUILD_APPEND_CI_DOCKER_EXTRA_PARAMS="\
"${TF_BUILD_APPEND_CI_DOCKER_EXTRA_PARAMS}"
echo " TF_BUILD_APPEND_ARGUMENTS=${TF_BUILD_APPEND_ARGUMENTS}"
@@ -139,6 +150,7 @@ echo " TF_BUILD_BAZEL_TARGET=${TF_BUILD_BAZEL_TARGET}"
echo " TF_BUILD_BAZEL_CLEAN=${TF_BUILD_BAZEL_CLEAN}"
echo " TF_BUILD_SERIAL_TESTS=${TF_BUILD_SERIAL_TESTS}"
echo " TF_BUILD_TEST_TUTORIALS=${TF_BUILD_TEST_TUTORIALS}"
+echo " TF_BUILD_INTEGRATION_TESTS=${TF_BUILD_INTEGRATION_TESTS}"
echo " TF_BUILD_RUN_BENCHMARKS=${TF_BUILD_RUN_BENCHMARKS}"
# Function that tries to determine CUDA capability, if deviceQuery binary
@@ -215,6 +227,17 @@ else
die "Unrecognized value in TF_BUILD_IS_OPT: \"${TF_BUILD_IS_OPT}\""
fi
+# Process MAVX option
+if [[ ! -z "${TF_BUILD_MAVX}" ]]; then
+ if [[ "${TF_BUILD_MAVX}" == "mavx" ]]; then
+ OPT_FLAG="${OPT_FLAG} --copt=-mavx"
+ elif [[ "${TF_BUILD_MAVX}" == "mavx2" ]]; then
+ OPT_FLAG="${OPT_FLAG} --copt=-mavx2"
+ else
+ die "Unsupported value in TF_BUILD_MAVX: ${TF_BUILD_MAVX}"
+ fi
+fi
+
# Strip whitespaces from OPT_FLAG
OPT_FLAG=$(str_strip "${OPT_FLAG}")
@@ -283,6 +306,12 @@ if [[ ${TF_BUILD_IS_PIP} == "pip" ]] ||
PIP_MAIN_CMD="${MAIN_CMD} ${PIP_CMD} ${CTYPE} ${EXTRA_AGRS}"
+ # Add flag for mavx/mavx2
+ if [[ ! -z "${TF_BUILD_MAVX}" ]]; then
+ PIP_MAIN_CMD="${PIP_MAIN_CMD} --${TF_BUILD_MAVX}"
+ fi
+
+ # Add flag for integration tests
if [[ ! -z "${TF_BUILD_INTEGRATION_TESTS}" ]] &&
[[ "${TF_BUILD_INTEGRATION_TESTS}" != "0" ]]; then
PIP_MAIN_CMD="${PIP_MAIN_CMD} ${PIP_INTEGRATION_TESTS_FLAG}"
diff --git a/tensorflow/tools/dist_test/Dockerfile b/tensorflow/tools/dist_test/Dockerfile
index e730d945a7..bb4febad03 100644
--- a/tensorflow/tools/dist_test/Dockerfile
+++ b/tensorflow/tools/dist_test/Dockerfile
@@ -21,7 +21,7 @@ RUN /var/gcloud/google-cloud-sdk/bin/gcloud components install kubectl
# Install nightly TensorFlow pip
# TODO(cais): Should we build it locally instead?
RUN pip install \
- http://ci.tensorflow.org/view/Nightly/job/nightly-matrix-cpu/TF_BUILD_CONTAINER_TYPE=CPU,TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON2,label=cpu-slave/lastSuccessfulBuild/artifact/pip_test/whl/tensorflow-0.8.0rc0-cp27-none-linux_x86_64.whl
+ http://ci.tensorflow.org/view/Nightly/job/nightly-matrix-cpu/TF_BUILD_CONTAINER_TYPE=CPU,TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON2,label=cpu-slave/lastSuccessfulBuild/artifact/pip_test/whl/tensorflow-0.8.0-cp27-none-linux_x86_64.whl
# Copy test files
COPY scripts /var/tf-dist-test/scripts
diff --git a/tensorflow/tools/dist_test/server/Dockerfile b/tensorflow/tools/dist_test/server/Dockerfile
index b3a69e0755..b4ffa79299 100644
--- a/tensorflow/tools/dist_test/server/Dockerfile
+++ b/tensorflow/tools/dist_test/server/Dockerfile
@@ -36,7 +36,7 @@ RUN curl -O https://bootstrap.pypa.io/get-pip.py && \
# Install TensorFlow CPU version from nightly build
RUN pip --no-cache-dir install \
- http://ci.tensorflow.org/view/Nightly/job/nightly-matrix-cpu/TF_BUILD_CONTAINER_TYPE=CPU,TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON2,label=cpu-slave/lastSuccessfulBuild/artifact/pip_test/whl/tensorflow-0.8.0rc0-cp27-none-linux_x86_64.whl
+ http://ci.tensorflow.org/view/Nightly/job/nightly-matrix-cpu/TF_BUILD_CONTAINER_TYPE=CPU,TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON2,label=cpu-slave/lastSuccessfulBuild/artifact/pip_test/whl/tensorflow-0.8.0-cp27-none-linux_x86_64.whl
# Copy files, including the GRPC server binary at
# server/grpc_tensorflow_server.py
diff --git a/tensorflow/tools/dist_test/server/Dockerfile.test b/tensorflow/tools/dist_test/server/Dockerfile.test
index 1dd38be5f8..b61c7346a5 100644
--- a/tensorflow/tools/dist_test/server/Dockerfile.test
+++ b/tensorflow/tools/dist_test/server/Dockerfile.test
@@ -38,7 +38,7 @@ RUN curl -O https://bootstrap.pypa.io/get-pip.py && \
# Install TensorFlow CPU version.
RUN pip --no-cache-dir install \
- http://ci.tensorflow.org/view/Nightly/job/nightly-matrix-cpu/TF_BUILD_CONTAINER_TYPE=CPU,TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON2,label=cpu-slave/lastSuccessfulBuild/artifact/pip_test/whl/tensorflow-0.8.0rc0-cp27-none-linux_x86_64.whl
+ http://ci.tensorflow.org/view/Nightly/job/nightly-matrix-cpu/TF_BUILD_CONTAINER_TYPE=CPU,TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON2,label=cpu-slave/lastSuccessfulBuild/artifact/pip_test/whl/tensorflow-0.8.0-cp27-none-linux_x86_64.whl
# Copy files, including the GRPC server binary at
# server/grpc_tensorflow_server.py
diff --git a/tensorflow/tools/docker/Dockerfile b/tensorflow/tools/docker/Dockerfile
index 44829f6b5e..4333a3bf48 100644
--- a/tensorflow/tools/docker/Dockerfile
+++ b/tensorflow/tools/docker/Dockerfile
@@ -29,7 +29,7 @@ RUN pip --no-cache-dir install \
python -m ipykernel.kernelspec
# Install TensorFlow CPU version.
-ENV TENSORFLOW_VERSION 0.8.0rc0
+ENV TENSORFLOW_VERSION 0.8.0
RUN pip --no-cache-dir install \
http://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-${TENSORFLOW_VERSION}-cp27-none-linux_x86_64.whl
diff --git a/tensorflow/tools/docker/Dockerfile.gpu b/tensorflow/tools/docker/Dockerfile.gpu
index 1c4ae3066b..b97c42b06b 100644
--- a/tensorflow/tools/docker/Dockerfile.gpu
+++ b/tensorflow/tools/docker/Dockerfile.gpu
@@ -29,7 +29,7 @@ RUN pip --no-cache-dir install \
python -m ipykernel.kernelspec
# Install TensorFlow GPU version.
-ENV TENSORFLOW_VERSION 0.8.0rc0
+ENV TENSORFLOW_VERSION 0.8.0
RUN pip --no-cache-dir install \
http://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-${TENSORFLOW_VERSION}-cp27-none-linux_x86_64.whl
diff --git a/tensorflow/tools/docs/tf-doxy_for_md-config b/tensorflow/tools/docs/tf-doxy_for_md-config
index e2d0a44f18..b7fd6e9507 100644
--- a/tensorflow/tools/docs/tf-doxy_for_md-config
+++ b/tensorflow/tools/docs/tf-doxy_for_md-config
@@ -282,7 +282,7 @@ MARKDOWN_SUPPORT = YES
# When enabled doxygen tries to link words that correspond to documented
# classes, or namespaces to their corresponding documentation. Such a link can
-# be prevented in individual cases by by putting a % sign in front of the word
+# be prevented in individual cases by putting a % sign in front of the word
# or globally by setting AUTOLINK_SUPPORT to NO.
# The default value is: YES.
@@ -633,7 +633,7 @@ SHOW_NAMESPACES = YES
# The FILE_VERSION_FILTER tag can be used to specify a program or script that
# doxygen should invoke to get the current version for each file (typically from
# the version control system). Doxygen will invoke the program by executing (via
-# popen()) the command command input-file, where command is the value of the
+# popen()) the command input-file, where command is the value of the
# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
# by doxygen. Whatever the program writes to standard output is used as the file
# version. For an example see the documentation.
diff --git a/tensorflow/tools/pip_package/setup.py b/tensorflow/tools/pip_package/setup.py
index f11a5d7d67..4fa918b4d3 100644
--- a/tensorflow/tools/pip_package/setup.py
+++ b/tensorflow/tools/pip_package/setup.py
@@ -27,7 +27,7 @@ from setuptools import find_packages, setup, Command, Extension
from setuptools.command.install import install as InstallCommandBase
from setuptools.dist import Distribution
-_VERSION = '0.8.0rc0'
+_VERSION = '0.8.0'
numpy_version = "1.8.2"
if platform.system() == "Darwin":
diff --git a/third_party/gpus/crosstool/BUILD b/third_party/gpus/crosstool/BUILD
index eac4dc7fad..7c9c8ab884 100644
--- a/third_party/gpus/crosstool/BUILD
+++ b/third_party/gpus/crosstool/BUILD
@@ -22,6 +22,20 @@ cc_toolchain(
supports_param_files = 0,
)
+cc_toolchain(
+ name = "cc-compiler-darwin",
+ all_files = ":empty",
+ compiler_files = ":empty",
+ cpu = "darwin",
+ dwp_files = ":empty",
+ dynamic_runtime_libs = [":empty"],
+ linker_files = ":empty",
+ objcopy_files = ":empty",
+ static_runtime_libs = [":empty"],
+ strip_files = ":empty",
+ supports_param_files = 0,
+)
+
filegroup(
name = "empty",
srcs = [],
diff --git a/third_party/gpus/crosstool/CROSSTOOL b/third_party/gpus/crosstool/CROSSTOOL
index a9f26f5710..8db81a9603 100644
--- a/third_party/gpus/crosstool/CROSSTOOL
+++ b/third_party/gpus/crosstool/CROSSTOOL
@@ -150,3 +150,95 @@ toolchain {
}
linking_mode_flags { mode: DYNAMIC }
}
+
+toolchain {
+ abi_version: "local"
+ abi_libc_version: "local"
+ builtin_sysroot: ""
+ compiler: "compiler"
+ host_system_name: "local"
+ needsPic: true
+ target_libc: "macosx"
+ target_cpu: "darwin"
+ target_system_name: "local"
+ toolchain_identifier: "local_darwin"
+
+ tool_path { name: "ar" path: "/usr/bin/libtool" }
+ tool_path { name: "compat-ld" path: "/usr/bin/ld" }
+ tool_path { name: "cpp" path: "/usr/bin/cpp" }
+ tool_path { name: "dwp" path: "/usr/bin/dwp" }
+ tool_path { name: "gcc" path: "clang/bin/crosstool_wrapper_driver_is_not_gcc" }
+ cxx_flag: "-std=c++11"
+ ar_flag: "-static"
+ ar_flag: "-s"
+ ar_flag: "-o"
+ linker_flag: "-lc++"
+ linker_flag: "-undefined"
+ linker_flag: "dynamic_lookup"
+ # TODO(ulfjack): This is wrong on so many levels. Figure out a way to auto-detect the proper
+ # setting from the local compiler, and also how to make incremental builds correct.
+ cxx_builtin_include_directory: "/"
+ tool_path { name: "gcov" path: "/usr/bin/gcov" }
+ tool_path { name: "ld" path: "/usr/bin/ld" }
+ tool_path { name: "nm" path: "/usr/bin/nm" }
+ tool_path { name: "objcopy" path: "/usr/bin/objcopy" }
+ objcopy_embed_flag: "-I"
+ objcopy_embed_flag: "binary"
+ tool_path { name: "objdump" path: "/usr/bin/objdump" }
+ tool_path { name: "strip" path: "/usr/bin/strip" }
+
+ # Anticipated future default.
+ unfiltered_cxx_flag: "-no-canonical-prefixes"
+ # Make C++ compilation deterministic. Use linkstamping instead of these
+ # compiler symbols.
+ unfiltered_cxx_flag: "-Wno-builtin-macro-redefined"
+ unfiltered_cxx_flag: "-D__DATE__=\"redacted\""
+ unfiltered_cxx_flag: "-D__TIMESTAMP__=\"redacted\""
+ unfiltered_cxx_flag: "-D__TIME__=\"redacted\""
+
+ # Security hardening on by default.
+ # Conservative choice; -D_FORTIFY_SOURCE=2 may be unsafe in some cases.
+ compiler_flag: "-D_FORTIFY_SOURCE=1"
+ compiler_flag: "-fstack-protector"
+
+ # Enable coloring even if there's no attached terminal. Bazel removes the
+ # escape sequences if --nocolor is specified.
+ compiler_flag: "-fcolor-diagnostics"
+
+ # All warnings are enabled. Maybe enable -Werror as well?
+ compiler_flag: "-Wall"
+ # Enable a few more warnings that aren't part of -Wall.
+ compiler_flag: "-Wthread-safety"
+ compiler_flag: "-Wself-assign"
+
+ # Keep stack frames for debugging, even in opt mode.
+ compiler_flag: "-fno-omit-frame-pointer"
+
+ # Anticipated future default.
+ linker_flag: "-no-canonical-prefixes"
+
+ compilation_mode_flags {
+ mode: DBG
+ # Enable debug symbols.
+ compiler_flag: "-g"
+ }
+ compilation_mode_flags {
+ mode: OPT
+ # No debug symbols.
+ # Maybe we should enable https://gcc.gnu.org/wiki/DebugFission for opt or even generally?
+ # However, that can't happen here, as it requires special handling in Bazel.
+ compiler_flag: "-g0"
+
+ # Conservative choice for -O
+ # -O3 can increase binary size and even slow down the resulting binaries.
+ # Profile first and / or use FDO if you need better performance than this.
+ compiler_flag: "-O2"
+
+ # Disable assertions
+ compiler_flag: "-DNDEBUG"
+
+ # Removal of unused code and data at link time (can this increase binary size in some cases?).
+ compiler_flag: "-ffunction-sections"
+ compiler_flag: "-fdata-sections"
+ }
+}
diff --git a/third_party/gpus/crosstool/clang/bin/crosstool_wrapper_driver_is_not_gcc b/third_party/gpus/crosstool/clang/bin/crosstool_wrapper_driver_is_not_gcc
index 04ab50ca86..5f175efcf3 100755
--- a/third_party/gpus/crosstool/clang/bin/crosstool_wrapper_driver_is_not_gcc
+++ b/third_party/gpus/crosstool/clang/bin/crosstool_wrapper_driver_is_not_gcc
@@ -1,4 +1,4 @@
-#!/usr/bin/env python2
+#!/usr/bin/env python2.7
# Copyright 2015 Google Inc. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
diff --git a/third_party/gpus/cuda/BUILD b/third_party/gpus/cuda/BUILD
index 28b49b8cc7..792dbb4268 100644
--- a/third_party/gpus/cuda/BUILD
+++ b/third_party/gpus/cuda/BUILD
@@ -1,10 +1,11 @@
licenses(["restricted"]) # MPL2, portions GPL v3, LGPL v3, BSD-like
load("//tensorflow:tensorflow.bzl", "if_cuda")
-load("//tensorflow/core:platform/default/build_config.bzl",
- "tf_get_cuda_version",
- "tf_get_cudnn_version",
- )
+load("platform", "cuda_library_path")
+load("platform", "cuda_static_library_path")
+load("platform", "cudnn_library_path")
+load("platform", "cupti_library_path")
+load("platform", "readlink_command")
package(default_visibility = ["//visibility:public"])
@@ -31,6 +32,12 @@ config_setting(
},
)
+config_setting(
+ name = "darwin",
+ values = {"cpu": "darwin"},
+ visibility = ["//visibility:public"],
+)
+
cc_library(
name = "cuda_headers",
hdrs = glob([
@@ -43,24 +50,26 @@ cc_library(
cc_library(
name = "cudart_static",
srcs = [
- "lib64/libcudart_static.a",
+ cuda_static_library_path("cudart"),
],
includes = ["include/"],
linkopts = [
"-ldl",
- "-lrt",
"-lpthread",
- ],
+ ] + select({
+ "//tensorflow:darwin": [],
+ "//conditions:default": ["-lrt"]
+ }),
visibility = ["//visibility:public"],
)
cc_library(
name = "cudart",
srcs = [
- "lib64/libcudart.so" + tf_get_cuda_version(),
+ cuda_library_path("cudart")
],
data = [
- "lib64/libcudart.so" + tf_get_cuda_version(),
+ cuda_library_path("cudart")
],
includes = ["include/"],
visibility = ["//visibility:public"],
@@ -70,10 +79,10 @@ cc_library(
cc_library(
name = "cublas",
srcs = [
- "lib64/libcublas.so" + tf_get_cuda_version(),
+ cuda_library_path("cublas")
],
data = [
- "lib64/libcublas.so" + tf_get_cuda_version(),
+ cuda_library_path("cublas")
],
includes = ["include/"],
visibility = ["//visibility:public"],
@@ -83,10 +92,10 @@ cc_library(
cc_library(
name = "cudnn",
srcs = [
- "lib64/libcudnn.so" + tf_get_cudnn_version(),
+ cudnn_library_path()
],
data = [
- "lib64/libcudnn.so" + tf_get_cudnn_version(),
+ cudnn_library_path()
],
includes = ["include/"],
visibility = ["//visibility:public"],
@@ -96,10 +105,10 @@ cc_library(
cc_library(
name = "cufft",
srcs = [
- "lib64/libcufft.so" + tf_get_cuda_version(),
+ cuda_library_path("cufft")
],
data = [
- "lib64/libcufft.so" + tf_get_cuda_version(),
+ cuda_library_path("cufft")
],
includes = ["include/"],
visibility = ["//visibility:public"],
@@ -130,7 +139,7 @@ cc_library(
cc_library(
name = "cupti_dsos",
data = [
- "extras/CUPTI/lib64/libcupti.so" + tf_get_cuda_version(),
+ cupti_library_path(),
],
visibility = ["//visibility:public"],
)
@@ -152,34 +161,34 @@ genrule(
"include/cublas.h",
"include/cudnn.h",
"extras/CUPTI/include/cupti.h",
- "lib64/libcudart_static.a",
- "lib64/libcublas.so" + tf_get_cuda_version(),
- "lib64/libcudnn.so" + tf_get_cudnn_version(),
- "lib64/libcudart.so" + tf_get_cuda_version(),
- "lib64/libcufft.so" + tf_get_cuda_version(),
- "extras/CUPTI/lib64/libcupti.so" + tf_get_cuda_version(),
+ cuda_static_library_path("cudart"),
+ cuda_library_path("cublas"),
+ cudnn_library_path(),
+ cuda_library_path("cudart"),
+ cuda_library_path("cufft"),
+ cupti_library_path(),
],
cmd = if_cuda(
# Under cuda config, create all the symbolic links to the actual cuda files
- "OUTPUTDIR=`readlink -f $(@D)/../../..`; cd `dirname $(location :cuda_config.sh)`; OUTPUTDIR=$$OUTPUTDIR ./cuda_config.sh --check;",
+ "OUTPUTDIR=`{} -f $(@D)/../../..`; cd third_party/gpus/cuda; OUTPUTDIR=$$OUTPUTDIR ./cuda_config.sh --check;".format(readlink_command()),
# Under non-cuda config, create all dummy files to make the build go through
";".join([
- "mkdir -p $(@D)/include",
- "mkdir -p $(@D)/lib64",
- "mkdir -p $(@D)/extras/CUPTI/include",
- "mkdir -p $(@D)/extras/CUPTI/lib64",
- "touch $(@D)/include/cuda.h",
- "touch $(@D)/include/cublas.h",
- "touch $(@D)/include/cudnn.h",
- "touch $(@D)/extras/CUPTI/include/cupti.h",
- "touch $(@D)/lib64/libcudart_static.a",
- "touch $(@D)/lib64/libcublas.so" + tf_get_cuda_version(),
- "touch $(@D)/lib64/libcudnn.so" + tf_get_cudnn_version(),
- "touch $(@D)/lib64/libcudart.so" + tf_get_cuda_version(),
- "touch $(@D)/lib64/libcufft.so" + tf_get_cuda_version(),
- "touch $(@D)/extras/CUPTI/lib64/libcupti.so" + tf_get_cuda_version(),
- ]),
+ "mkdir -p $(@D)/include",
+ "mkdir -p $(@D)/lib64",
+ "mkdir -p $(@D)/extras/CUPTI/include",
+ "mkdir -p $(@D)/extras/CUPTI/lib64",
+ "touch $(@D)/include/cuda.h",
+ "touch $(@D)/include/cublas.h",
+ "touch $(@D)/include/cudnn.h",
+ "touch $(@D)/extras/CUPTI/include/cupti.h",
+ "touch $(@D)/{}".format(cuda_static_library_path("cudart")),
+ "touch $(@D)/{}".format(cuda_library_path("cublas")),
+ "touch $(@D)/{}".format(cudnn_library_path()),
+ "touch $(@D)/{}".format(cuda_library_path("cudart")),
+ "touch $(@D)/{}".format(cuda_library_path("cufft")),
+ "touch $(@D)/{}".format(cupti_library_path()),
+ ]),
),
local = 1,
)
@@ -191,7 +200,7 @@ genrule(
],
cmd = if_cuda(
# Under cuda config, create the symbolic link to the actual cuda.config
- "configfile=$(location :cuda.config); ln -sf `readlink -f $${configfile#*/*/*/}` $(@D)/;",
+ "configfile=$(location :cuda.config); ln -sf `{} -f $${{configfile#*/*/*/}}` $(@D)/;".format(readlink_command()),
# Under non-cuda config, create the dummy file
";".join([
diff --git a/third_party/gpus/cuda/cuda_config.sh b/third_party/gpus/cuda/cuda_config.sh
index e93a7ed741..0e1106bb70 100755
--- a/third_party/gpus/cuda/cuda_config.sh
+++ b/third_party/gpus/cuda/cuda_config.sh
@@ -54,7 +54,19 @@ source cuda.config || exit -1
OUTPUTDIR=${OUTPUTDIR:-../../..}
CUDA_TOOLKIT_PATH=${CUDA_TOOLKIT_PATH:-/usr/local/cuda}
-CUDNN_INSTALL_PATH=${CUDNN_INSTALL_PATH:-/usr/local/cuda}
+CUDNN_INSTALL_BASEDIR=${CUDNN_INSTALL_PATH:-/usr/local/cuda}
+
+if [[ -z "$TF_CUDA_VERSION" ]]; then
+ TF_CUDA_EXT=""
+else
+ TF_CUDA_EXT=".$TF_CUDA_VERSION"
+fi
+
+if [[ -z "$TF_CUDNN_VERSION" ]]; then
+ TF_CUDNN_EXT=""
+else
+ TF_CUDNN_EXT=".$TF_CUDNN_VERSION"
+fi
# An error message when the Cuda toolkit is not found
function CudaError {
@@ -99,59 +111,84 @@ function CheckAndLinkToSrcTree {
# Link the output file to the source tree, avoiding self links if they are
# the same. This could happen if invoked from the source tree by accident.
- if [ ! $(readlink -f $PWD) == $(readlink -f $OUTPUTDIR/third_party/gpus/cuda) ]; then
+ if [ ! $($READLINK_CMD -f $PWD) == $($READLINK_CMD -f $OUTPUTDIR/third_party/gpus/cuda) ]; then
mkdir -p $(dirname $OUTPUTDIR/third_party/gpus/cuda/$FILE)
ln -sf $PWD/$FILE $OUTPUTDIR/third_party/gpus/cuda/$FILE
fi
}
+OSNAME=`uname -s`
+if [ "$OSNAME" == "Linux" ]; then
+ CUDA_LIB_PATH="lib64"
+ CUDA_CUPTI_LIB_DIR="extras/CUPTI/lib64"
+ CUDA_RT_LIB_PATH="lib64/libcudart.so${TF_CUDA_EXT}"
+ CUDA_RT_LIB_STATIC_PATH="lib64/libcudart_static.a"
+ CUDA_BLAS_LIB_PATH="lib64/libcublas.so${TF_CUDA_EXT}"
+ CUDA_DNN_LIB_PATH="lib64/libcudnn.so${TF_CUDNN_EXT}"
+ CUDA_DNN_LIB_ALT_PATH="libcudnn.so${TF_CUDNN_EXT}"
+ CUDA_FFT_LIB_PATH="lib64/libcufft.so${TF_CUDA_EXT}"
+ CUDA_CUPTI_LIB_PATH="extras/CUPTI/lib64/libcupti.so${TF_CUDA_EXT}"
+ READLINK_CMD="readlink"
+elif [ "$OSNAME" == "Darwin" ]; then
+ CUDA_LIB_PATH="lib"
+ CUDA_CUPTI_LIB_DIR="extras/CUPTI/lib"
+ CUDA_RT_LIB_PATH="lib/libcudart${TF_CUDA_EXT}.dylib"
+ CUDA_RT_LIB_STATIC_PATH="lib/libcudart_static.a"
+ CUDA_BLAS_LIB_PATH="lib/libcublas${TF_CUDA_EXT}.dylib"
+ CUDA_DNN_LIB_PATH="lib/libcudnn${TF_CUDNN_EXT}.dylib"
+ CUDA_DNN_LIB_ALT_PATH="libcudnn${TF_CUDNN_EXT}.dylib"
+ CUDA_FFT_LIB_PATH="lib/libcufft${TF_CUDA_EXT}.dylib"
+ CUDA_CUPTI_LIB_PATH="extras/CUPTI/lib/libcupti${TF_CUDA_EXT}.dylib"
+ READLINK_CMD="greadlink"
+fi
+
if [ "$CHECK_ONLY" == "1" ]; then
CheckAndLinkToSrcTree CudaError include/cuda.h
CheckAndLinkToSrcTree CudaError include/cublas.h
CheckAndLinkToSrcTree CudnnError include/cudnn.h
CheckAndLinkToSrcTree CudaError extras/CUPTI/include/cupti.h
- CheckAndLinkToSrcTree CudaError lib64/libcudart_static.a
- CheckAndLinkToSrcTree CudaError lib64/libcublas.so$TF_CUDA_VERSION
- CheckAndLinkToSrcTree CudnnError lib64/libcudnn.so$TF_CUDNN_VERSION
- CheckAndLinkToSrcTree CudaError lib64/libcudart.so$TF_CUDA_VERSION
- CheckAndLinkToSrcTree CudaError lib64/libcufft.so$TF_CUDA_VERSION
- CheckAndLinkToSrcTree CudaError extras/CUPTI/lib64/libcupti.so$TF_CUDA_VERSION
+ CheckAndLinkToSrcTree CudaError $CUDA_RT_LIB_STATIC_PATH
+ CheckAndLinkToSrcTree CudaError $CUDA_BLAS_LIB_PATH
+ CheckAndLinkToSrcTree CudnnError $CUDA_DNN_LIB_PATH
+ CheckAndLinkToSrcTree CudaError $CUDA_RT_LIB_PATH
+ CheckAndLinkToSrcTree CudaError $CUDA_FFT_LIB_PATH
+ CheckAndLinkToSrcTree CudaError $CUDA_CUPTI_LIB_PATH
exit 0
fi
# Actually configure the source tree for TensorFlow's canonical view of Cuda
# libraries.
-if test ! -e ${CUDA_TOOLKIT_PATH}/lib64/libcudart.so$TF_CUDA_VERSION; then
- CudaError "cannot find ${CUDA_TOOLKIT_PATH}/lib64/libcudart.so$TF_CUDA_VERSION"
+if test ! -e ${CUDA_TOOLKIT_PATH}/${CUDA_RT_LIB_PATH}; then
+ CudaError "cannot find ${CUDA_TOOLKIT_PATH}/${CUDA_RT_LIB_PATH}"
fi
-if test ! -e ${CUDA_TOOLKIT_PATH}/extras/CUPTI/lib64/libcupti.so$TF_CUDA_VERSION; then
- CudaError "cannot find ${CUDA_TOOLKIT_PATH}/extras/CUPTI/lib64/libcupti.so$TF_CUDA_VERSION"
+if test ! -e ${CUDA_TOOLKIT_PATH}/${CUDA_CUPTI_LIB_PATH}; then
+ CudaError "cannot find ${CUDA_TOOLKIT_PATH}/${CUDA_CUPTI_LIB_PATH}"
fi
-if test ! -d ${CUDNN_INSTALL_PATH}; then
- CudnnError "cannot find dir: ${CUDNN_INSTALL_PATH}"
+if test ! -d ${CUDNN_INSTALL_BASEDIR}; then
+ CudnnError "cannot find dir: ${CUDNN_INSTALL_BASEDIR}"
fi
# Locate cudnn.h
-if test -e ${CUDNN_INSTALL_PATH}/cudnn.h; then
- CUDNN_HEADER_PATH=${CUDNN_INSTALL_PATH}
-elif test -e ${CUDNN_INSTALL_PATH}/include/cudnn.h; then
- CUDNN_HEADER_PATH=${CUDNN_INSTALL_PATH}/include
+if test -e ${CUDNN_INSTALL_BASEDIR}/cudnn.h; then
+ CUDNN_HEADER_DIR=${CUDNN_INSTALL_BASEDIR}
+elif test -e ${CUDNN_INSTALL_BASEDIR}/include/cudnn.h; then
+ CUDNN_HEADER_DIR=${CUDNN_INSTALL_BASEDIR}/include
elif test -e /usr/include/cudnn.h; then
- CUDNN_HEADER_PATH=/usr/include
+ CUDNN_HEADER_DIR=/usr/include
else
- CudnnError "cannot find cudnn.h under: ${CUDNN_INSTALL_PATH} or /usr/include"
+ CudnnError "cannot find cudnn.h under: ${CUDNN_INSTALL_BASEDIR}"
fi
-# Locate libcudnn.so.${$TF_CUDNN_VERSION}
-if test -e ${CUDNN_INSTALL_PATH}/libcudnn.so$TF_CUDNN_VERSION; then
- CUDNN_LIB_PATH=${CUDNN_INSTALL_PATH}
-elif test -e ${CUDNN_INSTALL_PATH}/lib64/libcudnn.so$TF_CUDNN_VERSION; then
- CUDNN_LIB_PATH=${CUDNN_INSTALL_PATH}/lib64
+# Locate libcudnn
+if test -e ${CUDNN_INSTALL_BASEDIR}/${CUDA_DNN_LIB_PATH}; then
+ CUDNN_LIB_INSTALL_PATH=${CUDNN_INSTALL_BASEDIR}/${CUDA_DNN_LIB_PATH}
+elif test -e ${CUDNN_INSTALL_BASEDIR}/${CUDA_DNN_LIB_ALT_PATH}; then
+ CUDNN_LIB_INSTALL_PATH=${CUDNN_INSTALL_BASEDIR}/${CUDA_DNN_LIB_ALT_PATH}
else
- CudnnError "cannot find libcudnn.so.$TF_CUDNN_VERSION under: ${CUDNN_INSTALL_PATH}"
+ CudnnError "cannot find ${CUDA_DNN_LIB_PATH} or ${CUDA_DNN_LIB_ALT_PATH} under: ${CUDNN_INSTALL_BASEDIR}"
fi
# Helper function to build symbolic links for all files under a directory.
@@ -181,8 +218,8 @@ function LinkAllFiles {
mkdir -p $OUTPUTDIR/third_party/gpus/cuda
echo "Setting up Cuda include"
LinkAllFiles ${CUDA_TOOLKIT_PATH}/include $OUTPUTDIR/third_party/gpus/cuda/include || exit -1
-echo "Setting up Cuda lib64"
-LinkAllFiles ${CUDA_TOOLKIT_PATH}/lib64 $OUTPUTDIR/third_party/gpus/cuda/lib64 || exit -1
+echo "Setting up Cuda ${CUDA_LIB_PATH}"
+LinkAllFiles ${CUDA_TOOLKIT_PATH}/${CUDA_LIB_PATH} $OUTPUTDIR/third_party/gpus/cuda/${CUDA_LIB_PATH} || exit -1
echo "Setting up Cuda bin"
LinkAllFiles ${CUDA_TOOLKIT_PATH}/bin $OUTPUTDIR/third_party/gpus/cuda/bin || exit -1
echo "Setting up Cuda nvvm"
@@ -190,8 +227,8 @@ LinkAllFiles ${CUDA_TOOLKIT_PATH}/nvvm $OUTPUTDIR/third_party/gpus/cuda/nvvm ||
echo "Setting up CUPTI include"
LinkAllFiles ${CUDA_TOOLKIT_PATH}/extras/CUPTI/include $OUTPUTDIR/third_party/gpus/cuda/extras/CUPTI/include || exit -1
echo "Setting up CUPTI lib64"
-LinkAllFiles ${CUDA_TOOLKIT_PATH}/extras/CUPTI/lib64 $OUTPUTDIR/third_party/gpus/cuda/extras/CUPTI/lib64 || exit -1
+LinkAllFiles ${CUDA_TOOLKIT_PATH}/${CUDA_CUPTI_LIB_DIR} $OUTPUTDIR/third_party/gpus/cuda/${CUDA_CUPTI_LIB_DIR} || exit -1
# Set up symbolic link for cudnn
-ln -sf $CUDNN_HEADER_PATH/cudnn.h $OUTPUTDIR/third_party/gpus/cuda/include/cudnn.h || exit -1
-ln -sf $CUDNN_LIB_PATH/libcudnn.so$TF_CUDNN_VERSION $OUTPUTDIR/third_party/gpus/cuda/lib64/libcudnn.so$TF_CUDNN_VERSION || exit -1
+ln -sf $CUDNN_HEADER_DIR/cudnn.h $OUTPUTDIR/third_party/gpus/cuda/include/cudnn.h || exit -1
+ln -sf $CUDNN_LIB_INSTALL_PATH $OUTPUTDIR/third_party/gpus/cuda/$CUDA_DNN_LIB_PATH || exit -1
diff --git a/third_party/gpus/cuda/platform.bzl b/third_party/gpus/cuda/platform.bzl
new file mode 100644
index 0000000000..20ab441bf4
--- /dev/null
+++ b/third_party/gpus/cuda/platform.bzl
@@ -0,0 +1,59 @@
+CUDA_VERSION = ""
+
+CUDNN_VERSION = ""
+
+PLATFORM = ""
+
+def cuda_sdk_version():
+ return CUDA_VERSION
+
+def cudnn_sdk_version():
+ return CUDNN_VERSION
+
+def cuda_library_path(name, version = cuda_sdk_version()):
+ if PLATFORM == "Darwin":
+ if not version:
+ return "lib/lib{}.dylib".format(name)
+ else:
+ return "lib/lib{}.{}.dylib".format(name, version)
+ else:
+ if not version:
+ return "lib64/lib{}.so".format(name)
+ else:
+ return "lib64/lib{}.so.{}".format(name, version)
+
+def cuda_static_library_path(name):
+ if PLATFORM == "Darwin":
+ return "lib/lib{}_static.a".format(name)
+ else:
+ return "lib64/lib{}_static.a".format(name)
+
+def cudnn_library_path(version = cudnn_sdk_version()):
+ if PLATFORM == "Darwin":
+ if not version:
+ return "lib/libcudnn.dylib"
+ else:
+ return "lib/libcudnn.{}.dylib".format(version)
+ else:
+ if not version:
+ return "lib64/libcudnn.so"
+ else:
+ return "lib64/libcudnn.so.{}".format(version)
+
+def cupti_library_path(version = cuda_sdk_version()):
+ if PLATFORM == "Darwin":
+ if not version:
+ return "extras/CUPTI/lib/libcupti.dylib"
+ else:
+ return "extras/CUPTI/lib/libcupti.{}.dylib".format(version)
+ else:
+ if not version:
+ return "extras/CUPTI/lib64/libcupti.so"
+ else:
+ return "extras/CUPTI/lib64/libcupti.so.{}".format(version)
+
+def readlink_command():
+ if PLATFORM == "Darwin":
+ return "greadlink"
+ else:
+ return "readlink"