QT for android 5.8 应用在Android 6.0和7.0中的差异,请教解决方法

开发的应用,在两个版本上UI表现差异太大,有没有人遇到过,请教一下解决方法图片说明
这是正常情况下的显示。
下面是Android7.0下的显示,简直惨不忍睹:
图片说明

自己来回答下:
做了两个处理后,界面达到一致。
1:首次进入,进行字体选择,也可以使用默认。并保存。
2:对于app退出时,清理其子目录qt-reserved-files中文件。
这样就可以每次保持一致。
不过就是程序崩溃的话,下一次打开会出现界面丑陋的情况,但是再下一次就好了。

2个回答

没遇到过,你是用API24编译的吗

建议用最新版本的Qt 5.10,旧版本的Qt在比较新的系统上外观可能有点问题。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Windows Qt android 编译问题
编译出现 * Where: Build file 'E:\Qt\Examples\Qt-5.6\qtmultimedia\multimedia\video\build-qmlvideofx-Android_for_armeabi_v7a_GCC_4_8_Qt_5_6_0-Debug\android-build\build.gradle' line: 39 * What went wrong: A problem occurred evaluating root project 'android-build'. > Invalid revision: android-4.3 * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. BUILD FAILED Total time: 21.611 secs Building the android package failed! -- For more information, run this command with --verbose. 23:45:14: 进程"E:\Qt\5.6\android_armv7\bin\androiddeployqt.exe"退出,退出代码 14 。 Error while building/deploying project qmlvideofx (kit: Android for armeabi-v7a (GCC 4.8, Qt 5.6.0)) When executing step "Build Android APK" 23:45:14: Elapsed time: 01:07. 很奔溃,有没有大神能帮忙看看
Tensorflow测试训练styleGAN时报错 No OpKernel was registered to support Op 'NcclAllReduce' with these attrs.
在测试官方StyleGAN。 运行官方与训练模型pretrained_example.py generate_figures.py 没有问题。GPU工作正常。 运行train.py时报错 尝试只用单个GPU训练时没有报错。 NcclAllReduce应该跟多GPU通信有关,不太了解。 InvalidArgumentError (see above for traceback): No OpKernel was registered to support Op 'NcclAllReduce' with these attrs. Registered devices: [CPU,GPU], Registered kernels: <no registered kernels> [[Node: TrainD/SumAcrossGPUs/NcclAllReduce = NcclAllReduce[T=DT_FLOAT, num_devices=2, reduction="sum", shared_name="c112", _device="/device:GPU:0"](GPU0/TrainD_grad/gradients/AddN_160)]] 经过多番google 尝试过 重启 conda install keras-gpu 重新安装tensorflow-gpu==1.10.0(跟官方版本保持一致) ``` …… Building TensorFlow graph... Setting up snapshot image grid... Setting up run dir... Training... Traceback (most recent call last): File "d:\Users\admin\Anaconda3\envs\tfenv\lib\site-packages\tensorflow\python\client\session.py", line 1278, in _do_call return fn(*args) File "d:\Users\admin\Anaconda3\envs\tfenv\lib\site-packages\tensorflow\python\client\session.py", line 1263, in _run_fn options, feed_dict, fetch_list, target_list, run_metadata) File "d:\Users\admin\Anaconda3\envs\tfenv\lib\site-packages\tensorflow\python\client\session.py", line 1350, in _call_tf_sessionrun run_metadata) tensorflow.python.framework.errors_impl.InvalidArgumentError: No OpKernel was registered to support Op 'NcclAllReduce' with these attrs. Registered devices: [CPU,GPU], Registered kernels: <no registered kernels> [[Node: TrainD/SumAcrossGPUs/NcclAllReduce = NcclAllReduce[T=DT_FLOAT, num_devices=2, reduction="sum", shared_name="c112", _device="/device:GPU:0"](GPU0/TrainD_grad/gradients/AddN_160)]] During handling of the above exception, another exception occurred: Traceback (most recent call last): File "train.py", line 191, in <module> main() File "train.py", line 186, in main dnnlib.submit_run(**kwargs) File "E:\MachineLearning\stylegan-master\dnnlib\submission\submit.py", line 290, in submit_run run_wrapper(submit_config) File "E:\MachineLearning\stylegan-master\dnnlib\submission\submit.py", line 242, in run_wrapper util.call_func_by_name(func_name=submit_config.run_func_name, submit_config=submit_config, **submit_config.run_func_kwargs) File "E:\MachineLearning\stylegan-master\dnnlib\util.py", line 257, in call_func_by_name return func_obj(*args, **kwargs) File "E:\MachineLearning\stylegan-master\training\training_loop.py", line 230, in training_loop tflib.run([D_train_op, Gs_update_op], {lod_in: sched.lod, lrate_in: sched.D_lrate, minibatch_in: sched.minibatch}) File "E:\MachineLearning\stylegan-master\dnnlib\tflib\tfutil.py", line 26, in run return tf.get_default_session().run(*args, **kwargs) File "d:\Users\admin\Anaconda3\envs\tfenv\lib\site-packages\tensorflow\python\client\session.py", line 877, in run run_metadata_ptr) File "d:\Users\admin\Anaconda3\envs\tfenv\lib\site-packages\tensorflow\python\client\session.py", line 1100, in _run feed_dict_tensor, options, run_metadata) File "d:\Users\admin\Anaconda3\envs\tfenv\lib\site-packages\tensorflow\python\client\session.py", line 1272, in _do_run run_metadata) File "d:\Users\admin\Anaconda3\envs\tfenv\lib\site-packages\tensorflow\python\client\session.py", line 1291, in _do_call raise type(e)(node_def, op, message) tensorflow.python.framework.errors_impl.InvalidArgumentError: No OpKernel was registered to support Op 'NcclAllReduce' with these attrs. Registered devices: [CPU,GPU], Registered kernels: <no registered kernels> [[Node: TrainD/SumAcrossGPUs/NcclAllReduce = NcclAllReduce[T=DT_FLOAT, num_devices=2, reduction="sum", shared_name="c112", _device="/device:GPU:0"](GPU0/TrainD_grad/gradients/AddN_160)]] Caused by op 'TrainD/SumAcrossGPUs/NcclAllReduce', defined at: File "train.py", line 191, in <module> main() File "train.py", line 186, in main dnnlib.submit_run(**kwargs) File "E:\MachineLearning\stylegan-master\dnnlib\submission\submit.py", line 290, in submit_run run_wrapper(submit_config) File "E:\MachineLearning\stylegan-master\dnnlib\submission\submit.py", line 242, in run_wrapper util.call_func_by_name(func_name=submit_config.run_func_name, submit_config=submit_config, **submit_config.run_func_kwargs) File "E:\MachineLearning\stylegan-master\dnnlib\util.py", line 257, in call_func_by_name return func_obj(*args, **kwargs) File "E:\MachineLearning\stylegan-master\training\training_loop.py", line 185, in training_loop D_train_op = D_opt.apply_updates() File "E:\MachineLearning\stylegan-master\dnnlib\tflib\optimizer.py", line 135, in apply_updates g = nccl_ops.all_sum(g) File "d:\Users\admin\Anaconda3\envs\tfenv\lib\site-packages\tensorflow\contrib\nccl\python\ops\nccl_ops.py", line 49, in all_sum return _apply_all_reduce('sum', tensors) File "d:\Users\admin\Anaconda3\envs\tfenv\lib\site-packages\tensorflow\contrib\nccl\python\ops\nccl_ops.py", line 230, in _apply_all_reduce shared_name=shared_name)) File "d:\Users\admin\Anaconda3\envs\tfenv\lib\site-packages\tensorflow\contrib\nccl\ops\gen_nccl_ops.py", line 59, in nccl_all_reduce num_devices=num_devices, shared_name=shared_name, name=name) File "d:\Users\admin\Anaconda3\envs\tfenv\lib\site-packages\tensorflow\python\framework\op_def_library.py", line 787, in _apply_op_helper op_def=op_def) File "d:\Users\admin\Anaconda3\envs\tfenv\lib\site-packages\tensorflow\python\util\deprecation.py", line 454, in new_func return func(*args, **kwargs) File "d:\Users\admin\Anaconda3\envs\tfenv\lib\site-packages\tensorflow\python\framework\ops.py", line 3156, in create_op op_def=op_def) File "d:\Users\admin\Anaconda3\envs\tfenv\lib\site-packages\tensorflow\python\framework\ops.py", line 1718, in __init__ self._traceback = tf_stack.extract_stack() InvalidArgumentError (see above for traceback): No OpKernel was registered to support Op 'NcclAllReduce' with these attrs. Registered devices: [CPU,GPU], Registered kernels: <no registered kernels> [[Node: TrainD/SumAcrossGPUs/NcclAllReduce = NcclAllReduce[T=DT_FLOAT, num_devices=2, reduction="sum", shared_name="c112", _device="/device:GPU:0"](GPU0/TrainD_grad/gradients/AddN_160)]] ``` ``` #conda list: # Name Version Build Channel _tflow_select 2.1.0 gpu absl-py 0.8.1 pypi_0 pypi alabaster 0.7.12 py36_0 asn1crypto 1.2.0 py36_0 astor 0.8.0 pypi_0 pypi astroid 2.3.2 py36_0 attrs 19.3.0 py_0 babel 2.7.0 py_0 backcall 0.1.0 py36_0 blas 1.0 mkl bleach 3.1.0 py36_0 ca-certificates 2019.10.16 0 certifi 2019.9.11 py36_0 cffi 1.13.1 py36h7a1dbc1_0 chardet 3.0.4 py36_1003 cloudpickle 1.2.2 py_0 colorama 0.4.1 py36_0 cryptography 2.8 py36h7a1dbc1_0 cudatoolkit 9.0 1 cudnn 7.6.4 cuda9.0_0 decorator 4.4.1 py_0 defusedxml 0.6.0 py_0 django 2.2.7 pypi_0 pypi docutils 0.15.2 py36_0 entrypoints 0.3 py36_0 gast 0.3.2 py_0 grpcio 1.25.0 pypi_0 pypi h5py 2.9.0 py36h5e291fa_0 hdf5 1.10.4 h7ebc959_0 icc_rt 2019.0.0 h0cc432a_1 icu 58.2 ha66f8fd_1 idna 2.8 pypi_0 pypi image 1.5.27 pypi_0 pypi imagesize 1.1.0 py36_0 importlib_metadata 0.23 py36_0 intel-openmp 2019.4 245 ipykernel 5.1.3 py36h39e3cac_0 ipython 7.9.0 py36h39e3cac_0 ipython_genutils 0.2.0 py36h3c5d0ee_0 isort 4.3.21 py36_0 jedi 0.15.1 py36_0 jinja2 2.10.3 py_0 jpeg 9b hb83a4c4_2 jsonschema 3.1.1 py36_0 jupyter_client 5.3.4 py36_0 jupyter_core 4.6.1 py36_0 keras-applications 1.0.8 py_0 keras-base 2.2.4 py36_0 keras-gpu 2.2.4 0 keras-preprocessing 1.1.0 py_1 keyring 18.0.0 py36_0 lazy-object-proxy 1.4.3 py36he774522_0 libpng 1.6.37 h2a8f88b_0 libprotobuf 3.9.2 h7bd577a_0 libsodium 1.0.16 h9d3ae62_0 markdown 3.1.1 py36_0 markupsafe 1.1.1 py36he774522_0 mccabe 0.6.1 py36_1 mistune 0.8.4 py36he774522_0 mkl 2019.4 245 mkl-service 2.3.0 py36hb782905_0 mkl_fft 1.0.15 py36h14836fe_0 mkl_random 1.1.0 py36h675688f_0 more-itertools 7.2.0 py36_0 nbconvert 5.6.1 py36_0 nbformat 4.4.0 py36h3a5bc1b_0 numpy 1.17.3 py36h4ceb530_0 numpy-base 1.17.3 py36hc3f5095_0 numpydoc 0.9.1 py_0 openssl 1.1.1d he774522_3 packaging 19.2 py_0 pandoc 2.2.3.2 0 pandocfilters 1.4.2 py36_1 parso 0.5.1 py_0 pickleshare 0.7.5 py36_0 pillow 6.2.1 pypi_0 pypi pip 19.3.1 py36_0 prompt_toolkit 2.0.10 py_0 protobuf 3.10.0 pypi_0 pypi psutil 5.6.3 py36he774522_0 pycodestyle 2.5.0 py36_0 pycparser 2.19 py36_0 pyflakes 2.1.1 py36_0 pygments 2.4.2 py_0 pylint 2.4.3 py36_0 pyopenssl 19.0.0 py36_0 pyparsing 2.4.2 py_0 pyqt 5.9.2 py36h6538335_2 pyreadline 2.1 py36_1 pyrsistent 0.15.4 py36he774522_0 pysocks 1.7.1 py36_0 python 3.6.9 h5500b2f_0 python-dateutil 2.8.1 py_0 pytz 2019.3 py_0 pywin32 223 py36hfa6e2cd_1 pyyaml 5.1.2 py36he774522_0 pyzmq 18.1.0 py36ha925a31_0 qt 5.9.7 vc14h73c81de_0 qtawesome 0.6.0 py_0 qtconsole 4.5.5 py_0 qtpy 1.9.0 py_0 requests 2.22.0 py36_0 rope 0.14.0 py_0 scipy 1.3.1 py36h29ff71c_0 setuptools 39.1.0 pypi_0 pypi sip 4.19.8 py36h6538335_0 six 1.13.0 pypi_0 pypi snowballstemmer 2.0.0 py_0 sphinx 2.2.1 py_0 sphinxcontrib-applehelp 1.0.1 py_0 sphinxcontrib-devhelp 1.0.1 py_0 sphinxcontrib-htmlhelp 1.0.2 py_0 sphinxcontrib-jsmath 1.0.1 py_0 sphinxcontrib-qthelp 1.0.2 py_0 sphinxcontrib-serializinghtml 1.1.3 py_0 spyder 3.3.6 py36_0 spyder-kernels 0.5.2 py36_0 sqlite 3.30.1 he774522_0 sqlparse 0.3.0 pypi_0 pypi tensorboard 1.10.0 py36he025d50_0 tensorflow 1.10.0 gpu_py36h3514669_0 tensorflow-base 1.10.0 gpu_py36h6e53903_0 tensorflow-gpu 1.10.0 pypi_0 pypi termcolor 1.1.0 pypi_0 pypi testpath 0.4.2 py36_0 tornado 6.0.3 py36he774522_0 traitlets 4.3.3 py36_0 typed-ast 1.4.0 py36he774522_0 urllib3 1.25.6 pypi_0 pypi vc 14.1 h0510ff6_4 vs2015_runtime 14.16.27012 hf0eaf9b_0 wcwidth 0.1.7 py36h3d5aa90_0 webencodings 0.5.1 py36_1 werkzeug 0.16.0 py_0 wheel 0.33.6 py36_0 win_inet_pton 1.1.0 py36_0 wincertstore 0.2 py36h7fe50ca_0 wrapt 1.11.2 py36he774522_0 yaml 0.1.7 hc54c509_2 zeromq 4.3.1 h33f27b4_3 zipp 0.6.0 py_0 zlib 1.2.11 h62dcd97_3 ``` 2*RTX2080Ti driver 4.19.67
RedHat企业版6.2中编译安装Qt4.8.5后,进入/tools/qvfb中gmake出现以下错误
有懂的人给看看是怎么回事,急求高手解答。错误如下:.obj/release-shared/qanimationwriter.o: In function `QAnimationWriter::QAnimationWriter(QString const&, char const*)': qanimationwriter.cpp:(.text+0x9ec): undefined reference to `png_create_write_struct' qanimationwriter.cpp:(.text+0x9f7): undefined reference to `png_create_info_struct' qanimationwriter.cpp:(.text+0xa0d): undefined reference to `png_set_compression_level' qanimationwriter.cpp:(.text+0xa2c): undefined reference to `png_set_write_fn' .obj/release-shared/qanimationwriter.o: In function `QAnimationWriterMNG::setImage(QImage const&)': qanimationwriter.cpp:(.text._ZN19QAnimationWriterMNG8setImageERK6QImage[QAnimationWriterMNG::setImage(QImage const&)]+0xb6): undefined reference to `png_write_chunk' .obj/release-shared/qanimationwriter.o: In function `QAnimationWriterMNG::write(png_struct_def*, unsigned char*, unsigned int)': qanimationwriter.cpp:(.text._ZN19QAnimationWriterMNG5writeEP14png_struct_defPhj[QAnimationWriterMNG::write(png_struct_def*, unsigned char*, unsigned int)]+0xd): undefined reference to `png_get_io_ptr' 注:在qanimationwriter.cpp中已包含<png.h>且libpng库也已安装。
conda安装librosa报错LinkError: post-link script failed for package conda-forge::qt?
(tensorflow-gpu) C:\Users\AnnJune>conda install -c conda-forge librosa Collecting package metadata: done Solving environment: \ The environment is inconsistent, please check the package plan carefully The following packages are causing the inconsistency: - conda-forge/noarch::librosa==0.6.3=py_0 - conda-forge/win-64::matplotlib==3.1.0=py36_1 - conda-forge/win-64::matplotlib-base==3.1.0=py36h2852a4a_1 - defaults/win-64::numba==0.39.0=py36h830ac7b_0 - conda-forge/win-64::pyqt==5.6.0=py36h764d66f_1008 - conda-forge/noarch::resampy==0.2.1=py_1 - conda-forge/win-64::scikit-learn==0.21.2=py36h0ff8352_0 - defaults/win-64::scipy==1.2.1=py36h29ff71c_0 done ## Package Plan ## environment location: C:\Users\AnnJune\Anaconda3\envs\tensorflow-gpu added / updated specs: - librosa The following packages will be downloaded: package | build ---------------------------|----------------- certifi-2019.3.9 | py36_0 149 KB conda-forge icu-58.1 | vc14_0 11.3 MB conda-forge llvmlite-0.28.0 | py36_0 12.5 MB conda-forge numba-0.43.1 | py36hf9181ef_0 2.8 MB defaults openssl-1.1.1b | hfa6e2cd_2 4.8 MB conda-forge pyqt-5.9.2 | py36h6538335_0 4.3 MB conda-forge qt-5.9.7 | hc6833c9_1 91.1 MB conda-forge sip-4.19.8 |py36h6538335_1000 281 KB conda-forge ------------------------------------------------------------ Total: 127.1 MB The following NEW packages will be INSTALLED: audioread conda-forge/win-64::audioread-2.1.6-py36_0 blas pkgs/main/win-64::blas-1.0-mkl ca-certificates conda-forge/win-64::ca-certificates-2019.3.9-hecc5488_0 cycler conda-forge/noarch::cycler-0.10.0-py_1 decorator conda-forge/noarch::decorator-4.4.0-py_0 freetype conda-forge/win-64::freetype-2.10.0-h5db478b_0 icc_rt pkgs/main/win-64::icc_rt-2019.0.0-h0cc432a_1 icu conda-forge/win-64::icu-58.1-vc14_0 intel-openmp pkgs/main/win-64::intel-openmp-2019.3-203 joblib conda-forge/noarch::joblib-0.13.2-py_0 jpeg conda-forge/win-64::jpeg-9c-hfa6e2cd_1001 kiwisolver conda-forge/win-64::kiwisolver-1.1.0-py36he980bc4_0 libblas conda-forge/win-64::libblas-3.8.0-10_mkl libcblas conda-forge/win-64::libcblas-3.8.0-10_mkl liblapack conda-forge/win-64::liblapack-3.8.0-10_mkl libpng conda-forge/win-64::libpng-1.6.37-h7602738_0 llvmlite conda-forge/win-64::llvmlite-0.28.0-py36_0 mkl pkgs/main/win-64::mkl-2019.3-203 numpy conda-forge/win-64::numpy-1.16.3-py36h873a0b8_0 openssl conda-forge/win-64::openssl-1.1.1b-hfa6e2cd_2 pyparsing conda-forge/noarch::pyparsing-2.4.0-py_0 python-dateutil conda-forge/noarch::python-dateutil-2.8.0-py_0 qt conda-forge/win-64::qt-5.9.7-hc6833c9_1 sip conda-forge/win-64::sip-4.19.8-py36h6538335_1000 six conda-forge/win-64::six-1.12.0-py36_1000 tornado conda-forge/win-64::tornado-6.0.2-py36hfa6e2cd_0 zlib conda-forge/win-64::zlib-1.2.11-h2fa13f4_1004 The following packages will be UPDATED: numba 0.39.0-py36h830ac7b_0 --> 0.43.1-py36hf9181ef_0 pyqt 5.6.0-py36h764d66f_1008 --> 5.9.2-py36h6538335_0 The following packages will be SUPERSEDED by a higher-priority channel: certifi pkgs/main --> conda-forge Proceed ([y]/n)? y Downloading and Extracting Packages openssl-1.1.1b | 4.8 MB | ############################################################################ | 100% numba-0.43.1 | 2.8 MB | ############################################################################ | 100% pyqt-5.9.2 | 4.3 MB | ############################################################################ | 100% llvmlite-0.28.0 | 12.5 MB | ############################################################################ | 100% qt-5.9.7 | 91.1 MB | ############################################################################ | 100% certifi-2019.3.9 | 149 KB | ############################################################################ | 100% icu-58.1 | 11.3 MB | ############################################################################ | 100% sip-4.19.8 | 281 KB | ############################################################################ | 100% Preparing transaction: done Verifying transaction: done Executing transaction: \ ERROR conda.core.link:_execute_post_link_actions(658): An error occurred while installing package 'conda-forge::qt-5.9.7-hc6833c9_1'. LinkError: post-link script failed for package conda-forge::qt-5.9.7-hc6833c9_1 running your command again with `-v` will provide additional information location of failed script: C:\Users\AnnJune\Anaconda3\envs\tensorflow-gpu\Scripts\.qt-post-link.bat ==> script messages <== <None> Attempting to roll back. failed ERROR conda.core.link:_execute(568): An error occurred while installing package 'conda-forge::qt-5.9.7-hc6833c9_1'. LinkError: post-link script failed for package conda-forge::qt-5.9.7-hc6833c9_1 running your command again with `-v` will provide additional information location of failed script: C:\Users\AnnJune\Anaconda3\envs\tensorflow-gpu\Scripts\.qt-post-link.bat ==> script messages <== <None> Attempting to roll back. Rolling back transaction: done LinkError: post-link script failed for package conda-forge::qt-5.9.7-hc6833c9_1 running your command again with `-v` will provide additional information location of failed script: C:\Users\AnnJune\Anaconda3\envs\tensorflow-gpu\Scripts\.qt-post-link.bat ==> script messages <== <None>
为什么这段代码运行后显示:进程已结束,退出代码0,却没有我设计的窗口出现,求解决??
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'jinhang.ui' # # Created by: PyQt5 UI code generator 5.13.0 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(800, 600) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.label = QtWidgets.QLabel(self.centralwidget) self.label.setGeometry(QtCore.QRect(30, 40, 71, 31)) self.label.setObjectName("label") self.label_2 = QtWidgets.QLabel(self.centralwidget) self.label_2.setGeometry(QtCore.QRect(30, 100, 91, 21)) self.label_2.setObjectName("label_2") self.label_3 = QtWidgets.QLabel(self.centralwidget) self.label_3.setGeometry(QtCore.QRect(30, 140, 61, 21)) self.label_3.setObjectName("label_3") self.label_4 = QtWidgets.QLabel(self.centralwidget) self.label_4.setGeometry(QtCore.QRect(180, 140, 61, 16)) self.label_4.setObjectName("label_4") self.label_5 = QtWidgets.QLabel(self.centralwidget) self.label_5.setGeometry(QtCore.QRect(30, 180, 51, 21)) self.label_5.setObjectName("label_5") self.label_6 = QtWidgets.QLabel(self.centralwidget) self.label_6.setGeometry(QtCore.QRect(30, 210, 71, 31)) self.label_6.setObjectName("label_6") self.label_7 = QtWidgets.QLabel(self.centralwidget) self.label_7.setGeometry(QtCore.QRect(190, 210, 71, 31)) self.label_7.setObjectName("label_7") self.label_8 = QtWidgets.QLabel(self.centralwidget) self.label_8.setGeometry(QtCore.QRect(30, 250, 71, 21)) self.label_8.setObjectName("label_8") self.pushButton = QtWidgets.QPushButton(self.centralwidget) self.pushButton.setGeometry(QtCore.QRect(80, 490, 75, 23)) self.pushButton.setObjectName("pushButton") self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget) self.pushButton_2.setGeometry(QtCore.QRect(220, 490, 75, 23)) self.pushButton_2.setObjectName("pushButton_2") self.textEdit = QtWidgets.QTextEdit(self.centralwidget) self.textEdit.setGeometry(QtCore.QRect(100, 40, 71, 31)) self.textEdit.setObjectName("textEdit") self.textEdit_2 = QtWidgets.QTextEdit(self.centralwidget) self.textEdit_2.setGeometry(QtCore.QRect(180, 40, 71, 31)) self.textEdit_2.setObjectName("textEdit_2") self.textEdit_3 = QtWidgets.QTextEdit(self.centralwidget) self.textEdit_3.setGeometry(QtCore.QRect(260, 40, 71, 31)) self.textEdit_3.setObjectName("textEdit_3") self.textEdit_4 = QtWidgets.QTextEdit(self.centralwidget) self.textEdit_4.setGeometry(QtCore.QRect(90, 130, 71, 31)) self.textEdit_4.setObjectName("textEdit_4") self.textEdit_5 = QtWidgets.QTextEdit(self.centralwidget) self.textEdit_5.setGeometry(QtCore.QRect(240, 130, 71, 31)) self.textEdit_5.setObjectName("textEdit_5") self.textEdit_6 = QtWidgets.QTextEdit(self.centralwidget) self.textEdit_6.setGeometry(QtCore.QRect(100, 210, 71, 31)) self.textEdit_6.setObjectName("textEdit_6") self.textEdit_7 = QtWidgets.QTextEdit(self.centralwidget) self.textEdit_7.setGeometry(QtCore.QRect(260, 210, 71, 31)) self.textEdit_7.setObjectName("textEdit_7") self.plainTextEdit = QtWidgets.QPlainTextEdit(self.centralwidget) self.plainTextEdit.setGeometry(QtCore.QRect(380, 0, 351, 551)) self.plainTextEdit.setObjectName("plainTextEdit") self.plainTextEdit_2 = QtWidgets.QPlainTextEdit(self.centralwidget) self.plainTextEdit_2.setGeometry(QtCore.QRect(30, 270, 341, 211)) self.plainTextEdit_2.setObjectName("plainTextEdit_2") self.verticalScrollBar = QtWidgets.QScrollBar(self.centralwidget) self.verticalScrollBar.setGeometry(QtCore.QRect(710, 0, 16, 551)) self.verticalScrollBar.setOrientation(QtCore.Qt.Vertical) self.verticalScrollBar.setObjectName("verticalScrollBar") MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23)) self.menubar.setObjectName("menubar") MainWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) self.label.setText(_translate("MainWindow", "aa号:")) self.label_2.setText(_translate("MainWindow", "时间段:")) self.label_3.setText(_translate("MainWindow", "开始时间:")) self.label_4.setText(_translate("MainWindow", "结束时间:")) self.label_5.setText(_translate("MainWindow", "bb段:")) self.label_6.setText(_translate("MainWindow", "开始点:")) self.label_7.setText(_translate("MainWindow", "结束点:")) self.label_8.setText(_translate("MainWindow", "分析结果:")) self.pushButton.setText(_translate("MainWindow", "清 除")) self.pushButton_2.setText(_translate("MainWindow", "开始分析")) if __name__ == "MainWindow": import sys app = QtWidgets.QApplication(sys.argv) widget = QtWidgets.QWidget() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())
python 爬虫遇到问题了,这个问题怎么办
我们老师让写一个爬虫,爬东方财富每个股票的历史流动资金,我写出来后,运行程序,前面没什么问题,到后面就有问题了 代码如下:import requests import pandas import json import pymssql import re #获取股票资金流量网页的数据 def GetHtml(url): html=requests.get(url) html=html.text return html #对数据进行拆分 def CleanData(html): Str_data=html[len('jQuery1830006374794149931473_1577602052640')+1:-2] #对数据进行切割 Str_data2=json.loads(Str_data)['data'] #对无用数据进行再切分获取代码和名称 print(Str_data2['code']) code = Str_data2['code'] #股票编码 name = Str_data2['name'] #股票名称 data=[] for i in range (len(Str_data2['klines'])): data.append(Str_data2['klines'][i]) dealData(data,name,code) data.clear() Str_data2.clear() #对拆分数据进行整理 def dealData(datalist,name,code): #对列表中元素进行切片 new_datalist = ''.join(datalist) new_datalist=new_datalist.split(',') Name=name Code=code #将新列表放入数据库中 insertDatabase(new_datalist,Name,Code) new_datalist.clear() #将数据导入数据库中 def insertDatabase(datalist,Name,Code): #对新列表数据进行分类 date=datalist[0] #时间 close_price=datalist[11] #收盘价 Quote_change=datalist[12] #涨跌幅 Main_net=datalist[1] #主力净额 Main_foce=datalist[6] #主力净占比 Over_net=datalist[5] #超大单净额 Over_foce=datalist[10] #超大单净占比 Big_net=datalist[4] #大单净额 Big_foce=datalist[9] #大单净占比 Mid_net=datalist[3] #中单净额 Mid_foce=datalist[8] #中单净占比 Sm_net=datalist[2] #小单净额 Sm_foce=datalist[7] #小单净占比 data=(Name,Code,date,close_price,Quote_change,Main_net,Main_foce,Over_net,Over_foce,Big_net,Big_foce,Mid_net,Mid_foce,Sm_net,Sm_foce) sql="insert into Moneymove values (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s);" #建立连接 conn = pymssql.connect(host="localhost:1433", user="sa", password="123456", database="test", charset="UTF-8") cursor = conn.cursor() #插入测试数据 cursor.execute(sql , data) conn.commit() del data conn.close() #创建数据库 def Createdatabase(): conn = pymssql.connect(host="localhost:1433", user="sa", password="123456", database="test", charset="UTF-8") cursor = conn.cursor() cursor.execute(""" create table Moneymove( 股票代码 varchar(100), 股票名称 varchar(100), 时间 varchar(100) , 收盘价 varchar(100), 涨跌幅 varchar(100), 主流净额 varchar(100), 主流净占比 varchar(100), 超大单净额 varchar(100), 超大单净占比 varchar(100), 大单净额 varchar(100), 大单净占比 varchar(100), 中单净额 varchar(100), 中单净占比 varchar(100), 小单净额 varchar(100), 小单净占比 varchar(100) ) """) conn.commit() conn.close() # def NeedData(): # 建立连接并获取cursor conn = pymssql.connect(host="localhost:1433", user="sa", password="123456", database="test", charset="UTF-8") cursor = conn.cursor() # 如果连接时没有设置autocommit为True的话,必须主动调用commit() 来保存更改。 conn.commit() # 查询记录 cursor.execute('SELECT 股票代码 From SwClass$ ') # 获取一条记录 row = cursor.fetchone() code_list=[] # 循环打印记录(这里只有一条,所以只打印出一条) for i in range (3769): if row[0] != None: if str(row[0][0]) =='6': code='1.'+row[0] code_list.append(code) else: code = '0.'+row[0] code_list.append(code) row = cursor.fetchone() return code_list # 连接用完后记得关闭以释放资源 conn.close() def main(): Createdatabase() code_list=NeedData() print(code_list) for i in code_list: url='http://push2his.eastmoney.com/api/qt/stock/fflow/daykline/get?lmt=0&klt=101&secid='+ str(i)+'&fields1=f1,f2,f3,f7&fields2=f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61,f62,f63,f64,f65&ut=b2884a393a59ad64002292a3e90d46a5&cb=jQuery1830006374794149931473_1577602052640&_=1577602052949' html=GetHtml(url) CleanData(html) main() 出现的问题是这个: Traceback (most recent call last): File "C:/Users/VULCAN/Desktop/爬虫实习/3.py", line 135, in <module> main() File "C:/Users/VULCAN/Desktop/爬虫实习/3.py", line 134, in main CleanData(html) File "C:/Users/VULCAN/Desktop/爬虫实习/3.py", line 25, in CleanData dealData(data,name,code) File "C:/Users/VULCAN/Desktop/爬虫实习/3.py", line 39, in dealData insertDatabase(new_datalist,Name,Code) File "C:/Users/VULCAN/Desktop/爬虫实习/3.py", line 65, in insertDatabase conn = pymssql.connect(host="localhost:1433", user="sa", password="123456", database="test", charset="UTF-8") File "src\pymssql.pyx", line 636, in pymssql.connect File "src\_mssql.pyx", line 1957, in _mssql.connect File "src\_mssql.pyx", line 675, in _mssql.MSSQLConnection.__init__ ValueError: list.remove(x): x not in list 请问各位大佬,这要如何解决?
bitcoin源码v0.14.2制作山寨币
1.下载源码 2.只改变一个简单的参数genesisoutputScript = CScript() << ParseHex("04.....) 's value by download and run [ cat genesiscoinbase.hex ] 3.Run GenesisH0 with python genesis.py -t $(date +%s) -a SHA256 -z "Now is 2018-02-20" -p 04..... -n 0x1e00ffff 4.It says merkle hash : be766.... I input this to chainparams.cpp's Main assert(genesis.hashMerkleRoot == unit256s("0xbe766............")); and it says pubkey : 04678a..... **where this pubkey should be written at source?** and it says time : 1519.... I input this to chainparams.cpp's Main's genesis = CreateGenesisBlock(1519..... this's first parameter) and it says nonce : 170938 I input this to genesis = CreateGenesisBlock(1519..... , 179038, this's 2nd parameter) and genesis hash : 215c........... I input this to assert(consensus.hashGenesisBlock == unit256s("0x215c............")); 5.重复step3 for Testnet part 6.make make install run:bitcoin-qt 7.bitcoin-qt: chainparams.cpp:120: CMainParams::CMainParams(): Assertion `consensus.hashGenesisBlock == uint256S("0x215c....")failed 8.What did I wrong? and how to fix?
界面设计软件QT安装错误E-FAIL
安装进程qt.57.src运行期间出现错误:提取installer://qt.src/5.7.1-0qtwebengine-opensource-src-5.7.1.7z时出现错误:内部代码:E-FAILA。 我在QT官网下载的安装软件qt-opensource-winodws-x86-msvc2013-5.7.1.exe,本人电脑32位,VS2013正常使用,并且没打算使用VS进行编程,打算直接使用安装完成后的qtcreater编程,QT在另一台电脑上安装完成并可正常使用,但是在本人电脑上就是一直出现该错误,更换多个版本包括,qt5.6,qt8.0都是出现同样的错误,安装失败。请高人指点
Python + C/C++ 嵌入式编程:Qt向Python传递数组
编程环境Qt5.7.1 MSVC版,VS2013,python3.7.1,我使用Qt像python传递字节数组,Qt和python代码如下,当多次点击按钮多次调用(第二次调用时)python程序时,提示程序异常结束。 Qt程序: INCLUDEPATH +=D:/Python3.7.3/include INCLUDEPATH += D:/Python3.7.3/Lib/site-packages/numpy/core/include LIBS += -LD:/Python3.7.3/libs/ -lpython37 int init_numpy() { import_array(); } void MainWindow::on_ButtonNumpy_clicked() { Py_Initialize();//使用python之前,要调用Py_Initialize();这个函数进行初始化 init_numpy(); if (!Py_IsInitialized()) { printf("初始化失败!"); return ; } PyRun_SimpleString("import sys"); PyRun_SimpleString("sys.path.append('./')");//这一步很重要,修改Python路径 PyObject pModule = PyImport_ImportModule("demo2");//这里是要调用的文件名hello.py PyObject pDict = PyModule_GetDict(pModule); if (pModule == NULL) { printf("Can't open python file\n"); return ; } //PyObject pFunc = PyObject_GetAttrString(pModule, "szSecTest"); double CArrays[3][3] = {{1.3, 2.4, 5.6}, {4.5, 7.8, 8.9}, {1.7, 0.4, 0.8}}; qDebug()<<"rrr"; npy_intp Dims[2] = {3, 3}; //生成包含这个多维数组的PyObject对象,使用PyArray_SimpleNewFromData函数,第一个参数2表示维度,第二个为维度数组Dims,第三个参数指出数组的类型,第四个参数为数组 PyObject PyArray = PyArray_SimpleNewFromData(2, Dims, NPY_DOUBLE, CArrays); PyObject ArgArray = PyTuple_New(1); PyTuple_SetItem(ArgArray, 0, PyArray); PyObject pFunc = PyDict_GetItemString(pDict , "Test");//这里是要调用的函数名 // PyObject * pFunc = PyObject_GetAttrString(pModule , "Test"); if (!pFunc){ printf("Get function hello failed\n"); return ; } PyObject *pRrturn = PyObject_CallObject(pFunc, ArgArray); qDebug()<<pRrturn; PyArray = NULL; ArgArray = NULL; pRrturn = NULL; pModule=NULL; pDict=NULL; Py_Finalize(); } python程序:import numpy as np def Test(test): print (test.shape,test[0], test[1],test[2]) 报错: Starting F:\Qt\build-TestNumpy-Desktop_Qt_5_7_1_MSVC2013_32bit-Release\release\TestNumpy.exe... rrr (3, 3) [1.3 2.4 5.6] [4.5 7.8 8.9] [1.7 0.4 0.8] 0x66937c44 D:\搜狗输入法\SogouInput\Components\程序异常结束。 F:\Qt\build-TestNumpy-Desktop_Qt_5_7_1_MSVC2013_32bit-Release\release\TestNumpy.exe crashed.
请问这是什么加密方式?或者什么手法。
文件名:bosimulatorsn-JStNrC0kc2ZkTtBYe7fXeQ==v9.bos 文件是根据一串鉴别码来生成的。 如下: JStNrC0kc2ZkTtBYe7fXeQ==v9 鉴别码是由MT4中的软件生成。 加密内容: Jkn0qT+V1wAkGluTDDjscDTtmn+rmFOQj29SRvd3fb1FmmivrBPofQHdNUk01x04xCmKbv1NzGxLy67FbJrWK7NdR80EP63TVebrQKQZCORCw6HhQjR1d3o2zKWWnnABxZy+OYzfUAZoVvxPrtOzq7ZnONac4ZN8qegrg3KJMi9ig412uLKGnA8vzT7Mf5cYBPnzmNAt7ltkYcciUrg8WQC6IWC0F6RcBK34Ur0vLJk0eyHi09S1N/Qe4W5peUZCOHMi31bNlLMsZGsMr+tWG8QH7KxEJn7pKHGJAeOoeLCqk8jlsoPWsEmrMVYCb452nwHcqWhUEv/Tyz0CwzjJ+Q== 相关文件:https://www.lanzous.com/i6mojab
ubuntu16.04安装opencv时,make不通过该怎么办?
cmake已经完成,情况如下: ``` cmake .. -- Detected version of GNU GCC: 54 (504) -- Found ZLIB: /usr/lib/x86_64-linux-gnu/libz.so (found suitable version "1.2.8", minimum required is "1.2.3") -- Found ZLIB: /usr/lib/x86_64-linux-gnu/libz.so (found version "1.2.8") -- Checking for module 'gstreamer-base-1.0' -- No package 'gstreamer-base-1.0' found -- Checking for module 'gstreamer-video-1.0' -- No package 'gstreamer-video-1.0' found -- Checking for module 'gstreamer-app-1.0' -- No package 'gstreamer-app-1.0' found -- Checking for module 'gstreamer-riff-1.0' -- No package 'gstreamer-riff-1.0' found -- Checking for module 'gstreamer-pbutils-1.0' -- No package 'gstreamer-pbutils-1.0' found -- Checking for module 'gstreamer-base-0.10' -- No package 'gstreamer-base-0.10' found -- Checking for module 'gstreamer-video-0.10' -- No package 'gstreamer-video-0.10' found -- Checking for module 'gstreamer-app-0.10' -- No package 'gstreamer-app-0.10' found -- Checking for module 'gstreamer-riff-0.10' -- No package 'gstreamer-riff-0.10' found -- Checking for module 'gstreamer-pbutils-0.10' -- No package 'gstreamer-pbutils-0.10' found -- Looking for linux/videodev.h -- Looking for linux/videodev.h - not found -- Looking for linux/videodev2.h -- Looking for linux/videodev2.h - found -- Looking for sys/videoio.h -- Looking for sys/videoio.h - not found -- Checking for module 'libavresample' -- No package 'libavresample' found -- Looking for libavformat/avformat.h -- Looking for libavformat/avformat.h - found -- Looking for ffmpeg/avformat.h -- Looking for ffmpeg/avformat.h - not found -- Checking for module 'libgphoto2' -- No package 'libgphoto2' found -- found IPP (ICV version): 9.0.1 [9.0.1] -- at: /home/quxutao/opencv-3.1.0/3rdparty/ippicv/unpack/ippicv_lnx -- CUDA detected: 7.5 -- CUDA NVCC target flags: -gencode;arch=compute_20,code=sm_20;-gencode;arch=compute_20,code=sm_21;-gencode;arch=compute_30,code=sm_30;-gencode;arch=compute_35,code=sm_35;-gencode;arch=compute_30,code=compute_30 -- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE) -- To enable PlantUML support, set PLANTUML_JAR environment variable or pass -DPLANTUML_JAR=<filepath> option to cmake -- Could NOT find PythonInterp: Found unsuitable version "1.4", but required is at least "2.7" (found /home/quxutao/.virtualenvs/cv/bin/python) -- Could NOT find PythonInterp: Found unsuitable version "1.4", but required is at least "2.6" (found /home/quxutao/.virtualenvs/cv/bin/python) -- Could NOT find PythonInterp: Found unsuitable version "1.4", but required is at least "3.4" (found /home/quxutao/.virtualenvs/cv/bin/python) -- Could NOT find PythonInterp: Found unsuitable version "1.4", but required is at least "3.2" (found /home/quxutao/.virtualenvs/cv/bin/python) -- Could NOT find JNI (missing: JAVA_INCLUDE_PATH JAVA_INCLUDE_PATH2 JAVA_AWT_INCLUDE_PATH) -- Could NOT find Matlab (missing: MATLAB_MEX_SCRIPT MATLAB_INCLUDE_DIRS MATLAB_ROOT_DIR MATLAB_LIBRARIES MATLAB_LIBRARY_DIRS MATLAB_MEXEXT MATLAB_ARCH MATLAB_BIN) -- VTK is not found. Please set -DVTK_DIR in CMake to VTK build directory, or to VTK install subdirectory with VTKConfig.cmake file -- Caffe: NO -- Protobuf: YES -- Glog: NO -- HDF5: YES -- Module opencv_sfm disabled because the following dependencies are not found: Eigen Glog/Gflags -- Tesseract: NO -- HDF5: YES -- Build libprotobuf from sources: -- The protocol buffer compiler not found -- Tesseract: NO -- -- General configuration for OpenCV 3.1.0 ===================================== -- Version control: unknown -- -- Platform: -- Host: Linux 4.15.0-47-generic x86_64 -- CMake: 3.5.1 -- CMake generator: Unix Makefiles -- CMake build tool: /usr/bin/make -- Configuration: RELEASE -- -- C/C++: -- Built as dynamic libs?: YES -- C++ Compiler: /usr/bin/c++ (ver 5.4.0) -- C++ flags (Release): -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wno-narrowing -Wno-delete-non-virtual-dtor -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -mno-avx -msse3 -mno-ssse3 -mno-sse4.1 -mno-sse4.2 -ffunction-sections -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG -DNDEBUG -- C++ flags (Debug): -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wno-narrowing -Wno-delete-non-virtual-dtor -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -mno-avx -msse3 -mno-ssse3 -mno-sse4.1 -mno-sse4.2 -ffunction-sections -fvisibility=hidden -fvisibility-inlines-hidden -g -O0 -DDEBUG -D_DEBUG -- C Compiler: /usr/bin/cc -- C flags (Release): -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wno-narrowing -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -mno-avx -msse3 -mno-ssse3 -mno-sse4.1 -mno-sse4.2 -ffunction-sections -fvisibility=hidden -O3 -DNDEBUG -DNDEBUG -- C flags (Debug): -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wno-narrowing -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -mno-avx -msse3 -mno-ssse3 -mno-sse4.1 -mno-sse4.2 -ffunction-sections -fvisibility=hidden -g -O0 -DDEBUG -D_DEBUG -- Linker flags (Release): -- Linker flags (Debug): -- Precompiled headers: YES -- Extra dependencies: /usr/lib/x86_64-linux-gnu/libpng.so /usr/lib/x86_64-linux-gnu/libtiff.so /usr/lib/x86_64-linux-gnu/libjasper.so /usr/lib/x86_64-linux-gnu/libjpeg.so gtk-3 gdk-3 pangocairo-1.0 pango-1.0 atk-1.0 cairo-gobject cairo gdk_pixbuf-2.0 gio-2.0 gobject-2.0 gthread-2.0 glib-2.0 dc1394 v4l1 v4l2 avcodec-ffmpeg avformat-ffmpeg avutil-ffmpeg swscale-ffmpeg /usr/lib/x86_64-linux-gnu/libbz2.so /usr/lib/x86_64-linux-gnu/hdf5/openmpi/lib/libhdf5.so /usr/lib/x86_64-linux-gnu/libsz.so /usr/lib/x86_64-linux-gnu/libz.so /usr/lib/x86_64-linux-gnu/libdl.so /usr/lib/x86_64-linux-gnu/libm.so dl m pthread rt cudart nppc nppi npps cufft -L/usr/lib/x86_64-linux-gnu -- 3rdparty dependencies: libwebp IlmImf libprotobuf -- -- OpenCV modules: -- To be built: cudev core cudaarithm flann hdf imgproc ml reg surface_matching video cudabgsegm cudafilters cudaimgproc cudawarping dnn fuzzy imgcodecs photo shape videoio cudacodec highgui objdetect plot ts xobjdetect xphoto bgsegm bioinspired dpm face features2d line_descriptor saliency text calib3d ccalib cudafeatures2d cudalegacy cudaobjdetect cudaoptflow cudastereo datasets rgbd stereo structured_light superres tracking videostab xfeatures2d ximgproc aruco optflow stitching -- Disabled: world contrib_world -- Disabled by dependency: - -- Unavailable: java python2 python3 viz cvv matlab sfm -- -- GUI: -- QT: NO -- GTK+ 3.x: YES (ver 3.18.9) -- GThread : YES (ver 2.48.2) -- GtkGlExt: NO -- OpenGL support: NO -- VTK support: NO -- -- Media I/O: -- ZLib: /usr/lib/x86_64-linux-gnu/libz.so (ver 1.2.8) -- JPEG: /usr/lib/x86_64-linux-gnu/libjpeg.so (ver ) -- WEBP: build (ver 0.3.1) -- PNG: /usr/lib/x86_64-linux-gnu/libpng.so (ver 1.2.54) -- TIFF: /usr/lib/x86_64-linux-gnu/libtiff.so (ver 42 - 4.0.6) -- JPEG 2000: /usr/lib/x86_64-linux-gnu/libjasper.so (ver 1.900.1) -- OpenEXR: build (ver 1.7.1) -- GDAL: NO -- -- Video I/O: -- DC1394 1.x: NO -- DC1394 2.x: YES (ver 2.2.4) -- FFMPEG: YES -- codec: YES (ver 56.60.100) -- format: YES (ver 56.40.101) -- util: YES (ver 54.31.100) -- swscale: YES (ver 3.1.101) -- resample: NO -- gentoo-style: YES -- GStreamer: NO -- OpenNI: NO -- OpenNI PrimeSensor Modules: NO -- OpenNI2: NO -- PvAPI: NO -- GigEVisionSDK: NO -- UniCap: NO -- UniCap ucil: NO -- V4L/V4L2: Using libv4l1 (ver 1.10.0) / libv4l2 (ver 1.10.0) -- XIMEA: NO -- Xine: NO -- gPhoto2: NO -- -- Parallel framework: pthreads -- -- Other third-party libraries: -- Use IPP: 9.0.1 [9.0.1] -- at: /home/quxutao/opencv-3.1.0/3rdparty/ippicv/unpack/ippicv_lnx -- Use IPP Async: NO -- Use VA: NO -- Use Intel VA-API/OpenCL: NO -- Use Eigen: NO -- Use Cuda: YES (ver 7.5) -- Use OpenCL: YES -- Use custom HAL: NO -- -- NVIDIA CUDA -- Use CUFFT: YES -- Use CUBLAS: NO -- USE NVCUVID: NO -- NVIDIA GPU arch: 20 21 30 35 -- NVIDIA PTX archs: 30 -- Use fast math: NO -- -- OpenCL: -- Version: dynamic -- Include path: /home/quxutao/opencv-3.1.0/3rdparty/include/opencl/1.2 -- Use AMDFFT: NO -- Use AMDBLAS: NO -- -- Python 2: -- Interpreter: NO -- -- Python 3: -- Interpreter: NO -- -- Python (for build): NO -- -- Java: -- ant: NO -- JNI: NO -- Java wrappers: NO -- Java tests: NO -- -- Matlab: Matlab not found or implicitly disabled -- -- Documentation: -- Doxygen: NO -- PlantUML: NO -- -- Tests and samples: -- Tests: YES -- Performance tests: YES -- C/C++ Examples: YES -- -- Install path: /usr/local -- -- cvconfig.h is in: /home/quxutao/opencv-3.1.0/build -- ----------------------------------------------------------------- -- -- Configuring done -- Generating done -- Build files have been written to: /home/quxutao/opencv-3.1.0/build ``` 但是make的时候,就报错: ``` make [ 4%] Built target libwebp [ 4%] Built target IlmImf [ 4%] Built target opencv_cudev [ 4%] Built target opencv_core_pch_dephelp [ 4%] Built target pch_Generate_opencv_core [ 4%] Building NVCC (Device) object modules/core/CMakeFiles/cuda_compile.dir/src/cuda/cuda_compile_generated_gpu_mat.cu.o /usr/include/string.h: In function ‘void* __mempcpy_inline(void*, const void*, size_t)’: /usr/include/string.h:652:42: error: ‘memcpy’ was not declared in this scope return (char *) memcpy (__dest, __src, __n) + __n; ^ CMake Error at cuda_compile_generated_gpu_mat.cu.o.cmake:266 (message): Error generating file /home/quxutao/opencv-3.1.0/build/modules/core/CMakeFiles/cuda_compile.dir/src/cuda/./cuda_compile_generated_gpu_mat.cu.o modules/core/CMakeFiles/opencv_core.dir/build.make:399: recipe for target 'modules/core/CMakeFiles/cuda_compile.dir/src/cuda/cuda_compile_generated_gpu_mat.cu.o' failed make[2]: *** [modules/core/CMakeFiles/cuda_compile.dir/src/cuda/cuda_compile_generated_gpu_mat.cu.o] Error 1 CMakeFiles/Makefile2:2307: recipe for target 'modules/core/CMakeFiles/opencv_core.dir/all' failed make[1]: *** [modules/core/CMakeFiles/opencv_core.dir/all] Error 2 Makefile:160: recipe for target 'all' failed make: *** [all] Error 2 ``` 弄了一下午了,没有找到相关的解决办法。我的cuda是7.5,其实不用GPU也可以的,我只是想用KAZE滤波。。。跪求大神帮忙。。。
linux 安装qt4时候,报以下错误,怎么解决啊,谢谢各位大神
ln -s libQtCore.so.4.8.7 libQtCore.so ln: 创建符号链接 "libQtCore.so": 不支持的操作 gmake[1]: [../../lib/libQtCore.so.4.8.7] 错误 1 (忽略) ln -s libQtCore.so.4.8.7 libQtCore.so.4 ln: 创建符号链接 "libQtCore.so.4": 不支持的操作 gmake[1]: [../../lib/libQtCore.so.4.8.7] 错误 1 (忽略) ln -s libQtCore.so.4.8.7 libQtCore.so.4.8 ln: 创建符号链接 "libQtCore.so.4.8": 不支持的操作 gmake[1]: [../../lib/libQtCore.so.4.8.7] 错误 1 (忽略) rm -f ../../lib/libQtCore.so.4.8.7 rm -f ../../lib/libQtCore.so rm -f ../../lib/libQtCore.so.4 rm -f ../../lib/libQtCore.so.4.8 mv -f libQtCore.so.4.8.7 libQtCore.so libQtCore.so.4 libQtCore.so.4.8 ../../lib/ mv: 无法获取"libQtCore.so" 的文件状态(stat): 没有那个文件或目录 mv: 无法获取"libQtCore.so.4" 的文件状态(stat): 没有那个文件或目录 mv: 无法获取"libQtCore.so.4.8" 的文件状态(stat): 没有那个文件或目录 gmake[1]: [../../lib/libQtCore.so.4.8.7] 错误 1 (忽略) gmake[1]: Leaving directory `/mnt/hgfs/VMFile/qt-everywhere-opensource-src-4.8.7/src/corelib' cd src/xml/ && gmake -f Makefile gmake[1]: Entering directory `/mnt/hgfs/VMFile/qt-everywhere-opensource-src-4.8.7/src/xml' g++ -pipe -O2 -fvisibility=hidden -fvisibility-inlines-hidden -Wall -W -D_REENTRANT -fPIC -DQT_SHARED -DQT_BUILD_XML_LIB -DQT_NO_USING_NAMESPACE -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT3_SUPPORT -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_NO_DEBUG -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_HAVE_SSE3 -DQT_HAVE_SSSE3 -DQT_HAVE_SSE4_1 -DQT_HAVE_SSE4_2 -DQT_HAVE_AVX -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -I../../mkspecs/linux-g++ -I. -I../../include/QtCore -I../../include -I../../include/QtXml -I.rcc/release-shared -I.moc/release-shared -x c++-header -c ../corelib/global/qt_pch.h -o .pch/release-shared/QtXml.gch/c++ g++ -c -include .pch/release-shared/QtXml -pipe -O2 -fvisibility=hidden -fvisibility-inlines-hidden -Wall -W -D_REENTRANT -fPIC -DQT_SHARED -DQT_BUILD_XML_LIB -DQT_NO_USING_NAMESPACE -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT3_SUPPORT -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_NO_DEBUG -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_HAVE_SSE3 -DQT_HAVE_SSSE3 -DQT_HAVE_SSE4_1 -DQT_HAVE_SSE4_2 -DQT_HAVE_AVX -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -I../../mkspecs/linux-g++ -I. -I../../include/QtCore -I../../include -I../../include/QtXml -I.rcc/release-shared -I.moc/release-shared -o .obj/release-shared/qdom.o dom/qdom.cpp g++ -c -include .pch/release-shared/QtXml -pipe -O2 -fvisibility=hidden -fvisibility-inlines-hidden -Wall -W -D_REENTRANT -fPIC -DQT_SHARED -DQT_BUILD_XML_LIB -DQT_NO_USING_NAMESPACE -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT3_SUPPORT -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_NO_DEBUG -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_HAVE_SSE3 -DQT_HAVE_SSSE3 -DQT_HAVE_SSE4_1 -DQT_HAVE_SSE4_2 -DQT_HAVE_AVX -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -I../../mkspecs/linux-g++ -I. -I../../include/QtCore -I../../include -I../../include/QtXml -I.rcc/release-shared -I.moc/release-shared -o .obj/release-shared/qxml.o sax/qxml.cpp rm -f libQtXml.so.4.8.7 libQtXml.so libQtXml.so.4 libQtXml.so.4.8 g++ -Wl,-rpath-link,/mnt/hgfs/VMFile/qt-everywhere-opensource-src-4.8.7/lib -Wl,--no-undefined -Wl,-O1 -Wl,-rpath,/opt/qt4/lib -Wl,-rpath,/opt/qt4/lib -shared -Wl,-soname,libQtXml.so.4 -o libQtXml.so.4.8.7 .obj/release-shared/qdom.o .obj/release-shared/qxml.o -L/mnt/hgfs/VMFile/qt-everywhere-opensource-src-4.8.7/lib -lQtCore -L/mnt/hgfs/VMFile/qt-everywhere-opensource-src-4.8.7/lib -lpthread .obj/release-shared/qdom.o: In function `QList<QDomNodePrivate*>::detach_helper(int)': qdom.cpp:(.text._ZN5QListIP15QDomNodePrivateE13detach_helperEi[QList<QDomNodePrivate*>::detach_helper(int)]+0x34): undefined reference to `QListData::detach(int)' .obj/release-shared/qdom.o: In function `QList<QDomNodePrivate*>::detach_helper_grow(int, int)': qdom.cpp:(.text._ZN5QListIP15QDomNodePrivateE18detach_helper_growEii[QList<QDomNodePrivate*>::detach_helper_grow(int, int)]+0x35): undefined reference to `QListData::detach_grow(int*, int)' .obj/release-shared/qxml.o: In function `QList<QString>::detach_helper()': qxml.cpp:(.text._ZN5QListI7QStringE13detach_helperEv[QList<QString>::detach_helper()]+0x2d): undefined reference to `QListData::detach(int)' .obj/release-shared/qxml.o: In function `QList<QString>::append(QString const&)': qxml.cpp:(.text._ZN5QListI7QStringE6appendERKS0_[QList<QString>::append(QString const&)]+0x4b): undefined reference to `QListData::detach_grow(int*, int)' .obj/release-shared/qxml.o: In function `QList<QXmlAttributes::Attribute>::detach_helper(int)': qxml.cpp:(.text._ZN5QListIN14QXmlAttributes9AttributeEE13detach_helperEi[QList<QXmlAttributes::Attribute>::detach_helper(int)]+0x2d): undefined reference to `QListData::detach(int)' .obj/release-shared/qxml.o: In function `QList<QXmlAttributes::Attribute>::detach_helper_grow(int, int)': qxml.cpp:(.text._ZN5QListIN14QXmlAttributes9AttributeEE18detach_helper_growEii[QList<QXmlAttributes::Attribute>::detach_helper_grow(int, int)]+0x38): undefined reference to `QListData::detach_grow(int*, int)' collect2: ld 返回 1 gmake[1]: *** [../../lib/libQtXml.so.4.8.7] 错误 1 gmake[1]: Leaving directory `/mnt/hgfs/VMFile/qt-everywhere-opensource-src-4.8.7/src/xml' gmake: *** [sub-xml-make_default-ordered] 错误 2 ## **安装,安装,安装,重要的事情说3遍,安装的过程中即gmake命令后,报的错**
An error ocurred while starting the kernel
正常安装anaconda后打开spyder,右下角控制台出现错误警告; Github上说程序添加进防火墙和杀毒软件,试过了还是无法解决,不知道有没有遇到同样问题的大佬是怎么解决的,请告知我一声,万分感谢! Versions Spyder version: 3.3.3 Python version: 3.7.2 Qt version: 5.9.7 PyQt version: 5.9.2 Operating System name/version: windows 7 IPython >=4.0 : 7.3.0 (OK) cython >=0.21 : 0.29.6 (OK) jedi >=0.9.0 : 0.13.3 (OK) matplotlib >=2.0.0: 3.0.3 (OK) nbconvert >=4.0 : 5.4.1 (OK) numpy >=1.7 : 1.16.2 (OK) pandas >=0.13.1 : 0.24.2 (OK) pycodestyle >=2.3 : 2.5.0 (OK) pyflakes >=0.6.0 : 2.1.1 (OK) pygments >=2.0 : 2.3.1 (OK) pylint >=0.25 : 2.3.1 (OK) qtconsole >=4.2.0 : 4.4.3 (OK) rope >=0.9.4 : 0.12.0 (OK) sphinx >=0.6.6 : 1.8.5 (OK) sympy >=0.7.3 : 1.3 (OK) ``` An error ocurred while starting the kernel The error is: Traceback (most recent call last): File "C:\Anaconda3\lib\site‑packages\traitlets\traitlets.py", line 528, in get value = obj._trait_values[self.name] KeyError: 'context' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Anaconda3\lib\site‑packages\spyder\plugins\ipythonconsole.py", line 1554, in create_kernel_manager_and_kernel_client kernel_manager.start_kernel(stderr=stderr_handle) File "C:\Anaconda3\lib\site‑packages\jupyter_client\manager.py", line 261, in start_kernel self._connect_control_socket() File "C:\Anaconda3\lib\site‑packages\jupyter_client\manager.py", line 210, in _connect_control_socket self._control_socket = self.connect_control() File "C:\Anaconda3\lib\site‑packages\jupyter_client\connect.py", line 571, in connect_control return self._create_connected_socket('control', identity=identity) File "C:\Anaconda3\lib\site‑packages\jupyter_client\connect.py", line 543, in _create_connected_socket sock = self.context.socket(socket_type) File "C:\Anaconda3\lib\site‑packages\traitlets\traitlets.py", line 556, in __get__ return self.get(obj, cls) File "C:\Anaconda3\lib\site‑packages\traitlets\traitlets.py", line 535, in get value = self._validate(obj, dynamic_default()) File "C:\Anaconda3\lib\site‑packages\jupyter_client\manager.py", line 42, in _context_default return zmq.Context.instance() File "C:\Anaconda3\lib\site‑packages\zmq\sugar\context.py", line 108, in instance cls._instance = cls(io_threads=io_threads) File "zmq/backend/cython/context.pyx", line 49, in zmq.backend.cython.context.Context.__cinit__ zmq.error.ZMQError: Bad address ```
12306抢票打包exe报错json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
环境win7python3.7pyinstaller3.4代码是网上参考的,功能性不影响,但是在用pyinstaller打包的时候会报错。源代码如下: ``` # coding=utf-8 from splinter.browser import Browser from time import sleep import traceback user_name = input("账号") password = input("密码") # 账号密码 d_time = u"2019-01-04" starts = u"%u4E0A%u6D77%2CSHH" ends = u"%u6606%u660E%2CKMM" order = 1 ticket_url = u"https://kyfw.12306.cn/otn/leftTicket/init" login_url = u"https://kyfw.12306.cn/otn/login/init" initmy_url = u"https://kyfw.12306.cn/otn/view/index.html" def login(): b.find_by_text(u"登录").click() sleep(3) b.find_by_text(u"账号登录").click() sleep(0.5) b.find_by_id(u"J-userName").fill(user_name) sleep(1) b.find_by_id(u"J-password").fill(password) sleep(1) print(u"自己手动选择验证码图片并且点击登录") while True: if b.url != initmy_url: sleep(1) else: break def huo_che(): global b b = Browser(driver_name="chrome") b.visit(ticket_url) while b.is_text_present(u"登录"): sleep(1) login() if b.url == initmy_url: break try: print(u"购票页面...") # 跳回购票页面 b.visit(ticket_url) # 加载查询信息 b.cookies.add({u"_jc_save_fromStation": starts}) b.cookies.add({u"_jc_save_toStation": ends}) b.cookies.add({u"_jc_save_fromDate": d_time}) b.reload() sleep(2) count = 0 # 循环点击预订 if order != 0: while b.url == ticket_url: b.find_by_text(u"查询").click() count += 1 print(u"循环点击查询... 第 %s 次" % count) sleep(1) try: b.find_by_text(u"预订")[order-1].click() break except Exception as e: print(e) continue else: while b.url == ticket_url: b.find_by_text(u"查询").click() count += 1 print(u"循环点击查询... 第 %s 次" % count) sleep(1) try: for i in b.find_by_text(u"预订"): i.click() except Exception as e: print(e) continue b.find_by_id(u"normalPassenger_0").click() b.find_by_id(u"submitOrder_id").click() sleep(0.5) b.find_by_id(u"qr_submit_id").click() print(u"自行支付") except Exception as e: print(e) print(traceback.print_exc()) if __name__ == "__main__": huo_che() ``` 打包时候报错: 13737 WARNING: Cannot read QLibraryInfo output: raised Expecting value: line 1 column 1 (char 0) when decoding: Traceback (most recent call last): File "<string>", line 11, in <module> ImportError: DLL load failed: 找不到指定的程序。 Traceback (most recent call last): File "D:\python\Scripts\pyinstaller-script.py", line 11, in <module> load_entry_point('PyInstaller==3.4', 'console_scripts', 'pyinstaller')() File "d:\python\lib\site-packages\PyInstaller\__main__.py", line 111, in run run_build(pyi_config, spec_file, **vars(args)) File "d:\python\lib\site-packages\PyInstaller\__main__.py", line 63, in run_build PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs) File "d:\python\lib\site-packages\PyInstaller\building\build_main.py", line 838, in main build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build')) File "d:\python\lib\site-packages\PyInstaller\building\build_main.py", line 784, in build exec(text, spec_namespace) File "<string>", line 17, in <module> File "d:\python\lib\site-packages\PyInstaller\building\build_main.py", line 241, in __init__ self.__postinit__() File "d:\python\lib\site-packages\PyInstaller\building\datastruct.py", line 158, in __postinit__ self.assemble() File "d:\python\lib\site-packages\PyInstaller\building\build_main.py", line 500, in assemble module_hook.post_graph() File "d:\python\lib\site-packages\PyInstaller\building\imphook.py", line 410, in post_graph self._load_hook_module() File "d:\python\lib\site-packages\PyInstaller\building\imphook.py", line 377, in _load_hook_module self.hook_module_name, self.hook_filename) File "d:\python\lib\site-packages\PyInstaller\compat.py", line 736, in importlib_load_source return mod_loader.load_module() File "<frozen importlib._bootstrap_external>", line 407, in _check_name_wrapper File "<frozen importlib._bootstrap_external>", line 907, in load_module File "<frozen importlib._bootstrap_external>", line 732, in load_module File "<frozen importlib._bootstrap>", line 265, in _load_module_shim File "<frozen importlib._bootstrap>", line 696, in _load File "<frozen importlib._bootstrap>", line 677, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 728, in exec_module File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed File "d:\python\lib\site-packages\PyInstaller\hooks\hook-PyQt5.py", line 23, in <module> collect_system_data_files(pyqt5_library_info.location['PrefixPath'], File "d:\python\lib\site-packages\PyInstaller\utils\hooks\qt.py", line 67, in __getattr__ qli = json.loads(json_str) File "d:\python\lib\json\__init__.py", line 348, in loads return _default_decoder.decode(s) File "d:\python\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "d:\python\lib\json\decoder.py", line 355, in raw_decode raise JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
QProcess 启用CMD.exe,实现交互多次执行读写指令(在Win7平台)
因项目要在Windows下开启CMD程序,通过与CMD程序交互进行读写, 举例:开启CMD程序 按顺序执行如下指令,每执行一条指令后,并读取CMD的反馈信息,再执行下一条指令,再读取CMD反馈信息,当指令全部都执行完毕后,再关闭CMD程序; 0.cd f:\test(进入f:\test\目录); 1.dir(查看当前目录文件); 2.ver (查看系统版本); 3.ipconfig(查看IP地址); 4.time (查看当前时间); 5.ping 192.168.1.1 -n 10 (Ping路由器地址); 6.iperf -s (执行iperf指令); 备注:把读CMD输出信息动作放至到while中让它循环读取CMD的输出信息,写一条读一条,就像串口通信一样; 目前状态是:通过QProcess启动CMD,可以读出CMD启动时输出的信息,但后面再调用进程调用wirte(QString *)给CMD下指令,wirte执行完成后,CMD没有任何反馈? 在论坛上找了好久没有和我用法相同的情况,CSDN博客"一去二三里"也没有,请问那路前辈,大侠,谁这样弄过,我该要如何写? 第一次用QT,麻烦大家了。 如下是我的代码: #include<QApplication.h> #include<QWidget.h> #include<QDialog.h> #include<QTextcodec.h> #include<QString.h> #include "MainWindow.h" int main(int argc, char*argv[]) { QApplication a(argc,argv); QTextCodec *codec = QTextCodec::codecForName("GBK"); QTextCodec::setCodecForTr(codec); QTextCodec::setCodecForLocale(QTextCodec::codecForLocale()); QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale()); MainWindow w; w.show(); return a.exec(); } //------------------------------------------workthread.h file------------------------------------------ #ifndef WORKTHREAD_H #define WORKTHREAD_H #include<QObject.h> #include<QWidget.h> #include<QThread.h> #include<QString.h> #include<Qthread.h> class QProcess; class workthread:public QObject { Q_OBJECT public: explicit workthread( QObject *param=0); ~workthread(); bool b_loopread; public: QProcess* myChildProcess; public slots: void read_slot(); void write_slot(QString ); void stopread_slot(); void IniCmdThread_slot(); // void doWork(int parameter) // { // qDebug()<<"receive the execute signal---------------------------------"; // qDebug()<<" current thread ID:"<<QThread::currentThreadId(); // //寰幆涓€鐧句竾娆� // for(int i = 0;i!=1000000;++i) // { // ++parameter; // } // //鍙戦€佺粨鏉熶俊鍙� // qDebug()<<" finish the work and sent the resultReady signal\n"; // emit resultReady(parameter); // } //绾跨▼瀹屾垚宸ヤ綔鏃跺彂閫佺殑淇″彿 signals: void senddata_sign(QString); private: void Delay_MSec(unsigned int msec); }; #endif // WORKTHREAD_H //------------------------------------------workthread.cpp file------------------------------------------ #include"workthread.h" #include <QCoreApplication> #include <QProcess> #include <QDebug.h> #include <QString> #include <QTime> workthread::workthread(QObject *param): QObject(param) { b_loopread=false; } workthread::~workthread() { myChildProcess->close(); delete myChildProcess; myChildProcess=NULL; qDebug() << "end myChildProcess " << "\r\n"; } void workthread::IniCmdThread_slot() { qDebug() << "IniCmdThread_slot()"; myChildProcess = new QProcess(this); myChildProcess->setProcessChannelMode(QProcess::MergedChannels); QObject::connect(myChildProcess,SIGNAL(readyReadStandardOutput()),this,SLOT(read_slot())); myChildProcess->start("CMD.exe"); if (!myChildProcess->waitForStarted()) qDebug() << "Make failed:" << myChildProcess->errorString(); else { // qDebug() << "Child Process Started.123 " << myChildProcess->readAll(); b_loopread=true; } } void workthread::read_slot() { while(b_loopread) { Delay_MSec(1000); // if(myChildProcess->waitForReadyRead()) // { char output[128]; qint64 rec=myChildProcess->readLine(output,127); if((strlen(output)!=0)&&(rec!=-1)) { QString tmpstr; tmpstr=output; emit senddata_sign((QString)tmpstr); qDebug() << tmpstr; } // } } } void workthread::write_slot(QString strWrite) { char*ch; QByteArray ba = strWrite.toLatin1(); ch=ba.data(); myChildProcess->write("dir\r"); myChildProcess->waitForBytesWritten(2000); // if(myChildProcess->waitForBytesWritten()) // { qDebug() <<"workthread::write_slot "<<strWrite; // } } void workthread::stopread_slot() { b_loopread=false; } void workthread::Delay_MSec(unsigned int msec) { QTime _Timer = QTime::currentTime().addMSecs(msec); while( QTime::currentTime() < _Timer ) QCoreApplication::processEvents(QEventLoop::AllEvents, 100); } //----------------------MainWindow.h--------------------------------- #ifndef MAINWINDOW_H #define MAINWINDOW_H #include<QApplication.h> #include <QWidget> //#include"ParentProcess.h" #include"workthread.h" namespace Ui{ class MainWindow; } class MainWindow: public QWidget { Q_OBJECT QThread workerThread; public: explicit MainWindow(QWidget *param=0); ~MainWindow(); signals: void IniCmdThread_sign(); void read_sign(); void write_sign(QString); void stopread_sign(); void sendcomd_sign(QString); public slots: void SendCommand(); void getdata_slot(QString); void stopRead(); private: QString str_rece_total; Ui::MainWindow *MUi; // ParentProcess* obj; }; #endif // MAINWINDOW_H //----------------------MainWindow.cpp--------------------------------- #include"MainWindow.h" #include"ui_MainWindow.h" #include <QProcess> #include <QThread> #include <QByteArray> #include <QDebug> #include <QTextCodec> MainWindow::MainWindow(QWidget* param): QWidget(param), MUi(new Ui::MainWindow) { MUi->setupUi(this); workthread *work=new workthread; work->moveToThread(&workerThread); // QTextCodec::setCodecForTr=QTextCodec::codeForName("UTF-8"); //IniCmdThread_sign淇″彿鍙戝皠鍚�,鍚姩绾跨▼鍒濆鍖朇MD杩涚▼; connect(this, SIGNAL(IniCmdThread_sign()), work, SLOT(IniCmdThread_slot())); //璇ョ嚎绋嬬粨鏉熸椂閿€姣� // connect(&workerThread,SIGNAL(&QThread::finished()), work,SLOT(&QObject::deleteLater())); connect(this, SIGNAL(write_sign(QString)), work, SLOT(write_slot(QString))); connect(this, SIGNAL(read_sign()), work, SLOT(read_slot())); connect(MUi->btnStop,SIGNAL(clicked()), this, SLOT(stopRead())); connect(this, SIGNAL(stopread_sign()), work, SLOT(stopread_slot())); connect(work,SIGNAL(senddata_sign(QString)),this,SLOT(getdata_slot(QString))); connect(this,SIGNAL(sendcomd_sign(QString)),work,SLOT(write_slot(QString))); connect(MUi->btnSend,SIGNAL(clicked()),this,SLOT(SendCommand())); //鍚姩绾跨▼ workerThread.start(); //鍙戝皠淇″彿锛岃皟鐢ㄥ瓙绾跨▼涓繘绋嬧€淐MD.exe鈥�; qDebug()<<"current Main thread ID:"<<QThread::currentThreadId()<<'\n'; emit IniCmdThread_sign(); //鍙戝皠淇″彿锛屽紑濮嬪惊鐜墽琛岋紝璇诲彇杩涚▼鈥淐MD.exe鈥濈殑杩斿洖淇℃伅; emit read_sign(); } MainWindow::~MainWindow() { emit sendcomd_sign("exit\r\n"); workerThread.quit(); workerThread.wait(); delete MUi; } void MainWindow::getdata_slot(QString info) { QString str_info="Recevie:"; str_info.append(info); str_info.append("\n"); str_rece_total.prepend(str_info); MUi->txtMain->setText(str_rece_total); } void MainWindow::SendCommand() { QString str_comd=MUi->txtEditComd->toPlainText(); str_comd+='\r'; emit sendcomd_sign(str_comd); } void MainWindow::stopRead() { emit stopread_sign(); } //void MainWindow::RunTest() //{ // qDebug() << "1235477777"; // qDebug()<<"Read"; // QString outData = obj->myChildProcess->readAllStandardOutput(); // qDebug()<<outData; // MUi->txtMain->setText(outData); //} ![图片说明](https://img-ask.csdn.net/upload/201708/17/1502900760_915387.jpg)
jsoup抓取dopostback的网页错误 ,是不是BODY出什么问题
package zfcg.ztb; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; import java.util.List; import java.io.IOException; import java.util.HashMap; import java.util.Map; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; public class JxztbActivity { public static void main(String[] args) throws Throwable { for (int i = 1; i <= 3; i++) { System.out.println("test0"+ListData(i)); } } static List<String> ListData(int pageNo) throws Throwable { int table_number=0; Document doc = Jsoup.parse(getListData(pageNo)); Element ele = doc.select("td[height=500]").first(); Elements eles = ele.select("a"); int newclass=0; List<String> result = new ArrayList<String>(eles.size()); for (Element ele2 : eles) { String inittext = ele2.text(); String newsurl = ele2.attr("abs:href"); String newstime = ele2.parent().parent().select("td").last().text(); if (ele2.text().replace("更多信息", "").length() >= 2) { System.out.println("项目名称:"+newclass+":"+inittext); System.out.println("链接:"+newclass+":"+newsurl); System.out.println("招标时间:"+newclass+":"+newstime); } result.add(ele.child(newclass).text()); newclass++; } return result; } static String getListData(int pageNo) throws Throwable { int table_number=0; URL url = new URL("http://ggzy.jiangxi.gov.cn/jxzbw/jyxx/002004/002004001/MoreInfo.aspx?CategoryNum=002004001"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko"); conn.setDoInput(true); conn.setDoOutput(true); conn.connect(); String body = "__CSRFTOKEN=%2FwEFJDZiZTk0MWFhLWQyOTItNDM5My1hYTZhLTliZTQxZjJmNTQ3Zg%3D%3D&__EVENTTARGET=MoreInfoList1%24Pager&__VIEWSTATE=R8GA6T%2FIFGHg0Gb6XTFK3FRWaT%2BnnifWmbfVtNOsNxO8aGNCF9BvV0HlGq0NCTtFJ9Z%2FOB0SJrX5ocfMmneceh63ACvs4tmktSDuFT%2BQ%2Fj2UdQTyQH9sF1LqsGpBpaBMRI5ihQzcPnaoZSOI5y4wAcCT2eSyOIAJLzDfEahy8vHcO4rY5X1OgnRqUbqhAGYgciiDdJzOwhBLhOtH6KpEt6GD0PCWIYpVFGwufdKPRpBoyvMvVLxns62e4opbzTrVK2mOGWLS%2FF9b3YqhnYe2eTEllzjFQdzl7hJb%2FjB%2F46YVl9ABjjLZ3ZCw%2B28bT805n3aL8nlrByAuHCArCYh%2F2rD7hA52KBZ0WDP6AgnR%2Bw7TDhCchpWEvukASBok8AyUK%2B7Zx6JztNgDXcsn%2BzpcoMqr40%2BlnDwG1aoJIQ4y%2F%2BTLjieFXqu0cIcteyE6fCByvda3M7Drq%2Bzttil8VbGD1QQOPAeNnNSa3MBdqRsgh6BzfhD3LlqtCVPc3p5bukA4JaUCBdw0U9jaULfcXz8V0zBElOQUmOvTm5nMc%2FDp2clYlEhHNZ3w1%2BJwWgFwhSX%2BFcugoXQBMmsAexF9ibA%2FcMQ87Rl1aP4e%2Fcj%2B%2FHzBF%2Bpkh03mr%2BlsSkFN%2BDSEleVQ6hD0i7SToPdSAATi5bvVl96tXl7y8cI%2B7dHeqZiGV7cxcue1xuAzVbTfm3IrqlEtWS4ol8%2FAXmF7CUIRLKFayFsLgVDBfq%2FuHl0lxfv5L6yZyXvLoXDa41Mzwa812VHnwyYwNVRrdalfcbketek1F5nHFkeeaRNn9JEFIFsIyBKUx12p9P1E%2B%2B3MBkdiK3o%2BRwywLHwNJuWS%2Fi3U362Unj2nuQxyFndOBF%2FeHr%2Fby8jnLaZNWeLJjy578rRlYB1ggnM4qmuNwQqKBP0%2Biqa7mRKZlMsr8y7bq%2FKnO4%2BJcUyzNh2WeQnQlMT%2BRsWfgOIf3U6%2FxNgNNkwcJxggQao6AO1Jptj8JHJQXa9nu4Tu1dgR885Mexnueg5eMppcBP3fnIGE65%2Fd6ZBhww0f6rL%2B2IdLV9XEUgVvT8sED7eaNlLJymFQ8EkSZXfl0TTuZFezfXouhqaEvR5HMGlE5USdIfphpRH3fg4KXma6WtfxWtAHpqVZKmA9ii6JzLluqbvifl7Q4lGGNbXDi3FtdVUegXncyFoQ1tQoXigUVhOgq0wbe5xim918qTLP6nNC%2BFDiyg09JmFj98wgpAhmLA2bvlfci1jaFWMy5hEYz%2BP5OAbERPOaVkH8PLmXcdrJ9RCPf8rxLLQE7ReKs5NSTrwdVHe3MSTn8cartsPfiD8LejzyTduW5gHO6uCj0SFAOz9CsBspqlEyVT5AXACrDswjg169gPOtQ%2Fq5kipvk5Gn18Np3uMMFXgKYnNDfiJzUO2%2FEA36pEzcHj1DP%2BTiW5N7tcWln3ewRJ23Y6gXFD%2BlAX6OdMWKOEZdbtmJ%2B1a%2BvFhFXGGQverFGOPaGQp1hhWe9XB5wvHngNka6mkw9%2BuWcM%2BMZn1KxdM6wE%2BzvMYVjEL8K12JX6b38xqQRF3NOFR%2BzC4lvKzwaMyxGmH7g8S9wqt218PbVFEIEtNZH1oCxgI63%2BlQn5G%2FnfqIbk1FE0eu0HeQGvfMCxC9%2FS4%2FSEzYowgsOiHcNlZjAm%2FRPVpQqTvfuXGVHnEgjsKxnQxMB1EaHRXUa0rAZrJ7juFLurRin8QH6945EaXIJ8S1Hx84dotDj5FngVEYK6NqyvKlUixbs4H4Kz92vI49uyJXxLtEGOJ2ZCuVIzcE%2BBNDEFBMvd5qVbiIUqxw72qGUUHPZKYm10KxR10FtS1YGtRTEHLTlr5G0dAPa3sel9kYAjQyXTNFrkcWULeErpdyErVB3jSbAwPmujnu8hfDHCV%2BrzYnVy5L9Mmxk3pSNPuH1Vu9v8UY8CCD4TWc55U1iQr9Rh%2B2UricncYaG7AyWbPs9RcF2b6gRzNTPZNilWTvZZhIpo3hMbACfryhaJC%2F32FF0M7XgmsfgXe1Ir2hY0JjiIItKbnMgO64hJRJUUnM2ViHKQzorMq7GBL%2F47p%2F%2FV60VPNxovQ0KFLdjDlVwXsZspCEZyCiD0H3e6wNDrgKQnWJumoRmii%2F%2FJsO4MV5XZyb6CpWDTW1Kam%2FgveKxPC7VfajOxnYz63kA1Xn46IPsAqZENBgMR7gPOfbKAYuM9YXyxAyYAl9g6Y2ceXK8HqpWqjAXMCmk%2FOL8Ny03HLvg1lTth6Y2dYxEpRw05h9%2B0MmAvrEUZdzCVvlw3BTqlis3NBFXvXvDAQf5%2BH2A8allFp2SBAUNVeakknNQDiqdvewMMbG5Tubw9fp7UzbJbR2wihx4OWReiztXdJyRasdoUUwI0LXMWQgKLyaIc3UT9uzISnbinlcfNwUrjDlKl3BIeuduSnIV4mXE5S1K0OREcXIuLL5Vn2h9TSoCxquOWmsC42kF8mqWPXL2zLE7wTUJcwDD4ru4Qmozz6jJppayfGeId%2BeZN6owQF1k1im37PSftJhv3IP37vasnuAsRF3BQt8tMU5ue1IXmZzgufvxafd8FWD08L0RnKrhbEKGBmZ0dmEWTczG3a0078owGsAcw4M6E3kWlxAMm68EfQNtkRLZ5On%2FyHQfhQsrl0TF3cW9eAVv1ii3lZmgmVTafb%2FJLX%2BRz5BjpzBwiKHLbnrrm0edokZ%2Bqc9CRvhMSiM6lBH%2BIcPRRB8bE711N5Z%2B0nR174rTn2KvUmLXFIpqY0jG4PLDcompSsTFzHQ5KA7qlM%2BxLOOegYMN%2F0imSXqPLOyj7Uyrd9%2F93xtq58NCfGPd9rSO4Kb10nPMEyhwDOLy0mmYOiV71Z5Nl5CDaWkXRtl8U7gqgGjiFpvcvrEl80gQayaKyMFFSC4y4oYDOkMhrs7tuow%2B6yo%2BWw4yj392%2FBciTvdS2N7WA2U5oDZlFYbKBGE3zpKbAIkSlr6AKO7BMbQzoHXY4Gvpu3tmrrPGT3HlvkYe1URZJIjas%2FcJsFV%2Bxo4EXffAcE48vYf1Df9QDvOp42hhhu6oqcSPo23S6u36hER2rXhSBvAwPGAEgl5A8z6J%2Bi2%2FM485Kgn%2FSYbf3JhX8Uk%2FskKK9XVkDDy76MVBEHSGq9hcHHUK%2Bc1UCTEdCx4XGfG0x%2FKnqXKZVacC%2Flj0ovGzglJ7dZoE05AGVCJG9ySkznToPYeB2rTja2PVCIk%2BimzAjfEmT6TmHSnXu%2F1%2BP%2FjU7jjWjHj7gBpp%2FBAh8fyWczEpDoWJjfEmDf25hbM%2Bsc%2BPl4DsDmlBz6gR3L03waT5GuCpr1jNFUJTpHknF0t9kduDKZ5PsB%2FDUNeHtZXzbQWZYmifYYKlL45nRI%2FtJ0LoGUOEiAK38wrEDmtXBujhhQDDXBe7%2FcvZ8fbxVUNwvu49TWNH69sHsHkMkvWqyO%2FfQtC8MP5xGsRabOBgh6IcPIS50oQ9jXeNmnKjItDfK3lfEdeuLT8MnTyjFg02zOku8UPqBQXzXxfshH219tdbppzB1kqj0EsQm61iVD4%2BfkEMli0Dlf2Lgt1ifkA761c6nvrFOWlXS79W%2FjOBNQzgCfjkxmvKlRmYgJ7ssMvf%2FazLJJzbAyhiihN%2FlZ9yxqnOJZsDc5xdu7V2hqz9KUzXKp4%2Fi%2BIWuCY7ypDLPYTLtpFOiDyA79UaBwZsN7b8uYAIkv5OQbKY%2BFrcyKfZBgxTVm4PS9nAP7Oha1FKZ3P3D2D1WZBCbcrZhSlJwptgx5kFAi7vLQh%2B3waKKdbI0eDgr2Fa5pc5LUPPeaBYB6oxKYjAiX78wm2XY6tspPvPa61Wr88rRmqnS5v39jVcjPyWnAa%2FRSxLLVjYwcSVciMJ07rIZkNSMdCMFcHy1Yj1bf3EiBteG6HT1FEpLHH18yA6KFlUBwPgcMwQRyQUGJfXvXF%2BBPjDS6pYaKIGxemX0OYj4nbGvw3%2FoKfll%2Bmj7v8JFKBOlHxGNC57aJKsmJiYvi5EZLfP7TamucSZDqZDlvO5YdfQ9kmAbdbn2aVP80hdycVtoNoezU58UG26cQ08pRXq5usaSG9c%2FMrH5DA06NVHwtnn7V5GVMYvG51S5vg81UpOUOZ7GtVWqQPmSREIC5zLnz%2BWhfcKpJD3%2BBqE%2BbvGExa7n5DUZQOZXIkpairuJAiAYNnzkrEOX98OVUjCAtwrF%2B22oAqzoYmu6Z5T1fevCGqpEPk9c5xhYKJMgfAzCtE5BMAgVaCfX9RqCpaUx4d%2BiSoqRE32%2B32rgBMefkkE%2B4CtTcQPdjKZEV21s4G%2BAeWThGT4BuxEaQ394v0FY7bROLY8hcTMSiAGvZhhCJQSLXbUbf%2FKTfn1FmkQaIrIXglb3fofqqNKonGG6rJlCrJhIxAOKDziyblQEzxerKwMka87VrJYB3WjB%2BycQkN5gcyMWOWWZEK0vc%2B7amwF5jXHX1KPezbjJV9JqsrofqkGRBUX9bwIjPE3ele8vyJ3BbYEJPLW7Cx%2Fg%2BMtKyvsbpa2gS5d9Psx6Tm1h2%2FfgjI09%2FxBhMDWRW%2BLZMHpwrcY2MaLLNmIR0dkl%2BvXoDvvrKoAABx8RPyWUZKa4UE5mgvJmeAi2dYso2i1yRnrCM4inirsuDvdPAjc6kNeKe%2F0JGT2TuQbcpPtSrdtu%2FyuGsI6%2FIyeOtq8mGyoPaNUSrCiQVrt7Uw4aJcRRr8qLpkJNACL87mcbT65gjkujII45IYiBE%2B9vykoLbtaI36K6suSoXiSgw6%2BQisRYgCkU%2BQWGaeeVomL%2Bv3REKxSBJN47BHceC869XdhI4aqm0hPRi1tA9UVd4UeftEE8vv4OLNRvq%2B8%2FzZndsUCUnit9IAFV450VclUsQPyFDxZbwGFnNarIF45fZu1rrQwUxA9rQvpnrQkSiN4CCA05gqbRajvMBw%2Fu2OhfXZsL2tFySJKesS%2BwUeRNSqDwysLZRUQ8W08VC4gTKWSYZbTuN0egLlJr7HnVeMFpFyhz8guxnwZbQi6vjOGW62PLK1bgwcEoZGMcPHoGZ43qCiNJ00xz7Gggjux%2B%2BRvwrolKnr1sYg3%2BwCPAx6M9vg766KzOc%2BOckrFF%2FW6sJK63DWXhwFuzbpsQZWE9WaRgoNaKoNMQM6InBOYZuDlw78a2yUCWuFDfdj1kWTUHTYtFc3svCOscM5oPPdERLoATn93o%2FHMex4oTj0ilUowq9LmWB%2FxGUCSjsCg2FJdS1F65fgIQJrTdMSpHxGjU%2BKyFIHa7vGG1KXwom%2BN7k%2Fl8eA4CN1F0jIBbU%2FBQkFPkBrkZ1UT9jJvXHAT4JdR8z9hr6PsWXsqv0v6Uofowi6q9vfpgAna4gxBbq19BYFbK7HD%2FvfdAOviQX9V9eOIUWY6drovP6lWFCnINiuTNeJ9s6QoKsvV17KsdFHhQNrSIHxDZ7GydlPXakgyXZXKgmqVYGkMDtDfoY5dsCwbtoIgbv5Docg7ocxWmfR9Md8%2BeFZgnMWZAFxW5sX7roM6pve5Ytc1VQLahIoDgHjSAktsQ9rJwj87I3%2F5WT6nrk7pYcrudA%2FzCiU0Y6URm4SJ7kZ3iWLYKAXzL1j4GB1K0tuIrC4xmB78SgBzD0wTZ%2BCoiAwypXpHkeZ2X7UpZgJO%2FSDjL4Lc9sRi1L5KZOcr071h8OyEww8U5UmzD5zELm0lG%2BrBUAKkudP45QnxWg%2Fn0YJYexZh8E0%2BHMbThaoCy5o1vi9etqE2s9k7OeBihts8sFz3M7GAGs%2BQ7gBNJnrREpQwRK%2F8Wj9qnUuP5m4sfPbHB6hQWJDQxhDaqOo70eWocSUsLDURgi7AhpNgasaGIOe2haehDVR0CZvadbVVyZxdHl9sAh97Hcs%2Fo0s77vurK%2F0zmMiKEzlPqO7gi5FVHW0exZMFTG52ZFA7EluyAZJDljEBMEwJbSbAmw09ePtmEucqLnU%2Bh1Aq3vvAXBpQMwkLCaQ0xR52OljWVGC%2Fo35LTfprXfUOKW1H4KB75rGlaJXLR9l90irw3pA2C2rl1Lh9qjsyjcK9sb188Nx%2Fwqj74%2FHl7KC2Qti8TXj0YD0hllXQftwZAXEqefSdNOcnoWNsdtGh8ipphVChQXRUSh6iuLF8yaLQDyyNsHdunUpmHdxGKxfO70Q%2FJwS3BYE1NY3nJKiEe64C53Nhkulavm8JU2MApzc4WaHTwsA9xtgqvJHb%2F1DukzFyRyJpj3WvNdNyY%2BSI2UYKp4JPr0okpoPKstcQN%2Bjnf2xndS4zm6Va1nrR9%2B9RJNAMbEF5H0TxLBxo5jQDg1f7VYhZzGPCnU%2B8eVYGI0j95KLthUWfTJgPGiquTfhlefVOW7rrDK7sr9rynj6OLhNeKvC%2F5VDCIF8JlI0FslDAEoWDAq9JEUmb%2BtaSjoR2A1CEbVcD7RGx4w96eJb3JZ269eq7qPNIcdBsdybPNJhPclIprNnrEnn5AnXBVZ1SnOFHLhKMeK61KvkmZOa6hy%2FLzEvC2s87%2BeLji5aR1ibtG3DXQUP%2FZFdQ1zdNZjjeKgfeIC4Uc9R%2B3Sim1wB%2FA%2Fgz3QGrOQnLfhWLNESHWEkwVESH7fMkj3Uf9msFnYD6tgMieBPHNNvaFqW46CTZ2nJ6HdcPQZqycNhec%2BpxK4GRxMtXkolKAcJxoITr4up0Vgig9qkeDMHFG2fPiwrd3j%2B2x7N4p4xd6IxoDiMni5q0iu3o6KuHVwIdxQImGsPPQwebyvzbsG%2FHqr1hZy6WdkbL%2BmOeClujFHKdhvDLDykfpoTL6jHcjqKUnncIGixbjSkNRLugpadA5JTdeX8uMry3NcB0o0rdhNBrbEiq8Im4eaTsPbQUH8A8IG3ByZmzn3yBmSMx4vrZsp2mFRBIW4FSvsX1bVhDX2AsPkxQh6FiqyO4LwNTDf%2BM6vhfaOdXcI2%2FTqWuirFyMOiF7NOXYH1jwrxJNeHFyGv0D143HcVAsfYFbQuo7JhTQEfzH7sJtqp5ji7wk%2BGbodgr184lcMKBO9i4hvNzuDgeeZ4z187zol30b3qGcxJVgseTVs9R4r8GAEnQTu43VfEvxD1X4%2BACXwgfBp%2BbMsFgo1nV%2FMVnoaXnBawJz0Azmw3u463%2FA1oePsVONDNxwJMTIgyjt35L2unuczFJXfhl6u0JwdyX0NzRklj0fCEGA2pLGH%2BO%2FooEP8hpjq0yusZupAHC8Y99RfqcRCu3duTgdGvQULfZYgQT%2FdzJJSjqFrrMtugp1P3zQXkBioENxaDytQ97LdI90qVJvfSRQRNjeJy79z6GNB%2FUKmBtdRstFEW%2Fm9SEv2FaNNi0a32DyEWv2FexTbY32SKxWLJIIXflG89qNGiZscet4H%2FgQnew4hd2TZJA1J1ISbc3z1NFXNBoqZOncWkur5lQtRRbokZgeM15WPNRK9m6tAaz5gdiVHLzQwQKcu42hfeP0zbJ5jLI52LWrksNecpzrLXtun0MJl0fmSj%2B0my1ppCej8pmoi%2BvnTTaLQ%2BhMO9gamCa4pn1MGbmOGVUMAbk3e0i%2F%2BoFpSF%2FzdrxPEu7ut9SE01QE6q%2BD2LRypVWPgBN8wBOtnxqP7o7okmssRJ6M8jsv3GxmSPMGKsAZ1fsAG3dzlCEW8ukF0Vu%2B1EZLF8r%2BJFwrDiPyfxTydr4%2F3V5mm91qfQ9EyuTb8sr9RT1Unnp%2BDx2LvoiCiRJK87oD9RO40KsKQWwNlPKfOI33Bs6S6U43SftVz6cAMSG3vIWgriacCqhioATPpt3NvbaFBXdZFZaTVeP3R1TPjoNHoqXY7OKTz7oIIvpxVvOuUXdfaC96%2BvPBV2dRzLHEZaoXrXnCMcc%2FOuEsBVn1hhyvGZy5Arhl6spK2Jd4h8h6EpCVlf4Df1JfDvAcbW%2BY4vrpA7J7z53K8Bf639OT421XZDkSwLJrLbwUdT9aOs50wDPM5a5tR15q4uxgDbKfoFSjgLQqCEQHuzkBuHvmlF6IkmN%2Bic0gVvL5iZRjK3D4lAW3X6VvHwiu1rYlfWOhRKsQCNiFFEVmgKVekcnaxnjEHylAqt%2FMm%2F28XjxKcN5xuGzJCrNK%2BmnT%2BJxGLuKnj3NlVh2tXm0o9cwiIvdK5hViOONrWuSCWifxHpsv2pSLFlG56I7o9P4k6C4i9%2BGgL%2BHgFlA3X%2BXOgg417IOPIIAebZT7EvLnez35bb0hcl8Kh0h1RUOvnKdEX%2FOyHDLtv06mS6EfLC22ZlUzY3I1yOnkBQSFiH%2BHPE6ZFQFGiYi%2FueWdTItMvh8YwOI2XI5eEjwOrh8ZbPl1E1rrV%2FwgG%2FqcjMph1NSZGlT2c%2Fk3GjlalurLa3sYoxLtAzjDNNE079FfdjRvi%2BVBocq%2FJq58CIfs5S4msNSbhWT5blI7YMA3w%2FmtZZQXZX4uQzK60cGEPsRY0fhSQm%2Frz3q9dV7CO%2FJSbqUkjmtvW6a65MWOcDfbA0ou5i4357p7vNF21NlYQldXYAbSVWXL5H%2FFngmpjfQD7agnctcICbQWLF030FiZnMVsMwYzATGn090oj3u0RXAS0KPpqxyHpxchYFXcRAS0Y94GVQhv7plpOLOj6DqrlwFAoz1%2B3jPcPVrhAyF42CtpXpXMKhlHo4Uv2jWpR9OjaDLFZlTlc%2BeEbM7%2BWPF7hZQewTPoUpfMkzGo61Awc97stEsU0nIjqFBUTEj%2B%2BQVvoLm10po75Vi9LOPKZbsNVHoFJRJ4ySb3GDF9IiLxsjBwOVNyv7UWHDvtCKI02tsqCbM9V169jJNQxRlysg1O6qO%2Ftkg5Ci0L%2FFxqwssQL%2BmTkHPTEysb10nQjynAuvpkGsv0RCwSpX8seS04p8IvIEdhfncsqSMkmuDhN%2FXdu9os5RF2dPsCh1bJPzCJEtVsVQV7l209jeUMCfIWW1RObkWN5ZWURKrv1T0pk816dvl207xpyOSTzcJw7abDJJqq9nu9aT%2BxO2Ew7rnEHGHDoHbILjo2gCVbMZ1nxeMdFsr6kMW9c5Ilj2tiISyd4fKon47Oz5Qz48KJwsHN374kwxB2j0dCMOWMyckT4Dfq5PCt%2FovjV2Xwnz9e9r%2Bo2yB0V0U%2B4hSUWQD%2BsYT9G%2Fv%2Fh%2BTQ5LAC3ylUp8N%2FQ5B9ZuQt0MtaQCFzAGhAw7jCEJo6M8Stn2v8fICR%2FdwwWKYjXa6vHYdCiAWY6b4lN6CAuEdbPr%2ByGPSoSkIg%2FbzPE8dYqqLocyf2689E3LeyTJnpVeZAxBZ3UXiGLBgetDM11w4nZoYaeYEdObtzYHa2gotPoZuGrucLUhKH3AYo1MZfWeY%2B2M8ny%2BZMhk4Pj23j3r4D0DsGB8fpLTE2qxAr%2FaL03Q8CLofiRlgqkdPSf6YVm6PRS3DwyepHOMsv9FoNMwSVEbcLlci3E3SrDCKyiSCn%2FMLkiqpw3GTeDFY38ViypHMnmA%2BFVjRbfy%2BmVicHIa5c%2B5%2B0wJOOI0ihy%2FO%2FHYPUQ5ejGUQOSwdlERolwrkXSo8XE74XOrH79IOVtD8hLp7a1DNw4HqxqmqJG4elQNbjhKxerl1cce%2F5R01EbPK%2B0NBr%2FkZ65K%2By70aSTwsFy%2F1QixRefwWfH0D6nOCvE6kKau4bE2Si1OL%2FK3IJUcyImEYzjVDhhFepWfgSggxtPL01kJ0PrtjAiVjjQloF1edXPRV%2BJ2lZN%2Bzw9TctjdZOQqsH3RxhxtTk3KqFaVNHWSoCvSsiJYEcZpSNYRsw06k7dmh8cNvYhr0GMupoklYLS63nYF3VYnFVIB0p6FF9koP4yefjIOA9sdSkLllL5BHl%2Fj16%2BvVpzgv%2Beb3zuPpEMKGGJmrKIpuJXvNNJJJHXJpvD2T3U2Df1IXm1T4Q%2Febj4GOOsUHwmbQQMeEfNEjenCnEaRarDqKmzqtjSYJ4Dka8oiW7PrXXC9ZOpcl8exdLXNxXnIorOpFPvh9AuLZjxAz5oPH3PqUGRV%2Fx8ov5mC5ffR68Fg0ZL8UFOdk0PQNJxgznSteDD40d34wIvVBQhY7euKxfmMOjXQALCRmQ%2F1fBv7JMD8ItbTprjtYJdrOb%2FdZ%2BDWXtpkvTl6fFR6vH9kA0r2napqxgYr4XlKp5B%2FhbzQChYm1oB0YQJL8c61h91b2bspSzGBjc75JLiG1uIP5nD4MWLNpTLFuVh6g%2BoaETjG2phvRhyCwxoBEtUHWC1PtHlv1PKyYdfVARag510x1wtEgnKd1AJQfP3w%2FfO0oQlz5ImsHg%2FHcDnvlIP6zgdmKftURwNYbWQHWFIxScAez%2FqM%2Bg9l5qgV4QWGwl1viWg7iHhLPzo40eurcjroqw3kharlIWlfl4im3duI7KeCqkFdio%2B0yPgcbnAQEbSbsGbxfwSzaEtscnJEqbxHFzq7CL5JlNNCBEapnGT2Juu6wJp2WJhvuY12%2BHOzrzfAFBcsqk1CEct5UyJN2sa9zATOgxLtjKWqujYnAaKWeNXBqZn3baLZuq6jC1f6zT2taC8CIHHSEPb8uRD2LEZ5gd%2BiLewl%2BGzKo%2BibvZAgSCQH3ZTwW39IgklVDC2FYdo5192QQBjLhT2QpJsQgbHSrV3qlxbSqaiSNrbcO9k00qSqtShK%2FHl768l4tjSOoyD%2FZqI9aIkuOhpENJEoe9ueaQUrhTN1EF140KOvth%2B8%2BcXGyNK83ayWjI23dKSe2mcGfRXS4SGUKo3wVXxJbOGAQXGmeUJnxQyvCQqo2afnL609%2Fnr3l0XCOSHOzDlEA%2Frz187z7WfblEqCCgUQluVa3%2FcftNx09RlJ3hlra6T%2FUS81g4Qh%2F%2BN9mH%2FHRmJNRmN9KvmIgECCMhn0WUEPR1IfE%2BUA2s9rABW3RxeudiKmWkCx3EWg5cK3wxWVJ00xLu%2FHF13z3fuvnGuCufE9FWbmU9%2FclCFhws%2BdR50pIjCFr9dhLuPAZvXwZhScYqxD9WI4kt2OqPygvv6kVLSxF4clj5dR6sUUcb3RKOWzbsHYX%2BodwsG%2F265wpvroV246F7Au2L%2F0iqEvwxdCu%2Bm7poZkxeB0SQB6DIn6pfn8impx4%2FnAwL97Ln1ZY0YmgJR3AJXTd%2Fq2UXfw0XIjsoJO%2BwvRreGC8P03sLC%2BnjVB%2Bnmypjysejrb3XSrryZftfmYhQJXUeT8wn7SVUk%2FNq9d248rQRJrr2370y1eDcAcpl7uHbJPltHwjS1PL2pTUUSTo0nhIi4KW1bRHqZ5sTCfv3TVPMN68WgjAu0g4P2Pho1KQzBcAxmchFy992wlZuFLXvIiMoIoAaO4OYWxEBVIbI7ra1Bwow8xpIDu03ePqBUnu4VH3tTL5kZK12e4i6iYWxAxCvOTEBJtOqjcaIZLqGygTb6ZBOJY1R6G3tFSHxBkPqNkes62DYWjwEkPomNl2azNMoyqhCb9fn9Oj5kv4LJBA7Y5NPgDsnl0Sdm6tXsYu5C8Tum%2BT5lQV6%2F5iq0y1eXPZ4GbJkwGwUxNl208RBLc5Q4%2Fn3Yk246uBoeHKLJeriav9WTqODCvSsmu4rJzCBFu8Bo1BWox60XcijvXcOEZveedfIm4OK0%2F70R%2F5IojwDz3V82HpBdsHHLbDQzdY3ME%2B3nR4jIo1A0h95YlnNYEgimBiQ8kxL7261d3tcfxSD3V8dOs9IFXRTSCPNOyJQ94ocyV6cygERuHkKa57SudKIZj%2F3G2AQmE3X34waF8YD2NhnCBwhqmJI12AF%2BLRodmzvRCxWhxrnMRNuheg%2Bq5x3MOYH4CJuSMHKlUElUV7rr8SjaqjG4cnRBpkltVt7NTlOx%2FIToLtbMevaO2Yv4TfwxjQSpmK03QQQzu7JuP%2F%2F1keKqeK%2FLPg9vGXSHTeA7oeJq429nvS20EGdJXUXmL7sSlNOGe3Sf%2BzQBPIrVg0XKV02SNoB%2Ftt5vUBLtNLSUlLbtc7m1kQs9vBrcGWw%2BF2b7oTOk7F6uh2Ddxsxu9fgePBqk8TtWXzaHYCNK9rmS8cMFB3CkYpoTOYxgzJN4EuDDr79BUtBbi%2BlhXMh8YJxcq8SazgW%2FlEyc%2F7REEieNk%2BTx4We9X6DGPaiHVDhneqUqccUVlizzG%2BTeKfHtFD0w7X7BVjgZuhOMTqZHrKsaCtm3Vo1Pz29vvNX3xIv6AXJREpcoBzHkveqXYPm8tk6FfPT0yMsGKPw35poG5xgAfnklA6hT9oaRyrFtETPIfdK6SNo7aPPO9oBEHdyZUQX4TDbSOWjW%2B50uuAi443FouLG1bSrR98y0U74p1Gp9M9dXgCiS8ER5rrq5s6PDihsp7F8QwvkhN0A13Nu0WVwDaWKT2ddjcGJOTC6kBnZI%2BnFkiCM7aO83YOfogXFYUjWsCYoySCEiZtUDqbydq7c7T7aSO8sGvaK5I%2FHujPI9zxD7AM%2Bufi1ObtMQOMy1jHjDiD%2FM3B6%2BOMo2z%2F4dWADO6LeCAau4TIqo8eU6QGq9Bfn9kUYWI4qWxysZo4IMfyGPV34VsAIbArIflS6Me7jgcjDVCfuNGfztiOzVsXpH1B0%2BXOLV4aGKE4VGmUGGdjRpAfuluzMqr2o6u%2B6OVEVjo2nZvyqE6dj%2BsGQAuCzOrCjixbf%2BaZuXhYJQ4M7a4x2arMwKPq6rm%2BLeAbl9gu0eSHm%2BUfTOcY0F3cvtr9iVscdqNMZV7UtQ3dRv8EtRRbmfvluxSpEvaDmUK7%2F5xu9kyXJ3KuahVYzacZxSbjPu66Uo3fSl7SVJA7GJUAoVzTwOfRYVSSMOlZeqTN%2BAxXoVosJ2iedgJ5aFPmWkOwfHERscFKWnDVdVYxJWBDVm6QOG1qhFWsKiqn8w%2BmLwaFfuAz4mcSBvAQJ6BIpb6ma9mB%2FlzONvEMBS2zQNNguSpXmR94uDGFfBjPNl%2BWoIoRVAxQha2F8sshaz8xqU4KGzNN6nIPZuOPNTC0KCCoXLjSpqBGy42787VviEsrE1Ytx0xgv%2FybxChwxawacs5EX2B2qjzgC2blIvjXpcdCvpz4jUUtFHDTvAxEgpOHEDTEk3j0ixSv2qPCFNT%2Fm6AxlqJRy1R6xTNGXc0D3PtUbRw09T6XQifw%2BaDQ8nqdV%2Fct2Mnga7pwOcHYn%2Bw%2Beilv5i3WaFUPcO40KXxtHkF%2BfVwIdQ9M4%2BQvyGAZndYKwVHpSTv0n5vV9Hlg7TROLbREiXV2Y7ZQzzcozFMH8Hp0wWtcmPjfBNaOrKWd8583Mp9slsgX62oKKv3KJ4HFQYDUwEFVHhm8MM9PRHXuxe5fNge8Grs7p2v5Ny5N0KPuzWYjvHDiCSMkyDTnu%2F1CluYxZspWBhmWSgf%2BWQJlen5rrwrM9cLzMW%2B9xHsPDiYWq402vJcwTmwhBdMmEIt6hsoeVqq5tft5yLUmvRDB5uPeRrFvq07vZHHbpsoODeFuf7uLhoTXJ2jl8exD%2FMGLka3%2BnqBeFb1Gt7c7O%2FXYlAxHQf33J1nfhny57yKJ7Dws7Si0o6hWRgEXXj4VrarJK6uoy5rEcb8lixQfc4eg1kp3VM47D8pFGQvQosm3Fj2HbowXtot2m%2Fb%2Fw57FM4wTVhzYXUR9IoYVseLQmpuuSsu340uV3vSvZPvTSLcw1HVF%2FhnJfH5br26L6Vz5OUlPF5PBXBn3nK4H7vEUyv8kfkmVIQdOksLHEz0tJkkzbeQ7%2FGup7VwjurhMgI6LowUQad4XoX%2FCGyG4xH995bkmihy2QXpp0lxZKYAUR4AkkV0WPKdhFS4O%2BIs2Opzxj9KX85J%2BFmLOtWDtUyE5QBQI9XolsP7MIMZzBh%2FmfpmAwq07N0rUy%2Fmb%2BL%2Fi2bkS3AN0TfATcprrGlFbnlizVqQDE%2FcECVXxcys%2BsJBMbnuxqpmC6K43ZY%2BWFGYJOcr5XmjMXv51%2FdSke%2F5NTNqDdAQtRcDGCyOw0IQ%2FeJYF8LxU2MSLbjBdso%2Brj3oNdKHgaQaaU4yohSE1aUCuPX2rWhNtKjx7gjZRtXOUK9RUga3H%2FqWnqcEEiHUQFHXerqdqsb7xthkLqpenME4xBqatQjp67IoQ2HTREEO%2Fm3ZMdu5hMt%2FfQhY50ifD8PA8ex1%2BIFKn3pJya1rmc4TUVRpmLAkuTsatZihSXPWzcWwQllw9ZyM1eea8HDGUlV7JdAhuwOp%2BFS13GNKE4JXFu5JWjHTAoakiqh3PYdef5ZbA%2FYthLo0iaqlGokoG%2FoXIMkKqhOWTK8GKWrtfuzpiGVdJHgbtYZpKC8RAGXqRVTTeUNpeuq1%2FQDCnEXnSylVn4qAVlvO4cmxLHYHTlbMOLeurZDkc6X49SUZnbdHgWWsAgK3X1UqiWXrntj0U6EevkyujJNHlA9lgcAK1FWywrct%2FhRzNQN6G4zxLayxd0xCzuHFg4IRBK8OSaMIsu6fMemjeCMooJbKlJK7984iOOj%2BKk8Hg4hd03ws5A84dmGP7DFPTRFChHtt9C%2FOynKrQaZPP2s75Hf33PC3hbkp3lpv3lvu%2FDhhM70gKKtEhgB%2FUfHB3o2iCZJ2vfGRG%2Boa9hH4rYgSNhKy%2FdjCLWguPWsuE39pJkO61JpueK4%2BytKDiMzi2XDylhZgozEnoft3k%2BQPJKo7Vi5tYABMaViNdJUHnmjKjItfasoyJoDg%2FKXduuPLCA1aTYcveSkE2QqeqVA9Tx1JD2PDanU7UjTSNGLRJKi%2F0nZ7bLs0t3rKnQFossCaGc747BDkBdT0ImFgi%2BCjnI4ASSAetR%2FndYAfVaXOD2eKsE%2F0T6RT57jhJ8sxFvG86us2RKb0oSdU5KcbQovb1R8bDb12lLgriXuSz7THaWXTl56riFgUmzJ9vvmOYqibWWs%2Bb6yNkJO9pIdgSW526gBDd%2BnB9lqEtMph%2FaRcwMBLdIwzpXHhG6Y0b0DzQAlbY0mh7r91OyzduaFxCVrl4y62rOVY4iCUr7g7kl%2FsWJDsQYEF%2FI4%2B%2FfOZ%2FvIBVi32XWk%2BmZqjZHlFhCu3y9AB7WHS%2B%2Bd%2F0ndAIlsK9F6d8U8M6DPelReGH2aiotAU0gzKCNVSM39ItnxqOsJhTVaprCi3rIFBsQ1R5nFWKkzUAIKg74PN5D190UriSvNu6aPFMfmqnZvonyZ6R6z%2FasRGe80jZY1JTRKvSHWOQrxr4iqrkNR8j8GmCC3X9WMEgM0%2FoFGI1fyhWYFGhmL5Q0EE3c9eTNtIvigBdKCg7Zg9q57nY%2FrpUvO9ZAhAFM1EwiBw%2Fl999lv9ES9EYXgaUr90BK5QJLtYK7mc2%2BX77BnoJBNXrP4STds4DoVrSo1fX%2FIHkDbmqRNUPVcAWvGsN%2B%2BGvvqBWxaFVIrF2AkEg6EIfB%2Br%2FMA0VGA7A%2B1FgJV%2FYlNM%2B4FOGLhbfk5f2IA9wv0ZOmPdGWQzLacRNqrWCAgmZG7%2Bx0QEVEbVtVVGgONYsN6SMzHFwGAXD71oxfL9QWKLiyirNE3wculFdqjQvcT7QqrburXIflRuZLk1pZl8zNXlfAaxC6jAfvKEi69y%2BFWzlhOuJ7J5TOlADRQi3RGjSqZ2pG36U1sEPEvj9muxXXw9w6OO6hdigBqixD%2FPDxBqkBADGfbtz0ceaO2Nnk5zXYG3pbabjm1Dlugc%2F%2BtvWv4dDL97jkI7MWGVyVGYEqiNUwFZ2NuI%2B5PiM3p3q8W%2BqkhQX8NKokBxpK10qP4f7TBicf6USEmj7q5WHy62eSXpxlGFUgykWUitn8m%2B3vBz3x4lQoJgpMnvgclPuIjng3ifxbYKYa2BCjesKrz7a3yD02kKvTxuo3XU2DA1sWkji9m5bFPrAYChr66gkbVQfCd7o9fgThrr%2FDJzQrZj6w2WYeR4BcLlj36WcX70d3YjzbPE4dSHKXW1t6XzpTONGsyq5RzCWn5GHI9Z%2FTk8kyrAwR877kGxkpvfuc27I2I%2BMi2KvuOC9D5XZgvU4U9hpJTHGJXOpaAPNkSSTJsxWhECQdZkgc6KZPkKA%2BYrRBZiNxXSnQ6yrD%2BG9N4YiIqQC01ANIvqfuFiAaKz1fpwhQMz2fZ3P2xzNS%2FRQnPQFF1eowLi0duQn8CLKUwOVkUVXOiNbS2KtDWGZBp66tX96uN7ZbchW8iWe1ZSYoOcojVEEjBfEOxbzDPy67PsbCafRvp0j3QSu7lRNxl%2Fk5ZLeMPsBhNCIIee39a4DaG2Ac5RAClgRbx9JcpQz3%2FhboFFxeij%2FCmHPJN0wwzp%2F9avDFSQrt8%2B3%2FnDsRu4Gmvd4BefWMYtoeP%2FhZ%2FotE%2FpYMaSEfcTIvDHCcb2kgQfrUKATwyGhj%2BWV7DmiJY1hQPVIg4Sx6L153xNvnIpbaP7hv%2B4mkyHf2YGfRntLDulrTcY5qEm5I6IgqJm8ABfH5a9Qwo0%2B1nJrR62no18tHIHw15IX6EnPuhxED2NNztDcGCvB087B5Pj0PNvOfstNVlawYryRih0cMhLEOoqC8gEbn0w%2F5cVnqr%2BkXx1viJTfOF%2B1%2BHcEn%2FD%2Bq6Rt8EZz5Alwhaw225lQE%2Fy0m9xpCMtRcAxo7WgyzVTD6nL72fcg7l7mr6aRBCkPM0dld3B3mlr2CZOlVgdAk916%2FMS0ULEUk1sQV%2BRsbrtSvFKVKZx0F5J83KAxDMXsHRp2ZXR3brRdYbyAO3iiSbIK0bhhRGb688yPczmGxOZ2rCzzh5NAPQHw%2Bihwj%2BBEBP6xJFr0tMLmHjlxvrkS6%2FuTMnN5CxJwoPmvMGeb5z%2F2RNSEjCal5VbokGZpXVPn6bCED9jauiGdUtZBRgm6rUQ5ZAqtTJ0278N5Im3dLF48TP%2B8sa60AlUJGAYuUl%2Ba0JQKBM2AMsgltAOHYh%2FosXsZlH2BPft7xetDDrc17wLvHE%2B7Ob0TS0rZIRUgiYyvPRFDWA5jrVR5lNsVlwWDuNh7hu4tkCdry3YJhI5dH5qmizceD8x6U82RKyyJ3WgOEPu9nMksXT5R%2FV5cBKHMaGmRbFd0Bqg1CvYCNQ6ucvIctHB%2BRxJpR5Cn24SM54Ga6ug24jL9D%2BoTTqKqNSqw06yLhWhyT8oWi16NyrKVqR3JO1iVwldDFYtsar4Gf7I2b5i%2BSCRW0K57SGg1CSc7viRHa%2FOC7Mlf4cBABs%2B2GzPGVs3DRbPqLHYqiywjf9kQ3E3dVhG2HmzCzFjNJhw09Ujmf2JIspGEbESCLwHzlH0lisp4BZxEVUN1%2BCPLTTfAiZd5nOKc5pD1TLlahgJh9Q%2Fgbjr%2ByuXA0PgnG6qYTD3T7ybA9DSjHK0mzl5af6iq5CE3PyiQQwqGUUbNEndOjf31Di0RX3%2FEXV2AjyXUOJbDoJLFbMmdJEDFPLZ3hE3tatXfZjzMRdYIzVxnsXWBXxIMXaOKiex8aEG4qnVOeLD7xkKyASzySIHEkBmtz7sxkhzdZvkDOTw1VpDXoL7Dz1E3Iovkekq6I7pnCfAudOHJgS%2BEp0QGZ1935Lu2NTcpiMLUdA2i9H6neAC4y2T4CjQ5s3YNMteiQrxF7VQneIvWV2eVXvc4rBhveJjm%2Fy2eFPo66w2MkJzi64d4ImYaOhJApXfBxyAY8RUCeyHjL1kX4MlJUOHWvduZctiU6rv%2Fh%2FeKzvptAZgjltERRc9idlACV4ZdxpZtUz6GumiuZ3CvulhQ5G9rEqTbfCZ50zmRW9iAwD69UtVYv4qAa8LXvLV1%2BpILR4hTwenBZG21zfvcvlwVTNR%2Bj2I5PTni%2F8xfV6dnlA8PR8YxnPYOa40g99GgDrERiUnzsuICmQdeoHFdqNAp8Zb2ggpiWXDPmHA49NCqzYybWN1Juop9XyGIFwf2ep7CBnpB8LHiSvpEVFRYgzrFo5650LWWV8O1CLy4aePlwlGiv92JCYuI97zGqvrnPGrjyhb8YVkkP19x0n3ylJ5babc%2FJEQ0MQZ4hkUfWGIeCbOrgfcTD%2BupwOlurRF%2FxuIKrOTeK1pjcNJA%2FqXIVsLxvRwBefqR8MaXWrMBeajxAU0hEEkK%2FN3uLkobLZipb2%2Bfvi83S5IG%2B5JemMw78HyoWyz%2F5UsknI1eCbBjdvn%2FUPs%2Bl553rOaOemC5nRRdHLDu%2BUhzn6t2CNkX1jg3FT4OeObWa0dfZgVWlErigp2uVT0QSp2fnGZjg%2Fbfqdugv6jF8HQxIbYNSSjEA9%2B6yxw%2F7ADg0oL3PeYzS7BoomDgjXsR0YQd03ts%2F3TemF1hF7j6V0DAxGqOP696tOio5F6v%2BqmsYDtqx4IUnpLK11MoknxMDp%2BSlrxP8g44yD6EokCG4SJMi3gxPTdSdCcBQvtvStGevoQx30L%2FybODtR5ztNpAB%2Bh4c17ELrg7M6GovGRZNhboG45%2BMGFriZ%2BomayA5vwgIpAzjkB8hBAy2rCNjNg6oBsOr0RDf05zxk6FUAOZqNGBT0qRFn9og%2F0LyVo6fz8pU80dWdv8nQdtXephrGo%2ByhE3vk5r3YQ1ECFrhxfZcItS0UyO7%2BkG2HnJc0bqVGIXP6cFRvxUexx%2Fu3sJuWUl6WsoHjbp6%2FRGkpaYliJE%2B5yB1U9Sd0gjrguX8fr%2B4RuhDJEO4G37cqoOXn3JYDvtJCANOwCZS%2B4PCY8FlaZIA%2BG5nKHW3x%2B5gq0bKrw%2BM4aceOPbIj5x7I0m5lMefsnc69yg62FDsNe%2FpdFIJU5Xm1XqoN28VWuwrMv9u%2B1dwMVsR5AmjHoeTTvkidhF1wL%2Bz6f4mSTPyEmDxZqD2w2v%2BIXQnh8EnZ3PSTkrl8jRsJH0a4CDaGYBl7oAjFfJjIsPkuM1AjHJhxPIBZIuTGbBRfFzqLzPE4Xpt0nfvM0Q34wMrQRR6Q5hvjHRkgFVLZaf0G63FRLx7NVXoQ91VXuKTJ7lQYFZFef81%2F44NVI1y2hO2RbxQNtbMw530tHv%2BPdY8HgLqLTcs1l8a539ISZw0ncsEOaZzmr7BX%2BSkJTvvCa3%2BhOBU4E5ExYxVxuSy6gfIYaVeI92ZtcA6UPVEiLqcRyXIjWyiih5125qz%2By1QtK2zYTmMk17SjyrloqOD%2FOuEDKe2w7CIg25W3qYYh9LfBH1RDZOttSLv%2FyN2graLzytC1yQkzJnoSJrqW%2B0KRU9ArmDFhupB25fPCX2xn%2FU4vPKkxTycQ57me3FJdDmdM3aGwf15tRWA3QaCXYp3pJtd8aCNMQiFgUnJIJYmTAuGcSAfWPM0EZCZBoBoe7EJ9Aeu1ek38rVumTdKfjV5ir6i8Vs%2B9aBVetkc6%2BkvmXgcLoW11d5QQ88dxxAWJaBy2WK8zwMNu8XxXbn3bAbI4jDtBl1OmM93QbCgbUzk4PWRcBdlOb7W%2FfdDPJWOQuUc81nhT1pZmZEmzW6cjGi5d7iIU92T751j4DMApqBogwYe3b6Ro0dLA9WB8k%2Bo%2BlYQVbzyeoumNRTiwdlNKP0zxbAo01t6ZwcBuOm1uiljwOLF3MEu%2BltfeTeJ4sDM%2F91fq0gUiZoZhcfftS6XvOrB%2FGEy7J7CXgAsHtddKaNwnKVvpZxWvJ9AMIQ6zB%2BYYI0HPz95ad%2BuWRdaaE%2FKOHkp4Jj%2FXpkPxpJjLm5F3PphAZcDrLJ3nY2PFO4ycw2S3LCotfruqWhg3HagMvH7aMhR%2BCYzlVJp2RrkJ2xfyu4YjUaPdD5Q5lBg2vInrpZHJDUm4nN%2BwvMqnvogQHk%2BX37SDnqLmM6u3IcxE7qL8fcl085gXHX6e1X1lvp3zXDgKvYYLlqC8S5LUSO6sNOxV%2B9S%2BdB3JlUDdcgfd8%2F56XZ2ekMYTvcXp6XCtqXnbUpVGpVuqWDYqc6mymvmJchXtk7UBtbfCmgLP3utLWs36zx5RgWqwVZmUJQCRFnEP8mR5ZWkMulG4dUfhgZ41XTyGWjmdqtnzAuSagjTayogsqq3LRt0lvLlITaQK7P79YH6zAHbd1LmfLMawJ8A0t9klKNB2aLWay0ku%2FPXRn1usguZ2nTH53iL%2FYjXNK2D0sY81IRvWOUy38%2BkFyGpdKgPbi3RHSHFXm6MC8pY19aVpXmK4vrldIMtxXZKjv94AEQ2tCT1vlz0fR61tlPsiVuiLTuytDk99xQvR2RnlwnicPbtcFHziaQWl%2FAmjeim9PCCNMCj%2FT1%2FJneFbznFuz4TpuUabUfQICuwuMmRroCGlxhmH%2BWVgiRwpkMUf4oiSIeXuhM4Ac99zB1JskBV3%2FQT6sqKolNeiLgenatg25mFe%2BhQdyXpYtMWu1%2FysQugywSI8ua%2FfkPehhb5LjAU%2FSvCMSmIf2xU434k80Lxk56yUE24p%2BtcBmwkfjGJJYmLGdXG5U%2F3o5NhdUPZO0Nmuqz%2BOUaJ6GmvuV4SujxojObrh5kLm297qQl9MMFA7NFo2o2q08Kp7Qed%2BYa8WILqM9uoIuuTk3FMYfdT3eJaKPM0CWTEmpNPBP1J2r%2BnIy9W6MXw6MnysqTK0qIZq8hf9EkxY7gVPNDWvfVRWSQ2X0BLT6c%2BWrgw3HOJzvzmSglOWzXvzi0L64aZk0hYbxAXRnl4jnmWF34USfrpURI5yLW3lzUMtPP7x0%2FmFY0JCSG2e%2BzQDTiWxvWhbj%2FgXBL7yVW8kWEx90YQw0hWk06R5CCXFzaNxBN9No6PI7Pu5Etq%2B%2FcOg2iISxLZqF%2B7P%2FWn1yMcdjyTovtsTsZOtUm7zoWHQPfmA6via2blvWm3pV8B%2BC4WLcrmSaoG36XsCOCfCBR69Ne8S048YzZV6CuI0qjP3TYY7Yxrj6Z8snls0U9n9Lz2idOhR7FCQ1Fl2ODPIBzsAzKLhaVZ9k%2FUSczQnz%2BU%2Fcv5NV%2B3p5TscsQ4LwfRV0F3C23iGRnyDHqZdPHqwnWHBhrOfTdv2sngqorHVPexQbCVCFWZtCpw80X7vK7%2F0y82Qxk0CZQyQxyRPf6eD9ieZj%2B4lNZCzlX%2BLbc8f45ZaCb4W8SpVGzZRfMKBm15du5qzT2NzY4TbSsNtydmpQo0FprOJOFcGAovXh7P9BKS2Bto4JjqG5BekZVN8wKUKe6ujNqNec%2BZf6Jde6kF0Vv3c8QKEu9jvcUhM0WyqVoyq2JfNqd0U%2F%2FHlBazFSjNS1GdAuz%2BfcFZQNJnwS5%2Fet95rm7ejIe9u8pmA60f8sQvS6ADFr9RbWLUuzq5GAdWK%2BxRIax%2FbvFaWrAo9lt1pFn5iIHp9WC01xe9euTjHK1SJbPGIjR5zqsm%2BuwX0i6itvSqEQAJL1vlB7USMX0dK9uoNJpUQy12YX8sxZWUmT7BHNkPmv1NCDE2k27y%2BaVBLb8Y%2BUU%2BuacYvPeMNHDja3a9GtvVaauuynEuMvCHaKlTgwbCKTUagPqva6vR27t%2F2y1%2FNp7wtfDZFpNCQb82NAwXjfvCTTp0dVDmEjNzFtoHZXVlmI8llzk3UxsqnnSrQ%2FtG9aW7lLz8iiZRh1rPBdVU4VnaL4dV%2F0zhIfyUiq1s1D%2FPKPqs%2BAfunKqeYUDkJlp%2BJ8W0S85QG%2F58V%2BsfhMiIpxqv1xQLIWXl7QjpqmORm9TpeVTT6zEhmi5QCNiF75diYyiLHNuKWWkytZe6iNXnM2kja%2BXWA9mU8Pqr1SG3GQka6D7mPtsNS57JAUO8xHt%2BFREJT4%2FwBIeSuaRHJK%2BU%2FMYOt2luGn48SOZO5XpKmlzNgpVhKD79OCFLAg%2BXdGFheLFHWmhfHbGVldwPQ5WMysxUibs0bSq3Q824%2BWOqGZrE0AXyYHoUI1a8RNqJ6QsGufiZoy9ydVhVCEVhtCDQvM%2F503GUdjrkXTVr9VW6yt4aTZZ74fQvuPK5cR1z5Q%2FGZEGsVzpJrABbCMO2rSqqwMuI3i7RcB1VOkUFqBA6%2FeWGXgxNFqu4HdA33y9k9ypONazxHqf8k40B%2F5zhHdXygRfIcjIw%2FJx1rlSDKjn9K99s%2B1sua13R%2BcwVyK6cpJZtxsmKPK58POuF9Z5OP8D6oi7YdmIVBlREJtbzKiqbsG%2BrZ6z9s1iT4op3l7HOV70AiVglQaUs1qBCwiMA6L3UrfU6e2BwhjfuaETglU7VARFFjrXO53fRtroAtcUQxhVv6Xf2zPEwaq76h3q8dOixYMTwRHAMYWEbjn8F0a2dUqJhyo9yIdec8Sxgw8FoF%2F%2BQ6seFptzK5dRAq6tsu%2BsW81JR469n6H1IupT3qhXfORiDjafamCPMBMwpYDImst40OrAuN4uP72of8z5gi1KO08hiwH%2BS3WRVwCr7PJ8cEz7gaFTzinuMmbE4LETI4IZ1yDGfOiYlX7wPLwM2gtSKju65VbsYlZLauGg45rDkJyp53h8SfOsXuR8f8qnJtpcsWxKeNpW3WJrmCKFEs7xj0nMHzKDwc4EViiXFEnoFpUqwQsxWkENTOLMU5GtYGqqTtTGnBSvKvtUZX1soq8LTtEHiHtC%2BvL8j325FG2%2B2EysTGCmSV8oZfD3vKuKExRYrHBzKxF9xoJinP3DakFaZAHJ%2Bvq5XX5Tqf31vpQ3B%2FzJzF3opVPxqeUjbXbEfac3Cf9%2FRXE8QpWAtCduTZHihEHDXFLX2KvGfd2UotKpgNPf2abw56CoQgyU5vsd71Mrz%2BqvS9owXMJh0zk5eENU1ZGOA2eD9dSKFag2HnlAtyiBvb3btpaOAsQF%2FqRDYfyurUGyh24%2FgulNFL60FFb%2Fdl6ykbObFdT7Iu%2B3kUzWaakcZ%2FiBgp6nvBz7O7JQmWlnqzbW8zy3%2B%2BqvFM7AYWnouN%2BC0rSCYlxoYBU8tJ9GCI1Sl1OZ%2FSXJssbhbDzkiX3wPSQeVNv8MchF9xgoL8Re9MX2Jwr3zr4Tv2fXBcTvUv9Wyw7tJroU5ehHNUhRv%2BgVwkQwvmpDsH%2BRDCLbIW3mP243Pk6mxA4t4sy6nBVEoZuiHRPbuDhRw1KUMIGkx71PPxLCsT4kH9nLs6bnn45t6QXwWGGdonKkFDngoQotIcUEtrR3WPvqK0kcu%2FnwMXCk8B2wqsZwlQOHh6Y%2BHAzxz4cA4Vzyh7oKfYQrOaLfYF9M4KtHWHUJJ6VnANUOgppeBp44QrOli8YZForFaerHV3N8TenW88puztLRYNykHUl77IJlnXFSiJShx%2FOG3nDCjCWk4OHvbzSVsz9Eavb88y89i6rnxuXCyV%2B8KHMGX1QQ1xVfvJ8XB4Reg1hIC4OV5dQZmImP7XSymS1e3fHEbYgiiax4tfIVVGEfZOUVc6C2ynev5oI8qos%2BHwRU%2FfMVV6pCOIXHVjAhz6WtbxCFQZD%2B2zP4mB8bp8focHWLJd2BSlggENyw0Wed%2BWF9A1O1SPdbfq%2Fr2xD8XV72eW5S9%2BMPhWtH8Ixs6Oy6s2e%2BPiKuLpQNoF3GVwSBPXJB1hFL2EF7LNlujPH5lnKrYArVXNcFDKSO5wwZ1vi4fWqEyDZeTzKPJKBq4b8MKK2vFle2hR0HY9u%2FYhFtBH5uZNaw8vFmFtRwISvXVLZ9oWwuog8l0P0ieGYzIeO3KkURraNlU9SSwnwNfNbpxlaTrqqegFx%2FfDo%2BoltJxqZrCBUVtGH0VEZTNhb6etzUgW0YUqotw2oMjxH3NRLKEoMgCxr1gT0FYSzklRhg3V4C%2Bb7CZfwHHg7o5ll%2F8bm%2F0EEfnm0JjwqxWFDW1R7WOAOLqItE2RUbYf9Fl8T%2Frib0pz4SNEGPabmhJHTNtSKuIcd2T969n%2F9LA6kZm2AIPiWM8fJa4LXpTcB0q5n1we2di9NoMnnSQ%2FhITBBFNVRs7kO3YYos4BWqbGxaRAvA78oIUuvg0uFd%2FiogYSG80lkSP5C6IxNvyRiCkPVSDd56Gt5xPMyQLbcsAKWyGAvY85CAkQ6j4zXTKSO8U2BXGOHWjoS8yK2rL8wu6w%2BdHxmA41Wd%2FuNU8%2BWxwvDtDQ%2FgBE8B%2BpeWqYSkfFR5AlpRGJJduJlkg0bEHpqGvSHJOkzG4Fwjtl%2BiV2stn4ThxIszFQ6ywCZKEd8MHeGMXszh9%2F%2FaFspkP3dCavzfT3ynJ4lS1B1ZqeRJOpgD4nrPPa4MEW26TMvAtBW58SM%2Fp%2BixMiOhNqSHIixspkDVDeGlWJQxM46gTX18kJhRZvc663cgH4y54zjfJj%2BhI4Lg2rNicyX1sl%2F85GePqT5LWX6FFGRr3KIIPofk95eSEEYPClmZOe2Dj9%2Br3XbFypSHNGMy2nb5e8thI%2FJdEzQTZzN6fYSvDcycyoUFfWknem3gzIrh364z2wpw5V%2FxJ5WZVLIeR1xeCWIdT77uiwokJk7jAOY8P40G76fpHP%2Bs71j7pjWor9ndBkPf%2FnRYIoiL4Hwix%2FSz5L7mZX%2B%2FSx3G7liIphmPVfXNsntQXO7HB6UviSUc%2FEK9D5%2FbWuQ6TJJKDX2LfZjPT5wc78hwlDLyQC%2BgtIvbD7ijNpklcYKh1dvzvlzQWohWu%2Fry4czXH4pq7md1F%2FiXyBzRKR%2F3Df4%2FhgdugIdXQ%2Bzh%2FMoVCk%2F26iOTyTN0nkBAxlqwydgl1EeKBRDBd7KB%2FNqyKNriZr3vOcBG2NyY7sRE%2By%2Fmc70xfFGtXOfeo0DyTqvcrPvW5vhBcRKjHPpCimXbgHbFYOr6%2F%2F5c%2FuAYLtOvAVFWRf9f8nhcG0kGkpFYIdI27YSXfU%2B8299ouwgTsypuBa7Zh537QeidY1x7S68lE5XCQugaZplA5pnwNJmz3pfMu2X7WKJTrhIhutnxwibF1KGQcbk0eWxpBRTXC5q4EKPdStvbhQDJr3eGoRDCwqfbx9XgeFOk73X3QcMUOVSqlpUATnmldusUzh%2B9mLvobjkjxn3cUWHWsRbc5MwBMnnAAIY6jgqoyQY5tx5HAp22zJ8MjS27NYGB22VcgN8SHOJdJPxM1kT2vhjLCUI9jOlhu4%2Bw8zLoQVGcLwzYb39YbWZcDaBUqWe%2FYJRPts9x8BQANEiSm96zOqbu%2FRYUzAyK0QGmVVAEEMrRuBKZ3kmZ49zBmIIHlMVCMh8vUKOlvAeX9D%2BlJ7nictgxo%2BoFJOxvdqrTsbBdOWSNXNuMr5lweaXkWTdE2GL40p0Mk%2BDjSA0RLXy1natbzWhSkWtREgAs8L%2BXniB3jzx9OQmOblyW1QU2EXivsq5uuRqYmmrd8MWq3oHMTk3%2F5geMAcwJwJZKdVQTqZ1Y4%2FyIfRDCTpsy%2FoPEwknfNlyGUHyscGa%2FFpB2tcgfCkdQS9UEh6DEpVP%2FuxJ3a30OLZQO82NBj8Ae%2F6JQxS7psR57V0L1YsiDvbq4JGuWq7GDExF7TtoTqfLCmdDDDQM%2BHow%2BV2AtKch5LOrQTkEQg6CwR5mEa7QXtWBQx4iwSJhOaS8lBUKXJIzBIZaaswYHSsWTp3BmuEhwoBzRyUrthHd6ECuhrl36kmyqrBK%2FMyUUtIwZ3Nbpd%2FT646h0bIKMTrCbXhOI0Yu%2FZYMBAGme1%2BozHQmum%2F%2B%2BStBcn1Ve24O%2FMxzAfxz1cVJ5G9OPaiF4j4zWdL43KW%2FqSxefHFhPgnDuCoUx8V5lxFpIgz%2FeIUXfX9j2iM8%2BjSMOKl4%2FU1ZqmUBqcofDq0jQckYHVi%2Bj5OANSSpUhlvfv%2BnTssLauF87osRvai8vPrLsWprUgEpDtaTTwkk7SnHfRKqhU5bkS%2Fl3yawH3nE15uK02zHFIK0lDULwp%2FlJkM4h2ZMy7RXIUGsNBlUeD88rP2c%2BAvL%2By1zc3LngkvBxY5QWQhuj9Wt9RZgAwmNIlYlqYM53iGBH50FLdTeywuTXoAGpM7ItSkYGKmHxChv3i4bf31%2B0Tq03HIniCq3tWBjIazq9zCeqy7qPYxPGl2FNP2i6vqUuUefirH6RTxeZ4u7I5qYAySHqjog5n3gW38BhUFz0PX0BelWhYU9QUp3om4TnUkLGfO%2F%2BaiXtjZ%2B4isHdzjfBK9vwArmsq0%2F4nvXpIvJ95kwVK5X1ec%2FmQc0xtxiRcfPfYxfdeVvwqGljgQ%2Fm9ZcxIR1A42GQwH%2Fujg2Os0kffd4Vornnh5vXQDIuEnP%2FaXkbQwy3yF2chxUKbb9UFHPCbD%2FvnjHnCwTo%2Fg5nuQ0EFpgxS3%2FR3yEnC%2Bygaj8zHQRzEGXswh7SWvxsHA2ELPBn31l0y3OxnUn%2FW%2BKy43uSH%2F88HttnsX2PMCLp2wcLwtyRQNYJbitKpAOl2N7GrKIJsEtxCN8Fdw4yBezWUgq%2BaWGc6Oa0mybKGWqzXqjrJ4yuD8Vw6qBR2acI78wy84TjopdqZ%2BLiQWwlFu%2B8E%2FNiJqiB00%2BuW6D05dP2MKGC7%2B8swyMzvX53LL3rDPOO9jvD3Zu1zWb7sBPJ56gRbdbVnwoWzWYJPUspmIi5RlbpLuCzwLJ51pZNF%2FW8WKtAZ%2BVCxfPP%2BVfinhYXtHWORq4EQ%2B%2BSXqfJ%2Bbl9MRKfCg5RXLcJ1HGAHxkHCVBxQF%2FIfhNpZOWky49J8ybHsx%2Fip7HM0V64Y1OVQGEg4Fh%2BoBnJkQls0EJVZDCGFG7NsZwcLbr%2BH1HyPZcVeTbK%2Bs%2B4LnHn9aZGTfqxZt%2Brsc1ds6ALz8VIqjaZ%2BwttQPJeA%2FzbbEvYzu6nnMzOZg6G6qHx%2FmrTZG2FDZ5D6nWhjfed7HO42%2Ftq6MsLwf78CMWMwg1cPUVubKERLOmSZHBijcOI9ql7aZFXlVxby%2B4ZZIK0CxP3um9eQwYTW3nKboqxyv858ggPbxB8d4IdlUdN6gfrf%2BmvBqhzp8uI2qMxnet6ILAbYA%2F2%2BBk57S4j5PcAb5borQGj%2FVgHPrrVUICu9P%2FKGZwnvc1mublCCtQm9g8gmVz9ABYf%2B3N6ZNQXzFiYq6tQP0%2Bz9ALMWhPuKhgVdfVaVH5LJLFJuj8BMuT0IffQ8Qnq8U6CMlXzd21XgJBRX59WxM7X2vHqFjnnYoler3Yj2UTj1YW8uHD27ruqggGcUQDrPV0jV0yHTlwzJUZjp%2F7%2Bj4RRUfXOlaNOlHM0ELqRangRStc4zI6ISjSLdluDjFVdZ6cDnkDQd4FxnfgJju1xsZ3CIx7GrtB3o26JeU8JrFnPUU4ZbUGrOubNsa8jVigX68vl7TUdLLqESfw%2BZR1uHKwXtXDFO%2BtYjSVtW8vZzkGn7kn32CSMVnEb%2Bk%2Bf1Wf2eH3WzJj1ywzZ8rkoJ%2FsY6771F0Oj3YaFFB1M5x%2FtMmeUecKrZytrrjnPY0wrreslbuBX43u7LcANulKB6gRRyiclZoJHn0Z9kygjBodCUorx8g2mNVNxGn1U0FyTrqAJsQjMAPn%2BicazkqgWBXVs5KhI1%2F0gY29jQ%2FcWlMkO7QkhijYx%2Fw1fNbkhKYKrouowiVk7ulnXiVZAl%2FRPFoCE65rZICTIx7FIxiHU7V2mUey69xdaoH2Tu69XDSTAT%2FNZDuUVXixXMrcQ%2FNG%2BaIK4acnTw6gjmtAd412kZk%2BrvHdLWzmOPMtZ0lrvf3wd7gugLzgo0yQAfW3AZFmLtdhneqmvPchqhxJ27ch%2Fyt1%2B4UBUIkZjZcl01JDx7Pun9RWCDk3X1hfEg230se2LoQJLjq0C8%2BquPghvTxLa9muWrQLwI8u6gTPr9VxJDxfjfLR%2FWndVpp9T2HpaWE5%2FNJdaqphmfR8%2B3FB1HvTlMX6Vy3UhOZHMQR9DFZ8S7mwxnjsX4nuUpzFi4xkeamVPuXeLexytvdlzFiseqiDtWI20E4wJp8BVhp%2FOY5nFgWXxaUWned8hKDznls3ov0eEdO%2FJRTAiFq3bFVXGNoWOKrrQq8yXpOOmGXzPN5VTfUCQl3OYzF5eqj2iH9ftKnFBB5%2B%2F%2BsJKHoRBpglLA0egSBqJLPTsx5b7UYov%2FIrIDMeK3ombhreKoAFgmSEswjv23ZyZyk7h0U8wQ%2BbqFqx%2Bsz8psBB%2F%2BZm7LMpCetDLGZRGem%2FnRVKFDlTk%2BLNMIC2nW1QIGc2DkrWeHmNBCTX27YVU3jepDn96%2Bf%2BHxHZj3sX0Mv2qGlZ2pQ%2FO0SBHf6wgD9TvhTdcNgZ4EACewDKyTbmk5myV1VHb%2BlvR7J321hLjZeDtOPibicX5UpofyAZzFqBN3CHp%2Bf4ADDwK9AEdAvMNmVQljqo6ert9pAp5LwgFE%2B%2BvGAQYeH6dRi8nGRMcmqVONC5kLFWZzjnj%2FEU0mfCGdLE7acBdis4AY9tr%2BqU8vjdVw%2FsmBDIqg2PCBfbTc%2FINBoegRgwxhgjhsM202IEB94bMMhafDhjMTqyDVXb%2F7heyREfRlCxLkCQybyV97o5fgJbQ1ltGbOvG54PnEu8W3ESg4oAA3fDLssa4swkCwqo%2FPy6aW1tOe2jm5Iemvi%2F8OCkSKxiesPQI%2BlpC9TDcMb1s7Qmk5BIUQZ30X42xS1F6p%2B75ZKuWgQjoDuNlAdzk%2F2pxutgCDPkHtsdjX%2FgBF1r2N%2Bn4sn61VUOHXVyAreq%2BmYGGkeJHnGxVsuKXIT%2BazUTUfTprp1DS1l2wT1VKfj7AsMo3xkd2yHyD8KJrFEmxhQ9tVf7I%2FiGrdmUnEFBwwefTII2%2FyrCn3fU2KqmQmGCmODI4aZbW4%2FRo8%2FDmpMdcoOFv4lf%2BWF%2F390NWOZFvKucPB5hXk3jTRPcwgmuinx47cggaKLS3LdMNuxjUz11S8GG3NH95ZFDZyHYyAGzxFSj%2Bme8DvQg7Dq%2BSvBLDyHS1Y1yKjL%2B0T4lzJ4jUp7pZHXQ%2BlUC8PdCo2sAnW2XEMakVTQmquiTU6WFPsP3EDXu82sptRQkZxUwPJLzIPIkYGozCTsBcSMG9fWjZplGeupehl3KFqKOFgs7MRxKXpwkWVcbv0goZqqJ6e%2BwJPWFGogSFrHmn%2B0Z1qAfy5tgn0du5TrwzykWH1fbCMs9DZyIprF4TLGwhu0WMsmwadasC0MPQtfqcC96E%2BTpk1%2Bd7ckKZQ3JQRs6ZmQwYluvUUFw%2FyyU1cCBoDi2CJOKlOrjcZnlYSHz5w5MFoB8GBpvSUdqnSsn2SHHEM%2BLYEvyBoNN3ikG6qxM%2FEM7CDKpNsaW6rS3sG7PwEhKYdinB16AxWGJFn9Cu3aOwkESgo4AQ1iaLqU2gHq5kXtoOMcG97vd2nuIAODxDnD6myqsVsXFb7vjfhb9rGNu2%2FeFapCT92fZSRNN6CzUVKHAv4xcU06s1UGHQm0Cx8EL%2FoonHaolxY5RgOFvuau1vcy9hT5VAcX9KxOd3Do2LnUT5CQqinptHpfxVyzumohUoS85AQ63hPs828YM1vfDRJNoaRI1%2FB%2BDbkRY4%2FqGO0%2BbDhtdWBWvL1AOfeO6xCyKJhGIYRr9AoWt7rBR4FOzqO9J4PgchLnJQNDJ8%2BknGpAMylzBf0Q9Ddkp6ov6NWbOFMLczI02E38bPZdxqmTv8WUBzAvJAFBH5RVlrbAZM%2B0PI3RzgobITkdwcgvXXUuuHA1FtJDlS%2BYqpGdPWyWwMhELdyVh4Vv6kLxJwyh%2F6%2BNc2y3wOYVpw1DE2lVFEFde%2BtOSPQ5PsikYE4XfIdtEB6fsvtaDHoy9EY3JnSSx1i7JpBcb6quY95ntOgfkW4YHsiZFz2hRLw07ac%2FClaGlUbJ4t6qgRPq3IkoHQE9afu2Fm8s5989DDRT6h7kB0%2F4d6BXnZfUtL9AQ%2BUqnaThvXcby2CKwJQ867SjyudidZ5Eo4see2uahiBFfzwCbUF0tQV92O6laBTOU%2Bf9SDOerPCFCqCkmGu5QgPP8A8Vvi1ARyGvP993B5QC28nJbOZMX2QIxZ%2Fyls5rqmf7LOpm4FOArpjb4qROfen4w2A68CNUmJ17pxiCDhF%2BcSxS%2FF6HbYyYGMoUOPXpSy%2F8KYW8ZVePkfblZpn5ibsJhYv0Xd6%2BNYNZgtnb02GZ%2BjOkWlWuAQBBf73inOVcheH5vbyJjtkI%2FqQLy8PhIBaPPC1bL7Ocpo3OdOyk812pjs9Z5j5vAAsyHK%2BjB9qH1FoXkrxeUgLF%2BBkLI5B0GavmerOHkXq5SJboURNouJUf9pcznl30KueXk%2FjHpQ8pE0UUzyWSIH1DDFA%2BPVjV8%2Fjn3vygSOF56bNDCua02YxPzOHiHTcXRbLtg%2BPE8jFUnInaKmBYMoQTaRTo2%2FsXQ%2B0LJXXWkcVBvXQSHhMKmFrSObQbLu05Q0QY8gPsQpaX6fs3gBZhosN%2FjKBZaNOEKKX%2Bww9aZQX6Fn5OoQtOuMo91F9IBeLCz%2FLZ1hrvMYZGREVV3fkF0TrYbjAu2pbRwvjPQ0aTK9FLS0dmQ%2BrqniJvo2zCHPHZMycIlBFyzJvqygwWUREXsQoPjp1aMB0Hq3%2BsQDaoxz2RiRtxXAJ2jp3DghWRonJ0KEJtDRXXPCI03Y1c%2BJTUWqJpCnibC%2Bxt8qKFFazOV0HT0Z1cBqDJQLVerbZTSLwkowct3ztH3Uc7Kub3powTo8COnUpOQxQiTEkqOfU4myTRwK9kJzDm3Zivr0fWOBfDprVpbeD0V13TG5h5h6Dc%2BNHm%2BX1yNJX6%2FuAtix%2BbiNAOqE8G1K9JY4gJSuyXw7EFDReKKynY55VsasSRR1SjjQn6lDVtJ5ORdRnYtIp4qYfRFFPohZQaXcGFXUY3QZfyu%2BOEgzTb4p1xFBJRHYYDdXEi2vr5fs18XVpH3UlfIKfP6RBrP15iUInuZYdW%2FQEVBsBr30YBGs%2FYUBnXr0eb8zVBKnL4G4tY48seWGgyCvDx22DAX6KIKSgjj27GVjUcU7zUkjDp%2FobOKdwA9jqdrECuWrhd%2FibT3%2Bh2wgXavBlTqmpj7nPOXUSPaYPNUrH321SAuy9eIxSAWVyBFm3jVTed3Zal96HkBeUh399DL97qM9rJUgAoMxPZS65S62kv0VllwBsulsmr3%2FPsiZhlXkvrPlfG69Yw85h1tcLBjmYCtHyqC4Du528ehgXWiURUuGyt4y82JAdr6yLIjjs6qOUot%2BONhoY3VKrbZ1Xw96435AfYligff%2BwbkdjYXEr%2BsSHHcRObkY8Wv4frrXNTAAMws7IcBrbI4JpE9Ks52CCIwidq3uN0X%2FnZkUAmVo%2B20LuLUh6Pua0XwByOBUJxyYj0b1vmIyr1yt6RJVeH0i3zaIluAWZPLSirQaKUly1xzgc4S%2BHjKAr%2FwP%2F%2BfZHlyAJ7eCdfJ%2Brq5CmNUMgJsJyD6ir4gTWEIaOUgi%2B%2BfQ0GfIrPHVFE9ytc388skjB3Q79mqUB1OIwn6HvF4ngRZejAMrHWL2ap36M%2FmtQ91sdTXzHH0fYy7WtBROLOFj98Wcn6SVL%2F5Mj5ktxVL9IRMA9Bn5mxu2KVccKWPM%2F%2BeAcybc9S4Ata9wI%2FVc%2FNEwpTzbedJY3UCGZ%2F5ilaawUsuPa3ndvtRdt%2BJYeavAXnHRSbgldgCRBkZYvRLtVYPJaqE7f5cMsy%2Bj3SA0rDgHpKvtF%2Bf%2F8kYxeRqUW2vHBEiCjSf%2BwlBMyaXZapfMeBjrzzgWUs6%2FjaDIFPuLrmGTvz3PuNrThdm9v7K71jqVv7Rc4792oJvt2BXfuyy35D2cIOwfjJe1eWjlqK%2FA2HD6io%2F52fuNX2WPv6308o%2BXkof%2BoJhGi6UmXxyKoPPWYr%2BtS0CNrbXl%2By03ZGF%2F9iaKJ3MbpZu%2FqKs2zLvB7OGkn0NNCCWIzpZ5q6%2FwWFfx%2BmAGi7IozXrGuVMc4SfW%2FhbGHiU42erfVB%2BnyvUr2BOvkiVWzBlKvi7jUuzPXkQxNV8l6Ws0uwkJMJWbeJmNPj24t%2FYNrsimwXWe%2BpPoOfLe4CvKU2ecpW5iwROBhvYLLw4OPYIl%2FXTf4AczeQuCseipWdi1h4wW8F6pfJKDUIvZHSRLnh%2BuY%2FoqFtxx89rtJMxZmbJMbFaPUuukeStsWV3rm0iIv3WQZb9LlrhjUMvDmDPRa0e6lJez09SpqTEeFJmu4zlrTPTKvkRqKs8AeOdEVXcOF%2FXUJ%2BbQwuBX0r%2FnJsXT4cNycbXGpwA7ieqd9n7el7Ica2ikZjxmw1dXt8pf7wdU0tYp90zCSbAj82olnD7c1ZIkyAp049G5E%2BnTESJAUB2uyEkDo16smeLbkk%2Bd2%2FX5NXnrTVZ48msjwEe2F6jRTEofF5YQmnJDTUTAMerAzk9uZ4cg%2FOiILYoMfNU8UKJtD2aNWsLCWDhtwfKdhYfjLXV2mp1GABCSlElRNKj84inDBpYhXj%2FVnScl3fgo6l%2FnqrMkbc%2FF33R5QjwvKYu176JZM8QOj3QVUEDbDzDI6xHpK2L63C%2BDU%2B5peCoZCahlarlid6NI0MTvPX7ADrSWLqVKTBvvCXl7e%2BXMhIdSq%2BtP31qbusHpiQwkG06jTogDKWSLCgamxHFmMCGmx82cIFUOQZH3X3JbRWf8jWcZ%2FqyXx9AYqqTqa%2FNML2WXIyTBx3qVVQtk5MCnrXxog8%2BN0IQKXhmrI%2BwsIY0Rm2UEjNSwdhXlo6%2BFbxP%2BHcARVVovaArIB%2FhbHQWL39zzDyxwQOrvaJjB5s%2BP6gKL4obduXZYcEaNw9qCBXaR2zywCL%2F13YuxWLZOWRLmRcKc02nVjfqGUlyfBOLhuuKluuqenR8HXoaFs7ANqHf9dfNBmBo%2BYvkbsoT9Ec0gh%2FJ63kFTVStzoO%2BDcmuBrN%2Fe%2F7eIrEAnDABm1w5divkaQAaWgTmOWL6gOKaBVJfqjV9Rx%2BqTO2DDpXYA8afRPnil8c9nLjmxQExCmEkUlpLiEJD1bkTMsxmfJwnX%2Fv4wMUA88BNWKt8oeiQZ%2BIoUgmznqjPpgq9qit2N81IJhsgOjGEFHhKVnAwmwgvv8V9P1NaStOsqpI7ZHOnnYSxTQruknxbeu%2BwQSsnMfHSNgAjL8ViTgQWme1TnJeKcnKTVYJewRbyMSU3jbGiKTk6bbs%2BAfS5YtPIwW2ADw71DA3bJclcWKT4QzyHB2xHXwEmXcvNBpSePOY%2FPOBSUiYC%2BEC2uKb5l9oqZo%2FQEFRgQLYf4g5mjSqVQ%2B5UBPLaDfe1htlGC6IGsFexhogmRMScQc3fCNnx%2BYKddeWj23HFpbT2rh5OalM58HILT26pg%2FTH2UTSY5jTWVEZeTxTUdBRC1I9BY3oIlVwbo1%2BW61lYqEcsdMU8ta%2BjIX90tPGP4ZKj4YQHTLP%2BtKOVwpR5GpViuAQBiEdz%2BZHQ9enHQ0Oi%2ByCU4ad1nb64mdG2Q2tueU2zJpuwuNTOWgcaz0Byz0PMqXxb4IDkyu5PJJ4SN4YlPGEHbiellCPLWp%2BjMwuNv0ZzFh49ADS0NTTkp4uTHemvgjS%2FhWYvhx0UgxQGrBxoX79hkAdrZNLDgJ%2FZ8ilb%2Far%2BqwGunY57zCuI8%2BNoi0EgI8SGdNi4IX8WQU7l5bkaPdTaDJizYHSLGNg%2BMII91XQRhK3oSCPiYZy24uEMBBUO%2FZmFnfZNZwJoUzncilEIFIJ4qkdDfOKOfxYAPvhFkvrKKRs2Y%2BiZHtyw%2BOmD6BQsiP8P6pSYWQmKNJGicvfhxOsL7ODC1iU6R6oT%2Fw0tiZ%2F2H8g2HZYG%2BU%2Fy6Zl6ipHK29LWz1Dc07T1S8v5KN%2FB9qpZnXrbrTVaiamgKnmEIOjvGbNmrkowHvmgXmHxl5xfDUh2y4JTPRnNLp86fj%2FgDKIKNmycyrj3286%2BYPbFqaMYWZbYWDgTONQ6p0zpO92jBUjIl0ar%2F4Z3qOPnobtDjHbzfqFdkuz75frKYnjwfK8slE%2B8LnOgPa9jBi6mVDMV5cmtdxUi3AQA7VfkHpWW0hAfwIVKzYxm4D38%2Bi%2FHpNLSCx89pdP7nXz37AAnahCedci6WehK8E%2BNpy6ac%2FVyG3WFRCLHBsLm2l1bgIdzW05RTX1SCpSh2EUxFqhOpT3f5p8MOU55Zz2udjjT51973cAusK3aaAyc11EG7iA7NE3%2FQC%2FTnXD%2FzUMT2kwITbLO0WPk7JyGRkVL2E2pCzjF6cf%2BwylWXl8StKX0meeIRGxm2SwTyWDKvwHtKIj0kwdE7m0tnkW18ha3a20bEkazYnsT%2FnZgYz7egM7Yb1KoVDOgLQj2bVzGuuSbP0u9hHDJ42yVYvpKxavnujfjEbd2p2wBecxNp7o6qNbT%2Fa1m3kbBAsPCPLenScyx8oFa3J%2BzWgVX%2FKeJEP282ebgDyYkeceetRxJP4BxmjjGGJNz9LFWLN4yRg2YJarH7hpttp%2BzVvUT1z2oF17Yq8Wk5L0gAXYdmcXeqd60OZ%2FoHgz%2FnVpJAt5Bs9ArejroT%2F19KY3vLtx484W7F7MMPLIK6la9ZngGTegM%2Bg1Tb5c0g9nuzapxMDvhNrxKHG1qfN7Zde0tcdGJzwKb%2BfdNHtB3ADIX6kaI%2FfALRg19A7NHejTEimVzt%2BEUXwRokD%2Bah%2BeZBS24ois%2FbRQFXRAeevxeJckcpckoaBcK89Rv24TF938ohmdfjzUrxNCqNai5ouaZeoc4NBY1F3By8JFLQXD9s7tQSIrqqQmZd4o1dXUK3niyjdgxr4mcPq4YGzq7v%2FEeuNpZ%2F%2FMe%2Fr30BVRiVjRvLFOsa8HeT06LYvktbWZQlKfd8sD4%2FvkqYzbf2S3z4oU4GZnnI%2F0zedHnUwA1VOMzWdrqV0Sf2pJ99pOCgk60TxKuSaFxZTYrIDFs7O1%2FMNZxWTRdMVE25yMqoxMulRAY2GqifCargGcEl3cfLcQwJKk63uQLjuLAgQNoeSmRtvqGq4WPFwlR5E3o9DE1SVnKSEPvNzDw2OmZjvtbkw146sUTBVHGxBBrRztgTGMbSVkz1GLISBwSQZ1foZ%2BgwYvvPs2lpfQzD2MdUQvQKOnBLouMnofka8WiXvncKi4uCtTz9iq%2BfSp3YTilb8QTKlaUt68zxkP3aOT4QOaPcZ7JsyKLGaliT405SzYzmetArlOJ3Vj47rmanVnLddhII2CrrqID3vchQUhm5TjoFZ7GuYjnRll%2F4E4vsFgYzSnpAPEcnobNC5nHHVgYmLZO0m7MzXtwFU7LYYYO2sBrurTqkr87z1OY5yiZvOyVoc%2BYmm5pSkMP88D0xg6hsUUfbZLdV0%2BSrVwVt4%2B%2B7wGPiAlxeGb8F49UHRpxSi3Ze%2FeAGDLJLAJcY8qgWjUhJHfpAYQYXVnIfQ0oMzTsKnooH%2BES1ruiTQE29g0kpvsy%2BO7L1k1wGNbJP6ve8r0hKRsAvXcqQEdAA8JuXFAO3z46GuGhV5m4U%2FQ4jWpRzeJfeUQUmfX%2BYSjkIUv6pSe6GtHCEUq1gWpKOiCN9kxdVvhnkNeSBqGSfjjYIDUEiaMUviOCy9SdzdZDzMWT2CFqYB4wp%2FpB%2F8l91Inru0ljdK7%2FA62BjFW3skNkBi8Z45Pas5nQdycFoaPT%2FB1HF%2BXbTSl%2BEG5rsIa%2B%2Bqsn1y8LsLhf2%2BWZki47all2C%2BoSlzy6CKV3Sdz1hgRVlR%2BAgkXFYgo0wj1QuPxDoVPgWjTyfwJ%2Fbk2jIx%2BuchJtVZ9FPclaYT78st7sma%2FPM32OqSjvJyJNAAEfvpy1tqsw4Dt2kGaSQX%2Byng809vsZTIPJHLCvwDM5jGooDlOPZekv05xmsfvD8fsEoDC0zSD762GV032%2F1tvlnwer42DZEGLJTcjPleD3PLT%2F4SxLw4AJClxN5j5F73goomrJWTAQSTraDOhx4ijJMDJGujDYQp20SWONxDli7QdA7RDLyajNihXAzxcfK1MmMka8bS6F55C3gKfmlLApmNEv%2BbAoTWAPJ3pNtEWPFHK5EGt29kFV60JocNMK%2F6n1AybcrKBKXShsMtNi4znGwnQ3V1VA0r5ppFMQvyGGRBmwbjebd%2B6Mut32%2BkfQojHJkZoI6GHSWURV9vh1gB%2FS7jEKos8mM2ql7GliHOeqL2xVdwTXeb9j3Ge37rLDd1VpGgQOpky0v4nf4CYAfumRKIfOvePnpangZaycd5Ee4LXc50VrIRRTH%2F3RRgPV%2BdcvlgNMRAp7M7xUPO07O5jhzfuzobqcE2vVaIxnW4E%2FKkxw4f10w9N0YifaiINs9%2FMLwYmlULS%2FlOoWgGLuCe6CUDBXE%2FLnopiILPEHxyR6cujrom6%2BzmR23T8ZKlNlpWGfCBB2K06uLQuxMpf5CCRNPYQtNecQiZOiaOCB7GKtrBlNMZLAeooFnQ3HTJYaFyhFuHQutuUzyMqk7Rk6pKTHTGEJRK7fhKwqImAQcDSYHy5to8s4vJvZZ5H41uMcZeOKK1pZoinVooNT543JQ26QNarwCND9wBZlaEhj240vXt0xtgubfV9Ed8XjH3mIJgcnvtImJHG5D6mgHHxtw8Sw1wWbYy9RZv%2BJVusZTz0yyDs4Wm3wpinRvvwcXOZg%2BHBf3jdr%2FMbFlBmESbdhAc91ZLUXJjl%2B4L5KZX%2B8agilc655uwzQYjWiCtmsBnw66mu6%2Fn3s5d4MXlXf0sGAGloyc60jYedAqjB8sJx%2FDluEV%2BA1Rty%2B88hy4q8YUSmOLzyu49gG7kBaCxb0h2XHUJDKiMk08mPnKE0JaigzcA%2BjaBsy4qrBQP3t%2FMosH4NQqWTaWugIsB3oqXSh2WAhed4q%2FVp1abrf3IEL1EI8XNr%2Bczb1N%2BMWNuaA59VKVG7wvWep03UITogCpySugS7iL%2FGlvU%2B4EsDiyrxybZGYmD7VXWyUufxvy3H%2BSJVo1N18vHxsb0bb5nTtUKYWRtffqE7cld5XQuQ9YTEYkqk8R%2F%2FJVJqQ2jNlGIxwTSyZBnJDdTZyJKKyndVx0C2mNrV5el78LkFlrpK4hZweTexJ4hKnK0hKmcPXLnQWwwaZzFi0qh8Xarp%2BcB8HwVEgxLNhOmeiLm5KyK2KZ2N4cIAU4GLKajhh07%2B6C34L42wvGb4tcHETivIuIIL1AddblxNkvkdzgO0tWlsy70MH0ylkypYFQWPbDa2Djfka6eTEXt5QeVLrxbWbOxLTL%2F4Fh%2BHZmnuanHzeGj1lb1P%2F2KWkDVN3XANA298JLf1lXQcCZWbOZwqQzmHyeCjfuRUF882fXjnyHDcMymzGnguX3Amqwv8ED3hviuFmk63FBvgnGJCUh2qwDmN%2F8mlJCpNnHA5KCFVjFDIwjjp1BKK4WtzgaC4RleqIfMycMMxgu8J2jMVkEcOv2GqavO85%2B99oMCAJRPKFmj3eacD%2BJGVpoegDzYNZsBDYmSZMrsMUw%2FFWnV2qQgoIIftymEwaONVXA128w7MSYq06bJoE2rR49PnoM%2FlPlxy7qSmwvVTV8qOfZolg8JkNthc8j2RajwmU2E0090GVEo1xGGNHM89EI9uOnzV7AhqsW8bzkPh1rFT0PoU5VJG1qgke2YQvfhGIU0N42dUwrBcWCfESbYagOUY6CjEs6dtYxMT6bBXegXiyEvuaYlO8QJit6DzeUKsBKKPVuMs8BzzOMIQ0aZu%2Fg42Rgo36noQmsnxXP5mnIqYmY2Eqd0Dkm7odvmq7feR8vZjR13yf0jJx9rDiEr16e0OC3%2BJ9HoEeUCelN%2BplV8A0%2Fl%2FY3xwWunMLzYjGBI8Z5p9afyqLdB7PeRcNzJDWZueG1W2SL1XkHp4dDIDtGfXXPk1vscGyQszS%2FtdMeIwkDlA%2Fse9OYOCIPvcC2LCJ6Aq1GDh%2FpeUXZWIcvd02NipNhAhDOnei5U3xKnqW4QtbezyeYv2aYs6xOE6i5uLD3hbCgFGelWFrjGocCJiOMcJy%2FNX8fCWTFy5MinnXwDzoV6WS9LuCGUP5MXnGWHxCwLc81AmuZFwOkln9CUZQtjvTfgbAIDDTxWvgfOiGy20pKIrGrwYMQT%2BND60uiVHxWqqTBOfv%2B1Z6WwZQDfWEDSnmv20YhETe9wvUl28R5lP%2FDTQsKKhK0lFVJ8L0jto6qlRspJV17DJ02WZ6WPKlICsn6xqXOlYKHwWjdfpi4TJhWcapPAlbakMiuMTmAEaCdwjnOD4KXEJApVbUrPmMXEf0okqg%2Ba%2Fwwsqc2tc13i%2BKS2%2Fj2Lui7hJbUnVQApiKzHqPfigowIr8YqrHnSTZ6SUPtDq6%2F%2Bf%2FJTQwjcgg64TiU0vigsNg1X8VUTkx5fWThuufKF8HpvxVE6VUbrWKuko7JcPaqZiZP4gblPagiHzPh5CLGE8vCZuKVKqo%2Fm%2Bssoaj7H8pPureCYSrz1EBmnHBv%2BlBkqtxKPwu0O0cnDD9iGT%2Fq41mTOQCjqRQm%2BgIFej766zRA3Zhq7TbsK9fWFFZx23jE2E3LyrZ89kVRnxiDLwdEbhs44%2F%2Fg%2B%2B78mOryf5Kf%2BLEOO%2BX%2F4u2YubePQRVVHmSEfxduhuEe0%2Fq%2FtXeaobyaYy%2BHrT97UholRUnmDPa39QteIgWUU5oFfZ4FP4DvK9nZ47DkJsCSgu9%2FLmkyfGFijsqTYr7PhFT%2F1SP%2Fv1XYI0Iu4qJlKPX5z7CeWpvYl6hsFXy1TbnkbJpWok%2B9gb29%2BnPAlb4tM9kTaNZa8o4FzLpVB9xZw%2F7CuP13Pk3rPhqtM5EwB2pT5sq9Ur95CkdiuKYzvUoMawO07Y5weZPnkTaVR0TrOAUjkgEQKQKvaGhaCfQB9lvq4Oo78KjA0SRpN3uzwr4RyjWqfiTMUdh1KK4vSMHQCAUjPISnL2xDeD2rNOVEENhDGaGLC69MnZaLaXjnp%2BI3kLzffKv9RVfmJ%2FjQzywv6o40OWdL2NOqesQ5ZbfIm1gfMwYiLOfUEs8lou1c9uVLmO%2Bqts4xh1Ckntcf%2Fsznf9S0km5hZUBsWGSroVldAvEoX%2BuRC%2BtY3H2bixGny%2FzDX2b4cAjmvXKSDH4ea81kN4Ka2YUyaQBcpWdTDeg8%2B57kUG2BQQy6yRabE4QY6aERCYT05dMJtJZazuM9hgAoIFF5ZmIswnz%2Bvku0P5OBjCTNb%2BVyBkTnlRgOISOuL0%2BjHp2h3w9GZViMIqM33br2zSZuWqYvDU6XCFz76TTdp1NsM9Orj1cVTDY8NPgqNQA2klXQLg4UvfqsAYGGSmj3EFRmIi3eZed5TqmjlxgPA4dovko0Hc1X0lrp0ge%2F5EdhYGSl5WzYA5UNmzPLeT6zLc1Qn5h61yCKE2FOsRqTfdF8Q%2BoevwTFH1Y6JiywnAWK4eVcrNXvXH2rQgSYxKQjlTZd3PTR%2FRNQKAVC3N8S%2BYVGRXE0NgOFT6XeEl3XhGtTjwdOCyllLNbRckKusY5n6UQBcpICHkHd6NtiE1w519vW40iAMmBF6KaI%2BTjuAHPRKFWT3brZ7JCh%2BF6I33k%2Bs0Mgy6rvKZbRe4UugqXBwDPIi2tgVTyx5HgoNigZKMNMJgM585CMM0wmzM6DsC39v05vg8lhkcpPbHpi0lvzWt7GFCNrgvxqX92z3GfTkmOqP8OzgPDrNuPRSNocUEFO9sIcSGbzCnYURFQ0KoMF44QHGnu4Ju0wMtINYuh49wuH%2Fqmcs9eSgUMtyHJcL0fD404ROUoMhV0oX%2FqWI1L5QHPiQAuDffnKPJ%2BREnIS7iP2DJIJqkOktrwbvai5zOMBXeMtUzXDd4eF7V59M2e825Bxxf6VxebWC1H3unY4Qhkhud8iL83xcxTBbkCETihe8OdsTGsSRm2yIle0Om9hwRSqwkF%2BQRDpjQN1QVf%2FmPmsZ03b9ogd7T2B98gk2lVhrJccXXGTNvEm2NkFiTm%2B6BNxzwg%2FXkT91mlb5hgrb4LyhSyM1wJGff6bv2lt45Agf4Im%2FDPsfbCi5pMxBCTM0BwpKDv29y%2FEea1WyO%2FoSyCt7Qr%2BCXjqwMZML3KPC%2Fhg5EZvo0Hv%2Br7FaXzM0bh1CIVqnKbsNq5aA5cImHRAiCOs%2BFGv7HUhnfNq4w004AEAvMWUrE7E0QGm%2F5bU5Fz0SFcDAfvuyuWOfwLq6SnYiry9Krm%2Fh2Ao7w5U9a68IDyJNC%2BjYp7sIwXwWE3DGsZTvdKc7kGVWcdBm1Y8WyuDSuxHSrwRd%2Fegb5KpqtyV0PKpUwKbIAejA5D6%2Bnn31yiTaJYyUl3dCgekOly1pq0wr%2BdjJ8B1HIJVhP41eMCnS0oJwP250XNxZqPQjlLDFaiItWu%2Bg1L5KBt11Ios2uzMmPiGTNQpBl992qmzrtR%2B6B%2Bu%2Fkq0OH1b%2FbwWTtjmDnnktl%2F81WcuS3gk5o3F9dWPSeywMPTXoTdjZ12gs1eXziOHxBO2aehu2a0w5hKjaGkkEK1ZDGnwYCrVWISt%2FfJpLA6tp02JENGdsFt3oq4Opc6u1uCzxnffCFEfOR9kO9e0nTeFETiib%2FhbPSWFO9jxh3L8n4fFpVHvr5Oe%2B%2B84b9ullpAOpopD0YdTQjPzek2LJi4uqUk2DhHQ4ghwIXXeHFT4GRSTNvZD4iCStVVn2u4bZZQlaREvVmDp6TbQxqxwDWgQJWP6%2BXrXSNs2prhI7WFeS%2FYOmCZixE%2Fnfdd5t%2FCOSLKwz2%2FQaOCaFQDAuj5a3FgfUrJQ35rcUmiGv%2BbnEvCnmYtDTYLV37DLilb%2BNZvsovx99zOwCDRop0aj717w41VMUU3Q%2FxJZBz3WNpkMsgHKKb7KdG9nc%2F6%2FMh7uHkdb2oOwpa5JqReCKKjPp3P9ue9vZtE4m3C%2FdOdfKgTRpZM%2FFGn7RQilxxE7JAa9Y1Mg3Zn19ionZrNsBHwAqu8AfogWScgprNlX6dvFQ8GQDuV3%2Bv3Mb9fYTe9lIsZL%2BMK%2BbWHj0kjWBxgs1ih13Fk9ZF0OWK6zH8NhOkmlKojf5R%2FaDk2uQRO38xoPt9%2BabDJ17x01eaiLNkTOAzYEu8N5DgB8WpyFBJEGHOLElBVbNVFZ7Zg4FxZOyJC7DaqL%2BevHCDY8IjGuWwKIc9DRYXHwEqn%2BGv9VqtQ4UG9zjpKp%2FdGF51I6hkof1CY%2BipZ511cpwToqLJDW5ia0Xkijwqy1i2sidbuQXt9yu%2Fd9spZHq61qrOoOPFAGBDWm%2FycplMjZivfz4jdlw%2B1P9ja0tYu7FlMjYIuyGTHFhaZuhGPfgO7Eh6Br5herDE5SFCeCeDFcCKNS6ZLxjpYm95YDVsE5zRG0xZMJIVHRqN5tUz7VYY%2Bl0E8DB4fvFJiFToAEqw3XU6GDQGxsadGdVZ5ceTsRMCxX8v0H0wlp1DcilSXx5c8zCburssEO0J0phgWUsdup6OkJBnRVPxRtZNAAiLXKN%2BPh9b7HYQf3J2%2FojIHfM5hwpSD35IHlnk5wJMYsTT4U9yyoQncfceKgAu1q6iW2sQqXLDThENfBdfhp8TNGVc4JBgpV3HeYUphw3vV%2FFM23dxw%2F3SfAOvpd5HLHckinic36Pfyef1TGBKzY6eHppNJYjZoeE3%2BM7yqafrBNg6m18DkaYgQKoiNuxcqZPvu01C49kKDY84i4wxOW9ka7dz2JDyjvtl6L8B1xgN4h9atXAvBqghAy9IdYgN9vaGG1zBIMJRsIIHODaqJroEmO5xRnL2SvEnD5ayf3jIRieXxqfb8c%2F2UXdaXLbSgz3zHeUDGf1eHeb2H%2FBNHhSCtvVttYTeUXHX96teJKKVUCPlR3LQJKdAL9l2mxh6QkqMNtyvZe0XvbCOmer%2FIeCqaCMmcFYcFXO6tUsefCAlyBAlJtxBmSBagxkpSTCfv2iFG0t6pe9jtY68lK8by%2FxS6dHXgMw4UfTCD6IA9Oj8VKMaH63pswYPH2XligfWu90J8lZ1hVNeeqIDfESAT7FKg6dZriIWh45ebPwv%2BdDCD9GMeV4DbdzRBqz8Alr8ctFr1e1%2BN41oodWkgO9iBraQqmNil2NwKJWWiV2RgDcr111B4x5inx1GZcAlQb23oc1DorBr34yTAkLz9VWiiBjvC8uMfR3WOJL71y4e2SenKsHvVCm1fxnyFD%2BUDk%2BOWUkwSaxpeVquxAafMFM42Bk7ba5g1sTXluiuknwoen2x2xdom7vXUDCEZSlwLcZcb%2FtB2sTftK2f086cbv4czxXwcPKhdIxSsYQUdcYn5ditiBUJytc61WBAszz9W9fUahDD%2BN5ftdc5HGjpcEzTLmEGpaD4GQ%2Fi1xj%2BSjqCzvoTL%2Fvvbe%2F%2BJc1j6FLO%2FdgGnDcxQ%2FauxRn7waTydRcwVJQTWQqPdkR6EaziR%2FhUcjBbrW30s66AVLTr67hhU1E5iH0gw3j903iIKJPTLML4RE9IPjj7PgOTsCV9AH9Xjxh9OUMVvBGGzLfOQBbm9tiz8JB3p%2F64olqtmB78McHs3ztBC81qhvMzW1WN6eaFUUkfoIKjWrx%2Fjhy5KIYodjZ787HJnP%2Bo8WshBfhm8vc3d2T43WVNBgE7mVTwowIp3xFk%2BcRR7jod4OeaIzjz%2B1icYCs0cS4tGFpwFVllztFeLdDE%2Bnu8Kz8W%2FwkdStlSqaoiLQCsjCrVd1j%2FT%2Fsyxuc7tU7eudmimAHV0Vo3hWuEtULduMsQ7KT92Dk30TYQLSKp%2FR6IFLRDTATPm0s5X2YKORvEXVxH3fkG8eQff9xYdbY2nbhzj59QqFoxe8LojyN2WcrYZEV3Z%2BWJQJsvAeBIaSWYqACJhIVGtdN%2B9JVby%2FrEDhpSCV2A%2Ba4YA1OEGVJBClTsfREBeHpx9HZ7h3zHc6yULzb7SWXasCtN3NRrZDCszpUgXA64Ah9hCvc7bAjpMjznSc664JODRSaMscRfJ6%2FVtrXPWP0hmk8xDlIveswQ6b6yRwOUnMOiQw5CWoumdbUf8FM3f9ZaRucNJdzcvc0nqiwuCVWdzDux2R0e1XYm%2FXDOK5GGEHDLIkMqOuJAb4jBV9VCClcI3TUjZOiswBhFDJa%2BGktnrrknseWGZvyWEkOBeKL0sR5fwvuEFlLnVGkbvG86Z2xsWFYI55f3OQme%2B5b1xD%2BwrVfpJIfvy9TpTXb0HjVYRugRubYO8D5djHX8q%2Ba5p%2By0rcQIAyG%2BE1JNV9nnJLXCLb4SgnuLOYAfpaHn3l6ebkty02B5hBAHCbbzRzY2S1O0vk28IDSJdlYcaY1TzSzckVPJhxAXsy0f2xWwMIkCI1GvjITJ5s3hpe3dyIq2LOM0svtu%2BNECt9WLlkEE2nrDTk5rSmIMEf1hDWFAeOm5C7Yagm2ydVWKCzChgoIzznHElILd9oNuasnp5BU5ta9Ncjzov%2Bk9S8KIIKF6EJuxbf9SUA9WIGJ45i4Hur2UTukDJdsYY3sBWasMyaoyerEmJAt6xGW%2FgqQGx%2BiBb%2FSBrL5IVJx5p02EPjlFg8fYny3N84vWXcQtSNKGv4U9FKih3ar1f4%2FXutRsj2PIWlXCnMcsEdzbaHCZxdvi612XTbVvf8saxM%2Ba6FuqoIT4GhNSq8vBc4oD2Ekr8Y8LmPFWx0trEFtqJq6Bh%2F3YQpH8uUZRcaw1cddJhLIbCqp3q0gox8hUGGJ0ccFhyVT95HuOG%2FZy7ZkT17V4hfL4pL84X5DsoLd%2ByQC7zi9Vq2rb65bPlLboX0b0IlO6xkibY6KggXQALrxYia2lN0jG2DMZkNXppmT31UXgNQoAhKtH8z%2BHCRMLQY1BKkC%2B2QuwUMZQmzWkmMoAJpNGcJX3yz4hN1btp0vExzS9xyiQ6fmA7l23u8mHokWVBltVBJxLkq4nY7ESr1uiu2rTyaK0Gvb9HkXqiKV3ak15UlJyrtSfduUJbsKHlXLj2W%2B2g5YzV9PHR6Wcsk%2B%2Ft4TZHBZWMwKsZWRInevE6oBLbx%2BUUYyO%2BWclyf6bXOqQKTPOxrvoWV7Xybz%2F%2FioP9mWNnZLZg%2BewJDbgZUGHPoSnkRFb1wgdDGCGqlh5dbjxazL4htXJ32bGyYRkw13Q%2BA6wuBFpFNa5RchJ8GcElcbN0DGWi9ZMFuvQVHg7suRl57%2BUwJ07tvjPBP97iQ9UhaKqDJx21%2B8OaJR4rHI6BHcZVgUl9nD8G66DhORZe2BsmJ2tR34vQAXVhg2exAToRyxTwRK5myb5m%2Bwr3eZE6YhR77Lp91vVQhPcBm7vodA7h6RLhBrxx%2BjC%2Biritc08tFAux59LJ5SgKSrb%2BnYuY2Hbtm6YN%2B2gEOO1bfQY4ifG%2BbbVcSowQGvKZpo5rnHgBpxs3dZaFGZSazLs70QDK201outxa9q9JrddeZUKJnZWvr%2FOm%2BinR7d8alL1r5%2Bu1ZhSNfza3eFOm4Wz%2F8CGwNR93r3tEAWJI895qlbtM8iBE6qSxIekgVlr9C%2BoxuB5zYbP4roljDgJXWCwXTHq%2FwEFY5Mfu%2FpGDD%2FWV8sT0jl0BB71AyivelD28pbK9gTa%2B%2BxvavSqo6Tn4FO5GETL1M7ZwRrGVkvim17IM5amlibro%2BS7NdBcUKBCI2Ary2sSAqmEeHRVfS018%2BHXqusmVjqTxsEFAcwzkK9%2Bn0cfWhFSq5olKmdU3kGSDZenVSzoOzrAGGPLIz1qvPW3Fn8oOx0CgnpXR6FR%2FNgplrRZ4yXGLz3nwap%2FCASpxkVOLqiHZYq91AHb%2FAh1fCB8CXs9YUdBSfDglM7dyvmqmdS0abOqOeKKBbHIXe0%2BVtiHROApdGy4vWBwM%2B%2B664K3ThnueXnkDni4uBXyh5KybSCVi35xpc4WWJwVYKVsnrzc32dEblIt6QdZCFxixc%2Fy1fsBj95b9ohMs9IQUGrfqhW%2BSWipO5ozGdUQof%2BI%2BrtjwHYpR%2B2l44H%2F4blOa6SFy57wEpvKwtjdAAwYR6i1I8LLw9orXk6pzSnfK87wFn%2BbwQ0bSuXu8x4swLuQNR3bLAtJyMi5ollHazMFkkvzCNGiCTUGc67w2G0CEYot1TL%2BB3%2FXGUP%2Bj%2FGJ0ZPhyYDu%2FEX0g%2FjK9yW9GC1K7oGEuJl4iTgAJ7vpHgy0X4M%2FzNyPZrnQ07T4iPVCG%2BytGg257JXzaZeppI7GvtCyECxFHdrp7PKgpwwqDf2WPcYcvB0zF5pFU49w4%2BNLg%2FfDO1%2B%2BUOo7Ou6fR2C4X2pWcCac36O0rZB%2BqnlbwVwpaETwm1QLhSZtbQNZQsjeaoqDup%2FfgW4poBuTrj63Q0M7m4TVk1TCCkhJlGw8W90Ly18vVUKd%2Bw74ph%2B%2FQoJkGzCHHKkc2cwyxsz1SnMhYdICknzN4RaoS0Yjv1VUa%2BWmabcnpxyOT8n1XASf3pW4rGhDiKaqpO2sXIG%2BXSoeGH0JIPJQYI7573gJMwPa3ScElk0p1%2BWdR4egJk7t3LDGqUPsbVlHuHLMls6NDd6OoFagv%2BtNc7QiyozsN3Eep4bq0inTEdWvU8YXBd0WyolsqrZuYN58AFtCLrKdSINrOIW1iiJk%2BXOnJJFMge0VU6yWCiHZejKRTEY%2F7TGaQh5QJZImmKGe5r6LhCStoMtvzH4GN7daMp2NdDSaxVcxlWuu%2Bah9aLByHgkVILsqeRaRBHj1e5kpag%2FnJ3%2B9L4cmpVyGB7h%2BhtpRhV1x3MdXpMI6W4ZyE2Yx97%2FMY7A%2FOwR80BXtZJB%2BUvQ3KmROYejTWjJy1bKVy50Z1o7s09I4%2B7evpby7nEZ2ed7KOImGEpUms2vxinS5dBEBzyRZPqAmehJR0T6VgoN8gFDgU3shfjmkJrzFgZ%2FPhSbbD2MsNOZ8xfh70GOJ3RvVjcWKjnkvt8r1EHbD5r6wSuahgFsIoGq8Yc6iUzcC9Q45NzdqXZ7%2BRlHiy4liaDvdah4EZ6zqhKI9WQd3jPV%2BhMw6AxwIkfBClVuk7GuVxcAYVSZaLEPTCVNxunR40LzZL5c9%2FXINxxSjwtkn7EhUKud60p3NtILzk5hUeSeQE6QYMsqmX5t%2FcbedsnOoqQ9S5o9scXhiHuC07aPpXqeWGOojCcBbN6WAYZ19cMS3E%2F%2FN3boApmO0EAWs3t7Wwok7t3s%2Ff2RaW0HzFKk68HWyyxzJQk8h2FIMx98HCrU%2FafEb37SL7ZkYiYPivB6hNnKECB%2B%2BfFfEJUetiR12ItYNnbmk3cAaeX3PIpzZ2jHfadDiIKbkuseUrJx058Fr%2BzjTh95Z%2FMewG0%2B1OxphPncFN1FwL5lSKwMpYHocMQAKa21a%2BvcYYQV1mapEor4d%2B0L2LfcOb8EZoSJyYvXD74kKK1VVNJo0yjoBNEmSxXl3Hn2kj8ZUrm%2BaZJKgvGnr4vNebXX1et3N0ytVLiKIhgfxu17bmZ3OnPyWu1Lj%2FJn4PRmca2pkgby9jZFFo%2FC9ChnxcTMOO2WkGtui42jyJMlJXjabWxEPs6gyjPGU%2BcmOH0iDf5%2Bskw%2F5H%2BooXKeaYp8ZHx%2B%2Byp%2FHY1qJ5qrzfMYMBqiWFn45EiH0xpeeGyplRF29HA7vxwRdBXgFwVt6ktAOGRnUY1Xwzp%2BKH8hKFT8weWlmwXUluqg3yF6ctrMkbU67K529FUGD9WORNOGfY7WFnO%2Fq7UpEDsm1OTA4blPoggxykwTLaM%2BfSQDugR%2B5YQKcFNZLue%2Fc0D2HcOl%2BMnlbJv5s7o6uaz59sRb6eALpYiSe895BWifR98oRwDGSxYNVUEjt0qYldBtyQehB7F%2B1upge2T1REfjNIhlHTJkHLOodqWxIoXnG%2Fi1PuI39ppvi1tuu%2BRxhF84fgt1t95iTG3DXkk2SVklxEIALugu2nQl%2FlvhzHQRjo9tHctEg%2BFro2Lu3CQ6ieui8P6ZU8OOoND6YD%2FGsl%2BA4A6vp89VINmDeVoBgwoGcDbekd%2BEH4h67azkl810eqthw9zDLZ2QkTeZaVDNZt9UjLcGCgQsZ4ANjDZCQ0KkgjAUyPT7HeXIuF3a4L%2BkdNHRYfgWpMAJLDL3NGLCnHArIgW79kDe6DEmOAojoS%2F5XyVcVh%2F9%2FHmXTsYaxUSrHY1u0ovAfUgDhJkHaP1vwtxG4PPOXhNhZwHIE4XKg5Dw3gsldAL2OmPIkGA7wWn9Qd8FZOanozbdPR50OuqrmQipx6dQ8Qjl5%2FQXXRKNH4EZmC34du%2BP8ve%2Bb1n%2B0%2BHmXqE3LtAEUkVBjntjGjstF%2FzVINmO9vBM5hLhUhP0k1Du6%2FolIFvnwKvQbzK67uX8xdJs20iD0Cpjy4CsRwUie8IIZnKzO3Nx%2FxaSM5Lh%2FkBIKByHVjANLYR0r9ENlJLCabM3VyToH2CUGyFxtKy5mGFG4TFPmfGbSybAOaKOm2xRm15ouOqEIgaETRDeTXGvThS%2F92vCimOCIUym6SLs8SXNXxhnsw1vz6IEjB3HFPdbefX04Gv4ywRMH%2FFJyY1Sg6bu6oVAX4TbiP27gR2a1xH25je%2BRW15c4Ug7AVdyG3sOc0xjEImRXDl3ztVoTqQ0GidtWkgYNuwMR06pFO%2BBBR2%2FOVqX7wY5yHYJgDn1YSTfqNF%2Bag2UjWm8CBYhrTbLHI%2FVQtNKPtbktKcVYfLMI2uHL0MbjXcTekC4KAPGkHhQEbENY%2BELTemWkbQkqe4jZWrJ5bMoaOEb3c%2FprG6OBv1uGKb9yRhdES8SWGbrG%2BxkBDqDEO63ovrZ2KlKxQb7CGiDmVuiuVqhs8A%2FvR%2B%2Bar78xa8uRkHxjZY7J80LSy6kpKY3QwOe1%2BAV%2Fm5k0j8KwiJqlUbtKC7uxwMAOPgTovjKrh958w7DVy1wn5SyAP8rZcLIh2bJ2zVX8Ctv%2BmMKjXqO%2Bsh8Sr%2BdbWtDgF2pV4bqVPIRWWgC9Um2VtJTzUz5oluNFyQ0zpqaPKs4CgDA0KxbXMt3weywR2r2ePrV6%2F4bDj90z%2B%2BO08KvNJA6HWD5GQ7d6PS3VAUXJziWf3ijnD68hmc3G%2BG9hheQlZA2BOcJCJa4Xp5XDI7Rbmk1LvX1hKAt%2BwTAdKpIPLjINpKekxuIRdQmK0837SOxtS3iz1bBKsvPSulPxGtMyjC98iB8YtHnP4vQTJwCd7VRZkO7Y7fffmbkJrG4V4s%2FnX2mWaKvgrzXSSNcDWYW%2BVJ55LLqmHp1hwQePaf9v1ZF1FNMujLJqwQ%2Ber0u9V3E0hoim8%2F3b6tmfPHcD6D%2BFtKmigWvROpnaFSZZaZ4dREvwzS5oZ4wIJaCH%2FdQQG4eO37RKhODpOCVhzLFJvSQscFSRYsXEvlhI%2BIuQhmIfCORXZz%2BMJbqfSSYRRWgYZ9Fe6OWSkQRYBrAqMlu1d7k07qk8Qk2hJ5k7Y0i3irWjWnmUJ1g4gaWz9GQXmtcjoCzdTLGnOAMS7XYfUCiAo6Bmg%2FTrSmc0WPOq84MCm7%2BYwYGuWTrh7y0yYnLRZjOfFsP8d9gKPY55Gvk2ywrwsARCH4TnsL6hH0nZlX1NbHFyhrpN2o%2B8Bl4jqRmoc%2BZphrbljXhwIQXeZI5Xu3YjhGT3cEfn%2FocF12MhH%2FaJOgQq7G7lbyci5xfHB7cu6YCgipJ1%2FKzamKTmPNUBF9iG3XhbB9WpBYCqXRBwMcPxJ0KTqSKH5sPOhSM4aIO9pEQGcf6npVXGrB3rbxrri54h6MQrz6A%2Bv6SXnXqSjRmiHLdwI7Qbxawe2MAi4f9RQFVEyhrMNpwpdUqVRlzoJJduXKtzhgvhLksv63aVv9l7Ed6ECxiN50aZE5tODPhzeiJ8gcjj9NrfW5j0xV7fjWwY4UnQ6vyh3%2B5v9CV1gRfP%2B9shR%2BQLpsxlc61xg4nge%2Fe085ZD%2BiM%2BVuoQniZaF3fjE847qLLkqVqgZu0S8kwzMLYRDMJhPzNmCUjIJyx0gXRuBlmhkUKBFwo0ZVS9rno7XColJlxSOhKq%2BOE2lMn9TXKHcWq6jtCIuLv999CNJBXzCr%2B4Y2c%2FiuBjWDpvQMAS6btbA9jCA4dkR5YVCmB45OK5kdv1k0jus%2FgE1tsPlOu6LjcvlpIWvJgBppWjsUbGmkozM06uiWIHjKX327RFbnd7f41ljLU6FwVCSvb7LV5qPd5TOa%2FQwFzNZYgc0n37dJwKMkb1T%2F1senx90Ja9S5MM4xXnga1cPqxKUBw0ol%2Baz7ulDZzGVcWx1poyLwVDOmcwGLAnecMijG8rsm%2BLKD1t1WEeUpfxUsXbqzUslqJOobtA2sfje00u8e%2Batm5AHtem1MaP4XjD5yazxzkgR4%2BW%2Bo0Tos3N31%2F5AIPZr0jXx4Y23xTUmW2C7e0jb5%2BruP4EEkrlYNQAKcCpwXJAosjyHL3RwUXBe12z89uvJT9cSSu2fVPLbwcdjYy8l8aVFuGXjc2Y%2FSJd%2BpZD9xew1OmCjv00M%2F839OymuuLcMjWOmq439pyrPxuk1s68kCATYh7YEB1I02dl7cchD1KkiXeyBWJMZHqwQ4E5rnIYF2NdZ%2BVtlBnjWRvkqWJ3%2BoayPn9wDu7d0RRhpt4WlXMh%2F1nS97%2BEpDFZKVfRaMGgZ4UTLQLxSPqmnkS0TB4IUN5EmGkqkO9fJeNaaa6%2BoP7Zs0%2BXvdiYw5vdl3T%2FZGNBuNleJcb5%2F5sJZ1uKqkeFGMMCQbuPHEB1fCmG%2Bg6C%2BpqK0qDilCn%2BHi%2FxfzFyXdaHd5Ysz8W2JRDqsQy3KKM58rrQS3nOz1TCVp3CPL1Ua4tgPUap7%2BtX3pwr2cCDreduEJe6P9dCaib%2FqkLTc8v12AVq1VQOYB7xgJgkTzaf9Qtfgx8gw5lANz7XKu7c87IDwfS8%2BL2w8UDUTWWzLRCuIhCwa4EaoUSiiMXE7X8Srf3aDF4p6xEn1A3OhpuK%2BMPE1TqpOoKOy45E%2BvItKTTb4Xe%2F6YDiRYNMWhIlS7tkNQ911Bvj%2BpH8DnxPr3SbPBPYU1qqPUdozc9%2F15zAfoIeK7RMINGGIS1E8%2FgARk%2FdfGbDHN2RPdmakz6J8zTELM%2BalzMCAx6lgOfrEp2Q8FFteLN8smm4EPjr%2FdRXp9rasrCEpl0dbqEoBp48bJ3b8dLWhflOHkXkYWftOeKsKRNMXP2tZrCF5M7XAm51CCAnS%2FBaRcS8OavHKy7bVfviEWVTixukKzC2WXzCG5mi1ZNjSLNjxWweSZsC%2BdlwITinzicpSr56WLoU18QuZj3IAo%2FCfVORhyU40biw8jcNgyMJthStgOj3fTN5bRgeE7OCQDOYuZX9jCUvueQKROuStQ6Fsa7KRL9j72SUir7RKQbKgS36HQdiawb2lNyz5elkvqqYKpbgndUz3s7fh%2Ffu9FW6g%2FBcPoBZuCrwMCsUERXqijmK8g9RKdEoy%2FZt617qjvfDdP417FGq5tsH5RFmIEw2QGMU5y3siX5ur5otPbJHZPnZe5X%2FDjQWG5JtgtOBezWCP1Fs9azqsMvypo6o1LYgI0N9OMczhs1sgteylgEvnesckCTHlpuJ7rox4cs2tmt%2FbiK4mcHFqLw%2F9CC3IisX7Epcpwxa7FBPxk1h2SvFtcxGEE7woajzmMZqVSBS5sJKtdPJz81ac7skmoEPjF%2FBw3wsuAD2YZOrGJEZpxdXCVGdCfy3pXLsWgYC3E7m5SG%2FDDxaSl9Gokx%2FDFXC%2BnsbVQLWq5SGNBMH4CgJjWn37cA9EfGaKTVz2ObmitM6yYVTH%2BfMviMDDeuZoj1ED%2BLWi2ZvX5rJ1gmp%2FLTiYkW0ganzGgUdAnq4Z9qxZ0LTmSoyViCvpA%2F8PqU%2F6Qt2ZbPN%2Bh%2Blc%2F5TA9L3Pj6KbiTkYCqjHb9OuD6es%2FnU06kyav7bs%2B%2BfD7TIAwjFRPgMLfEw%2F99%2BPmLs%2BUPluxyniAd2lMxyhsrTpJdk%2F53kosAfqRBOnK0LWB%2B0ME6ysnIb2l0q5Gl5tocRptJJ9hO7Q5upFy9fTqkrh%2FpyIqxaAfue1treBIHHrcXsBi6LINCAQ%2B8c%2F4aKotYjtqB%2FmeCvNuqPvRfCZ0CxFsnVBmXF5dIh5%2FcYUAANw1HYXjIftpvR2esvj1UjfWUShhtTUyblzm9kD%2BqjCGH9XZLQ91zawHoY%2Bpy5cvrONmsv98tZm5Kp5UMUVfan9onuypL0OLlJnESswiYNd2qLdvMvrfw6VFGC1NNS3NlrGGFWT%2F%2Fw6bhxLxMIiw%2Bcc2qW3Lk2ITTaguwVRybQn8V7WC%2FnbdUJ%2BFnLE5M%2BWSR1h13IWvxSKM3sXAFtZxz9JEMkyyPLYdVHL90D%2B3i%2FRxT0i5Y%2BKghFOJOM2UhSP5%2FiTFpUpTfZYNlq93dWGdkNqO2KlcdFjhw4vyOKwDSD0xWlheVJ4zGCfcpiEV1P%2BNdJxB1DzWsj94Afu3oS4I%2BQItCJTviOKfy2sH5PSRIgGgOnCITylU5v%2Fl5xTkwNDc6OEoq5Ri6HuC4ircbiW2qQY%2B28U455Z4pbUa6khlCGWD1sdOEiG8jspnfQWlkguspWZgEWiQ4h2vwa5ZlI9rHxKhnepxY608faO9grvRK9IEFxMvxJfd6%2Brn4RAObdUGhOEu5%2BnhuTcDAxibx7%2FDkNXUxNhtpOomVxZVp%2By4pM2ZGllB8ly1stqygQmtYKA69Z1MtK7DASsCIvs3tugEAnfg0GPYgDOkHaNPomubWxmFSUfKjrByX7t%2FT0AGHxuoxfbMQTyEJVWmt%2BUw4aG4krfiDRPQnKElYS3Kb5YLEuDEILkWkCV%2FkrxLYkj9MuPaLWwOc2RU4INpnhDL9PjbviK%2BqR145%2Bo93HElQHJ6BlkEj63AUicJChy9MKNJjeFpv%2FlxeNYqlMbMQa0Q8lEcqG%2BYtvfQW8s4L8b5NFLGSXJPO5L94OHnfehtC5FrpfE32wvvnEob7OPW9EGPq3DpCYe0uU6WfOeZmdNAhuElWnAaYCMuJjowj%2Bjp8Clpu5R94pf1HYhhwikQvJg%3D%3D&&__EVENTARGUMENT=" + pageNo; conn.getOutputStream().write(body.getBytes()); byte[] buff = new byte[62768]; int count; ByteArrayOutputStream out = new ByteArrayOutputStream(62768); InputStream in = conn.getInputStream(); while((count = in.read(buff)) != -1) { out.write(buff, 0, count); } conn.disconnect(); return out.toString("UTF-8"); } 是不是body有问题: Exception in thread "main" java.io.FileNotFoundException: http://ggzy.jiangxi.gov.cn/jxzbw/EpointSecurityError.aspx?ErrorType=CSRF&ErrorMsg=Cookie%ef%bc%9aNo+CSRF+cookie+supplied.URL%ef%bc%9a%2fjxzbw%2fjyxx%2f002004%2f002004001%2fMoreInfo.aspx%3fCategoryNum%3d002004001 at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1835) at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1440) at zfcg.ztb.JxztbActivity.getListData(JxztbActivity.java:127) at zfcg.ztb.JxztbActivity.ListData(JxztbActivity.java:68) at zfcg.ztb.JxztbActivity.main(JxztbActivity.java:30)
Linux死锁多线程编程在qt中运行异常
用ubuntu虚拟机写qt,在MainWindow类中写的好几个相关死锁代码总是异常中断,但把这部分代码单独提出写在一个cpp中就能编译通过并且正常输出 ``` 类里死锁代码部分 (简化了一下,只粘了最基本的一个死锁多线程) //mainwindow.h namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0, Qt::WindowFlags flags = 0); ~MainWindow(); private: Ui::MainWindow *ui; static void* Q2(void *arg); static void* P2(void *arg); void InitializedTable_unlock(); void choose(int); public slots: void unlock(); }; #endif // MAINWINDOW_H //mainwindow.cpp pthread_t tid[2]; // 静态初始化互斥量 pthread_mutex_t mutexA = PTHREAD_MUTEX_INITIALIZER; pthread_mutex_t mutexB = PTHREAD_MUTEX_INITIALIZER; MainWindow::MainWindow(QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); connect(ui->pushButton_3_1_b,SIGNAL(clicked()),this,SLOT(unlock())); } MainWindow::~MainWindow() { delete ui; } void* MainWindow::P1(void *arg) { MainWindow w; pthread_mutex_lock(&mutexA); //P1 get mutexA //choose按钮对应移动函数 w.choose(1); usleep(1000); pthread_mutex_lock(&mutexB); //P1 get mutexB w.choose(3); pthread_mutex_unlock(&mutexA); //P1 release mutexB w.choose(4); pthread_mutex_unlock(&mutexB); //P1 release mutexA w.choose(5); return NULL; } void* MainWindow::Q1(void *arg) { MainWindow w; pthread_mutex_lock(&mutexB); //Q1 get mutexB w.choose(2); usleep(1000); pthread_mutex_lock(&mutexA); //Q1 get mutexA w.choose(6); pthread_mutex_unlock(&mutexB); //Q1 release mutexA w.choose(7); pthread_mutex_unlock(&mutexA); //Q1 release mutexB w.choose(8); return NULL; } void MainWindow::lock(void) { MainWindow m; // 创建线程 1 pthread_create(&(tid[0]), NULL, m.Q1, NULL ); // 创建线程 2 pthread_create(&(tid[1]), NULL, m.P1, NULL); pthread_join(tid[0], NULL); pthread_join(tid[1], NULL); } // 死锁资源按钮相应位移函数 void MainWindow::choose(int step){ if(step == 1){ //P1 get mutexA ......全都写的是对应的button进行位移的代码 } else if(step == 2){ //Q1 get mutexB ...... } else if(step == 3){ //P2 release mutexA ...... } else if(step == 4){ //P2 get mutexB ...... } else if(step == 5){ //P2 release mutexB ...... } else if(step == 6){ //Q2 get mutexA ...... } else if(step == 7){ //Q2 release mutexB ...... } else if(step == 8){ //Q2 release mutexA QPropertyAnimation *animation12 = new QPropertyAnimation(ui->pushButton_2_1_1,"geometry"); animation12->setDuration(1000); animation12->setStartValue(QRect(110,280,141,71)); animation12->setEndValue(QRect(110,140,141,71)); animation12->start(); QPropertyAnimation *animation13 = new QPropertyAnimation(ui->pushButton_2_1_1,"geometry"); animation13->setDuration(1000); animation13->setStartValue(QRect(110,140,141,71)); animation13->setEndValue(QRect(530,140,141,71)); animation13->start(); } } 这部分代码运行不出来,不报错,但click一下那个unlock就异常中断 然后我把这部分代码单独整理成一个cpp就能跑 #include <QCoreApplication> #include<pthread.h> #include<semaphore.h> #include<unistd.h> //用于sleep() pthread_t tid[2]; // 静态初始化互斥量 pthread_mutex_t mutexA = PTHREAD_MUTEX_INITIALIZER; pthread_mutex_t mutexB = PTHREAD_MUTEX_INITIALIZER; void* P1(void *arg) { pthread_mutex_lock(&mutexA); printf("P1 get mutexA\n"); usleep(1000); pthread_mutex_unlock(&mutexB); printf("P1 release mutexA\n"); pthread_mutex_lock(&mutexB); printf("P1 get mutexB\n"); pthread_mutex_unlock(&mutexA); printf("P1 release mutexB\n"); return NULL; } void* Q1(void *arg) { pthread_mutex_lock(&mutexB); printf("Q1 get mutexB\n"); usleep(1000); pthread_mutex_lock(&mutexA); printf("Q1 get mutexA\n"); pthread_mutex_unlock(&mutexB); printf("Q1 release mutexA\n"); pthread_mutex_unlock(&mutexA); printf("Q1 release mutexB\n"); return NULL; } int main() { // 创建线程 1 pthread_create(&(tid[0]), NULL, &Q1, NULL ); // 创建线程 2 pthread_create(&(tid[1]), NULL, &P1, NULL); pthread_join(tid[0], NULL); pthread_join(tid[1], NULL); return 0; } 结果也是我想要的 P1 get mutexA Q1 get mutexB P1 release mutexA P1 get mutexB P1 release mutexB Q1 get mutexA Q1 release mutexA Q1 release mutexB ```
linux下curl -b 加载 cookie 的问题求救
要加载的cookie文件: ``` .e.test.cn TRUE / FALSE 1428635701 CRM_ADMIN %1B%A7h4z%A9_I%08%91%CAc%7D%18%1D%EB .test.cn TRUE / FALSE Q u%3D%25O5%25PR%25O4%25S0%25O5%25PR%25O4%25S0%25O7%25N2%25O7%25N2%25PO%25PQ%26n%3DCUC%25O1%25R0%25O3%25PP%26le%3D%26m%3DZGHlWGWOWGWOWGWOWGWOWGWOZmNl%26qid%3D1334231151%26im%3D1_t00df551a583a87f4e9%26src%3Dpcw_adsystem_dianjing%26t%3D1 .test.cn TRUE / FALSE T s%3Df4de676ab20437e44e247a6816950111%26t%3D1432539749%26lm%3D%26lf%3D2%26sk%3D2f468caba91c9d812dc2b40765190c2e%26mt%3D1432539749%26rc%3D%26v%3D2.0%26a%3D0 .test.cn TRUE / FALSE 1453361536 __guid 59546617.1361129544114280400.1427441536251.224 .test.cn TRUE / FALSE 1427881867 __hsid p%2BXBNwZTe0bgt7rDlrfj26WMqwj7tQUm3IO8DsZMQCC%2Fpz5sW9sKK0oSd80tCJOO .test.cn TRUE / FALSE 2373875461 __huid 10D56zvW3UZiHzJEGt7IL%2Fcy4MA%2F2o5N6VOP8zA3bLJ%2Bs%3D e.test.cn FALSE / FALSE 1432626118 monitor_count 2 .e.test.cn TRUE / FALSE 1432094965 open_auth_admin %95G%C2%88%21t%FDW%9D%11%07%DD%0F%AE%B3%9B1%10%B1%E9R2%E4%40%8A%ECKg%19%A6%28%E7B%3D%C6%ADF%E2%DC%C5%E8%E1%80%8C%05%0E%F42qt%1A%3D%9A%16i%8E%AAG%3Af%BF%B9%90%83%F6o%25-%CF%1D%F5%12%D2%C0o%D3%17%C5%CCi%2B%DA%26ds%05%85%BB%04W5%F3%0BYR%DA%26%C6eUj%E5%DB-%CC%F2%8B%AEv%B0%1Bir%DD%1DTv%BC%FE%CCQHi%9D%02j%C6%22%08%DA%09%E5%3C%5E%E2%EF%AC%B0vX%7F%CB%A2%F2%A1Gnp%97%0A%FBX%C1%A0nt%96%3E%BCR%88%E6E%D4%09%00%D6%AA%C0%8Bj%C8%0D%00%F1%BD%FD%A7%90%E6%3D%BEsP-%A4%CF%D5%01%5B%98%15%C5%88%3F%8E%5C%EF%9C%C9E%08%B9%FB%8ET%A0%15s2v%1D%97x%1F%03%A6m%7F%1A%17Q%B4%CE3.%93%DE2TAR0%16%14%98%D5_o%E7%BD%CB%A8%82z%19UK%0Dt%AC%07c%BE%8F%0BhK%8F%2A%AC%21%F2%F1%F4Y%BE%60%14%C9T%DC%CA%CE6%B9%2F%E7%8F%14%2F%40%1Ak%A9%01%EBQ%BA%AA%DEW%3F%1A%B5%EB%F5%22%AC%F6%00%A9%F9%25%7C%29%A9%1B%FA%92%F3%17%D4%CAD%9E%F7e%13%22%B5%D5TqoW%08%8A%9C%2A%B5%B8%5BI%BE%05%C1%09%3D%C1%D9%CFh%E2%D6%0E%F7eLU%E5%3B%C3%EE%C1%12%21%96%BD%06n%E3a6%C6%12%D7%C6%F2%BD%E2%D2x%B5o%C7 .test.cn TRUE / FALSE 1432093162 open_auth_admin %81%1A%D4%FE%22%1FHG%E5%0B%8A%277%2A%7D%0F%3AHK%24%AD%CF%7Fj%E7%A9%A2%1E%0A%C6%C3H6%06+c%F3%5C0%F9%29%EA%C8%A3%BDH%1F%E0%F6%0A%3A%B4%D6%08_%CEGwYC%F0z%CE%22k%F3O%BF%98%EB%23%3A%F5%D3%81c%3D%8E%7B%B0%9B%EA3%CChy%DC%BF%06F5%12%9A%25%5B%7E%AAp%F1%D6%E7%27%96D%F6p%B0%25%AC%B2%95%BC%1D%87f%FAS%A3%BE%E2%98%AB%7D%82%D6%F1%A9%3EGx%07T%0C%AA%C0%CD%BC%D0%8E%2ASm%F1%CD%F2%08%FE%FD%C1B%CF%DF%28%DBl%93%27%28u%90%85%1F%13%12%83f%BA%26I%9D%C5%C1%88.%9D%2A%B7%EB%DDN%D7%27q%D9%A3%10%BDS%EC%13%98%2Cx%8D%C8%F3%87+R%5E%ED%81%A6%07x%B1%DAB%1C%80%1D%C4%C1%8BN%15%5D%C1F%E4%23%B0%E3%B5%5E%85v%C5y%C9%13%3AB%0A%5BC%5D%D0%0Fb%DA%E8%AB%B7%D3%00%A8%DD_u%99%07%8A%09%98%991%BCI%B9%C4%E7%9BN%C0%3E%DA%F9%29N%F6%1E%8F%A8%13%D6%FAGM%D5K%E0%D2O%14%11%3D%25%9B%7C%E4%DF%E9%FD%0F%C2%D7%E1%1A%29%A0%2ACu%7B%05PMV%C1%CA%C2%92M%98%9D%0B%D8%3A%FA%D4%A2z%94%60%17l%C9%01B%00%E5P%7D%BE%F5%0CZm%2C%1A%96I%BDeM0%CD%85%90I%DAaP%AC%8AJ%ED%60%25%E8%60%BA%C3%D1wfZ%FA%E05%CC%E9%16%AE%CB .e.test.cn TRUE / FALSE 1428635701 s v%CE%01%E1%80%2B%B5%A5%1B%1D-%00O%D7%FF%83 e.test.cn FALSE / FALSE test_cookie_enable null ``` ``` curl -b cookies.txt -I http://qhq.cg.e.test.cn -vv ``` 运行后显示附带的cookie跟cookie源文件不符,Q和T都没正确附带,是什么原因呢? ``` * About to connect() to qhq.bool_cg.e.test.cn port 80 * Trying 127.0.0.1... connected * Connected to qhq.bool_cg.e.test.cn (127.0.0.1) port 80 > HEAD / HTTP/1.1 > User-Agent: curl/7.15.5 (x86_64-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5 > Host: qhq.bool_cg.e.test.cn > Accept: */* > Cookie: __huid=10D56zvW3UZiHzJEGt7IL%2Fcy4MA%2F2o5N6VOP8zA3bLJ%2Bs%3D; __guid=59546617.1361129544114280400.1427441536251.224; s%3Df4de676ab20437e44e247a6816950111%26t%3D1432539749%26lm%3D%26lf%3D2%26sk%3D2f468caba91c9d812dc2b40765190c2e%26mt%3D1432539749%26rc%3D%26v%3D2.0%26a%3D0=; u%3D%25O5%25PR%25O4%25S0%25O5%25PR%25O4%25S0%25O7%25N2%25O7%25N2%25PO%25PQ%26n%3DCUC%25O1%25R0%25O3%25PP%26le%3D%26m%3DZGHlWGWOWGWOWGWOWGWOWGWOZmNl%26qid%3D1334231151%26im%3D1_t00df551a583a87f4e9%26src%3Dpcw_adsystem_dianjing%26t%3D1= > < HTTP/1.1 302 Moved Temporarily HTTP/1.1 302 Moved Temporarily < Server: nginx/1.6.2 Server: nginx/1.6.2 < Date: Mon, 25 May 2015 09:03:26 GMT Date: Mon, 25 May 2015 09:03:26 GMT < Content-Type: text/html; charset=utf-8 Content-Type: text/html; charset=utf-8 < Connection: keep-alive Connection: keep-alive < X-Powered-By: PHP/5.5.23 X-Powered-By: PHP/5.5.23 < logid: app_714325446064994598 logid: app_714325446064994598 < Location: http://zbx.mcc.e.test.cn Location: http://zbx.mcc.e.test.cn * Connection #0 to host qhq.bool_cg.e.test.cn left intact * Closing connection #0 ```
jetty 配置https 报错
用chrome访问,clientHello处理的时候报错 keystore的生成命令(使用jdk6) keytool -genkey -alias taskey -keyalg RSA -keystore taskey.keystore keytool -export -file taskey.crt -alias taskey -keystore taskey.keystore keytool -import -keystore "D:\Java\jdk1.6\jre\lib\security\cacerts" -file taskey.crt -alias taskey ,打印出以下log *** ClientHello, Unknown-3.3 RandomCookie: GMT: 1401371735 bytes = { 213, 69, 166, 182, 156, 173, 189, 74, 109, 250, 117, 113, 54, 235, 40, 201, 53, 76, 91, 46, 131, 89, 122, 46, 179, 17, 42, 86 } Session ID: {88, 74, 29, 220, 40, 211, 71, 158, 200, 113, 190, 53, 74, 169, 141, 50, 98, 136, 158, 253, 69, 115, 72, 130, 248, 1, 219, 162, 99, 181, 164, 166} Cipher Suites: [Unknown 0xc0:0x2b, Unknown 0xc0:0x2f, Unknown 0xc0:0x2c, Unknown 0xc0:0x30, Unknown 0xcc:0xa9, Unknown 0xcc:0xa8, Unknown 0xcc:0x14, Unknown 0xcc:0x13, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, Unknown 0x0:0x9c, Unknown 0x0:0x9d, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA] Compression Methods: { 0 } Extension renegotiation_info, renegotiated_connection: <empty> Unsupported extension server_name, [host_name: localhost] Unsupported extension type_23, data: Unsupported extension type_35, data: Unsupported extension signature_algorithms, data: 00:10:06:01:06:03:05:01:05:03:04:01:04:03:02:01:02:03 Unsupported extension status_request, data: 01:00:00:00:00 Unsupported extension type_18, data: Unsupported extension type_16, data: 00:0c:02:68:32:08:68:74:74:70:2f:31:2e:31 Unsupported extension type_30032, data: Extension ec_point_formats, formats: [uncompressed] Extension elliptic_curves, curve names: {unknown curve 29, secp256r1, secp384r1} *** [read] MD5 and SHA1 hashes: len = 217 0000: 01 00 00 D5 03 03 54 87 3C 57 D5 45 A6 B6 9C AD ......T.<W.E.... 0010: BD 4A 6D FA 75 71 36 EB 28 C9 35 4C 5B 2E 83 59 .Jm.uq6.(.5L[..Y 0020: 7A 2E B3 11 2A 56 20 58 4A 1D DC 28 D3 47 9E C8 z...*V XJ..(.G.. 0030: 71 BE 35 4A A9 8D 32 62 88 9E FD 45 73 48 82 F8 q.5J..2b...EsH.. 0040: 01 DB A2 63 B5 A4 A6 00 22 C0 2B C0 2F C0 2C C0 ...c....".+./.,. 0050: 30 CC A9 CC A8 CC 14 CC 13 C0 09 C0 13 C0 0A C0 0............... 0060: 14 00 9C 00 9D 00 2F 00 35 00 0A 01 00 00 6A FF ....../.5.....j. 0070: 01 00 01 00 00 00 00 0E 00 0C 00 00 09 6C 6F 63 .............loc 0080: 61 6C 68 6F 73 74 00 17 00 00 00 23 00 00 00 0D alhost.....#.... 0090: 00 12 00 10 06 01 06 03 05 01 05 03 04 01 04 03 ................ 00A0: 02 01 02 03 00 05 00 05 01 00 00 00 00 00 12 00 ................ 00B0: 00 00 10 00 0E 00 0C 02 68 32 08 68 74 74 70 2F ........h2.http/ 00C0: 31 2E 31 75 50 00 00 00 0B 00 02 01 00 00 0A 00 1.1uP........... 00D0: 08 00 06 00 1D 00 17 00 18 ......... %% Created: [Session-9, TLS_RSA_WITH_AES_128_CBC_SHA] *** ServerHello, TLSv1 RandomCookie: GMT: 1481252065 bytes = { 125, 227, 110, 118, 163, 139, 101, 61, 79, 132, 221, 238, 21, 117, 17, 109, 34, 133, 237, 104, 157, 43, 233, 78, 190, 108, 160, 45 } Session ID: {88, 74, 29, 225, 111, 215, 152, 84, 190, 188, 118, 23, 176, 161, 217, 137, 210, 194, 183, 237, 82, 109, 151, 111, 59, 169, 114, 120, 56, 98, 208, 25} Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA Compression Method: 0 Extension renegotiation_info, renegotiated_connection: <empty> *** Cipher suite: TLS_RSA_WITH_AES_128_CBC_SHA *** Certificate chain chain [0] = [ [ Version: V3 Subject: CN=lulinguo, OU=123, O=huayu, L=beijing, ST=beijing, C=023 Signature Algorithm: SHA1withRSA, OID = 1.2.840.113549.1.1.5 Key: Sun RSA public key, 1024 bits modulus: 138151101051979040263979875536670485248070419148168503770880961011827888510578302910998370535625562100473018954697279135315959928129403982348394389706091287449435791775909693559340178516389013486269529466924646929549276345142888927993379573837422271096886715975133420750296651309303391152713540305897582860309 public exponent: 65537 Validity: [From: Fri Dec 09 10:28:44 CST 2016, To: Thu Mar 09 10:28:44 CST 2017] Issuer: CN=lulinguo, OU=123, O=huayu, L=beijing, ST=beijing, C=023 SerialNumber: [ 584a16dc] ] Algorithm: [SHA1withRSA] Signature: 0000: BC 0C B9 30 71 54 2B CD 4F 40 D4 44 FD 7B E6 50 ...0qT+.O@.D...P 0010: E5 62 EB F7 19 9C 3B 38 A7 22 AF 8D 0D 24 79 C0 .b....;8."...$y. 0020: FD F8 57 77 02 6D 75 F4 FD 47 6D 54 38 80 75 9E ..Ww.mu..GmT8.u. 0030: 64 94 D5 13 7B B8 3B DE 85 EF 38 D4 87 7E DC 3A d.....;...8....: 0040: 61 89 EB 1E 36 32 DB 55 88 94 F2 35 4F D2 AF 53 a...62.U...5O..S 0050: B8 99 A3 E1 A9 73 78 C5 F4 B3 DC FF B3 8E 39 2E .....sx.......9. 0060: D3 FC EB 87 E9 D5 46 E6 CA B8 42 9D B7 B3 11 91 ......F...B..... 0070: 05 4E 2A 8A 4B 83 EC 00 6C A7 F5 2B AF 0E 42 A4 .N*.K...l..+..B. ] *** *** ServerHelloDone jetty配置如下:![图片说明](https://img-ask.csdn.net/upload/201612/09/1481253633_812256.jpg)
相见恨晚的超实用网站
搞学习 知乎:www.zhihu.com 简答题:http://www.jiandati.com/ 网易公开课:https://open.163.com/ted/ 网易云课堂:https://study.163.com/ 中国大学MOOC:www.icourse163.org 网易云课堂:study.163.com 哔哩哔哩弹幕网:www.bilibili.com 我要自学网:www.51zxw
花了20分钟,给女朋友们写了一个web版群聊程序
参考博客 [1]https://www.byteslounge.com/tutorials/java-ee-html5-websocket-example
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
字节跳动视频编解码面经
引言 本文主要是记录一下面试字节跳动的经历。 三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
Python 基础(一):入门必备知识
目录1 标识符2 关键字3 引号4 编码5 输入输出6 缩进7 多行8 注释9 数据类型10 运算符10.1 常用运算符10.2 运算符优先级 1 标识符 标识符是编程时使用的名字,用于给变量、函数、语句块等命名,Python 中标识符由字母、数字、下划线组成,不能以数字开头,区分大小写。 以下划线开头的标识符有特殊含义,单下划线开头的标识符,如:_xxx ,表示不能直接访问的类属性,需通过类提供
这30个CSS选择器,你必须熟记(上)
关注前端达人,与你共同进步CSS的魅力就是让我们前端工程师像设计师一样进行网页的设计,我们能轻而易举的改变颜色、布局、制作出漂亮的影音效果等等,我们只需要改几行代码,不需...
国产开源API网关项目进入Apache孵化器:APISIX
点击蓝色“程序猿DD”关注我回复“资源”获取独家整理的学习资料!近日,又有一个开源项目加入了这个Java开源界大名鼎鼎的Apache基金会,开始进行孵化器。项目名称:AP...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
编写Spring MVC控制器的14个技巧
本期目录 1.使用@Controller构造型 2.实现控制器接口 3.扩展AbstractController类 4.为处理程序方法指定URL映射 5.为处理程序方法指定HTTP请求方法 6.将请求参数映射到处理程序方法 7.返回模型和视图 8.将对象放入模型 9.处理程序方法中的重定向 10.处理表格提交和表格验证 11.处理文件上传 12.在控制器中自动装配业务类 ...
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
求小姐姐抠图竟遭白眼?痛定思痛,我决定用 Python 自力更生!
点击蓝色“Python空间”关注我丫加个“星标”,每天一起快乐的学习大家好,我是 Rocky0429,一个刚恰完午饭,正在用刷网页浪费生命的蒟蒻...一堆堆无聊八卦信息的网页内容慢慢使我的双眼模糊,一个哈欠打出了三斤老泪,就在此时我看到了一张图片:是谁!是谁把我女朋友的照片放出来的!awsl!太好看了叭...等等,那个背景上的一堆鬼画符是什么鬼?!真是看不下去!叔叔婶婶能忍,隔壁老王的三姨妈的四表...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
相关热词 c# 输入ip c# 乱码 报表 c#选择结构应用基本算法 c# 收到udp包后回包 c#oracle 头文件 c# 序列化对象 自定义 c# tcp 心跳 c# ice连接服务端 c# md5 解密 c# 文字导航控件
立即提问