Repository: LGE-ARC-AdvancedAI/auptimizer Branch: master Commit: 50f6e3b4e0cb Files: 892 Total size: 14.8 MB Directory structure: gitextract_g8wyt_2k/ ├── .coveragerc ├── .dockerignore ├── .gitignore ├── .travis.yml ├── CODE_OF_CONDUCT.md ├── Examples/ │ ├── .gitignore │ ├── 2dfunc_diff_mult_res/ │ │ ├── README.md │ │ ├── cpu.ini │ │ ├── exp_cpu.json │ │ └── rosenbrock_hpo.py │ ├── 2dfunc_diff_opt/ │ │ ├── .gitignore │ │ ├── History.ipynb │ │ ├── README.md │ │ ├── experiment_auto.json │ │ ├── experiment_bohb.json │ │ ├── experiment_hyperband.json │ │ ├── experiment_hyperopt.json │ │ ├── experiment_random.json │ │ ├── experiment_sequence.json │ │ ├── experiment_spearmint.json │ │ ├── rosenbrock_hpo.py │ │ └── rosenbrock_origin.py │ ├── 2dfunc_diff_res/ │ │ ├── README.md │ │ ├── aws.txt │ │ ├── cpu.ini │ │ ├── env_local_template.ini │ │ ├── env_user_template.ini │ │ ├── exp_aws.json │ │ ├── exp_cpu.json │ │ ├── exp_gpu.json │ │ ├── exp_node.json │ │ ├── exp_node_async.json │ │ ├── exp_passive.json │ │ ├── gpu.txt │ │ ├── node.txt │ │ ├── plainGPU.txt │ │ ├── rosenbrock_hpo.py │ │ └── singleGPU.txt │ ├── cai_eas/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eas/ │ │ │ ├── client.py │ │ │ ├── data_providers/ │ │ │ │ ├── __init__.py │ │ │ │ ├── base_provider.py │ │ │ │ ├── cifar.py │ │ │ │ ├── downloader.py │ │ │ │ ├── svhn.py │ │ │ │ └── utils.py │ │ │ ├── expdir_monitor/ │ │ │ │ ├── __init__.py │ │ │ │ └── expdir_monitor.py │ │ │ ├── experiment.json │ │ │ └── models/ │ │ │ ├── __init__.py │ │ │ ├── basic_model.py │ │ │ ├── convnet.py │ │ │ ├── dense_net.py │ │ │ ├── layer_cascade.py │ │ │ ├── layer_multi_branch.py │ │ │ ├── layers.py │ │ │ └── utils.py │ │ └── start_nets/ │ │ └── start_net_convnet_small_C10+/ │ │ ├── init │ │ └── net.config │ ├── compression/ │ │ ├── mnist_pytorch/ │ │ │ ├── README.md │ │ │ ├── exp_activation_apoz_rank.json │ │ │ ├── exp_activation_apoz_rank_dependency_aware.json │ │ │ ├── exp_activation_mean_rank.json │ │ │ ├── exp_activation_mean_rank_dependency_aware.json │ │ │ ├── exp_admm.json │ │ │ ├── exp_agp.json │ │ │ ├── exp_amc.json │ │ │ ├── exp_auto_activation_apoz_rank.json │ │ │ ├── exp_auto_activation_mean_rank.json │ │ │ ├── exp_auto_admm.json │ │ │ ├── exp_auto_agp.json │ │ │ ├── exp_auto_fpgm_aup_args.json │ │ │ ├── exp_auto_fpgm_bohb.json │ │ │ ├── exp_auto_fpgm_hyperband.json │ │ │ ├── exp_auto_fpgm_hyperopt.json │ │ │ ├── exp_auto_fpgm_no_expand.json │ │ │ ├── exp_auto_fpgm_random.json │ │ │ ├── exp_auto_fpgm_random_no_expand.json │ │ │ ├── exp_auto_fpgm_sequence.json │ │ │ ├── exp_auto_fpgm_spearmint.json │ │ │ ├── exp_auto_l1filter.json │ │ │ ├── exp_auto_l2filter.json │ │ │ ├── exp_auto_level.json │ │ │ ├── exp_auto_lottery_ticket.json │ │ │ ├── exp_auto_taylor_fo.json │ │ │ ├── exp_autocompress.json │ │ │ ├── exp_fpgm.json │ │ │ ├── exp_fpgm_aup_args.json │ │ │ ├── exp_fpgm_dependency_aware.json │ │ │ ├── exp_l1filter.json │ │ │ ├── exp_l1filter_dependency_aware.json │ │ │ ├── exp_l2filter.json │ │ │ ├── exp_l2filter_dependency_aware.json │ │ │ ├── exp_level.json │ │ │ ├── exp_lottery_ticket.json │ │ │ ├── exp_net_adapt.json │ │ │ ├── exp_quantization_bnn.json │ │ │ ├── exp_quantization_dorefa.json │ │ │ ├── exp_quantization_naive.json │ │ │ ├── exp_quantization_qat.json │ │ │ ├── exp_sensitivity.json │ │ │ ├── exp_simulated_annealing.json │ │ │ ├── exp_taylor_fo.json │ │ │ ├── exp_taylor_fo_dependency_aware.json │ │ │ ├── mnist.py │ │ │ ├── mnist_admm.py │ │ │ ├── mnist_agp.py │ │ │ ├── mnist_amc.py │ │ │ ├── mnist_aup_args.py │ │ │ ├── mnist_autocompress.py │ │ │ ├── mnist_dependency_aware.py │ │ │ ├── mnist_lottery_ticket.py │ │ │ ├── mnist_net_adapt.py │ │ │ ├── mnist_no_speedup.py │ │ │ ├── mnist_pretrained.pth │ │ │ ├── mnist_pretrained.py │ │ │ ├── mnist_sensitivity.py │ │ │ └── mnist_simulated_annealing.py │ │ ├── mnist_tensorflow/ │ │ │ ├── README.md │ │ │ ├── exp_auto_level.json │ │ │ ├── exp_level.json │ │ │ ├── mnist.py │ │ │ └── mnist_pretrained.py │ │ └── utility_functions/ │ │ ├── README.md │ │ └── mnist.py │ ├── converter_examples/ │ │ ├── Convert_Benchmark/ │ │ │ ├── .gitignore │ │ │ ├── Benchmark.ipynb │ │ │ ├── README.md │ │ │ ├── repdata.py │ │ │ └── script_mobilenet.py │ │ ├── Convert_Profiler/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── convert_onnx.json │ │ │ ├── convert_tflite.json │ │ │ ├── download_test_models.py │ │ │ ├── env_onnx.template │ │ │ ├── env_tflite.template │ │ │ ├── model_names_tflite.txt │ │ │ ├── test_perf_onnx.py │ │ │ ├── test_perf_tflite.py │ │ │ └── tflite_output.txt │ │ ├── README.md │ │ ├── Tested_Models/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── conversion_jsons/ │ │ │ │ ├── convert_checkpoint_to_onnx.json │ │ │ │ ├── convert_checkpoint_to_tflite.json │ │ │ │ ├── convert_keras_to_onnx.json │ │ │ │ ├── convert_keras_to_tflite.json │ │ │ │ ├── convert_protobuf_to_onnx.json │ │ │ │ ├── convert_protobuf_to_tflite.json │ │ │ │ ├── convert_pytorch_to_onnx.json │ │ │ │ ├── convert_pytorch_to_tflite.json │ │ │ │ ├── convert_savedmodel_to_onnx.json │ │ │ │ └── convert_savedmodel_to_tflite.json │ │ │ ├── convert_pb_to_tflite.json │ │ │ ├── create_test_models.py │ │ │ ├── download_models.py │ │ │ └── download_urls.json │ │ └── dlconvert_requirements.txt │ ├── decorator_example/ │ │ ├── origin.py │ │ └── use_decorator.py │ ├── demo/ │ │ ├── .gitignore │ │ ├── demo.yml │ │ ├── experiment_wrapper.json │ │ ├── hpo_wrapper.py │ │ └── origin.py │ ├── early_stopping/ │ │ ├── README.md │ │ ├── mnist_keras/ │ │ │ ├── cpu.ini │ │ │ ├── exp_BOHB_bandit.json │ │ │ ├── exp_BOHB_curve_fitting.json │ │ │ ├── exp_BOHB_median.json │ │ │ ├── exp_BOHB_trunc.json │ │ │ ├── exp_random_bandit.json │ │ │ ├── exp_random_curve_fitting.json │ │ │ ├── exp_random_median.json │ │ │ ├── exp_random_trunc.json │ │ │ ├── exp_spearmint_bandit.json │ │ │ ├── exp_spearmint_curve_fitting.json │ │ │ ├── exp_spearmint_median.json │ │ │ ├── exp_spearmint_trunc.json │ │ │ └── mnist.py │ │ └── quad_equation_min/ │ │ ├── cpu.ini │ │ ├── quad_min.py │ │ ├── quad_min_BOHB_bandit.json │ │ ├── quad_min_BOHB_median.json │ │ ├── quad_min_BOHB_trunc.json │ │ ├── quad_min_random_bandit.json │ │ ├── quad_min_random_median.json │ │ ├── quad_min_random_trunc.json │ │ ├── quad_min_spearmint_bandit.json │ │ ├── quad_min_spearmint_median.json │ │ └── quad_min_spearmint_trunc.json │ ├── hpo_mnist/ │ │ ├── .gitignore │ │ ├── MNIST Hyperparameter Optimization Demo.ipynb │ │ ├── README.md │ │ ├── demo.json │ │ ├── exp_aws_async.json │ │ ├── exp_aws_demo.json │ │ ├── exp_aws_retry_job.json │ │ ├── exp_bohb.json │ │ ├── exp_hyperband.json │ │ ├── exp_hyperopt.json │ │ ├── exp_random.json │ │ ├── exp_random_async.json │ │ ├── exp_sequence.json │ │ ├── exp_spearmint.json │ │ ├── job_retries_random.json │ │ ├── mnist_hpo_demo.py │ │ └── mnist_hpo_fail.py │ ├── intermediate_results/ │ │ ├── README.md │ │ └── quad_equation_min/ │ │ ├── quad_min.py │ │ ├── quad_min_BOHB.json │ │ ├── quad_min_random.json │ │ └── quad_min_spearmint.json │ ├── job_failure_control/ │ │ ├── README.md │ │ ├── experiment_extra_argument.json │ │ ├── experiment_job_ignore_fail.json │ │ ├── experiment_job_retries.json │ │ ├── experiment_job_retries_ignore_fail.json │ │ ├── experiment_no_nsample.json │ │ ├── experiment_no_param_config.json │ │ ├── experiment_no_proposer.json │ │ ├── experiment_no_resource.json │ │ ├── experiment_no_script.json │ │ ├── experiment_test.json │ │ ├── rosenbrock_hpo.py │ │ └── test.py │ ├── mnist_keras_save_model/ │ │ ├── README.md │ │ ├── cpu.ini │ │ ├── exp_random_cpu.json │ │ ├── exp_random_node.json │ │ ├── mnist.py │ │ ├── mnist_wo_decorator.py │ │ └── node.txt │ ├── profiler_examples/ │ │ ├── README.md │ │ ├── bench/ │ │ │ ├── download.sh │ │ │ └── test_perf.py │ │ ├── env_benchmark.template │ │ ├── env_mnist.template │ │ ├── experiments/ │ │ │ └── Readme.md │ │ ├── internal/ │ │ │ └── ImageNet Experiments.ipynb │ │ ├── issues.md │ │ ├── mnist/ │ │ │ └── mnist.py │ │ └── model_names.txt │ ├── quad_equation_min/ │ │ ├── QUAD_MIN_Demo.ipynb │ │ ├── cpu.ini │ │ ├── quad_min.py │ │ ├── quad_min_BOHB.json │ │ ├── quad_min_random.json │ │ └── quad_min_spearmint.json │ ├── tf_flags/ │ │ ├── README.md │ │ ├── experiment.json │ │ ├── rosenbrock_hpo.py │ │ └── rosenbrock_tf.py │ └── tf_iris_diff_opt/ │ ├── History.ipynb │ ├── README.md │ ├── experiment_demo.json │ ├── experiment_hpo.json │ ├── experiment_hyperband.json │ ├── experiment_random.json │ ├── experiment_sequence.json │ ├── experiment_spearmint.json │ ├── iris_data.py │ ├── premade_estimator.py │ ├── premade_estimator_hpo.py │ ├── premade_estimator_hyper.py │ └── premade_estimator_wrapper.py ├── LICENSE ├── MANIFEST.in ├── R-src/ │ ├── README.md │ ├── Rpackage/ │ │ ├── DESCRIPTION │ │ ├── NAMESPACE │ │ ├── R/ │ │ │ └── auptimizer.R │ │ ├── man/ │ │ │ ├── get_config.Rd │ │ │ └── print_result.Rd │ │ ├── tests/ │ │ │ ├── testthat/ │ │ │ │ ├── test_IO.R │ │ │ │ └── test_io.json │ │ │ └── testthat.R │ │ └── vignettes/ │ │ ├── .gitignore │ │ └── auptimizer.Rmd │ └── examples/ │ ├── exp_ridge.R │ ├── exp_rosenbrock.R │ ├── ridge.json │ ├── ridgeRegression.R │ ├── rosenbrock.R │ └── rosenbrock.json ├── README.md ├── docs/ │ ├── Database/ │ │ ├── schema.dot │ │ ├── schema.sql │ │ └── sql_graphviz.py │ ├── Dockerfile │ ├── LICENSE │ ├── Makefile │ ├── README.rst │ ├── _static/ │ │ └── .gitkeep │ ├── algorithm.rst │ ├── archive/ │ │ ├── Auptimizer-1.0-py2-none-any.whl │ │ ├── Auptimizer-1.0-py3-none-any.whl │ │ ├── Auptimizer-1.1-py2-none-any.whl │ │ ├── Auptimizer-1.1-py3-none-any.whl │ │ ├── Auptimizer-1.2-py2-none-any.whl │ │ ├── Auptimizer-1.2-py3-none-any.whl │ │ ├── Auptimizer-1.3-py2-none-any.whl │ │ ├── Auptimizer-1.3-py3-none-any.whl │ │ ├── Auptimizer-1.4-py2.py3-none-any.whl │ │ ├── Auptimizer-2.0-py2.py3-none-any.whl │ │ └── aup.py │ ├── aup.EE.Experiment.rst │ ├── aup.EE.Job.rst │ ├── aup.EE.Resource.rst │ ├── aup.EE.rst │ ├── aup.ET.Connector.rst │ ├── aup.ET.rst │ ├── aup.Proposer.BOHBProposer.rst │ ├── aup.Proposer.EASProposer.rst │ ├── aup.Proposer.HyperbandProposer.rst │ ├── aup.Proposer.HyperoptProposer.rst │ ├── aup.Proposer.RandomProposer.rst │ ├── aup.Proposer.SequenceProposer.rst │ ├── aup.Proposer.SpearmintProposer.rst │ ├── aup.Proposer.rst │ ├── aup.__main__.rst │ ├── aup.compression.rst │ ├── aup.convert.rst │ ├── aup.dlconvert.rst │ ├── aup.dlconvert_API.rst │ ├── aup.init.rst │ ├── aup.profiler.rst │ ├── aup.rst │ ├── aup.setup.rst │ ├── aup.setupdb.rst │ ├── aup.setupdb.sqlite.rst │ ├── aup.setupdb_API.rst │ ├── aup.utils.rst │ ├── aup.visualize.rst │ ├── compression.rst │ ├── compression_main.rst │ ├── compression_utilities.rst │ ├── compressors.rst │ ├── conf.py │ ├── dashboard.rst │ ├── demo.rst │ ├── developer.rst │ ├── developer_guide.rst │ ├── dlconvert.rst │ ├── dlconvert_example.rst │ ├── dlconvert_readme.rst │ ├── early_stop.rst │ ├── edge.rst │ ├── environment.rst │ ├── errors.rst │ ├── experiment.rst │ ├── hpo.rst │ ├── index.rst │ ├── install.rst │ ├── prepare.sh │ ├── prof_example.rst │ ├── prof_readme.rst │ ├── profiler.rst │ ├── r_user.rst │ ├── requirements.txt │ ├── setup.rst │ └── version.rst ├── oss-package.info ├── publish.sh ├── requirements.txt ├── setup.py ├── src/ │ └── aup/ │ ├── EE/ │ │ ├── Experiment.py │ │ ├── Job.py │ │ ├── Resource/ │ │ │ ├── AWSResourceManager.py │ │ │ ├── AbstractResourceManager.py │ │ │ ├── CPUResourceManager.py │ │ │ ├── GPUResourceManager.py │ │ │ ├── PassiveResourceManager.py │ │ │ ├── SSHResourceManager.py │ │ │ ├── __init__.py │ │ │ └── utils/ │ │ │ ├── ResourceThreadPoolExecutor.py │ │ │ ├── __init__.py │ │ │ └── curve_fitting.py │ │ └── __init__.py │ ├── ET/ │ │ ├── Connector/ │ │ │ ├── AbstractConnector.py │ │ │ ├── SQLiteConnector.py │ │ │ └── __init__.py │ │ └── __init__.py │ ├── Proposer/ │ │ ├── AbstractProposer.py │ │ ├── BOHBProposer.py │ │ ├── EASProposer.py │ │ ├── HyperbandProposer.py │ │ ├── HyperoptProposer.py │ │ ├── Hyperopt_LICENSE │ │ ├── RandomProposer.py │ │ ├── SequenceProposer.py │ │ ├── SpearmintProposer.py │ │ ├── Spearmint_LICENSE │ │ ├── __init__.py │ │ ├── eas/ │ │ │ ├── LICENSE │ │ │ ├── __init__.py │ │ │ ├── arch_search/ │ │ │ │ ├── __init__.py │ │ │ │ ├── arch_search_convnet_net2net.py │ │ │ │ └── arch_search_densenet_net2net.py │ │ │ ├── arch_search.py │ │ │ ├── client.py │ │ │ ├── data_providers/ │ │ │ │ ├── __init__.py │ │ │ │ ├── base_provider.py │ │ │ │ ├── cifar.py │ │ │ │ ├── downloader.py │ │ │ │ ├── svhn.py │ │ │ │ └── utils.py │ │ │ ├── expdir_monitor/ │ │ │ │ ├── __init__.py │ │ │ │ ├── arch_manager.py │ │ │ │ ├── distributed.py │ │ │ │ └── expdir_monitor.py │ │ │ ├── main.py │ │ │ ├── meta_controller/ │ │ │ │ ├── __init__.py │ │ │ │ ├── base_controller.py │ │ │ │ └── rl_controller.py │ │ │ ├── models/ │ │ │ │ ├── __init__.py │ │ │ │ ├── basic_model.py │ │ │ │ ├── convnet.py │ │ │ │ ├── dense_net.py │ │ │ │ ├── layer_cascade.py │ │ │ │ ├── layer_multi_branch.py │ │ │ │ ├── layers.py │ │ │ │ └── utils.py │ │ │ ├── run_dense_net.py │ │ │ └── run_simple_convnet.py │ │ ├── hpbandster/ │ │ │ ├── __init__.py │ │ │ ├── core/ │ │ │ │ ├── __init__.py │ │ │ │ ├── base_config_generator.py │ │ │ │ ├── base_iteration.py │ │ │ │ ├── dispatcher.py │ │ │ │ ├── master.py │ │ │ │ ├── nameserver.py │ │ │ │ ├── result.py │ │ │ │ └── worker.py │ │ │ ├── examples/ │ │ │ │ ├── README.txt │ │ │ │ ├── __init__.py │ │ │ │ ├── commons.py │ │ │ │ ├── example_1_local_sequential.py │ │ │ │ ├── example_2_local_parallel_threads.py │ │ │ │ ├── example_3_local_parallel_processes.py │ │ │ │ ├── example_4_cluster.py │ │ │ │ ├── example_5_keras_worker.py │ │ │ │ ├── example_5_mnist.py │ │ │ │ ├── example_5_pytorch_worker.py │ │ │ │ ├── example_5_run/ │ │ │ │ │ ├── configs.json │ │ │ │ │ └── results.json │ │ │ │ ├── example_8_mnist_continued.py │ │ │ │ ├── plot_example_6_analysis.py │ │ │ │ └── plot_example_7_interactive_plot.py │ │ │ ├── optimizers/ │ │ │ │ ├── __init__.py │ │ │ │ ├── bohb.py │ │ │ │ ├── config_generators/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── bohb.py │ │ │ │ │ ├── h2bo.py │ │ │ │ │ ├── kde.py │ │ │ │ │ ├── lcnet.py │ │ │ │ │ └── random_sampling.py │ │ │ │ ├── h2bo.py │ │ │ │ ├── hyperband.py │ │ │ │ ├── iterations/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── successivehalving.py │ │ │ │ │ └── successiveresampling.py │ │ │ │ ├── kde/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── kernels.py │ │ │ │ │ └── mvkde.py │ │ │ │ ├── lcnet.py │ │ │ │ ├── learning_curve_models/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── arif.py │ │ │ │ │ ├── base.py │ │ │ │ │ └── lcnet.py │ │ │ │ └── randomsearch.py │ │ │ ├── utils.py │ │ │ ├── visualization.py │ │ │ └── workers/ │ │ │ ├── __init__.py │ │ │ └── hpolibbenchmark.py │ │ ├── hpbandster_LICENSE │ │ ├── hyperband_LICENSE │ │ ├── hyperopt/ │ │ │ ├── LICENSE.txt │ │ │ ├── __init__.py │ │ │ ├── algobase.py │ │ │ ├── anneal.py │ │ │ ├── base.py │ │ │ ├── criteria.py │ │ │ ├── exceptions.py │ │ │ ├── fmin.py │ │ │ ├── graphviz.py │ │ │ ├── hp.py │ │ │ ├── ipy.py │ │ │ ├── main.py │ │ │ ├── mix.py │ │ │ ├── mongoexp.py │ │ │ ├── plotting.py │ │ │ ├── pyll/ │ │ │ │ ├── __init__.py │ │ │ │ ├── base.py │ │ │ │ └── stochastic.py │ │ │ ├── pyll_utils.py │ │ │ ├── rand.py │ │ │ ├── rdists.py │ │ │ ├── tpe.py │ │ │ ├── utils.py │ │ │ └── vectorize.py │ │ └── spearmint/ │ │ ├── ExperimentGrid.py │ │ ├── Locker.py │ │ ├── __init__.py │ │ ├── chooser/ │ │ │ ├── CMAChooser.py │ │ │ ├── GPConstrainedEIChooser.py │ │ │ ├── GPEIChooser.py │ │ │ ├── GPEIOptChooser.py │ │ │ ├── GPEIperSecChooser.py │ │ │ ├── RandomChooser.py │ │ │ ├── RandomForestEIChooser.py │ │ │ ├── SequentialChooser.py │ │ │ ├── __init__.py │ │ │ └── cma.py │ │ ├── gp.py │ │ ├── helpers.py │ │ ├── runner.py │ │ ├── sobol_lib.py │ │ ├── spearmint_pb2.py │ │ └── util.py │ ├── RestAPI/ │ │ ├── __init__.py │ │ ├── server.py │ │ └── templates/ │ │ └── home.html │ ├── __init__.py │ ├── __main__.py │ ├── aup.py │ ├── compression/ │ │ ├── Compressor.py │ │ ├── NNI-LICENSE │ │ ├── __init__.py │ │ ├── __main__.py │ │ ├── tensorflow/ │ │ │ ├── __init__.py │ │ │ ├── compressor.py │ │ │ ├── default_layers.py │ │ │ └── pruning/ │ │ │ ├── __init__.py │ │ │ └── one_shot.py │ │ ├── torch/ │ │ │ ├── __init__.py │ │ │ ├── _graph_utils.py │ │ │ ├── compressor.py │ │ │ ├── default_layers.py │ │ │ ├── parameter_expressions.py │ │ │ ├── pruning/ │ │ │ │ ├── __init__.py │ │ │ │ ├── admm_pruner.py │ │ │ │ ├── agp.py │ │ │ │ ├── amc/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── amc_pruner.py │ │ │ │ │ ├── channel_pruning_env.py │ │ │ │ │ └── lib/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── agent.py │ │ │ │ │ ├── memory.py │ │ │ │ │ ├── net_measure.py │ │ │ │ │ └── utils.py │ │ │ │ ├── apply_compression.py │ │ │ │ ├── auto_compress_pruner.py │ │ │ │ ├── constants.py │ │ │ │ ├── constants_pruner.py │ │ │ │ ├── finegrained_pruning.py │ │ │ │ ├── lottery_ticket.py │ │ │ │ ├── net_adapt_pruner.py │ │ │ │ ├── one_shot.py │ │ │ │ ├── sensitivity_pruner.py │ │ │ │ ├── simulated_annealing_pruner.py │ │ │ │ ├── structured_pruning.py │ │ │ │ └── weight_masker.py │ │ │ ├── quantization/ │ │ │ │ ├── __init__.py │ │ │ │ └── quantizers.py │ │ │ ├── speedup/ │ │ │ │ ├── __init__.py │ │ │ │ ├── compress_modules.py │ │ │ │ ├── compressor.py │ │ │ │ └── infer_shape.py │ │ │ ├── torch_utils.py │ │ │ └── utils/ │ │ │ ├── __init__.py │ │ │ ├── config_validation.py │ │ │ ├── counter.py │ │ │ ├── mask_conflict.py │ │ │ ├── num_param_counter.py │ │ │ ├── sensitivity_analysis.py │ │ │ ├── shape_dependency.py │ │ │ └── utils.py │ │ └── utils.py │ ├── convert.py │ ├── dashboard/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── dashboard.py │ │ └── frontend/ │ │ ├── .browserslistrc │ │ ├── .editorconfig │ │ ├── .eslintrc.json │ │ ├── .gitignore │ │ ├── .prettierignore │ │ ├── .prettierrc │ │ ├── Angular-LICENSE │ │ ├── README.md │ │ ├── angular.json │ │ ├── e2e/ │ │ │ ├── protractor.conf.js │ │ │ ├── src/ │ │ │ │ ├── app.e2e-spec.ts │ │ │ │ └── app.po.ts │ │ │ └── tsconfig.json │ │ ├── febuild/ │ │ │ └── auptimizer-dashboard/ │ │ │ ├── 3rdpartylicenses.txt │ │ │ ├── 4.3bf463bd37e16d085b6c.js │ │ │ ├── 5.0e291298e9c49cb93c71.js │ │ │ ├── _redirects │ │ │ ├── index.html │ │ │ ├── main.09d22743789a55973001.js │ │ │ ├── polyfills.9cfb3f513e777138fb2c.js │ │ │ ├── runtime.29a333e72cc7398676d0.js │ │ │ └── styles.5a1d2b21684fc92c4f99.css │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── _redirects │ │ │ ├── app/ │ │ │ │ ├── @core/ │ │ │ │ │ ├── app-load.service.ts │ │ │ │ │ └── core.module.ts │ │ │ │ ├── app-routing.module.ts │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.scss │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.module.ts │ │ │ │ ├── app.service.ts │ │ │ │ ├── appStore/ │ │ │ │ │ ├── app-state.model.ts │ │ │ │ │ ├── app.actions.ts │ │ │ │ │ └── app.store.ts │ │ │ │ ├── guards/ │ │ │ │ │ └── db.guard.ts │ │ │ │ ├── main/ │ │ │ │ │ ├── containers/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── main/ │ │ │ │ │ │ ├── main.component.html │ │ │ │ │ │ ├── main.component.scss │ │ │ │ │ │ ├── main.component.spec.ts │ │ │ │ │ │ └── main.component.ts │ │ │ │ │ ├── experiment/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── experiment-dropdown/ │ │ │ │ │ │ │ │ ├── experiment-dropdown.component.html │ │ │ │ │ │ │ │ ├── experiment-dropdown.component.scss │ │ │ │ │ │ │ │ ├── experiment-dropdown.component.spec.ts │ │ │ │ │ │ │ │ └── experiment-dropdown.component.ts │ │ │ │ │ │ │ ├── header/ │ │ │ │ │ │ │ │ ├── header.component.html │ │ │ │ │ │ │ │ ├── header.component.scss │ │ │ │ │ │ │ │ ├── header.component.spec.ts │ │ │ │ │ │ │ │ └── header.component.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── sidenav/ │ │ │ │ │ │ │ │ ├── sidenav.component.html │ │ │ │ │ │ │ │ ├── sidenav.component.scss │ │ │ │ │ │ │ │ ├── sidenav.component.spec.ts │ │ │ │ │ │ │ │ └── sidenav.component.ts │ │ │ │ │ │ │ └── sidenav-element/ │ │ │ │ │ │ │ ├── sidenav-element.component.html │ │ │ │ │ │ │ ├── sidenav-element.component.scss │ │ │ │ │ │ │ ├── sidenav-element.component.spec.ts │ │ │ │ │ │ │ └── sidenav-element.component.ts │ │ │ │ │ │ ├── containers/ │ │ │ │ │ │ │ ├── create-experiment/ │ │ │ │ │ │ │ │ ├── create-experiment.component.html │ │ │ │ │ │ │ │ ├── create-experiment.component.scss │ │ │ │ │ │ │ │ ├── create-experiment.component.spec.ts │ │ │ │ │ │ │ │ ├── create-experiment.component.ts │ │ │ │ │ │ │ │ └── exampleJSON.ts │ │ │ │ │ │ │ ├── experiment/ │ │ │ │ │ │ │ │ ├── experiment.component.html │ │ │ │ │ │ │ │ ├── experiment.component.scss │ │ │ │ │ │ │ │ ├── experiment.component.spec.ts │ │ │ │ │ │ │ │ └── experiment.component.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── initialize/ │ │ │ │ │ │ │ │ ├── initialize.component.html │ │ │ │ │ │ │ │ ├── initialize.component.scss │ │ │ │ │ │ │ │ ├── initialize.component.spec.ts │ │ │ │ │ │ │ │ └── initialize.component.ts │ │ │ │ │ │ │ ├── interm-results/ │ │ │ │ │ │ │ │ ├── interm-results.component.html │ │ │ │ │ │ │ │ ├── interm-results.component.scss │ │ │ │ │ │ │ │ ├── interm-results.component.spec.ts │ │ │ │ │ │ │ │ └── interm-results.component.ts │ │ │ │ │ │ │ ├── job-status/ │ │ │ │ │ │ │ │ ├── job-status.component.html │ │ │ │ │ │ │ │ ├── job-status.component.scss │ │ │ │ │ │ │ │ ├── job-status.component.spec.ts │ │ │ │ │ │ │ │ └── job-status.component.ts │ │ │ │ │ │ │ ├── list/ │ │ │ │ │ │ │ │ ├── list.component.html │ │ │ │ │ │ │ │ ├── list.component.scss │ │ │ │ │ │ │ │ ├── list.component.spec.ts │ │ │ │ │ │ │ │ └── list.component.ts │ │ │ │ │ │ │ ├── main/ │ │ │ │ │ │ │ │ ├── main.component.html │ │ │ │ │ │ │ │ ├── main.component.scss │ │ │ │ │ │ │ │ ├── main.component.spec.ts │ │ │ │ │ │ │ │ └── main.component.ts │ │ │ │ │ │ │ ├── multi-exp-comp/ │ │ │ │ │ │ │ │ ├── multi-exp-comp.component.html │ │ │ │ │ │ │ │ ├── multi-exp-comp.component.scss │ │ │ │ │ │ │ │ ├── multi-exp-comp.component.spec.ts │ │ │ │ │ │ │ │ └── multi-exp-comp.component.ts │ │ │ │ │ │ │ ├── notification/ │ │ │ │ │ │ │ │ ├── notification.component.html │ │ │ │ │ │ │ │ ├── notification.component.scss │ │ │ │ │ │ │ │ ├── notification.component.spec.ts │ │ │ │ │ │ │ │ └── notification.component.ts │ │ │ │ │ │ │ ├── overview/ │ │ │ │ │ │ │ │ ├── overview.component.html │ │ │ │ │ │ │ │ ├── overview.component.scss │ │ │ │ │ │ │ │ ├── overview.component.spec.ts │ │ │ │ │ │ │ │ └── overview.component.ts │ │ │ │ │ │ │ └── pcg/ │ │ │ │ │ │ │ ├── pcg.component.html │ │ │ │ │ │ │ ├── pcg.component.scss │ │ │ │ │ │ │ ├── pcg.component.spec.ts │ │ │ │ │ │ │ └── pcg.component.ts │ │ │ │ │ │ ├── experiment-routing.module.ts │ │ │ │ │ │ ├── experiment.module.ts │ │ │ │ │ │ ├── services/ │ │ │ │ │ │ │ └── experiment.service.ts │ │ │ │ │ │ └── store/ │ │ │ │ │ │ ├── experiment-state.model.ts │ │ │ │ │ │ ├── experiment.actions.ts │ │ │ │ │ │ └── experiment.store.ts │ │ │ │ │ ├── main-routing.module.ts │ │ │ │ │ └── main.module.ts │ │ │ │ ├── material/ │ │ │ │ │ └── material.module.ts │ │ │ │ ├── models/ │ │ │ │ │ ├── data/ │ │ │ │ │ │ ├── custom-icons.data.ts │ │ │ │ │ │ ├── graph-colors.data.ts │ │ │ │ │ │ ├── nav-items.ts │ │ │ │ │ │ └── plotly-hidden-displays.ts │ │ │ │ │ ├── enum/ │ │ │ │ │ │ ├── experiment-status.enum.ts │ │ │ │ │ │ ├── experiment-view-type.enum.ts │ │ │ │ │ │ ├── notification-type.enum.ts │ │ │ │ │ │ └── theme-option.enum.ts │ │ │ │ │ ├── experiment.model.ts │ │ │ │ │ ├── nav-items.model.ts │ │ │ │ │ ├── progress-bar.model.ts │ │ │ │ │ └── resource.model.ts │ │ │ │ ├── page-not-found/ │ │ │ │ │ ├── page-not-found.component.html │ │ │ │ │ ├── page-not-found.component.scss │ │ │ │ │ ├── page-not-found.component.spec.ts │ │ │ │ │ └── page-not-found.component.ts │ │ │ │ └── shared/ │ │ │ │ ├── dialogs/ │ │ │ │ │ ├── confirm/ │ │ │ │ │ │ ├── confirm-dialog.component.html │ │ │ │ │ │ ├── confirm-dialog.component.scss │ │ │ │ │ │ └── confirm-dialog.component.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── pipes/ │ │ │ │ │ ├── experiment-status.pipe.ts │ │ │ │ │ ├── first-letter-uppercase/ │ │ │ │ │ │ ├── first-letter-uppercase.pipe.spec.ts │ │ │ │ │ │ └── first-letter-uppercase.pipe.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── min-to-hour/ │ │ │ │ │ │ ├── min-to-hour.pipe.spec.ts │ │ │ │ │ │ └── min-to-hour.pipe.ts │ │ │ │ │ ├── notification-icon.pipe.ts │ │ │ │ │ ├── progressBarWidth.pipe.ts │ │ │ │ │ ├── roudNumber.pipe.ts │ │ │ │ │ ├── sec-to-min/ │ │ │ │ │ │ ├── sec-to-min.pipe.spec.ts │ │ │ │ │ │ └── sec-to-min.pipe.ts │ │ │ │ │ └── truncate.pipe.ts │ │ │ │ ├── services/ │ │ │ │ │ ├── api.service.ts │ │ │ │ │ ├── color-scheme.service.ts │ │ │ │ │ ├── helper.service.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── snackbar.service.ts │ │ │ │ │ └── utils.service.ts │ │ │ │ ├── shared.module.ts │ │ │ │ └── validators/ │ │ │ │ ├── at-least.validator.ts │ │ │ │ └── index.ts │ │ │ ├── assets/ │ │ │ │ └── .gitkeep │ │ │ ├── environments/ │ │ │ │ ├── environment.prod.ts │ │ │ │ └── environment.ts │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ ├── polyfills.ts │ │ │ ├── scss/ │ │ │ │ ├── _colors.scss │ │ │ │ ├── _helpers.scss │ │ │ │ ├── _material-overrides.scss │ │ │ │ ├── jsoneditor-dark.scss │ │ │ │ ├── jsoneditor.scss │ │ │ │ ├── main.scss │ │ │ │ └── theme.scss │ │ │ ├── styles.scss │ │ │ └── test.ts │ │ ├── tailwind.config.js │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ ├── tsconfig.spec.json │ │ └── webpack.config.js │ ├── dlconvert/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── __init__.py │ │ ├── __main__.py │ │ ├── __version__.py │ │ ├── checkpoint_to_onnx.py │ │ ├── checkpoint_to_pb.py │ │ ├── checkpoint_to_tflite.py │ │ ├── keras_to_onnx.py │ │ ├── keras_to_pb.py │ │ ├── keras_to_tflite.py │ │ ├── pb_to_onnx.py │ │ ├── pb_to_tflite.py │ │ ├── pytorch_to_keras.py │ │ ├── pytorch_to_onnx.py │ │ ├── pytorch_to_tflite.py │ │ ├── savedmodel_to_onnx.py │ │ ├── savedmodel_to_tflite.py │ │ ├── spec_utils/ │ │ │ ├── __init__.py │ │ │ └── pb.py │ │ ├── to_frozen_pb.py │ │ ├── to_onnx.py │ │ ├── to_tflite.py │ │ └── utils.py │ ├── init.py │ ├── profiler/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── __main__.py │ │ ├── calculate.py │ │ ├── compile_stats.py │ │ ├── issues.md │ │ ├── profiler.sh │ │ └── statscript.sh │ ├── setup.py │ ├── setupdb/ │ │ ├── __init__.py │ │ ├── __main__.py │ │ ├── reset.py │ │ └── sqlite.py │ ├── utils.py │ └── visualize.py └── tests/ ├── EE/ │ ├── Resource/ │ │ ├── .gitignore │ │ ├── __init__.py │ │ ├── test_AbstractResourceManager.py │ │ ├── test_CPUResourceManager.py │ │ ├── test_GPUResourceManager.py │ │ ├── test_PassiveResourceManager.py │ │ └── test_SSHResourceManager.py │ ├── __init__.py │ ├── test_Experiment.py │ └── test_Job.py ├── ET/ │ ├── Connector/ │ │ ├── __init__.py │ │ └── test_SQLiteConnector.py │ └── __init__.py ├── Proposer/ │ ├── __init__.py │ ├── test_AbstractProposer.py │ ├── test_BOHBProposer.py │ ├── test_HyperbandProposer.py │ ├── test_HyperoptProposer.py │ ├── test_RandomProposer.py │ ├── test_SequenceProposer.py │ └── test_SpearmintProposer.py ├── __init__.py ├── command/ │ ├── __init__.py │ ├── test_convert.py │ └── test_setup.py ├── compression/ │ ├── __init__.py │ ├── test_aup_compressor.py │ ├── test_compression_utils.py │ ├── test_compressor_tf.py │ ├── test_compressor_torch.py │ └── test_model_speedup.py ├── data/ │ ├── config/ │ │ ├── test_read.json │ │ └── test_wrong.json │ ├── exp4.json │ ├── exp4_no_name.json │ ├── exp4_no_param.json │ ├── exp4_no_script.json │ ├── exp5.json │ ├── exp6.json │ ├── exp7.json │ ├── gpus.txt │ ├── nodes.txt │ ├── plain_env.ini │ ├── target_gpu_env.ini │ ├── target_plain_env.ini │ ├── task1.py │ ├── task2.py │ ├── task3.py │ ├── task4.py │ ├── task5.py │ ├── task6.py │ ├── task7.py │ ├── task8.py │ ├── test_script.py │ ├── wrapper1.json │ └── wrapper2.json ├── dlconvert/ │ ├── .gitignore │ ├── Dockerfile_tf1 │ ├── Dockerfile_tf2 │ ├── README.md │ ├── __init__.py │ ├── data/ │ │ ├── .gitignore │ │ ├── create_test_model.py │ │ ├── evaluate_pred.py │ │ ├── flag_names.json │ │ ├── prepare.sh │ │ ├── prepare_docker.sh │ │ ├── pytorch_model.py │ │ └── repdata.py │ ├── dlconvert_requirements.txt │ ├── pytest.ini │ ├── test_checkpoint_to_onnx.py │ ├── test_checkpoint_to_pb.py │ ├── test_checkpoint_to_tflite.py │ ├── test_keras_to_onnx.py │ ├── test_keras_to_pb.py │ ├── test_keras_to_tflite.py │ ├── test_pb_to_onnx.py │ ├── test_pb_to_tflite.py │ ├── test_pytorch_to_keras.py │ ├── test_pytorch_to_onnx.py │ ├── test_pytorch_to_tflite.py │ ├── test_savedmodel_to_onnx.py │ ├── test_savedmodel_to_tflite.py │ ├── unittest_tf1.sh │ └── unittest_tf2.sh ├── setupdb/ │ ├── __init__.py │ └── test_sqlite.py ├── test_BasicConfig.py ├── test_utils.py └── test_wrapper.py ================================================ FILE CONTENTS ================================================ ================================================ FILE: .coveragerc ================================================ [run] omit = ./src/aup/Proposer/spearmint/* ./src/aup/Proposer/hyperopt/* ./src/aup/Proposer/eas/* ./src/aup/Proposer/hpbandster/* ./src/aup/Proposer/EASProposer.py ./src/aup/setupdb/reset.py ./src/aup/visualize.py ./src/aup/EE/Resource/AWSResourceManager.py ./src/aup/init.py */__main__.py */__init__.py ./src/aup/profiler/* ./src/aup/RestAPI/* ./src/aup/dashboard/* ./src/aup/Proposer/SpearmintProposer.py ./src/aup/Proposer/BOHBProposer.py ./src/aup/compression/torch/pruning/* [report] exclude_lines = pragma: no cover flags def main if __name__ == "__main__" @click raise NotImplementedError ================================================ FILE: .dockerignore ================================================ docs Examples/2d* Examples/dlconvert_examples/Convert* Examples/dlconvert_examples/Tested* Examples/demo Examples/cai_eas Examples/decorator_example Examples/hpo_mnist Examples/job* Examples/profiler* Examples/tf* build dist ================================================ FILE: .gitignore ================================================ Examples/demo/auto.py testenv/ .aup/ .idea/ *~ *.pkl tests/EE/jobs/ tests/data/jobs/ tests/EE/Resource/data .vscode/ analysis.html R-src/*.tar.gz R-src/R-src.Rproj # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] *$py.class # C extensions *.so # Distribution / packaging .Python build/ develop-eggs/ dist/ downloads/ eggs/ .eggs/ lib64/ parts/ sdist/ var/ wheels/ *.egg-info/ .installed.cfg *.egg MANIFEST # PyInstaller # Usually these files are written by a python script from a template # before PyInstaller builds the exe, so as to inject date/other infos into it. *.manifest *.spec # Installer logs pip-log.txt pip-delete-this-directory.txt # Unit test / coverage reports htmlcov/ .tox/ .coverage .coverage.* .cache nosetests.xml coverage.xml *.cover .hypothesis/ .pytest_cache/ # Translations *.mo *.pot # Django stuff: *.log local_settings.py db.sqlite3 # Flask stuff: instance/ .webassets-cache # Scrapy stuff: .scrapy # Sphinx documentation docs/_build/ # PyBuilder target/ # Jupyter Notebook .ipynb_checkpoints # pyenv .python-version # celery beat schedule file celerybeat-schedule # SageMath parsed files *.sage.py # Environments .env .venv env/ venv/ ENV/ env.bak/ venv.bak/ # Spyder project settings .spyderproject .spyproject # Rope project settings .ropeproject # mkdocs documentation /site # mypy .mypy_cache/ # OS files .DS_Store .Rproj.user analysis_test jobs tests/mnist_compressed.pth dashboard_logs ================================================ FILE: .travis.yml ================================================ git: depth: false quiet: true branches: only: - master - release language: python python: - '3.7' env: global: - secure: JbuCMpFomW4Yu+sMaBBvv7Jj1JyiQcCQAW7bhdJDil+YUdWEJmTjkF2pKwTQS5w6FUhZIHJ0cy3aJZibSrM2+YpAe3B8HMeLXAaYz9JKbC6Sp0KGr646YqoBNNP+wwrzwzJTPoV7YarViULFPYnUN8rcpp0ypaD9RrtqSN/IKUgxCeTNNcwJOLIr0SLqtmTgT2F2HzCbOkv2g84FqfCC8m2ISFyUgt8FqUD8bRfov++oHfiwSUDZHJaPkn1/NUG3qxrM85B6cC+iZH7MiudP2LF+frBJUtq4bimmjCDuQXX4c224LQC8hnG46sZGtH1i9PGp/wxdnO9gxDa+0ZIIbs86Uy6LrJptwZwWr/W4boian1JTLT8P6fPxuwDFejZwPVkyBGV1GF29pvVJ+4hRnJAKoUA/hg5IrEByXdMknkKh6yiMynmfNGEgCkAcqVPEcQie6u/nbLPqg0m3Pjs4GElEd0wIdqo9GBmK4q8FJGv05k98JX27Tm5gcwIps6qA5lPZoahOdy7GiBZFWdTfbgeah7tNjIqENbMhNFTS9Y1qy9gpgFZl8x9e0liF9OuTyTVlAmsHs9z1huuj8Bb6Eqbr8fvnVqAN9iHIBUWR7uGLeL4zwKmQZ5xiexba9LdnHuiaZjHzdzgA5SnVqXy/pabgCfoZ+wNiWcKu76mCjGU= jobs: - TF2TEST=1 install: - pip install -r requirements.txt - pip install -r tests/dlconvert/dlconvert_requirements.txt - python setup.py install - docs/prepare.sh - tests/dlconvert/data/prepare.sh script: - pytest --cov-report=xml --cov=src/aup tests after_success: - codecov deploy: provider: pypi user: "__token__" password: $PYPITOKEN on: branch: release distributions: "sdist bdist_wheel" skip_existing: true after_deploy: - "./publish.sh" ================================================ FILE: CODE_OF_CONDUCT.md ================================================ # Contributor Covenant Code of Conduct ## Our Pledge In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. ## Our Standards Examples of behavior that contributes to creating a positive environment include: * Using welcoming and inclusive language * Being respectful of differing viewpoints and experiences * Gracefully accepting constructive criticism * Focusing on what is best for the community * Showing empathy towards other community members Examples of unacceptable behavior by participants include: * The use of sexualized language or imagery and unwelcome sexual attention or advances * Trolling, insulting/derogatory comments, and personal or political attacks * Public or private harassment * Publishing others' private information, such as a physical or electronic address, without explicit permission * Other conduct which could reasonably be considered inappropriate in a professional setting ## Our Responsibilities Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. ## Scope This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at auptimizer@lge.com. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. ## Attribution This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html [homepage]: https://www.contributor-covenant.org For answers to common questions about this code of conduct, see https://www.contributor-covenant.org/faq ================================================ FILE: Examples/.gitignore ================================================ jobs/ spearmint/ ================================================ FILE: Examples/2dfunc_diff_mult_res/README.md ================================================ # Return multiple results This feature allows the user to save and track multiple secondary results along with the primary result for the HPO experiment. Auptimizer still uses the primary result for the HPO algorithms, but saves the secondary results in the database under the table `multiple_results`. ## Usage The feature can be used by adding the following parameter to the experiment configuration file: "resource_args": { "multi_res_labels": ["x", "y", …] } In the above example, {"x", "y", …} are the secondary parameters the user wants to track and record. The user script would then return the results as a list including the primary result 'res' along with the secondary parameters as follows: @aup_args def HPO(): res = calculate_results() return [res, x, y, …] In the above example 'res' is the primary result which is always the first index of the returned array when using multiple results, and is used by HPO algorithm. The other indices are matched directly with the array provided in the `multi_res_labels` parameter. Hence, The length of the returned array from HPO script is '1 + length of multi_res_labels' parameter. ## Example code python -m aup.setup cpu.ini python -m aup exp_cpu.json The code will create the job configuration file, interactively ask you to run the script, and ask for the result from your training code. e.g. # Job running path is Examples/2dfunc_diff_mult_res # Config is at Examples/2dfunc_diff_mult_res/jobs/452.json Job command is: Examples/2dfunc_diff_mult_res/rosenbrock_hpo.py Return results: Then you should run the command in another terminal like: ./rosenbrock_hpo.py ./jobs/452.json You will see something like: #Auptimizer:232.78278278806914,-0.8297799529742598,2.2032449344215808 The first result is the main result, the next are "x" and "y" defined by multi_res_labels. Once you paste the result back to **Auptimizer**, it will ask you for the next one. ================================================ FILE: Examples/2dfunc_diff_mult_res/cpu.ini ================================================ [Auptimizer] # Auptimizer environment folder to be created, this file will be copied over Auptimizer_PATH=./.aup # Temp folder TMP_FOLDER=./aup_tmp # SQL engine SQL_ENGINE=sqlite ================================================ FILE: Examples/2dfunc_diff_mult_res/exp_cpu.json ================================================ { "name": "./2dfunc_diff_mult_res/exp_cpu.json", "proposer": "random", "n_samples": 10, "random_seed": 1, "script": "rosenbrock_hpo.py", "parameter_config": [ { "name": "x", "range": [ -5, 5 ], "type": "float" }, { "name": "y", "range": [ -5, 5 ], "type": "float" } ], "resource": "cpu", "n_parallel": 4, "target":"min", "resource_args": { "multi_res_labels": ["x", "y"] } } ================================================ FILE: Examples/2dfunc_diff_mult_res/rosenbrock_hpo.py ================================================ #!/usr/bin/env python """ Modified Rosenbrock function for HPO and aup ============================================ .. Copyright (c) 2018 LG Electronics Inc. SPDX-License-Identifier: GPL-3.0-or-later """ import sys """ # ver 1.0 - modify existing code from aup import BasicConfig, print_result def rosenbrock(conf, a=1, b=100): x = conf.x y = conf.y return (a-x)*(a-x) + b*(y-x*x)*(y-x*x) if __name__ == "__main__": if len(sys.argv) != 2: print("config file required") exit(1) config = BasicConfig().load(sys.argv[1]) val = rosenbrock(config) print_result(val) """ from aup import aup_args @aup_args def rosenbrock(x, y, a=1, b=100): return [(a-x)*(a-x) + b*(y-x*x)*(y-x*x), x, y] if __name__ == "__main__": if len(sys.argv) != 2: print("config file required") exit(1) rosenbrock(sys.argv[1]) ================================================ FILE: Examples/2dfunc_diff_opt/.gitignore ================================================ spearmint/ rosenbrock_auto.py ================================================ FILE: Examples/2dfunc_diff_opt/History.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import matplotlib.pylab as plt\n", "from aup.ET.Connector.SQLiteConnector import SQLiteConnector\n", "import json\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# connect to the result\n", "sql = SQLiteConnector(\"./.aup/sqlite3.db\")" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 2, 3, 4]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Get all experiments (this run is for iris using hyperopt, sequence, spearmint, random)\n", "eids = sql.get_all_experiment()\n", "eids" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(2,\n", " 1,\n", " 1564088286,\n", " 1564088287,\n", " '{\"proposer\": \"random\", \"n_samples\": 10, \"random_seed\": 1, \"script\": \"rosenbrock_hpo.py\", \"parameter_config\": [{\"name\": \"x\", \"range\": [-5, 5], \"type\": \"float\"}, {\"name\": \"y\", \"range\": [-5, 5], \"type\": \"float\"}], \"resource\": \"cpu\", \"n_parallel\": 2, \"target\": \"min\", \"workingdir\": \"/Users/jason.liu/PycharmProjects/CTE/Examples/2dfunc_diff_opt\"}')" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Show details in one experiment\n", "sql.cursor.execute(\"SELECT * FROM experiment where eid = ?\", (eids[1],))\n", "sql.cursor.fetchone()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
jidscoreeidridstart_timeend_timejob_config
0190036.0000001315640882821564088283{'x': -5, 'y': -5}
1240519.2525531215640882821564088283{'x': -3.888888888888889, 'y': -5}
2316184.0627951115640882821564088283{'x': -2.7777777777777777, 'y': -5}
346056.4938271415640882821564088283{'x': -1.6666666666666665, 'y': -5}
452820.5877151315640882831564088283{'x': -0.5555555555555554, 'y': -5}
562818.3654931215640882831564088283{'x': 0.5555555555555558, 'y': -5}
676049.8271601115640882831564088283{'x': 1.666666666666667, 'y': -5}
7816172.9516841415640882831564088283{'x': 2.777777777777778, 'y': -5}
8940503.6969971315640882831564088283{'x': 3.8888888888888893, 'y': -5}
91090016.0000001215640882831564088283{'x': 5.0, 'y': -5}
101183492.7901231115640882831564088283{'x': -5, 'y': -3.888888888888889}
111236170.8300561415640882831564088283{'x': -3.888888888888889, 'y': -3.888888888888...
121313481.7308341315640882831564088283{'x': -2.7777777777777777, 'y': -3.88888888888...
13144451.5555561215640882831564088283{'x': -1.6666666666666665, 'y': -3.88888888888...
14151764.3462891115640882831564088283{'x': -0.5555555555555554, 'y': -3.88888888888...
15161762.1240661415640882831564088283{'x': 0.5555555555555558, 'y': -3.888888888888...
16174444.8888891315640882831564088283{'x': 1.666666666666667, 'y': -3.888888888888889}
171813470.6197231215640882831564088283{'x': 2.777777777777778, 'y': -3.888888888888889}
181936155.2745011115640882831564088283{'x': 3.8888888888888893, 'y': -3.888888888888...
192083472.7901231415640882831564088283{'x': 5.0, 'y': -3.888888888888889}
202177196.4938271315640882831564088283{'x': -5, 'y': -2.7777777777777777}
212232069.3211401215640882831564088283{'x': -3.888888888888889, 'y': -2.777777777777...
222311026.3124521115640882831564088283{'x': -2.7777777777777777, 'y': -2.77777777777...
23243093.5308641415640882831564088283{'x': -1.6666666666666665, 'y': -2.77777777777...
2425955.0184421315640882831564088283{'x': -0.5555555555555554, 'y': -2.77777777777...
2526952.7962201215640882831564088283{'x': 0.5555555555555558, 'y': -2.777777777777...
26273086.8641981115640882831564088283{'x': 1.666666666666667, 'y': -2.7777777777777...
272811015.2013411415640882831564088283{'x': 2.777777777777778, 'y': -2.7777777777777...
282932053.7655851315640882831564088283{'x': 3.8888888888888893, 'y': -2.777777777777...
293077176.4938271215640882831564088283{'x': 5.0, 'y': -2.7777777777777777}
........................
707149418.7160491115640882841564088284{'x': -5, 'y': 2.777777777777778}
717215265.4802621415640882841564088284{'x': -3.888888888888889, 'y': 2.777777777777778}
72732452.9242491315640882841564088284{'x': -2.7777777777777777, 'y': 2.777777777777...
73747.1111111215640882841564088284{'x': -1.6666666666666665, 'y': 2.777777777777...
7475612.0829141115640882841564088284{'x': -0.5555555555555554, 'y': 2.777777777777...
7576609.8606921415640882841564088284{'x': 0.5555555555555558, 'y': 2.777777777777778}
76770.4444441315640882841564088284{'x': 1.666666666666667, 'y': 2.777777777777778}
77782441.8131381215640882841564088284{'x': 2.777777777777778, 'y': 2.777777777777778}
787915249.9247071115640882841564088284{'x': 3.8888888888888893, 'y': 2.777777777777778}
798049398.7160491415640882841564088284{'x': 5.0, 'y': 2.777777777777778}
808144603.9012351315640882841564088285{'x': -5, 'y': 3.8888888888888893}
818212645.4528271215640882841564088285{'x': -3.888888888888889, 'y': 3.8888888888888...
82831478.9873491115640882841564088285{'x': -2.7777777777777777, 'y': 3.888888888888...
8384130.5679011415640882841564088285{'x': -1.6666666666666665, 'y': 3.888888888888...
84851284.2365491315640882851564088285{'x': -0.5555555555555554, 'y': 3.888888888888...
85861282.0143271215640882851564088285{'x': 0.5555555555555558, 'y': 3.8888888888888...
8687123.9012351115640882851564088285{'x': 1.666666666666667, 'y': 3.8888888888888893}
87881467.8762381415640882851564088285{'x': 2.777777777777778, 'y': 3.8888888888888893}
888912629.8972721315640882851564088285{'x': 3.8888888888888893, 'y': 3.8888888888888...
899044583.9012351215640882851564088285{'x': 5.0, 'y': 3.8888888888888893}
909140036.0000001115640882851564088285{'x': -5, 'y': 5.0}
919210272.3389731415640882851564088285{'x': -3.888888888888889, 'y': 5.0}
9293751.9640301315640882851564088285{'x': -2.7777777777777777, 'y': 5.0}
9394500.9382721215640882851564088285{'x': -1.6666666666666665, 'y': 5.0}
94952203.3037651115640882851564088285{'x': -0.5555555555555554, 'y': 5.0}
95962201.0815421415640882851564088285{'x': 0.5555555555555558, 'y': 5.0}
9697494.2716051315640882851564088285{'x': 1.666666666666667, 'y': 5.0}
9798740.8529191215640882851564088285{'x': 2.777777777777778, 'y': 5.0}
989910256.7834171115640882851564088285{'x': 3.8888888888888893, 'y': 5.0}
9910040016.0000001415640882851564088285{'x': 5.0, 'y': 5.0}
\n", "

100 rows × 7 columns

\n", "
" ], "text/plain": [ " jid score eid rid start_time end_time \\\n", "0 1 90036.000000 1 3 1564088282 1564088283 \n", "1 2 40519.252553 1 2 1564088282 1564088283 \n", "2 3 16184.062795 1 1 1564088282 1564088283 \n", "3 4 6056.493827 1 4 1564088282 1564088283 \n", "4 5 2820.587715 1 3 1564088283 1564088283 \n", "5 6 2818.365493 1 2 1564088283 1564088283 \n", "6 7 6049.827160 1 1 1564088283 1564088283 \n", "7 8 16172.951684 1 4 1564088283 1564088283 \n", "8 9 40503.696997 1 3 1564088283 1564088283 \n", "9 10 90016.000000 1 2 1564088283 1564088283 \n", "10 11 83492.790123 1 1 1564088283 1564088283 \n", "11 12 36170.830056 1 4 1564088283 1564088283 \n", "12 13 13481.730834 1 3 1564088283 1564088283 \n", "13 14 4451.555556 1 2 1564088283 1564088283 \n", "14 15 1764.346289 1 1 1564088283 1564088283 \n", "15 16 1762.124066 1 4 1564088283 1564088283 \n", "16 17 4444.888889 1 3 1564088283 1564088283 \n", "17 18 13470.619723 1 2 1564088283 1564088283 \n", "18 19 36155.274501 1 1 1564088283 1564088283 \n", "19 20 83472.790123 1 4 1564088283 1564088283 \n", "20 21 77196.493827 1 3 1564088283 1564088283 \n", "21 22 32069.321140 1 2 1564088283 1564088283 \n", "22 23 11026.312452 1 1 1564088283 1564088283 \n", "23 24 3093.530864 1 4 1564088283 1564088283 \n", "24 25 955.018442 1 3 1564088283 1564088283 \n", "25 26 952.796220 1 2 1564088283 1564088283 \n", "26 27 3086.864198 1 1 1564088283 1564088283 \n", "27 28 11015.201341 1 4 1564088283 1564088283 \n", "28 29 32053.765585 1 3 1564088283 1564088283 \n", "29 30 77176.493827 1 2 1564088283 1564088283 \n", ".. ... ... ... ... ... ... \n", "70 71 49418.716049 1 1 1564088284 1564088284 \n", "71 72 15265.480262 1 4 1564088284 1564088284 \n", "72 73 2452.924249 1 3 1564088284 1564088284 \n", "73 74 7.111111 1 2 1564088284 1564088284 \n", "74 75 612.082914 1 1 1564088284 1564088284 \n", "75 76 609.860692 1 4 1564088284 1564088284 \n", "76 77 0.444444 1 3 1564088284 1564088284 \n", "77 78 2441.813138 1 2 1564088284 1564088284 \n", "78 79 15249.924707 1 1 1564088284 1564088284 \n", "79 80 49398.716049 1 4 1564088284 1564088284 \n", "80 81 44603.901235 1 3 1564088284 1564088285 \n", "81 82 12645.452827 1 2 1564088284 1564088285 \n", "82 83 1478.987349 1 1 1564088284 1564088285 \n", "83 84 130.567901 1 4 1564088284 1564088285 \n", "84 85 1284.236549 1 3 1564088285 1564088285 \n", "85 86 1282.014327 1 2 1564088285 1564088285 \n", "86 87 123.901235 1 1 1564088285 1564088285 \n", "87 88 1467.876238 1 4 1564088285 1564088285 \n", "88 89 12629.897272 1 3 1564088285 1564088285 \n", "89 90 44583.901235 1 2 1564088285 1564088285 \n", "90 91 40036.000000 1 1 1564088285 1564088285 \n", "91 92 10272.338973 1 4 1564088285 1564088285 \n", "92 93 751.964030 1 3 1564088285 1564088285 \n", "93 94 500.938272 1 2 1564088285 1564088285 \n", "94 95 2203.303765 1 1 1564088285 1564088285 \n", "95 96 2201.081542 1 4 1564088285 1564088285 \n", "96 97 494.271605 1 3 1564088285 1564088285 \n", "97 98 740.852919 1 2 1564088285 1564088285 \n", "98 99 10256.783417 1 1 1564088285 1564088285 \n", "99 100 40016.000000 1 4 1564088285 1564088285 \n", "\n", " job_config \n", "0 {'x': -5, 'y': -5} \n", "1 {'x': -3.888888888888889, 'y': -5} \n", "2 {'x': -2.7777777777777777, 'y': -5} \n", "3 {'x': -1.6666666666666665, 'y': -5} \n", "4 {'x': -0.5555555555555554, 'y': -5} \n", "5 {'x': 0.5555555555555558, 'y': -5} \n", "6 {'x': 1.666666666666667, 'y': -5} \n", "7 {'x': 2.777777777777778, 'y': -5} \n", "8 {'x': 3.8888888888888893, 'y': -5} \n", "9 {'x': 5.0, 'y': -5} \n", "10 {'x': -5, 'y': -3.888888888888889} \n", "11 {'x': -3.888888888888889, 'y': -3.888888888888... \n", "12 {'x': -2.7777777777777777, 'y': -3.88888888888... \n", "13 {'x': -1.6666666666666665, 'y': -3.88888888888... \n", "14 {'x': -0.5555555555555554, 'y': -3.88888888888... \n", "15 {'x': 0.5555555555555558, 'y': -3.888888888888... \n", "16 {'x': 1.666666666666667, 'y': -3.888888888888889} \n", "17 {'x': 2.777777777777778, 'y': -3.888888888888889} \n", "18 {'x': 3.8888888888888893, 'y': -3.888888888888... \n", "19 {'x': 5.0, 'y': -3.888888888888889} \n", "20 {'x': -5, 'y': -2.7777777777777777} \n", "21 {'x': -3.888888888888889, 'y': -2.777777777777... \n", "22 {'x': -2.7777777777777777, 'y': -2.77777777777... \n", "23 {'x': -1.6666666666666665, 'y': -2.77777777777... \n", "24 {'x': -0.5555555555555554, 'y': -2.77777777777... \n", "25 {'x': 0.5555555555555558, 'y': -2.777777777777... \n", "26 {'x': 1.666666666666667, 'y': -2.7777777777777... \n", "27 {'x': 2.777777777777778, 'y': -2.7777777777777... \n", "28 {'x': 3.8888888888888893, 'y': -2.777777777777... \n", "29 {'x': 5.0, 'y': -2.7777777777777777} \n", ".. ... \n", "70 {'x': -5, 'y': 2.777777777777778} \n", "71 {'x': -3.888888888888889, 'y': 2.777777777777778} \n", "72 {'x': -2.7777777777777777, 'y': 2.777777777777... \n", "73 {'x': -1.6666666666666665, 'y': 2.777777777777... \n", "74 {'x': -0.5555555555555554, 'y': 2.777777777777... \n", "75 {'x': 0.5555555555555558, 'y': 2.777777777777778} \n", "76 {'x': 1.666666666666667, 'y': 2.777777777777778} \n", "77 {'x': 2.777777777777778, 'y': 2.777777777777778} \n", "78 {'x': 3.8888888888888893, 'y': 2.777777777777778} \n", "79 {'x': 5.0, 'y': 2.777777777777778} \n", "80 {'x': -5, 'y': 3.8888888888888893} \n", "81 {'x': -3.888888888888889, 'y': 3.8888888888888... \n", "82 {'x': -2.7777777777777777, 'y': 3.888888888888... \n", "83 {'x': -1.6666666666666665, 'y': 3.888888888888... \n", "84 {'x': -0.5555555555555554, 'y': 3.888888888888... \n", "85 {'x': 0.5555555555555558, 'y': 3.8888888888888... \n", "86 {'x': 1.666666666666667, 'y': 3.8888888888888893} \n", "87 {'x': 2.777777777777778, 'y': 3.8888888888888893} \n", "88 {'x': 3.8888888888888893, 'y': 3.8888888888888... \n", "89 {'x': 5.0, 'y': 3.8888888888888893} \n", "90 {'x': -5, 'y': 5.0} \n", "91 {'x': -3.888888888888889, 'y': 5.0} \n", "92 {'x': -2.7777777777777777, 'y': 5.0} \n", "93 {'x': -1.6666666666666665, 'y': 5.0} \n", "94 {'x': -0.5555555555555554, 'y': 5.0} \n", "95 {'x': 0.5555555555555558, 'y': 5.0} \n", "96 {'x': 1.666666666666667, 'y': 5.0} \n", "97 {'x': 2.777777777777778, 'y': 5.0} \n", "98 {'x': 3.8888888888888893, 'y': 5.0} \n", "99 {'x': 5.0, 'y': 5.0} \n", "\n", "[100 rows x 7 columns]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# show details in job history for one experiment\n", "history = sql.get_all_history(1)\n", "history = pd.DataFrame(history)\n", "history.columns = ['jid', 'score','eid','rid','start_time','end_time','job_config']\n", "history" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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+5QuCV1IMP2oFBER72knZZFT0//aPOKco6mpyeswRFoVmqLcDo9w8fsU5eai/kjjEVIStf5WRET8ISs9i78d+htHG496HYqIb8VVgWtm3zazR+rr670OJayamhouuugivv/975Obm8t1111HYWEhOTk53HbbbaHrMjMzue222xg+fDh5eXns2rULgI8++ojS0lJycnKYPXv2cdvE/+pXvyI3N5fc3Fzuvffe0PsNGjSIWbNmkZ2dzTXXXMO6desoKSkhKyuLsrKyju0AiSnnJJ8DfPHInGgKbTLl0wK35bRsv8YoEiv8nptFYkl2j2waXSNv1b/ldSgivhVXjwlyzj0PPF9YWPiDNi9cuwDeq4zum381D7511ykv27NnD4899hgjR47k4MGD9OjRg8bGRsaPH88bb7xBfn4+AL169WLbtm089NBDLF68mN/85jcsWrSI0aNHc+utt/LCCy/w29/+FoBXX32VpUuXsmXLFpxzfP3rX+fSSy8lIyOD6upqfv/73/Poo49SVFTEypUr2bBhA8899xx33nknzz77bHT7QeJGcmIy3ZK6tcsIrt/X4LYscLWDssiZiTg3i8gpZadnA7Cndg+DegzyOBoRf4qrAjcWXHjhhYwcORKAJ598kkceeYSGhgbeffdddu7cGSpwp06dCsCIESN4+umnAXjllVdCn19xxRVkZGQAsGHDBq688kpSU1NDr12/fj2TJ0+mX79+5OXlAZCTk8P48eMxM/Ly8qipqemw71ti0zldz2mXEdzuXfy9BjfBEki0RBpdozaYEhER37jgnAvomtCVlVUref3A62fcXpeELkzqP4mcXjlRiE7EHzpngRvBSGt7aS5C//rXv7J48WK2bt1KRkYGs2bN4siRI6HrkpMD/6lOTEykoaHhS79fczsACQkJoeOEhIQzalc6h29c+A3OP/v8qLebmuTvNbgQGMVtbFSBKyIi/pGUkMTEzIls3L+R/Yf3n3F7h48d5j+r/pPRfUbzo/wfUXBeQRSiFPFW5yxwfeDQoUOkpqaSlpbG+++/z9q1axk7dmybrxkzZgwrV65k4cKFrF27ltraWgAuueQSZs2axYIFC3DO8cwzz/C73/2uA74LiXcLihe0S7vNI7jtsUNztCQlJPF54+cqcEVExFfuvOTOqLX1ydFPeOLNJ1i+Yzkz187kooyLQjnaL1IS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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(16,8))\n", "plt.subplot(121)\n", "for i in eids:\n", " history = sql.get_all_history(i)\n", " history = pd.DataFrame(history)\n", " history.columns = ['jid', 'score','eid','rid','start_time','end_time','job_config']\n", " sql.cursor.execute(\"SELECT * FROM experiment where eid = ?\", (i,))\n", " label = json.loads(sql.cursor.fetchone()[4])['proposer']\n", " plt.plot(history.score, label=label)\n", "plt.legend()\n", "plt.xlabel(\"Iteration\")\n", "plt.ylabel(\"Accuracy\")\n", "plt.yscale(\"log\")\n", "\n", "plt.subplot(122)\n", "for i in eids:\n", " history = sql.get_all_history(i)\n", " history = pd.DataFrame(history)\n", " history.columns = ['jid', 'score','eid','rid','start_time','end_time','job_config']\n", " sql.cursor.execute(\"SELECT * FROM experiment where eid = ?\", (i,))\n", " label = json.loads(sql.cursor.fetchone()[4])['proposer']\n", " plt.plot(history.score.cummin(), label=label)\n", "plt.legend()\n", "plt.xlabel(\"Iteration\")\n", "plt.ylabel(\"Best Accuracy so far\")\n", "plt.yscale(\"log\")" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "sql.close()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: Examples/2dfunc_diff_opt/README.md ================================================ # Rosenbrock demo ## Setup python -m aup.setup To setup different resource configuration, see [resource example](../2dfunc_diff_res/README.md). ## Experiment python -m aup experiment_sequence.json --log warn python -m aup experiment_random.json python -m aup experiment_spearmint.json python -m aup experiment_hyperopt.json Results are presented in [History](History.ipynb) ## Experiment Auto-convert To convert the original `rosenbrock_origin.py` for *Auptimizer*, users can use python -m aup.convert rosenbrock_origin.py experiment_auto.json rosenbrock It will create `rosenbrock_auto.py` for user to use for *Auptimizer* experiment. ## Reset To clean the database, use python -m aup.setupdb.reset .aup/env.ini ================================================ FILE: Examples/2dfunc_diff_opt/experiment_auto.json ================================================ { "name": "./2dfunc_diff_opt/experiment_auto.json", "proposer": "random", "n_samples": 10, "random_seed": 1, "script": "rosenbrock_auto.py", "parameter_config": [ { "name": "x", "range": [ -5, 5 ], "type": "float" }, { "name": "y", "range": [ -5, 5 ], "type": "float" } ], "resource": "cpu", "n_parallel": 1, "target":"min" } ================================================ FILE: Examples/2dfunc_diff_opt/experiment_bohb.json ================================================ { "name": "./2dfunc_diff_opt/experiment_bohb.json", "script": "rosenbrock_hpo.py", "resource": "cpu", "n_parallel": 5, "target": "min", "workingdir": "./", "proposer": "bohb", "n_iterations": 3, "min_points_in_model": "", "top_n_percent": 15, "num_samples": 64, "random_fraction": 0.3333333333333333, "bandwidth_factor": 3, "min_bandwidth": 0.001, "eta": 3, "min_budget": 1, "max_budget": 9, "parameter_config": [ { "name": "x", "range": [ 0, 1 ], "type": "float" }, { "name": "y", "range": [ 0, 1 ], "type": "float" } ] } ================================================ FILE: Examples/2dfunc_diff_opt/experiment_hyperband.json ================================================ { "name": "./2dfunc_diff_opt/experiment_hyperband.json", "proposer": "hyperband", "script": "rosenbrock_hpo.py", "resource": "cpu", "n_parallel": 1, "target":"max", "max_iter": 3, "engine": "random", "parameter_config": [ { "name": "x", "range": [-5, 5], "type": "float" }, { "name": "y", "range": [-5,5], "type": "float" } ] } ================================================ FILE: Examples/2dfunc_diff_opt/experiment_hyperopt.json ================================================ { "name": "./2dfunc_diff_opt/experiment_hyperopt.json", "proposer": "hyperopt", "random_seed": 1, "script": "rosenbrock_hpo.py", "engine":"tpe", "n_samples": 100, "parameter_config": [ { "name": "x", "range": [ -5, 5 ], "type": "float" }, { "name": "y", "range": [ -5, 5 ], "type": "float" } ], "resource": "cpu", "n_parallel": 4, "target":"min" } ================================================ FILE: Examples/2dfunc_diff_opt/experiment_random.json ================================================ { "name": "./2dfunc_diff_opt/experiment_random.json", "proposer": "random", "n_samples": 10, "random_seed": 1, "script": "rosenbrock_hpo.py", "parameter_config": [ { "name": "x", "range": [ -5, 5 ], "type": "float" }, { "name": "y", "range": [ -5, 5 ], "type": "float" } ], "resource": "cpu", "n_parallel": 2, "target":"min" } ================================================ FILE: Examples/2dfunc_diff_opt/experiment_sequence.json ================================================ { "name": "./2dfunc_diff_opt/experiment_sequence.json", "proposer": "sequence", "script": "rosenbrock_hpo.py", "parameter_config": [ { "name": "x", "range": [ -5, 5 ], "type": "float", "n": 10 }, { "name": "y", "range": [ -5, 5 ], "type": "float", "n": 10 } ], "resource": "cpu", "n_parallel": 4, "target":"min" } ================================================ FILE: Examples/2dfunc_diff_opt/experiment_spearmint.json ================================================ { "name": "./2dfunc_diff_opt/experiment_spearmint.json", "proposer": "spearmint", "n_samples": 100, "random_seed": 1, "script": "rosenbrock_hpo.py", "engine":"GPEIChooser", "parameter_config": [ { "name": "x", "range": [ -5, 5 ], "type": "float", "size": 1 }, { "name": "y", "range": [ -5, 5 ], "type": "float", "size": 1 } ], "resource": "cpu", "n_parallel": 2, "target":"min" } ================================================ FILE: Examples/2dfunc_diff_opt/rosenbrock_hpo.py ================================================ #!/usr/bin/env python """ Modified Rosenbrock function for HPO and aup ============================================ .. Copyright (c) 2018 LG Electronics Inc. SPDX-License-Identifier: GPL-3.0-or-later """ import sys """ # ver 1.0 - modify existing code from aup import BasicConfig, print_result def rosenbrock(conf, a=1, b=100): x = conf.x y = conf.y return (a-x)*(a-x) + b*(y-x*x)*(y-x*x) if __name__ == "__main__": if len(sys.argv) != 2: print("config file required") exit(1) config = BasicConfig().load(sys.argv[1]) val = rosenbrock(config) print_result(val) """ from aup import aup_args @aup_args def rosenbrock(x, y, a=1, b=100): return (a-x)*(a-x) + b*(y-x*x)*(y-x*x) if __name__ == "__main__": if len(sys.argv) != 2: print("config file required") exit(1) rosenbrock(sys.argv[1]) ================================================ FILE: Examples/2dfunc_diff_opt/rosenbrock_origin.py ================================================ """ Demonstration code for Rosenbrock function ========================================== .. Copyright (c) 2018 LG Electronics Inc. SPDX-License-Identifier: GPL-3.0-or-later """ def rosenbrock(x, y, a=1, b=100): return (a-x)*(a-x) + b*(y-x*x)*(y-x*x) ================================================ FILE: Examples/2dfunc_diff_res/README.md ================================================ # Rosenbrock demo for different resources ## CPU python -m aup.setup cpu.ini python -m aup exp_cpu.json ## GPU Using a file contains the GPU ID per line will create GPU resources accordingly python -m aup.setup cpu.ini --gpu gpu.txt --overwrite python -m aup exp_gpu.json ## multi-node For multi node environment, first set up the ssh key (see [here](https://help.ubuntu.com/community/SSH/OpenSSH/Keys) as example), then either use IP for node, or use node name with IP in `/etc/hosts` file. In `node.txt`, each line contains `:[:port]`, where port number is optional (default 22). python -m aup.setup cpu.ini --node node.txt --overwrite python -m aup exp_node.json Also, it is important to add `workingdir` for remote execution. ## Passive mode Passive mode is used for debugging purpose. It helps users to run training code manually and check potential problem in the training code. python -m aup experiment_passive.json The code will create the job configuration file, interactively ask you to run the script, and ask for the result from your training code. e.g. # Job running path is Examples/2dfunc_diff_res # Config is at Examples/2dfunc_diff_res/jobs/452.json Job command is: Examples/2dfunc_diff_res/rosenbrock_hpo.py Return results: Then you should run the command in another terminal like: ./rosenbrock_hpo.py ./jobs/452.json You will see something like: #Auptimizer:232.78278278806914 Once you paste the result back to **Auptimizer**, it will ask you for the next one. ================================================ FILE: Examples/2dfunc_diff_res/aws.txt ================================================ AWS_EC2_ID SSH_KEY AWS_EC2_ID SSH_KEY ================================================ FILE: Examples/2dfunc_diff_res/cpu.ini ================================================ [Auptimizer] # Auptimizer environment folder to be created, this file will be copied over Auptimizer_PATH=./.aup # Temp folder TMP_FOLDER=./aup_tmp # SQL engine SQL_ENGINE=sqlite ================================================ FILE: Examples/2dfunc_diff_res/env_local_template.ini ================================================ [Auptimizer] # Auptimizer environment folder to be created, this file will be copied over Auptimizer_PATH=./.aup # Temp folder TMP_FOLDER=./aup_tmp # SQL engine SQL_ENGINE=sqlite ================================================ FILE: Examples/2dfunc_diff_res/env_user_template.ini ================================================ [Auptimizer] # Auptimizer environment folder to be created, this file will be copied over Auptimizer_PATH=~/.aup # Temp folder TMP_FOLDER=/tmp/aup # SQL engine SQL_ENGINE=sqlite ================================================ FILE: Examples/2dfunc_diff_res/exp_aws.json ================================================ { "name": "./2dfunc_diff_res/exp_aws.json", "workingdir": "/home/ubuntu/", "proposer": "random", "n_samples": 10, "resource_args": { "shutdown":true, "connection_retry": 5 }, "runtime_args": { "prescript": "source .profile", "postscript": "echo 'DONE'" }, "random_seed": 1, "script": "./rosenbrock_hpo.py", "parameter_config": [ { "name": "x", "range": [ -5, 5 ], "type": "float" }, { "name": "y", "range": [ -5, 5 ], "type": "float" } ], "resource": "aws", "n_parallel": 1, "target":"min" } ================================================ FILE: Examples/2dfunc_diff_res/exp_cpu.json ================================================ { "name": "./2dfunc_diff_res/exp_cpu.json", "proposer": "sequence", "n_samples": 10, "random_seed": 1, "script": "rosenbrock_hpo.py", "parameter_config": [ { "name": "x", "range": [ -5, 5 ], "type": "float" }, { "name": "y", "range": [ -5, 5 ], "type": "float" } ], "resource": "cpu", "n_parallel": 2, "target":"min" } ================================================ FILE: Examples/2dfunc_diff_res/exp_gpu.json ================================================ { "name": "./2dfunc_diff_res/exp_gpu.json", "proposer": "random", "n_samples": 10, "random_seed": 1, "script": "rosenbrock_hpo.py", "parameter_config": [ { "name": "x", "range": [ -5, 5 ], "type": "float" }, { "name": "y", "range": [ -5, 5 ], "type": "float" } ], "resource": "gpu", "n_parallel": 2, "target":"min" } ================================================ FILE: Examples/2dfunc_diff_res/exp_node.json ================================================ { "name": "./2dfunc_diff_res/exp_node.json", "workingdir": "/home/ubuntu/aup_demo", "proposer": "random", "n_samples": 10, "random_seed": 1, "script": "rosenbrock_hpo.py", "runtime_args": { "prescript": "export CUDA_VISIBLE_DEVICES=-1", "postscript": "echo $CUDA_VISIBLE_DEVICES", "overwrite": true }, "parameter_config": [ { "name": "x", "range": [ -5, 5 ], "type": "float" }, { "name": "y", "range": [ -5, 5 ], "type": "float" } ], "resource": "node", "n_parallel": 2, "target":"min", "resource_args": { "max_retries": 2, "reconn_wait_time": 3 } } ================================================ FILE: Examples/2dfunc_diff_res/exp_node_async.json ================================================ { "name": "./2dfunc_diff_res/exp_node_async.json", "workingdir": "/home/paul/aup_demo", "proposer": "random", "n_samples": 10, "random_seed": 1, "script": "rosenbrock_hpo.py", "runtime_args": { "prescript": "export CUDA_VISIBLE_DEVICES=-1", "postscript": "echo $CUDA_VISIBLE_DEVICES", "overwrite": true }, "parameter_config": [ { "name": "x", "range": [ -5, 5 ], "type": "float" }, { "name": "y", "range": [ -5, 5 ], "type": "float" } ], "resource": "node", "n_parallel": 2, "target":"min", "resource_args": { "max_retries": 2, "reconn_wait_time": 3, "async_run": true, "async_reconnect": 1, "async_timeout": 100 } } ================================================ FILE: Examples/2dfunc_diff_res/exp_passive.json ================================================ { "name": "./2dfunc_diff_res/exp_passive.json", "proposer": "random", "n_samples": 5, "random_seed": 1, "script": "rosenbrock_hpo.py", "parameter_config": [ { "name": "x", "range": [ -5, 5 ], "type": "float" }, { "name": "y", "range": [ -5, 5 ], "type": "float" } ], "resource": "passive", "target":"min" } ================================================ FILE: Examples/2dfunc_diff_res/gpu.txt ================================================ 0 1 ================================================ FILE: Examples/2dfunc_diff_res/node.txt ================================================ jasonliu@ubuntu1 jasonliu@ubuntu2 ================================================ FILE: Examples/2dfunc_diff_res/plainGPU.txt ================================================ 0 ================================================ FILE: Examples/2dfunc_diff_res/rosenbrock_hpo.py ================================================ #!/usr/bin/env python """ Modified Rosenbrock function for HPO and aup ============================================ .. Copyright (c) 2018 LG Electronics Inc. SPDX-License-Identifier: GPL-3.0-or-later """ import sys """ # ver 1.0 - modify existing code from aup import BasicConfig, print_result def rosenbrock(conf, a=1, b=100): x = conf.x y = conf.y return (a-x)*(a-x) + b*(y-x*x)*(y-x*x) if __name__ == "__main__": if len(sys.argv) != 2: print("config file required") exit(1) config = BasicConfig().load(sys.argv[1]) val = rosenbrock(config) print_result(val) """ from aup import aup_args @aup_args def rosenbrock(x, y, a=1, b=100): return (a-x)*(a-x) + b*(y-x*x)*(y-x*x) if __name__ == "__main__": if len(sys.argv) != 2: print("config file required") exit(1) rosenbrock(sys.argv[1]) ================================================ FILE: Examples/2dfunc_diff_res/singleGPU.txt ================================================ 0 0 ================================================ FILE: Examples/cai_eas/.gitignore ================================================ net_pool arch_search ## Core latex/pdflatex auxiliary files: *.aux *.lof *.log *.lot *.fls *.out *.toc ## Intermediate documents: *.dvi *-converted-to.* # these rules might exclude image files for figures etc. # *.ps # *.eps # *.pdf /Datasets ## Bibliography auxiliary files (bibtex/biblatex/biber): *.bbl *.bcf *.blg *-blx.aux *-blx.bib *.brf *.run.xml ## Build tool auxiliary files: *.fdb_latexmk *.synctex *.synctex.gz *.synctex.gz(busy) *.pdfsync ## Auxiliary and intermediate files from other packages: # algorithms *.alg *.loa # achemso acs-*.bib # amsthm *.thm # beamer *.nav *.snm *.vrb #(e)ledmac/(e)ledpar *.end *.[1-9] *.[1-9][0-9] *.[1-9][0-9][0-9] *.[1-9]R *.[1-9][0-9]R *.[1-9][0-9][0-9]R *.eledsec[1-9] *.eledsec[1-9]R *.eledsec[1-9][0-9] *.eledsec[1-9][0-9]R *.eledsec[1-9][0-9][0-9] *.eledsec[1-9][0-9][0-9]R # glossaries *.acn *.acr *.glg *.glo *.gls # gnuplottex *-gnuplottex-* # hyperref # knitr *-concordance.tex *.tikz *-tikzDictionary # listings *.lol # makeidx *.idx *.ilg *.ind *.ist tex/rl-meta.pdf # minitoc *.maf *.mtc *.mtc[0-9] *.mtc[1-9][0-9] # minted _minted* *.pyg # morewrites *.mw # mylatexformat *.fmt # nomencl *.nlo # sagetex *.sagetex.sage *.sagetex.py *.sagetex.scmd # sympy *.sout *.sympy sympy-plots-for-*.tex/ # TikZ & PGF *.dpth *.md5 *.auxlock # todonotes *.tdo # xindy *.xdy # WinEdt *.bak *.sav *.DS_Store /data */.idea/ /output/ /exp/ /backup/ # python __pycache__ .pyc ================================================ FILE: Examples/cai_eas/README.md ================================================ # HPO for Deep Neural Networks Demonstration using https://github.com/han-cai/EAS The HPO engine is integrated into the Auptimizer. The running script is a modification of `client.py`. Run it as cd eas python -m aup experiment.json Notice that the start_nets is needed in this folder although the experiment is running in the eas folder ================================================ FILE: Examples/cai_eas/eas/client.py ================================================ #!/usr/bin/env python """ Modified from https://github.com/han-cai/EAS The file to run in the client side Train the network and return the validation performance """ import os from expdir_monitor.expdir_monitor import ExpdirMonitor import time import sys from aup import BasicConfig, print_result os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3' def run(expdir): start_time = time.time() expdir_monitor = ExpdirMonitor(expdir) valid_performance = expdir_monitor.run(pure=True, restore=False) end_time = time.time() print('running time: %s' % (end_time - start_time)) print('valid performance: %s' % valid_performance) print_result(valid_performance) def main(): print("Starting Client") config = BasicConfig().load(sys.argv[1]) run(config["expdir"]) if __name__ == "__main__": try: main() except KeyboardInterrupt: pass ================================================ FILE: Examples/cai_eas/eas/data_providers/__init__.py ================================================ ================================================ FILE: Examples/cai_eas/eas/data_providers/base_provider.py ================================================ import numpy as np class DataSet: """Class to represent some dataset: train, validation, test""" @property def num_examples(self): """Return qtty of examples in dataset""" raise NotImplementedError def next_batch(self, batch_size): """Return batch of required size of data, labels""" raise NotImplementedError class ImagesDataSet(DataSet): """Dataset for images that provide some often used methods""" @staticmethod def measure_mean_and_std(images): # for every channel in image means = [] stds = [] # for every channel in image(assume this is last dimension) for ch in range(images.shape[-1]): means.append(np.mean(images[:, :, :, ch])) stds.append(np.std(images[:, :, :, ch])) return means, stds @staticmethod def shuffle_images_and_labels(images, labels): rand_indexes = np.random.permutation(images.shape[0]) shuffled_images = images[rand_indexes] shuffled_labels = labels[rand_indexes] return shuffled_images, shuffled_labels @staticmethod def normalize_images(images, normalization_type, meanstd=None): """ Args: images: numpy 4D array normalization_type: `str`, available choices: - divide_255 - divide_256 - by_channels meanstd """ if normalization_type is not None: if normalization_type == 'divide_255': images = images / 255 elif normalization_type == 'divide_256': images = images / 256 elif normalization_type == 'by_channels': images = images.astype('float64') # for every channel in image(assume this is last dimension) means, stds = meanstd for i in range(images.shape[-1]): images[:, :, :, i] = ((images[:, :, :, i] - means[i]) / stds[i]) else: raise Exception('Unknown type of normalization') return images class DataProvider: _SEED = 88 @property def data_shape(self): """Return shape as python list of one data entry""" raise NotImplementedError @property def n_classes(self): """Return `int` of num classes""" raise NotImplementedError def labels_to_one_hot(self, labels): """Convert 1D array of labels to one hot representation Args: labels: 1D numpy array """ new_labels = np.zeros((labels.shape[0], self.n_classes)) new_labels[range(labels.shape[0]), labels] = np.ones(labels.shape) return new_labels @staticmethod def labels_from_one_hot(labels): """Convert 2D array of labels to 1D class based representation Args: labels: 2D numpy array """ return np.argmax(labels, axis=1) ================================================ FILE: Examples/cai_eas/eas/data_providers/cifar.py ================================================ import tempfile import os import pickle import random import numpy as np from data_providers.base_provider import ImagesDataSet, DataProvider from data_providers.downloader import download_data_url def augment_image(image, pad): """Perform zero padding, randomly crop image to original size, maybe mirror horizontally""" init_shape = image.shape new_shape = [init_shape[0] + pad * 2, init_shape[1] + pad * 2, init_shape[2]] zeros_padded = np.zeros(new_shape) zeros_padded[pad:init_shape[0] + pad, pad:init_shape[1] + pad, :] = image # randomly crop to original size init_x = np.random.randint(0, pad * 2) init_y = np.random.randint(0, pad * 2) cropped = zeros_padded[ init_x: init_x + init_shape[0], init_y: init_y + init_shape[1], :] flip = random.getrandbits(1) if flip: cropped = cropped[:, ::-1, :] return cropped def augment_all_images(initial_images, pad=4): new_images = np.zeros(initial_images.shape) for i in range(initial_images.shape[0]): new_images[i] = augment_image(initial_images[i], pad) return new_images class CifarDataSet(ImagesDataSet): def __init__(self, images, labels, n_classes, shuffle, normalization, augmentation, meanstd): """ Args: images: 4D numpy array labels: 2D or 1D numpy array n_classes: `int`, number of cifar classes - 10 or 100 shuffle: `str` or None None: no any shuffling once_prior_train: shuffle train data only once prior train every_epoch: shuffle train data prior every epoch normalization: `str` or None None: no any normalization divide_255: divide all pixels by 255 divide_256: divide all pixels by 256 by_channels: substract mean of every chanel and divide each chanel data by it's standard deviation augmentation: `bool` """ if shuffle is None: self.shuffle_every_epoch = False elif shuffle == 'once_prior_train': self.shuffle_every_epoch = False images, labels = self.shuffle_images_and_labels(images, labels) elif shuffle == 'every_epoch': self.shuffle_every_epoch = True else: raise Exception('Unknown type of shuffling') self._batch_counter, self.epoch_images, self.epoch_labels = 0, None, None self.images = images self.labels = labels self.n_classes = n_classes self.augmentation = augmentation self.normalization = normalization self.meanstd = meanstd self.images = self.normalize_images(images, self.normalization, self.meanstd) self.start_new_epoch() def start_new_epoch(self): self._batch_counter = 0 if self.shuffle_every_epoch: images, labels = self.shuffle_images_and_labels( self.images, self.labels) else: images, labels = self.images, self.labels if self.augmentation: images = augment_all_images(images, pad=4) self.epoch_images = images self.epoch_labels = labels @property def num_examples(self): return self.labels.shape[0] def next_batch(self, batch_size): start = self._batch_counter * batch_size end = (self._batch_counter + 1) * batch_size self._batch_counter += 1 images_slice = self.epoch_images[start: end] labels_slice = self.epoch_labels[start: end] if images_slice.shape[0] != batch_size: self.start_new_epoch() return self.next_batch(batch_size) else: return images_slice, labels_slice class CifarDataProvider(DataProvider): """Abstract class for cifar readers""" def __init__(self, save_path=None, validation_size=None, shuffle=None, normalization=None, one_hot=True, **kwargs): """ Args: save_path: `str` validation_set: `bool`. validation_split: `float` or None float: chunk of `train set` will be marked as `validation set`. None: if 'validation set' == True, `validation set` will be copy of `test set` shuffle: `str` or None None: no any shuffling once_prior_train: shuffle train data only once prior train every_epoch: shuffle train data prior every epoch normalization: `str` or None None: no any normalization divide_255: divide all pixels by 255 divide_256: divide all pixels by 256 by_channels: substract mean of every chanel and divide each chanel data by it's standard deviation one_hot: `bool`, return laels one hot encoded """ self._save_path = save_path self.one_hot = one_hot download_data_url(self.data_url, self.save_path) train_fnames, test_fnames = self.get_filenames(self.save_path) # add train and validations datasets images, labels = self.read_cifar(train_fnames) train_meanstd = ImagesDataSet.measure_mean_and_std(images) if validation_size is not None: np.random.seed(DataProvider._SEED) rand_indexes = np.random.permutation(images.shape[0]) valid_indexes = rand_indexes[:validation_size] train_indexes = rand_indexes[validation_size:] self.train = CifarDataSet( images=images[train_indexes], labels=labels[train_indexes], n_classes=self.n_classes, shuffle=shuffle, normalization=normalization, augmentation=self.data_augmentation, meanstd=train_meanstd) self.validation = CifarDataSet( images=images[valid_indexes], labels=labels[valid_indexes], n_classes=self.n_classes, shuffle=None, normalization=normalization, augmentation=False, meanstd=train_meanstd) else: self.train = CifarDataSet( images=images, labels=labels, n_classes=self.n_classes, shuffle=shuffle, normalization=normalization, augmentation=self.data_augmentation, meanstd=train_meanstd) # add test set images, labels = self.read_cifar(test_fnames) self.test = CifarDataSet( images=images, labels=labels, shuffle=None, n_classes=self.n_classes, normalization=normalization, augmentation=False, meanstd=train_meanstd) if validation_size is None: self.validation = self.test @property def save_path(self): if self._save_path is None: self._save_path = os.path.join( tempfile.gettempdir(), 'cifar%d' % self.n_classes) return self._save_path @property def data_url(self): """Return url for downloaded data depends on cifar class""" data_url = ('http://www.cs.toronto.edu/' '~kriz/cifar-%d-python.tar.gz' % self.n_classes) return data_url @property def data_shape(self): return 32, 32, 3 @property def n_classes(self): return self._n_classes def get_filenames(self, save_path): """Return two lists of train and test filenames for dataset""" raise NotImplementedError def read_cifar(self, filenames): if self.n_classes == 10: labels_key = b'labels' elif self.n_classes == 100: labels_key = b'fine_labels' images_res = [] labels_res = [] for fname in filenames: with open(fname, 'rb') as f: images_and_labels = pickle.load(f, encoding='bytes') images = images_and_labels[b'data'] images = images.reshape(-1, 3, 32, 32) images = images.swapaxes(1, 3).swapaxes(1, 2) images_res.append(images) labels_res.append(images_and_labels[labels_key]) images_res = np.vstack(images_res) labels_res = np.hstack(labels_res) if self.one_hot: labels_res = self.labels_to_one_hot(labels_res) return images_res, labels_res class Cifar10DataProvider(CifarDataProvider): _n_classes = 10 data_augmentation = False def get_filenames(self, save_path): sub_save_path = os.path.join(save_path, 'cifar-10-batches-py') train_filenames = [ os.path.join( sub_save_path, 'data_batch_%d' % i) for i in range(1, 6)] test_filenames = [os.path.join(sub_save_path, 'test_batch')] return train_filenames, test_filenames class Cifar100DataProvider(CifarDataProvider): _n_classes = 100 data_augmentation = False def get_filenames(self, save_path): sub_save_path = os.path.join(save_path, 'cifar-100-python') train_filenames = [os.path.join(sub_save_path, 'train')] test_filenames = [os.path.join(sub_save_path, 'test')] return train_filenames, test_filenames class Cifar10AugmentedDataProvider(Cifar10DataProvider): _n_classes = 10 data_augmentation = True class Cifar100AugmentedDataProvider(Cifar100DataProvider): _n_classes = 100 data_augmentation = True ================================================ FILE: Examples/cai_eas/eas/data_providers/downloader.py ================================================ import sys import os import urllib.request import tarfile import zipfile def report_download_progress(count, block_size, total_size): pct_complete = float(count * block_size) / total_size msg = '\r {0:.1%} already downloaded'.format(pct_complete) sys.stdout.write(msg) sys.stdout.flush() def download_data_url(url, download_dir): filename = url.split('/')[-1] file_path = os.path.join(download_dir, filename) if not os.path.exists(file_path): os.makedirs(download_dir, exist_ok=True) print('Download %s to %s' % (url, file_path)) file_path, _ = urllib.request.urlretrieve( url=url, filename=file_path, reporthook=report_download_progress) print('\nExtracting files') if file_path.endswith('.zip'): zipfile.ZipFile(file=file_path, mode='r').extractall(download_dir) elif file_path.endswith(('.tar.gz', '.tgz')): tarfile.open(name=file_path, mode='r:gz').extractall(download_dir) ================================================ FILE: Examples/cai_eas/eas/data_providers/svhn.py ================================================ import tempfile import os import scipy.io import numpy as np from data_providers.base_provider import ImagesDataSet, DataProvider from data_providers.downloader import download_data_url class SVHNDataSet(ImagesDataSet): n_classes = 10 def __init__(self, images, labels, shuffle, normalization): """ Args: images: 4D numpy array labels: 2D or 1D numpy array shuffle: `bool`, should shuffle data or not normalization: `str` or None None: no any normalization divide_255: divide all pixels by 255 divide_256: divide all pixels by 256 by_channels: substract mean of every chanel and divide each chanel data by it's standard deviation """ self._batch_counter, self.epoch_images, self.epoch_labels = 0, None, None self.shuffle = shuffle self.images = images self.labels = labels self.normalization = normalization self.start_new_epoch() def start_new_epoch(self): self._batch_counter = 0 if self.shuffle: self.epoch_images, self.epoch_labels = self.shuffle_images_and_labels( self.images, self.labels) else: self.epoch_images, self.epoch_labels = self.images, self.labels @property def num_examples(self): return self.labels.shape[0] def next_batch(self, batch_size): start = self._batch_counter * batch_size end = (self._batch_counter + 1) * batch_size self._batch_counter += 1 images_slice = self.epoch_images[start: end] labels_slice = self.epoch_labels[start: end] # due to memory error it should be done inside batch if self.normalization is not None: images_slice = self.normalize_images( images_slice, self.normalization) if images_slice.shape[0] != batch_size: self.start_new_epoch() return self.next_batch(batch_size) else: return images_slice, labels_slice class SVHNDataProvider(DataProvider): def __init__(self, save_path=None, validation_size=None, shuffle=False, normalization=None, one_hot=True, include_extra=True, **kwargs): """ Args: save_path: `str` validation_set: `bool`. validation_split: `int` or None float: chunk of `train set` will be marked as `validation set`. None: if 'validation set' == True, `validation set` will be copy of `test set` shuffle: `bool`, should shuffle data or not normalization: `str` or None None: no any normalization divide_255: divide all pixels by 255 divide_256: divide all pixels by 256 by_chanels: substract mean of every chanel and divide each chanel data by it's standart deviation one_hot: `bool`, return lasels one hot encoded """ self._save_path = save_path train_images = [] train_labels = [] if include_extra: train_data_src = ['train', 'extra'] else: train_data_src = ['train'] for part in train_data_src: images, labels = self.get_images_and_labels(part, one_hot) train_images.append(images) train_labels.append(labels) train_images = np.vstack(train_images) if one_hot: train_labels = np.vstack(train_labels) else: train_labels = np.hstack(train_labels) if validation_size is not None: np.random.seed(DataProvider._SEED) rand_indexes = np.random.permutation(train_images.shape[0]) valid_indexes = rand_indexes[:validation_size] train_indexes = rand_indexes[validation_size:] valid_images, valid_labels = train_images[valid_indexes], train_labels[valid_indexes] train_images, train_labels = train_images[train_indexes], train_labels[train_indexes] self.validation = SVHNDataSet( valid_images, valid_labels, False, normalization) self.train = SVHNDataSet( train_images, train_labels, shuffle, normalization) test_images, test_labels = self.get_images_and_labels('test', one_hot) self.test = SVHNDataSet(test_images, test_labels, False, normalization) if validation_size is None: self.validation = self.test def get_images_and_labels(self, name_part, one_hot=False): url = self.data_url + name_part + '_32x32.mat' download_data_url(url, self.save_path) filename = os.path.join(self.save_path, name_part + '_32x32.mat') data = scipy.io.loadmat(filename) images = data['X'].transpose(3, 0, 1, 2) labels = data['y'].reshape((-1)) labels[labels == 10] = 0 if one_hot: labels = self.labels_to_one_hot(labels) return images, labels @property def n_classes(self): return 10 @property def save_path(self): if self._save_path is None: self._save_path = os.path.join(tempfile.gettempdir(), 'svhn') return self._save_path @property def data_url(self): return 'http://ufldl.stanford.edu/housenumbers/' @property def data_shape(self): return 32, 32, 3 ================================================ FILE: Examples/cai_eas/eas/data_providers/utils.py ================================================ from data_providers.cifar import Cifar10DataProvider, Cifar100DataProvider, \ Cifar10AugmentedDataProvider, Cifar100AugmentedDataProvider from data_providers.svhn import SVHNDataProvider def get_data_provider_by_name(name, train_params): """Return required data provider class""" if name == 'C10': return Cifar10DataProvider(**train_params) if name == 'C10+': return Cifar10AugmentedDataProvider(**train_params) if name == 'C100': return Cifar100DataProvider(**train_params) if name == 'C100+': return Cifar100AugmentedDataProvider(**train_params) if name == 'SVHN': return SVHNDataProvider(**train_params) else: print('Sorry, data provider for `%s` dataset ' 'was not implemented yet' % name) exit() ================================================ FILE: Examples/cai_eas/eas/expdir_monitor/__init__.py ================================================ ================================================ FILE: Examples/cai_eas/eas/expdir_monitor/expdir_monitor.py ================================================ import json import os import subprocess from models.utils import RunConfig, get_model_config_by_name, get_model_by_name from data_providers.utils import get_data_provider_by_name import pickle class ExpdirMonitor: def __init__(self, expdir): self.expdir = os.path.realpath(expdir) os.makedirs(self.expdir, exist_ok=True) @property def logs(self): return '%s/logs' % self.expdir @property def checkpoint(self): return '%s/checkpoint' % self.expdir @property def snapshot(self): return '%s/snapshot' % self.expdir @property def output(self): return '%s/output' % self.expdir @property def init(self): return '%s/init' % self.expdir @property def run_config_path(self): return '%s/run.config' % self.expdir @property def net_config_path(self): return '%s/net.config' % self.expdir def load_run_config(self, print_info=False, dataset='C10+'): if os.path.isfile(self.run_config_path): run_config = json.load(open(self.run_config_path, 'r')) else: print('Use Default Run Config for %s' % dataset) run_config = RunConfig.get_default_run_config(dataset) if print_info: print('Run config:') for k, v in run_config.items(): print('\t%s: %s' % (k, v)) return RunConfig(**run_config) def load_init(self): init_path = '%s/init' % self.expdir if os.path.isfile(init_path): return pickle.load(open(self.init, 'rb')) else: return None def load_net_config(self, init, print_info=False): assert os.path.isfile(self.net_config_path), \ 'Net configs do not exist in the given expdir <%s>' % self.expdir net_config_json = json.load(open(self.net_config_path, 'r')) net_config = get_model_config_by_name(net_config_json['name'])() net_config.set_net_from_config(net_config_json, init=init, print_info=print_info) return net_config, net_config_json['name'] def run(self, pure=True, restore=False, test=False, valid=False, valid_size=-1): if not restore: _clear_files = ['logs', 'checkpoint', 'snapshot', 'output'] for file in _clear_files: subprocess.run(['rm', '-rf', os.path.join(self.expdir, file)]) init = self.load_init() dataset = 'C10+' if init is None else init.get('dataset', 'C10+') run_config = self.load_run_config(print_info=(not pure), dataset=dataset) run_config.renew_logs = False if valid_size > 0: run_config.validation_size = valid_size data_provider = get_data_provider_by_name(run_config.dataset, run_config.get_config()) net_config, model_name = self.load_net_config(init, print_info=(not pure)) model = get_model_by_name(model_name)(self.expdir, data_provider, run_config, net_config, pure=pure) start_epoch = 1 if restore: model.load_model() epoch_info_file = '%s/checkpoint/epoch.info' % self.expdir if os.path.isfile(epoch_info_file): start_epoch = json.load(open(epoch_info_file, 'r'))['epoch'] if not pure: print('start epoch: %d' % start_epoch) if test: print('Testing...') loss, accuracy = model.test(data_provider.test, batch_size=200) print('mean cross_entropy: %f, mean accuracy: %f' % (loss, accuracy)) json.dump({'test_loss': '%s' % loss, 'test_acc': '%s' % accuracy}, open(self.output, 'w')) elif valid: print('validating...') loss, accuracy = model.test(data_provider.validation, batch_size=200) print('mean cross_entropy: %f, mean accuracy: %f' % (loss, accuracy)) json.dump({'valid_loss': '%s' % loss, 'valid_acc': '%s' % accuracy}, open(self.output, 'w')) elif pure: model.pure_train() loss, accuracy = model.test(data_provider.validation, batch_size=200) json.dump({'valid_loss': '%s' % loss, 'valid_acc': '%s' % accuracy}, open(self.output, 'w')) model.save_init(self.snapshot, print_info=(not pure)) model.save_config(self.expdir, print_info=(not pure)) else: # train the model print('Data provider train images: ', data_provider.train.num_examples) model.train_all_epochs(start_epoch) print('Data provider test images: ', data_provider.test.num_examples) print('Testing...') loss, accuracy = model.test(data_provider.test, batch_size=200) print('mean cross_entropy: %f, mean accuracy: %f' % (loss, accuracy)) json.dump({'test_loss': '%s' % loss, 'test_acc': '%s' % accuracy}, open(self.output, 'w')) model.save_init(self.snapshot, print_info=(not pure)) model.save_config(self.expdir, print_info=(not pure)) return accuracy ================================================ FILE: Examples/cai_eas/eas/experiment.json ================================================ { "name": "./cai_eas/eas/experiment.json", "proposer": "eas", "script": "client.py", "resource": "gpu", "n_parallel": 2, "parameter_config": [ ], "target":"max" } ================================================ FILE: Examples/cai_eas/eas/models/__init__.py ================================================ ================================================ FILE: Examples/cai_eas/eas/models/basic_model.py ================================================ import os import shutil import tensorflow as tf import numpy as np import time from datetime import timedelta import json import pickle class BasicModel: def __init__(self, path, data_provider, run_config, net_config, pure=False, only_forward=False): if only_forward: pure = True self.graph = tf.Graph() self.data_provider = data_provider self._path = path self.run_config = run_config self.net_config = net_config self.data_shape = data_provider.data_shape self.n_classes = data_provider.n_classes self._save_path, self._logs_path = None, None self.batches_step = 0 self.cross_entropy, self.train_step, self.accuracy = None, None, None with self.graph.as_default(): self._define_inputs() self._build_graph(only_forward=only_forward) self.global_variables_initializer = tf.global_variables_initializer() if not pure: self._count_trainable_params() self.saver = tf.train.Saver() self._initialize_session(set_logs=(not pure)) @property def save_path(self): if self._save_path is None: save_path = '%s/checkpoint' % self._path os.makedirs(save_path, exist_ok=True) save_path = os.path.join(save_path, 'model.ckpt') self._save_path = save_path return self._save_path @property def logs_path(self): if self._logs_path is None: logs_path = '%s/logs' % self._path if self.run_config.renew_logs: shutil.rmtree(logs_path, ignore_errors=True) os.makedirs(logs_path, exist_ok=True) self._logs_path = logs_path return self._logs_path def _build_graph(self, only_forward=False): raise NotImplementedError def _define_inputs(self): shape = [None] shape.extend(self.data_shape) self.images = tf.placeholder( tf.float32, shape=shape, name='input_images') self.labels = tf.placeholder( tf.float32, shape=[None, self.n_classes], name='labels') self.learning_rate = tf.placeholder( tf.float32, shape=[], name='learning_rate') self.is_training = tf.placeholder(tf.bool, shape=[], name='is_training') def _initialize_session(self, set_logs=True): """Initialize session, variables""" config = tf.ConfigProto() # restrict model GPU memory utilization to min required config.gpu_options.allow_growth = True self.sess = tf.Session(graph=self.graph, config=config) self.sess.run(self.global_variables_initializer) if set_logs: logswriter = tf.summary.FileWriter self.summary_writer = logswriter(self.logs_path, graph=self.graph) def train_all_epochs(self, start_epoch=1): n_epochs = self.run_config.n_epochs learning_rate = self.run_config.init_lr batch_size = self.run_config.batch_size total_start_time = time.time() for epoch in range(start_epoch, n_epochs + 1): print('\n', '-' * 30, 'Train epoch: %d' % epoch, '-' * 30, '\n') start_time = time.time() new_lr = self.run_config.learning_rate(epoch) if new_lr != learning_rate: learning_rate = new_lr print('Decrease learning rate, new lr = %f' % learning_rate) print('Training...') loss, acc = self.train_one_epoch( self.data_provider.train, batch_size, learning_rate) # save logs about "loss" and "acc" if the option is true if self.run_config.should_save_logs: self.log_loss_accuracy(loss, acc, epoch, prefix='train') if self.run_config.validation_frequency and epoch % self.run_config.validation_frequency == 0: print('Validation...') loss, acc = self.test(self.data_provider.validation, batch_size) if self.run_config.should_save_logs: self.log_loss_accuracy(loss, acc, epoch, prefix='valid') if self.run_config.should_save_model: self.save_model() json.dump({'epoch': epoch + 1}, open('%s/checkpoint/epoch.info' % self._path, 'w')) time_per_epoch = time.time() - start_time seconds_left = int((n_epochs - epoch) * time_per_epoch) print('Time per epoch: %s, Est. complete in: %s' % ( str(timedelta(seconds=time_per_epoch)), str(timedelta(seconds=seconds_left)))) if self.run_config.should_save_model: self.save_model() total_training_time = time.time() - total_start_time print('\nTotal training time: %s' % str(timedelta( seconds=total_training_time))) def train_one_epoch(self, data, batch_size, learning_rate): num_examples = data.num_examples total_loss = [] total_accuracy = [] for i in range(num_examples // batch_size): batch = data.next_batch(batch_size) images, labels = batch feed_dict = { self.images: images, self.labels: labels, self.learning_rate: learning_rate, self.is_training: True, } fetches = [self.train_step, self.cross_entropy, self.accuracy] result = self.sess.run(fetches, feed_dict=feed_dict) _, loss, accuracy = result total_loss.append(loss) total_accuracy.append(accuracy) # save logs about "loss" and "acc" if the option is true if self.run_config.should_save_logs: self.batches_step += 1 self.log_loss_accuracy( loss, accuracy, self.batches_step, prefix='per_batch', should_print=False) mean_loss = np.mean(total_loss) mean_accuracy = np.mean(total_accuracy) return mean_loss, mean_accuracy def test(self, data, batch_size): num_examples = data.num_examples total_loss = [] total_accuracy = [] for i in range(num_examples // batch_size): batch = data.next_batch(batch_size) feed_dict = { self.images: batch[0], self.labels: batch[1], self.is_training: False, } fetches = [self.cross_entropy, self.accuracy] loss, accuracy = self.sess.run(fetches, feed_dict=feed_dict) total_loss.append(loss) total_accuracy.append(accuracy) mean_loss = np.mean(total_loss) mean_accuracy = np.mean(total_accuracy) remain_num = num_examples % batch_size if remain_num != 0: batch = data.next_batch(remain_num) feed_dict = { self.images: batch[0], self.labels: batch[1], self.is_training: False, } fetches = [self.cross_entropy, self.accuracy] loss, accuracy = self.sess.run(fetches, feed_dict=feed_dict) mean_loss = (mean_loss * (num_examples - remain_num) + loss * remain_num) / num_examples mean_accuracy = (mean_accuracy * (num_examples - remain_num) + accuracy * remain_num) / num_examples return mean_loss, mean_accuracy def save_config(self, save_path, print_info=True): os.makedirs(save_path, exist_ok=True) net_save_path = os.path.join(save_path, 'net.config') json.dump(self.net_config.get_config(), open(net_save_path, 'w'), indent=4) if print_info: print('Network configs dump to %s' % save_path) run_save_path = os.path.join(save_path, 'run.config') json.dump(self.run_config.get_config(), open(run_save_path, 'w'), indent=4) if print_info: print('Run configs dump to %s' % run_save_path) def save_init(self, save_path, print_info=True): os.makedirs(save_path, exist_ok=True) save_path = os.path.join(save_path, 'init') to_save_init = self.net_config.renew_init(self) to_save_init['dataset'] = self.run_config.dataset pickle.dump(to_save_init, open(save_path, 'wb')) if print_info: print('Network weights dump to %s' % save_path) def pure_train(self): n_epochs = self.run_config.n_epochs batch_size = self.run_config.batch_size for epoch in range(1, n_epochs + 1): learning_rate = self.run_config.learning_rate(epoch) # train one epoch data = self.data_provider.train num_examples = data.num_examples for i in range(num_examples // batch_size): batch = data.next_batch(batch_size) images, labels = batch feed_dict = { self.images: images, self.labels: labels, self.learning_rate: learning_rate, self.is_training: True, } fetches = self.train_step self.sess.run(fetches, feed_dict=feed_dict) def save_model(self, global_step=None): self.saver.save(self.sess, self.save_path, global_step=global_step) def load_model(self): try: self.saver.restore(self.sess, self.save_path) except Exception: raise IOError('Failed to to load model ' 'from save path: %s' % self.save_path) print('Successfully load model from save path: %s' % self.save_path) def log_loss_accuracy(self, loss, accuracy, epoch, prefix, should_print=True, write2file=True): if should_print: print('mean cross_entropy: %f, mean accuracy: %f' % (loss, accuracy)) summary = tf.Summary(value=[ tf.Summary.Value( tag='loss_%s' % prefix, simple_value=float(loss)), tf.Summary.Value( tag='accuracy_%s' % prefix, simple_value=float(accuracy)) ]) self.summary_writer.add_summary(summary, epoch) if write2file and prefix == 'valid': with open('%s/console.txt' % self.logs_path, 'a') as fout: fout.write('%d: mean cross_entropy: %f, mean accuracy: %f\n' % (epoch, loss, accuracy)) @staticmethod def _count_trainable_params(): total_parameters = 0 for variable in tf.trainable_variables(): shape = variable.get_shape() variable_parameters = 1 for dim in shape: variable_parameters *= dim.value total_parameters += variable_parameters print('Total training params: %.2fM' % (total_parameters / 1e6)) @staticmethod def dropout(_input, keep_prob, is_training): if keep_prob < 1: output = tf.cond( is_training, lambda: tf.nn.dropout(_input, keep_prob), lambda: _input ) else: output = _input return output @staticmethod def weight_variable(shape, name, initializer): return tf.get_variable( name, shape=shape, initializer=initializer, ) @staticmethod def avg_pool(_input, k=2, s=2): ksize = [1, k, k, 1] strides = [1, s, s, 1] padding = 'VALID' # if stride = 1, keep the image size unchanged if s == 1: padding = 'SAME' output = tf.nn.avg_pool(_input, ksize, strides, padding) return output @staticmethod def max_pool(_input, k=2, s=2): ksize = [1, k, k, 1] strides = [1, s, s, 1] padding = 'VALID' # if stride = 1, keep the image size unchanged if s == 1: padding = 'SAME' output = tf.nn.max_pool(_input, ksize, strides, padding) return output @staticmethod def conv2d(_input, out_features, kernel_size, strides=1, padding='SAME', param_initializer=None): if kernel_size == 1: padding = 'VALID' in_features = int(_input.get_shape()[-1]) if not param_initializer: param_initializer = {} kernel = BasicModel.weight_variable( [kernel_size, kernel_size, in_features, out_features], name='kernel', initializer=param_initializer.get('kernel', tf.contrib.layers.variance_scaling_initializer()) ) output = tf.nn.conv2d(_input, kernel, [1, strides, strides, 1], padding) return output @staticmethod def fc_layer(_input, out_units, use_bias=False, param_initializer=None): features_total = int(_input.get_shape()[-1]) if not param_initializer: param_initializer = {} W = BasicModel.weight_variable( [features_total, out_units], name='W', initializer=param_initializer.get('W', tf.contrib.layers.xavier_initializer()) ) output = tf.matmul(_input, W) if use_bias: bias = BasicModel.weight_variable( [out_units], name='bias', initializer=param_initializer.get('bias', tf.constant_initializer([0.0] * out_units)) ) output += bias return output @staticmethod def batch_norm(_input, is_training, epsilon=1e-3, decay=0.999, param_initializer=None): output = tf.contrib.layers.batch_norm( _input, scale=True, is_training=is_training, param_initializers=param_initializer, updates_collections=None, epsilon=epsilon, decay=decay) return output @staticmethod def activation(_input, activation='relu'): if activation == 'relu': return tf.nn.relu(_input) elif activation == 'tanh': return tf.tanh(_input) elif activation == 'sigmoid': return tf.sigmoid(_input) elif activation == 'softmax': return tf.nn.softmax(_input) elif activation is None: return _input else: raise ValueError('Do not support %s' % activation) @staticmethod def build_optimizer(learning_rate, opt_name, opt_param): if opt_name == 'momentum': return tf.train.MomentumOptimizer(learning_rate, **opt_param) elif opt_name == 'adam': return tf.train.AdamOptimizer(learning_rate, **opt_param) else: raise ValueError('Do not support the optimizer type: %s' % opt_name) @staticmethod def flatten(_input): input_shape = _input.shape.as_list() if len(input_shape) != 2: return tf.reshape(_input, [-1, np.prod(input_shape[1:])]) else: return _input ================================================ FILE: Examples/cai_eas/eas/models/convnet.py ================================================ from models.basic_model import BasicModel from data_providers.base_provider import DataProvider from models.layers import ConvLayer, PoolLayer, FCLayer from models.layer_cascade import LayerCascade import tensorflow as tf import numpy as np class SimpleConvnetConfig: def __init__(self): self.net_config = { 'weight_decay': None, 'bn_epsilon': None, 'bn_decay': None, 'drop_scheme': None, } self.layer_cascade = None @property def weight_decay(self): return self.net_config['weight_decay'] @property def bn_epsilon(self): return self.net_config['bn_epsilon'] @property def bn_decay(self): return self.net_config['bn_decay'] @property def drop_scheme(self): return self.net_config['drop_scheme'] @property def depth(self): return self.layer_cascade.depth def get_config(self): return { 'name': 'SimpleConvnet', **self.net_config, 'layer_cascade': self.layer_cascade.get_config() } def copy(self): net_config = SimpleConvnetConfig() net_config.set_net_from_config(self.get_config(), self.renew_init(None), print_info=False) return net_config def renew_init(self, convnet): return { 'layer_cascade': self.layer_cascade.renew_init(convnet) } def set_standard_convnet(self, data_provider: DataProvider, conv_blocks_config, fc_block_config, weight_decay, drop_scheme, bn_epsilon, bn_decay, print_info=True, **kwargs): self.net_config = { 'weight_decay': weight_decay, 'bn_epsilon': bn_epsilon, 'bn_decay': bn_decay, 'drop_scheme': drop_scheme, } image_size = data_provider.data_shape[0] layers = [] conv_id = 0 for _i, block_config in enumerate(conv_blocks_config): num_layers, kernel_size, filter_num = block_config for _j in range(num_layers): keep_prob = 1.0 if 'conv' in drop_scheme['type']: keep_prob = 1.0 if _i + _j == 0 else drop_scheme.get('conv_drop', 1.0) conv_layer = ConvLayer('conv_%d' % conv_id, filter_num, kernel_size=kernel_size, keep_prob=keep_prob, pre_activation=False) conv_id += 1 layers.append(conv_layer) if _i < len(conv_blocks_config) - 1: keep_prob = 1.0 if 'pool' in drop_scheme['type']: keep_prob = drop_scheme.get('pool_drop', 1.0) pool_layer = PoolLayer('pool_%d' % _i, 'max', keep_prob=keep_prob, pre_activation=False) layers.append(pool_layer) image_size = image_size // 2 global_avg_pool = PoolLayer('pool_%d' % len(conv_blocks_config), 'avg', kernel_size=image_size, strides=image_size, pre_activation=False) layers.append(global_avg_pool) for _i, units in enumerate(fc_block_config): keep_prob = 1.0 if 'fc' in drop_scheme['type']: keep_prob = drop_scheme.get('fc_drop', 1.0) fc_layer = FCLayer('fc_%d' % _i, units, keep_prob=keep_prob) layers.append(fc_layer) final_fc_layer = FCLayer('fc_%d' % len(fc_block_config), data_provider.n_classes, use_bn=False, use_bias=True, activation=None) layers.append(final_fc_layer) self.layer_cascade = LayerCascade('SimpleConvNet', layers) if print_info: pass return self def set_net_from_config(self, net_config_json, init=None, print_info=True): for key in self.net_config.keys(): self.net_config[key] = net_config_json[key] init = init['layer_cascade'] if init is not None else None self.layer_cascade = LayerCascade.set_from_config(net_config_json['layer_cascade'], init) if print_info: pass return self def widen(self, layer_idx, new_width, widen_type='output_dim', noise=None): change_out_dim, _, _ = self.layer_cascade.widen(layer_idx, new_width, widen_type, noise) if change_out_dim: raise ValueError('Can not change the final logits number') def deepen(self, layer_idx, new_layer_config): return self.layer_cascade.deepen(layer_idx, new_layer_config, None) def set_identity4deepen(self, to_set_layers, data_provider, batch_size, batch_num=1, strict=True, noise=None): """ to_set_layers = [(new_layer, prev_layer), ...] """ task_list = {} for new_layer, prev_layer in to_set_layers: if new_layer.ready: continue if new_layer.use_bn and strict: task_id = id(prev_layer) if task_id in task_list: task_list[task_id][1].append(new_layer) else: task_list[task_id] = (prev_layer, [new_layer]) else: new_layer.set_identity_layer(strict=strict, noise=noise) if len(task_list) > 0: model = SimpleConvnet(None, data_provider, None, net_config=self, only_forward=True) task_list = list(task_list.values()) fetches = [prev_layer.output_op for prev_layer, _ in task_list] statistics = [[0, 0] for _ in task_list] for _i in range(batch_num): input_images, _ = data_provider.train.next_batch(batch_size) outputs = model.sess.run(fetches, feed_dict={model.images: input_images, model.is_training: False}) for _j, out in enumerate(outputs): out = out.astype('float32') axis = tuple(range(len(out.shape) - 1)) mean = np.mean(out, axis=axis, keepdims=True) variance = np.mean(np.square(out - mean), axis=axis, keepdims=True) mean, variance = np.squeeze(mean), np.squeeze(variance) statistics[_j][0] += mean statistics[_j][1] += variance for _j, (prev_layer, new_layers) in enumerate(task_list): mean, variance = statistics[_j][0] / batch_num, statistics[_j][1] / batch_num for new_layer in new_layers: if new_layer.ready: continue param = { 'moving_mean': mean, 'moving_variance': variance, 'epsilon': self.bn_epsilon, } new_layer.set_identity_layer(strict=strict, param=param, noise=noise) class SimpleConvnet(BasicModel): def _build_graph(self, only_forward=False): _input = self.images output = _input output = self.net_config.layer_cascade.build(output, self, store_output_op=only_forward) if not only_forward: logits = output with tf.variable_scope('L2_Loss'): l2_loss = tf.add_n([tf.nn.l2_loss(var) for var in tf.trainable_variables()]) prediction = tf.nn.softmax(logits) # losses cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits( logits=logits, labels=self.labels)) self.cross_entropy = cross_entropy # optimizer and train step optimizer = self.build_optimizer(self.learning_rate, self.run_config.opt_config[0], self.run_config.opt_config[1]) self.train_step = optimizer.minimize( cross_entropy + l2_loss * self.net_config.weight_decay) correct_prediction = tf.equal( tf.argmax(prediction, 1), tf.argmax(self.labels, 1)) self.accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32)) ================================================ FILE: Examples/cai_eas/eas/models/dense_net.py ================================================ import tensorflow as tf from models.basic_model import BasicModel from models.layers import ConvLayer, FCLayer, PoolLayer, get_magnifier, apply_noise from data_providers.base_provider import DataProvider from models.layer_cascade import LayerCascade from models.layer_multi_branch import LayerMultiBranch import numpy as np def get_block_by_name(name): if name == 'transition': return TransitionBlock elif name == 'dense_block': return DenseBlock else: raise ValueError('Unsupported block type: %s' % name) class TransitionBlock(LayerCascade): def get_config(self): return { 'name': 'transition', **super(TransitionBlock, self).get_config(), } @staticmethod def set_from_config(config_json, init=None, return_class=True): _id, layers = LayerCascade.set_from_config(config_json, init, return_class=False) return TransitionBlock(_id, layers) def prev_widen(self, indices, magnifier, noise=None): super(TransitionBlock, self).prev_widen(indices, magnifier, noise=noise) return False, None, None def widen(self, loc, new_width, widen_type='output_dim', noise=None, input_dim=None): return super(TransitionBlock, self).widen(loc['layer'], new_width, widen_type, noise=noise) def deepen(self, loc, new_layer_config, input_dim): return super(TransitionBlock, self).deepen(loc['layer'], new_layer_config, input_dim) class DenseBlock: def __init__(self, _id, miniblocks): self._id = _id self.miniblocks = miniblocks self.output_op = None @property def id(self): return self._id @id.setter def id(self, value): self._id = value @property def depth(self): depth = 0 for miniblock in self.miniblocks: depth += miniblock.depth return depth def out_features_dim(self, in_features_dim): out_features_dim = in_features_dim for miniblock in self.miniblocks: out_features_dim += miniblock.out_features_dim return out_features_dim def build(self, _input, densenet, store_output_op=False): output = _input with tf.variable_scope(self._id): for miniblock in self.miniblocks: comp_out = miniblock.build(output, densenet, store_output_op=store_output_op) output = tf.concat(axis=3, values=(output, comp_out)) if store_output_op: self.output_op = output return output def get_config(self): return { 'name': 'dense_block', '_id': self._id, 'miniblocks': [miniblock.get_config() for miniblock in self.miniblocks] } def renew_init(self, densenet): return { '_id': self._id, 'miniblocks': [miniblock.renew_init(densenet) for miniblock in self.miniblocks] } @staticmethod def set_from_config(config_json, init=None): _id = config_json['_id'] miniblocks = [] for _i, miniblock_config in enumerate(config_json['miniblocks']): miniblock_init = init['miniblocks'][_i] if init is not None else None miniblock = LayerMultiBranch.set_from_config(miniblock_config, miniblock_init) miniblocks.append(miniblock) return DenseBlock(_id, miniblocks) """ Network Transformation Operations """ def insert_miniblock(self, idx, miniblock_config, input_dim, noise=None, scheme=0): assert 0 <= idx < len(self.miniblocks), 'Invalid miniblock index %d' % idx if miniblock_config['bc_mode']: # DenseNet-BC if scheme == 0: copy_idx = idx copy_miniblock = self.miniblocks[copy_idx] new_in_bottle = copy_miniblock.in_bottle.copy() new_in_layer = new_in_bottle.layers[0] pad_kernel_shape = list(new_in_layer.init['kernel'].shape) pad_kernel_shape[2] = copy_miniblock.out_features_dim new_in_layer.init['kernel'] = \ np.concatenate([new_in_layer.init['kernel'], np.zeros(pad_kernel_shape)], axis=2) if new_in_layer.pre_activation and new_in_layer.use_bn: new_in_layer.init['beta'] = \ np.concatenate([new_in_layer.init['beta'], np.zeros([copy_miniblock.out_features_dim])]) new_in_layer.init['gamma'] = \ np.concatenate([new_in_layer.init['gamma'], np.ones([copy_miniblock.out_features_dim])]) new_in_layer.init['moving_mean'] = \ np.concatenate([new_in_layer.init['moving_mean'], np.zeros([copy_miniblock.out_features_dim])]) new_in_layer.init['moving_variance'] = \ np.concatenate([new_in_layer.init['moving_variance'], np.ones([copy_miniblock.out_features_dim])]) new_in_layer.init['kernel'] = apply_noise(new_in_layer.init['kernel'], noise.get('wider')) if copy_miniblock.out_bottle is None: new_branches, indices = copy_miniblock.remapped_branches(noise=noise) new_miniblock = LayerMultiBranch('M_%d' % (idx + 2), new_branches, merge=copy_miniblock.merge, in_bottle=new_in_bottle) old_size = len(indices) indices = np.concatenate([np.arange(old_size), indices]) magnifier = get_magnifier(old_size, indices) prev_miniblock_out_dim = input_dim for _i in range(0, idx): prev_miniblock_out_dim += self.miniblocks[_i].out_features_dim indices = np.concatenate([ np.arange(prev_miniblock_out_dim), indices + prev_miniblock_out_dim, ]) magnifier = np.concatenate([ [1] * prev_miniblock_out_dim, magnifier, ]) prev_miniblock_out_dim += old_size for _i in range(idx + 1, len(self.miniblocks)): miniblock_out_dim = self.miniblocks[_i].out_features_dim self.miniblocks[_i].id = 'M_%d' % (_i + 2) self.miniblocks[_i].prev_widen(indices, magnifier, noise=noise) indices = np.concatenate([ indices, np.arange(prev_miniblock_out_dim, prev_miniblock_out_dim + miniblock_out_dim) ]) magnifier = np.concatenate([ magnifier, [1] * miniblock_out_dim, ]) prev_miniblock_out_dim += miniblock_out_dim self.miniblocks = self.miniblocks[:idx + 1] + [new_miniblock] + self.miniblocks[idx + 1:] return indices, magnifier else: raise NotImplementedError else: # identity scheme raise NotImplementedError else: # DenseNet without BC raise NotImplementedError def prev_widen(self, indices, magnifier, noise=None): old_size = np.max(indices) + 1 prev_miniblock_out_dim = old_size for miniblock in self.miniblocks: miniblock_out_dim = miniblock.out_features_dim miniblock.prev_widen(indices, magnifier, noise=noise) indices = np.concatenate([ indices, np.arange(prev_miniblock_out_dim, prev_miniblock_out_dim + miniblock_out_dim) ]) magnifier = np.concatenate([ magnifier, [1] * miniblock_out_dim, ]) prev_miniblock_out_dim += miniblock_out_dim return True, indices, magnifier def widen(self, loc, new_width, widen_type='output_dim', noise=None, input_dim=3): miniblock_idx = loc['miniblock'] miniblock = self.miniblocks[miniblock_idx] old_miniblock_out_dim = miniblock.out_features_dim change_out_dim, indices, magnifier = miniblock.widen(loc, new_width, widen_type, noise=noise) if change_out_dim: prev_miniblock_out_dim = input_dim for _i in range(0, miniblock_idx): prev_miniblock_out_dim += self.miniblocks[_i].out_features_dim indices = np.concatenate([ np.arange(prev_miniblock_out_dim), indices + prev_miniblock_out_dim, ]) magnifier = np.concatenate([ [1] * prev_miniblock_out_dim, magnifier, ]) prev_miniblock_out_dim += old_miniblock_out_dim for _i in range(miniblock_idx + 1, len(self.miniblocks)): miniblock_out_dim = self.miniblocks[_i].out_features_dim self.miniblocks[_i].prev_widen(indices, magnifier, noise=noise) indices = np.concatenate([ indices, np.arange(prev_miniblock_out_dim, prev_miniblock_out_dim + miniblock_out_dim) ]) magnifier = np.concatenate([ magnifier, [1] * miniblock_out_dim, ]) prev_miniblock_out_dim += miniblock_out_dim return True, indices, magnifier else: return False, None, None def deepen(self, loc, new_layer_config, input_dim): miniblock_idx = loc['miniblock'] for _i in range(0, miniblock_idx): input_dim += self.miniblocks[_i].out_features_dim return self.miniblocks[miniblock_idx].deepen(loc, new_layer_config, input_dim) class DenseNetConfig: def __init__(self): self.net_config = { 'model_type': None, 'weight_decay': None, 'first_ratio': None, 'reduction': None, 'bc_ratio': None, 'bn_epsilon': None, 'bn_decay': None, 'pre_activation': None, } self.blocks = None @property def model_type(self): return self.net_config['model_type'] @property def weight_decay(self): return self.net_config['weight_decay'] @property def first_ratio(self): return self.net_config['first_ratio'] @property def reduction(self): return self.net_config['reduction'] @property def bc_ratio(self): return self.net_config['bc_ratio'] @property def bn_epsilon(self): return self.net_config['bn_epsilon'] @property def bn_decay(self): return self.net_config['bn_decay'] @property def depth(self): depth = 0 for block in self.blocks: depth += block.depth return depth @property def average_growth_rate(self): growth_rate_list = [] for block in self.blocks: if isinstance(block, DenseBlock): for miniblock in block.miniblocks: growth_rate = miniblock.out_features_dim growth_rate_list.append(growth_rate) return np.mean(growth_rate_list) def copy(self): net_config = DenseNetConfig() net_config.set_net_from_config(self.get_config(), self.renew_init(None), print_info=False) return net_config def get_config(self): return { 'name': 'DenseNet', **self.net_config, 'blocks': [block.get_config() for block in self.blocks] } def renew_init(self, densenet): return { 'blocks': [block.renew_init(densenet) for block in self.blocks] } def set_standard_dense_net(self, data_provider: DataProvider, growth_rate, depth, total_blocks, keep_prob, weight_decay, model_type, first_ratio=2, reduction=1.0, bc_ratio=4, bn_epsilon=1e-5, bn_decay=0.9, print_info=True, pre_activation=True, **kwargs): self.net_config = { 'model_type': model_type, 'weight_decay': weight_decay, 'first_ratio': first_ratio, 'reduction': reduction, 'bc_ratio': bc_ratio, 'bn_epsilon': bn_epsilon, 'bn_decay': bn_decay, 'pre_activation': pre_activation, } image_size = data_provider.data_shape[0] first_output_features = growth_rate * first_ratio bc_mode = (model_type == 'DenseNet-BC') layers_per_block = (depth - (total_blocks + 1)) // total_blocks if bc_mode: layers_per_block = layers_per_block // 2 # initial conv if pre_activation: init_conv_layer = ConvLayer('conv_0', first_output_features, kernel_size=3, activation=None, use_bn=False) else: init_conv_layer = ConvLayer('conv_0', first_output_features, kernel_size=3, pre_activation=False) init_transition = TransitionBlock('T_0_first', [init_conv_layer]) self.blocks = [init_transition] # Dense Blocks in_features_dim = first_output_features for block_idx in range(1, total_blocks + 1): miniblocks = [] block_id = 'D_%d' % block_idx for miniblock_idx in range(1, layers_per_block + 1): miniblock_id = 'M_%d' % miniblock_idx in_bottle = None if bc_mode: bottelneck_layer = ConvLayer('conv_0', growth_rate * bc_ratio, kernel_size=1, keep_prob=keep_prob, pre_activation=pre_activation) in_bottle = LayerCascade('in_bottle', [bottelneck_layer]) branch_0 = LayerCascade('B_0', [ ConvLayer('conv_0', growth_rate, kernel_size=3, keep_prob=keep_prob, pre_activation=pre_activation) ]) miniblocks.append(LayerMultiBranch(miniblock_id, [branch_0], in_bottle=in_bottle)) dense_block = DenseBlock(block_id, miniblocks) self.blocks += [dense_block] out_features_dim = dense_block.out_features_dim(in_features_dim) if block_idx != total_blocks: out_features_dim = int(out_features_dim * reduction) transition_id = 'T_%d_middle' % block_idx conv_layer = ConvLayer('conv_0', out_features_dim, kernel_size=1, keep_prob=keep_prob, pre_activation=pre_activation) avg_pool_layer = PoolLayer('pool_0', 'avg', kernel_size=2, strides=2) transition = TransitionBlock(transition_id, [conv_layer, avg_pool_layer]) self.blocks.append(transition) image_size = image_size // 2 in_features_dim = out_features_dim # Transition to classes if pre_activation: global_avg_pool = PoolLayer('pool_0', 'avg', kernel_size=image_size, strides=image_size, activation='relu', use_bn=True) else: global_avg_pool = PoolLayer('pool_0', 'avg', kernel_size=image_size, strides=image_size, pre_activation=False) final_fc_layer = FCLayer('fc_0', data_provider.n_classes, use_bn=False, use_bias=True, activation=None) transition_to_classes = TransitionBlock('T_to_classes', [global_avg_pool, final_fc_layer]) self.blocks.append(transition_to_classes) # print information about the network if print_info: print('Set Standard %s' % model_type) if not bc_mode: print('Build %s model with %d blocks, ' '%d composite layers each.' % (model_type, total_blocks, layers_per_block)) if bc_mode: print('Build %s model with %d blocks, ' '%d bottleneck layers and %d composite layers each.' % ( model_type, total_blocks, layers_per_block, layers_per_block)) print('Reduction at transition layers: %.2f' % reduction) return self def set_net_from_config(self, net_config_json, init=None, print_info=True): # load config and init (if exist) for key in self.net_config.keys(): self.net_config[key] = net_config_json[key] self.blocks = [] for _i, block_config in enumerate(net_config_json['blocks']): block_init = init['blocks'][_i] if init is not None else None block = get_block_by_name(block_config['name']) self.blocks.append(block.set_from_config(block_config, block_init)) if print_info: print('Set DenseNet from config:') for k, v in self.net_config.items(): print('\t%s: %s' % (k, v)) print('\t%s: %d' % ('depth', self.depth)) return self def widen(self, loc, new_width, widen_type='output_dim', noise=None, image_channel=3): """ widen_type: "output_dim" or "kernel" """ block_idx = loc['block'] if block_idx == 0: input_dim = image_channel elif isinstance(self.blocks[block_idx - 1], TransitionBlock): input_dim = self.blocks[block_idx - 1].out_features_dim else: input_dim = self.blocks[block_idx - 1].out_features_dim(self.blocks[block_idx - 2].out_features_dim) change_out_dim, indices, magnifier = \ self.blocks[block_idx].widen(loc, new_width, widen_type, noise=noise, input_dim=input_dim) while change_out_dim: change_out_dim, indices, magnifier = self.blocks[block_idx + 1].prev_widen(indices, magnifier, noise=noise) block_idx += 1 def deepen(self, loc, new_layer_config, image_channel=3): new_layer_config['pre_activation'] = self.net_config['pre_activation'] block_idx = loc['block'] if block_idx == 0: input_dim = image_channel elif isinstance(self.blocks[block_idx - 1], TransitionBlock): input_dim = self.blocks[block_idx - 1].out_features_dim else: input_dim = self.blocks[block_idx - 1].out_features_dim(self.blocks[block_idx - 2].out_features_dim) return self.blocks[block_idx].deepen(loc, new_layer_config, input_dim) def set_identity4deepen(self, to_set_layers, data_provider, batch_size, batch_num=1, strict=True, noise=None): """ to_set_layers = [(new_layer, prev_layer), ...] """ task_list = {} for new_layer, prev_layer in to_set_layers: if new_layer.ready: continue if new_layer.use_bn and strict: task_id = id(prev_layer) if task_id in task_list: task_list[task_id][1].append(new_layer) else: task_list[task_id] = (prev_layer, [new_layer]) else: new_layer.set_identity_layer(strict=strict, noise=noise) if len(task_list) > 0: model = DenseNet(None, data_provider, None, net_config=self, only_forward=True) task_list = list(task_list.values()) fetches = [prev_layer.output_op for prev_layer, _ in task_list] statistics = [[0, 0] for _ in task_list] for _i in range(batch_num): input_images, _ = data_provider.train.next_batch(batch_size) outputs = model.sess.run(fetches, feed_dict={model.images: input_images, model.is_training: False}) for _j, out in enumerate(outputs): out = out.astype('float32') axis = tuple(range(len(out.shape) - 1)) mean = np.mean(out, axis=axis, keepdims=True) variance = np.mean(np.square(out - mean), axis=axis, keepdims=True) mean, variance = np.squeeze(mean), np.squeeze(variance) statistics[_j][0] += mean statistics[_j][1] += variance for _j, (prev_layer, new_layers) in enumerate(task_list): mean, variance = statistics[_j][0] / batch_num, statistics[_j][1] / batch_num for new_layer in new_layers: if new_layer.ready: continue param = { 'moving_mean': mean, 'moving_variance': variance, 'epsilon': self.bn_epsilon, } new_layer.set_identity_layer(strict=strict, param=param, noise=noise) def insert_miniblock(self, loc, miniblock_config, image_channel=3, noise=None): block_idx = loc['block'] if block_idx == 0: input_dim = image_channel elif isinstance(self.blocks[block_idx - 1], TransitionBlock): input_dim = self.blocks[block_idx - 1].out_features_dim else: input_dim = self.blocks[block_idx - 1].out_features_dim(self.blocks[block_idx - 2].out_features_dim) assert isinstance(self.blocks[block_idx], DenseBlock), 'Invalid' indices, magnifier = \ self.blocks[block_idx].insert_miniblock(loc['miniblock'], miniblock_config, input_dim, noise=noise) self.blocks[block_idx + 1].prev_widen(indices, magnifier, noise=noise) class DenseNet(BasicModel): def _build_graph(self, only_forward=False): _input = self.images output = _input # building blocks (transition and dense) for block in self.net_config.blocks: output = block.build(output, self, store_output_op=only_forward) if not only_forward: logits = output with tf.variable_scope('L2_Loss'): l2_loss = tf.add_n([tf.nn.l2_loss(var) for var in tf.trainable_variables()]) prediction = tf.nn.softmax(logits) # losses cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits( logits=logits, labels=self.labels)) self.cross_entropy = cross_entropy # optimizer and train step optimizer = self.build_optimizer(self.learning_rate, self.run_config.opt_config[0], self.run_config.opt_config[1]) self.train_step = optimizer.minimize( cross_entropy + l2_loss * self.net_config.weight_decay) correct_prediction = tf.equal( tf.argmax(prediction, 1), tf.argmax(self.labels, 1)) self.accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32)) ================================================ FILE: Examples/cai_eas/eas/models/layer_cascade.py ================================================ from models.layers import ConvLayer, FCLayer, PoolLayer, get_layer_by_name import tensorflow as tf class LayerCascade: def __init__(self, _id, layers): self._id = _id self.layers = layers self.output_op = None @property def id(self): return self._id @id.setter def id(self, value): self._id = value @property def out_features_dim(self): for layer in self.layers[::-1]: if isinstance(layer, ConvLayer): return layer.filter_num elif isinstance(layer, FCLayer): return layer.units return None @property def depth(self): depth = 0 for layer in self.layers: if isinstance(layer, ConvLayer) or isinstance(layer, FCLayer): depth += 1 return depth def get_str(self): layers_str = [layer.layer_str for layer in self.layers] return '-'.join(layers_str) def build(self, _input, densenet, store_output_op=False): output = _input with tf.variable_scope(self._id): for layer in self.layers: output = layer.build(output, densenet, store_output_op=store_output_op) if store_output_op: self.output_op = output return output def get_config(self): return { '_id': self._id, 'layers': [layer.get_config() for layer in self.layers] } def renew_init(self, densenet): return { '_id': self._id, 'layers': [layer.renew_init(densenet) for layer in self.layers] } def copy(self): return self.set_from_config(self.get_config(), init=self.renew_init(None)) @staticmethod def set_from_config(config_json, init=None, return_class=True): _id = config_json['_id'] layers = [] for _i, layer_config in enumerate(config_json['layers']): layer_init = init['layers'][_i] if init is not None else None layer = get_layer_by_name(layer_config['name']) layers.append(layer.set_from_config(layer_config, layer_init)) if return_class: return LayerCascade(_id, layers) else: return _id, layers """ Network Transformation Operations """ def prev_widen(self, indices, magnifier, noise=None): for layer in self.layers: if isinstance(layer, ConvLayer) or isinstance(layer, FCLayer): layer.prev_widen(indices, magnifier, noise=noise) break else: layer.prev_widen(indices, magnifier, noise=noise) def widen(self, idx, new_width, widen_type='output_dim', noise=None): assert idx < len(self.layers), 'Index out of range: %d' % idx if widen_type == 'output_dim': assert isinstance(self.layers[idx], ConvLayer) or \ isinstance(self.layers[idx], FCLayer), 'Operation not available' to_widen_layer = self.layers[idx] if isinstance(to_widen_layer, ConvLayer): indices, magnifier = to_widen_layer.widen_filters(new_filter_num=new_width, noise=noise) else: indices, magnifier = to_widen_layer.widen_units(new_units_num=new_width, noise=noise) after_widen_layer = None for _i in range(idx + 1, len(self.layers)): if isinstance(self.layers[_i], ConvLayer) or isinstance(self.layers[_i], FCLayer): self.layers[_i].prev_widen(indices, magnifier, noise=noise) after_widen_layer = self.layers[_i] break else: self.layers[_i].prev_widen(indices, magnifier, noise=noise) return after_widen_layer is None, indices, magnifier else: raise ValueError('%s is not supported' % widen_type) def deepen(self, idx, new_layer_config, input_dim): assert idx < len(self.layers), 'Index out of range: %d' % idx if new_layer_config['name'] == 'fc': assert idx == len(self.layers) - 1 or isinstance(self.layers[idx + 1], FCLayer), 'Invalid' assert isinstance(self.layers[idx], FCLayer) or isinstance(self.layers[idx], PoolLayer), 'Invalid' # prepare the new fc layer units = input_dim for _i in range(idx, -1, -1): if isinstance(self.layers[_i], FCLayer): units = self.layers[_i].units break elif isinstance(self.layers[_i], ConvLayer): units = self.layers[_i].filter_num break fc_idx = 0 for _i in range(0, idx + 1): if isinstance(self.layers[_i], FCLayer): fc_idx += 1 _id = 'fc_%d' % fc_idx # change the id of following fc layers for _i in range(idx + 1, len(self.layers)): if isinstance(self.layers[_i], FCLayer): self.layers[_i].id = 'fc_%d' % (fc_idx + 1) fc_idx += 1 prev_layer = None for _i in range(idx, -1, -1): if self.layers[_i].ready: prev_layer = self.layers[_i] break assert prev_layer is not None, 'Invalid' new_fc_layer = FCLayer(_id, units, ready=False, **new_layer_config) # insert the new layer into the cascade self.layers = self.layers[:idx + 1] + [new_fc_layer] + self.layers[idx + 1:] return new_fc_layer, prev_layer elif new_layer_config['name'] == 'conv': assert idx == len(self.layers) - 1 or not isinstance(self.layers[idx + 1], FCLayer), 'Invalid' assert isinstance(self.layers[idx], ConvLayer) or isinstance(self.layers[idx], FCLayer), 'Invalid' # prepare the new conv layer filter_num = input_dim for _i in range(idx, -1, -1): if isinstance(self.layers[_i], ConvLayer): filter_num = self.layers[_i].filter_num break conv_idx = 0 for _i in range(0, idx + 1): if isinstance(self.layers[_i], ConvLayer): conv_idx += 1 _id = 'conv_%d' % conv_idx # change the id of following conv layers for _i in range(idx + 1, len(self.layers)): if isinstance(self.layers[_i], ConvLayer): self.layers[_i].id = 'conv_%d' % (conv_idx + 1) conv_idx += 1 prev_layer = None for _i in range(idx, -1, -1): if self.layers[_i].ready: prev_layer = self.layers[_i] break assert prev_layer is not None, 'Invalid' new_conv_layer = ConvLayer(_id, filter_num, ready=False, **new_layer_config) self.layers = self.layers[:idx + 1] + [new_conv_layer] + self.layers[idx + 1:] return new_conv_layer, prev_layer else: raise ValueError('Not support to insert a %s layer' % new_layer_config['name']) ================================================ FILE: Examples/cai_eas/eas/models/layer_multi_branch.py ================================================ import tensorflow as tf import numpy as np from models.layer_cascade import LayerCascade class LayerMultiBranch: def __init__(self, _id, branches, merge=None, in_bottle=None, out_bottle=None): self._id = _id self.in_bottle = in_bottle self.branches = branches self.out_bottle = out_bottle self.merge = merge if self.merge == 'add': out_dim = [] for branch in self.branches: out_dim.append(branch.out_features_dim) assert np.std(out_dim) == 0, '<%s> require the output dim of all branches are the same' % self.merge elif self.merge is None: assert len(self.branches) == 1, 'Invalid' self.output_op = None @property def id(self): return self._id @id.setter def id(self, value): self._id = value @property def out_features_dim(self): if self.out_bottle: return self.out_bottle.out_features_dim out_dim = [] for branch in self.branches: out_dim.append(branch.out_features_dim) if self.merge == 'concat': return np.sum(out_dim) elif self.merge == 'add' or self.merge is None: return out_dim[0] else: pass @property def depth(self): depth = 0 if self.in_bottle: depth += self.in_bottle.depth if self.out_bottle: depth += self.out_bottle.depth branch_depth = [] for branch in self.branches: branch_depth.append(branch.depth) depth += np.max(branch_depth) return depth def get_str(self): in_bottle_str = 'N' if self.in_bottle is None else self.in_bottle.get_str() branches_str = [branch.get_str() for branch in self.branches] branches_str = '+'.join(branches_str) out_bottle_str = 'N' if self.out_bottle is None else self.out_bottle.get_str() return '%s~%s~%s' % (in_bottle_str, branches_str, out_bottle_str) def build(self, _input, densenet, store_output_op=False): with tf.variable_scope(self._id): output = _input # in bottle if self.in_bottle: output = self.in_bottle.build(output, densenet, store_output_op=store_output_op) # branches branch_out = [] for branch in self.branches: branch_out.append(branch.build(output, densenet, store_output_op=store_output_op)) if self.merge == 'concat': output = tf.concat(branch_out, axis=3) elif self.merge == 'add': output = tf.add_n(branch_out) elif self.merge is None: output = branch_out[0] else: raise ValueError('Do not support <%s>' % self.merge) # out bottle if self.out_bottle: output = self.out_bottle.build(output, densenet, store_output_op=store_output_op) if store_output_op: self.output_op = output return output def get_config(self): return { '_id': self._id, 'merge': self.merge, 'branches': [branch.get_config() for branch in self.branches], 'in_bottle': None if self.in_bottle is None else self.in_bottle.get_config(), 'out_bottle': None if self.out_bottle is None else self.out_bottle.get_config(), } def renew_init(self, densenet): return { '_id': self._id, 'branches': [branch.renew_init(densenet) for branch in self.branches], 'in_bottle': None if self.in_bottle is None else self.in_bottle.renew_init(densenet), 'out_bottle': None if self.out_bottle is None else self.out_bottle.renew_init(densenet), } @staticmethod def set_from_config(config_json, init=None): _id = config_json['_id'] merge = config_json['merge'] branches = [] for _i, branch_config in enumerate(config_json['branches']): branch_init = init['branches'][_i] if init is not None else None branch = LayerCascade.set_from_config(branch_config, branch_init) branches.append(branch) in_bottle = config_json['in_bottle'] if in_bottle: in_bottle_init = init['in_bottle'] if init is not None else None in_bottle = LayerCascade.set_from_config(in_bottle, in_bottle_init) out_bottle = config_json['out_bottle'] if out_bottle: out_bottle_init = init['out_bottle'] if init is not None else None out_bottle = LayerCascade.set_from_config(out_bottle, out_bottle_init) return LayerMultiBranch(_id, branches, merge, in_bottle=in_bottle, out_bottle=out_bottle) """ Network Transformation Operations """ def prev_widen(self, indices, magnifier, noise=None): if self.in_bottle: self.in_bottle.prev_widen(indices, magnifier, noise=noise) else: for branch in self.branches: branch.prev_widen(indices, magnifier, noise=noise) def widen(self, loc, new_width, widen_type='output_dim', noise=None): if loc['multi-branch'] == 'in_bottle': assert self.in_bottle is not None, 'Invalid' change_out_dim, indices, magnifier = self.in_bottle.widen(loc['layer'], new_width, widen_type, noise=noise) if change_out_dim: for branch in self.branches: branch.prev_widen(indices, magnifier, noise=noise) return False, None, None elif loc['multi-branch'] == 'out_bottle': assert self.out_bottle is not None, 'Invalid' change_out_dim, indices, magnifier = self.out_bottle.widen(loc['layer'], new_width, widen_type, noise=noise) return change_out_dim, indices, magnifier elif loc['multi-branch'] == 'branch': branch_idx = loc['branch'] branch = self.branches[branch_idx] old_branch_out_dim = branch.out_features_dim change_out_dim, indices, magnifier = branch.widen(loc['layer'], new_width, widen_type, noise=noise) if change_out_dim: assert self.merge != 'add', 'Invalid' prev_branch_out_dim = 0 for _i in range(0, branch_idx): prev_branch_out_dim += self.branches[_i].out_features_dim post_branch_out_dim = 0 for _i in range(branch_idx + 1, len(self.branches)): post_branch_out_dim += self.branches[_i].out_features_dim old_size = prev_branch_out_dim + old_branch_out_dim + post_branch_out_dim base = np.arange(old_size) indices = np.concatenate([ base[:prev_branch_out_dim], indices + prev_branch_out_dim, base[prev_branch_out_dim + old_branch_out_dim:] ]) magnifier = np.concatenate([ [1] * prev_branch_out_dim, magnifier, [1] * post_branch_out_dim, ]) if self.out_bottle is None: return True, indices, magnifier else: self.out_bottle.prev_widen(indices, magnifier, noise=noise) return False, None, None else: return False, None, None else: raise ValueError('Do not support %s' % loc['multi-branch']) def deepen(self, loc, new_layer_config, input_dim): if loc['multi-branch'] == 'in_bottle': assert self.in_bottle is not None, 'Invalid' return self.in_bottle.deepen(loc['layer'], new_layer_config, input_dim) elif loc['multi-branch'] == 'out_bottle': assert self.out_bottle is not None, 'Invalid' if self.merge == 'concat': input_dim = np.sum([branch.out_features_dim for branch in self.branches]) else: input_dim = self.branches[0].out_features_dim return self.out_bottle.deepen(loc['layer'], new_layer_config, input_dim) elif loc['multi-branch'] == 'branch': if self.in_bottle is not None: input_dim = self.in_bottle.out_features_dim return self.branches[loc['branch']].deepen(loc['layer'], new_layer_config, input_dim) else: raise ValueError('Do not support %s' % loc['multi-branch']) def remapped_branches(self, noise=None): if self.merge == 'add' or self.merge is None: size = self.out_features_dim indices = np.random.choice(np.arange(size), size) new_branches = [] for branch in self.branches: new_layers = [layer.copy() for layer in branch.layers[:-1]] last_layer = branch.layers[-1].copy().remap(indices, noise=noise) new_layers.append(last_layer) new_branch = LayerCascade(branch.id, new_layers) new_branches.append(new_branch) elif self.merge == 'concat': new_branches = [] offset = 0 indices = [] for branch in self.branches: size = branch.out_features_dim sub_indices = np.random.choice(np.arange(size), size) new_layers = [layer.copy() for layer in branch.layers[:-1]] last_layer = branch.layers[-1].copy().remap(sub_indices, noise=noise) new_layers.append(last_layer) new_branch = LayerCascade(branch.id, new_layers) new_branches.append(new_branch) indices.append(sub_indices + offset) offset += size indices = np.concatenate(indices) else: raise NotImplementedError return new_branches, indices ================================================ FILE: Examples/cai_eas/eas/models/layers.py ================================================ from models.basic_model import BasicModel import tensorflow as tf import numpy as np import copy def apply_noise(weights, noise_config): if noise_config is None: return weights noise_type = noise_config.get('type', 'normal') if noise_type == 'normal': ratio = noise_config.get('ratio', 1e-3) std = np.std(weights) noise = np.random.normal(0, std * ratio, size=weights.shape) elif noise_type == 'uniform': ratio = noise_config.get('ratio', 1e-3) mean, _max = np.mean(weights), np.max(weights) width = (_max - mean) * ratio noise = np.random.uniform(-width, width, size=weights.shape) else: raise NotImplementedError return weights + noise def get_layer_by_name(name): if name == 'conv': return ConvLayer elif name == 'fc': return FCLayer elif name == 'pool': return PoolLayer else: raise ValueError('Unknown layer type: %s' % name) def get_magnifier(old_size, indices): _l = np.zeros(old_size) for x in indices: _l[x] += 1 magnifier = (1.0 / _l)[indices] return magnifier def get_random_remapping(old_size, new_size): base = np.arange(old_size) indices = np.concatenate([base, np.random.choice(base, new_size - old_size)]) magnifier = get_magnifier(old_size, indices) return indices, magnifier class BaseLayer: """ _id, batch normalization, activation, dropout, ready """ def __init__(self, _id, use_bn=True, activation='relu', keep_prob=1.0, ready=True, pre_activation=True): self._id = _id self.use_bn = use_bn self.activation = activation self.keep_prob = keep_prob self.ready = ready self.pre_activation = pre_activation self._scope = None self._init = None self.output_op = None @property def id(self): return self._id @id.setter def id(self, value): self._id = value @property def init(self): return self._init @property def param_initializer(self): if self._init is None: return None param_initializer = {} for key in self.variable_list.keys(): if self._init[key] is not None: param_initializer[key] = tf.constant_initializer(self._init[key]) if len(param_initializer) == 0: param_initializer = None return param_initializer def renew_init(self, net: BasicModel): if net is None: return copy.deepcopy(self._init) self._init = {} for key, var_name in self.variable_list.items(): var = net.graph.get_tensor_by_name('%s/%s' % (self._scope, var_name)) self._init[key] = net.sess.run(var) if len(self._init) == 0: self._init = None return copy.deepcopy(self._init) def copy(self): return self.set_from_config(self.get_config(), layer_init=copy.deepcopy(self._init)) def get_config(self): return { '_id': self.id, 'use_bn': self.use_bn, 'activation': self.activation, 'keep_prob': self.keep_prob, 'pre_activation': self.pre_activation, } @property def variable_list(self): """ beta: mean scale gamma: variance scale y = gamma * (x - moving_mean) / sqrt(epsilon + moving_variance) + beta """ if self.use_bn: return { 'moving_mean': 'BatchNorm/moving_mean:0', 'moving_variance': 'BatchNorm/moving_variance:0', 'beta': 'BatchNorm/beta:0', 'gamma': 'BatchNorm/gamma:0', } else: return {} @staticmethod def set_from_config(layer_config, layer_init): raise NotImplementedError def build(self, _input, net, store_output_op): raise NotImplementedError def prev_widen(self, indices, magnifier, noise=None): raise NotImplementedError def set_identity_layer(self, strict, param, noise): raise NotImplementedError def widen_bn(self, indices, magnifier, noise=None): if self.use_bn: self._init['beta'] = self._init['beta'][indices] self._init['gamma'] = self._init['gamma'][indices] self._init['moving_mean'] = self._init['moving_mean'][indices] self._init['moving_variance'] = self._init['moving_variance'][indices] def set_bn_identity(self, strict=True, param=None, noise=None): if self.use_bn: if strict: self._init['moving_mean'] = param['moving_mean'] self._init['moving_variance'] = param['moving_variance'] self._init['beta'] = self._init['moving_mean'] self._init['gamma'] = np.sqrt(self._init['moving_variance'] + param['epsilon']) else: # use default initialization for batch normalization layer self._init['moving_mean'], self._init['moving_variance'] = None, None self._init['beta'], self._init['gamma'] = None, None class ConvLayer(BaseLayer): def __init__(self, _id, filter_num, kernel_size=3, strides=1, use_bn=True, activation='relu', keep_prob=1.0, ready=True, pre_activation=True, **kwargs): BaseLayer.__init__(self, _id, use_bn, activation, keep_prob, ready, pre_activation) self.filter_num = filter_num self.kernel_size = kernel_size self.strides = strides @property def layer_str(self): return 'C%d,%d,%d' % (self.filter_num, self.kernel_size, self.strides) @property def variable_list(self): var_list = {'kernel': 'kernel:0'} var_list.update(super(ConvLayer, self).variable_list) return var_list def get_config(self): return { 'name': 'conv', 'filter_num': self.filter_num, 'kernel_size': self.kernel_size, 'strides': self.strides, **super(ConvLayer, self).get_config(), } @staticmethod def set_from_config(layer_config, layer_init=None): conv_layer = ConvLayer(**layer_config) conv_layer._init = layer_init return conv_layer def build(self, _input, net: BasicModel, store_output_op=False): output = _input if not self.ready: return output with tf.variable_scope(self._id): self._scope = tf.get_variable_scope().name param_initializer = self.param_initializer if self.pre_activation: # batch normalization if self.use_bn: output = BasicModel.batch_norm(output, net.is_training, net.net_config.bn_epsilon, net.net_config.bn_decay, param_initializer=param_initializer) # activation output = BasicModel.activation(output, self.activation) # convolutional output = BasicModel.conv2d(output, self.filter_num, self.kernel_size, self.strides, param_initializer=param_initializer) else: # convolutional output = BasicModel.conv2d(output, self.filter_num, self.kernel_size, self.strides, param_initializer=param_initializer) # batch normalization if self.use_bn: output = BasicModel.batch_norm(output, net.is_training, net.net_config.bn_epsilon, net.net_config.bn_decay, param_initializer=param_initializer) # activation output = BasicModel.activation(output, self.activation) # dropout output = BasicModel.dropout(output, self.keep_prob, net.is_training) if store_output_op: self.output_op = output return output def widen_filters(self, new_filter_num, noise=None): """ Increase the filter number of a conv layer while preserving the functionality Proposed in 'Net2Net': https://arxiv.org/abs/1511.05641 """ assert new_filter_num > self.filter_num, 'Invalid new filter number: %d' % new_filter_num assert self._init is not None, 'Uninitialized layer' old_size, new_size = self.filter_num, new_filter_num indices, magnifier = get_random_remapping(old_size, new_size) # more filters self.filter_num = new_filter_num new_kernel = self._init['kernel'][:, :, :, indices] new_kernel[:, :, :, old_size:] = apply_noise(new_kernel[:, :, :, old_size:], noise.get('wider')) self._init['kernel'] = new_kernel if not self.pre_activation: # widen batch norm variables if use batch norm self.widen_bn(indices, magnifier, noise=noise) return indices, magnifier def prev_widen(self, indices, magnifier, noise=None): assert self._init is not None, 'Uninitialized layer' # rescale kernel self._init['kernel'] = self._init['kernel'][:, :, indices, :] * magnifier.reshape([1, 1, -1, 1]) if self.pre_activation: self.widen_bn(indices, magnifier, noise=noise) def set_identity_layer(self, strict=True, param=None, noise=None): self._init = {} self.set_bn_identity(strict, param, noise=noise) mid = self.kernel_size // 2 self._init['kernel'] = np.zeros([self.kernel_size, self.kernel_size, self.filter_num, self.filter_num]) self._init['kernel'][mid, mid] = np.eye(self.filter_num) self._init['kernel'] = apply_noise(self._init['kernel'], noise.get('deeper')) self.ready = True def remap(self, indices, noise=None): self.filter_num = len(indices) self._init['kernel'] = self._init['kernel'][:, :, :, indices] self._init['kernel'] = apply_noise(self._init['kernel'], noise.get('wider')) if not self.pre_activation: self.widen_bn(indices, None, noise=noise) return self class FCLayer(BaseLayer): def __init__(self, _id, units, use_bn=True, use_bias=False, activation='relu', keep_prob=1.0, ready=True, pre_activation=False, **kwargs): BaseLayer.__init__(self, _id, use_bn, activation, keep_prob, ready, pre_activation) self.units = units self.use_bias = use_bias @property def layer_str(self): return 'FC%d' % self.units @property def variable_list(self): var_list = {'W': 'W:0'} if self.use_bias: var_list['bias'] = 'bias:0' var_list.update(super(FCLayer, self).variable_list) return var_list def get_config(self): return { 'name': 'fc', 'units': self.units, 'use_bias': self.use_bias, **super(FCLayer, self).get_config(), } @staticmethod def set_from_config(layer_config, layer_init=None): fc_layer = FCLayer(**layer_config) fc_layer._init = layer_init return fc_layer def build(self, _input, net: BasicModel, store_output_op=False): output = _input if not self.ready: return output with tf.variable_scope(self._id): self._scope = tf.get_variable_scope().name param_initializer = self.param_initializer # flatten if not output = BasicModel.flatten(output) if self.pre_activation: # batch normalization if self.use_bn: output = BasicModel.batch_norm(output, net.is_training, net.net_config.bn_epsilon, net.net_config.bn_decay, param_initializer=param_initializer) # activation output = BasicModel.activation(output, self.activation) # FC output = BasicModel.fc_layer(output, self.units, self.use_bias, param_initializer=param_initializer) else: # FC output = BasicModel.fc_layer(output, self.units, self.use_bias, param_initializer=param_initializer) # batch normalization if self.use_bn: output = BasicModel.batch_norm(output, net.is_training, net.net_config.bn_epsilon, net.net_config.bn_decay, param_initializer=param_initializer) # activation output = BasicModel.activation(output, self.activation) # dropout output = BasicModel.dropout(output, self.keep_prob, net.is_training) if store_output_op: self.output_op = output return output def widen_units(self, new_units_num, noise=None): """ Increase the units number of a fc layer while preserving the functionality Proposed in 'Net2Net': https://arxiv.org/abs/1511.05641 W: [in_dim, out_units] bias: [out_units] """ assert new_units_num > self.units, 'Invalid new units number: %d' % new_units_num assert self._init is not None, 'Uninitialized layer' old_size, new_size = self.units, new_units_num indices, magnifier = get_random_remapping(old_size, new_size) # more units self._init['W'] = self._init['W'][:, indices] self._init['W'][:, old_size:] = apply_noise(self._init['W'][:, old_size:], noise.get('wider')) self.units = new_units_num # widen bias variable if exist if self.use_bias: self._init['bias'] = self._init['bias'][indices] self._init['bias'][old_size:] = apply_noise(self._init['bias'][old_size:], noise.get('wider')) if not self.pre_activation: # widen batch norm variables if use batch norm self.widen_bn(indices, magnifier, noise=noise) return indices, magnifier def prev_widen(self, indices, magnifier, noise=None): assert self._init is not None, 'Uninitialized layer' # rescale W self._init['W'] = self._init['W'][indices] * magnifier.reshape([-1, 1]) if self.pre_activation: self.widen_bn(indices, magnifier, noise=noise) def set_identity_layer(self, strict=True, param=None, noise=None): self._init = {} self.set_bn_identity(strict, param, noise=noise) if self.use_bias: self._init['bias'] = [0.0] * self.units self._init['W'] = np.eye(self.units) self._init['W'] = apply_noise(self._init['W'], noise.get('deeper')) self.ready = True def remap(self, indices, noise=None): self.units = len(indices) self._init['W'] = self._init['W'][:, indices] self._init['W'] = apply_noise(self._init['W'], noise.get('wider')) if self.use_bias: self._init['bias'] = self._init['bias'][indices] if not self.pre_activation: self.widen_bn(indices, None, noise=noise) return self class PoolLayer(BaseLayer): def __init__(self, _id, _type, kernel_size=2, strides=2, use_bn=False, activation=None, keep_prob=1.0, ready=True, pre_activation=True, **kwargs): BaseLayer.__init__(self, _id, use_bn, activation, keep_prob, ready, pre_activation) self._type = _type self.kernel_size = kernel_size self.strides = strides @property def layer_str(self): return 'P%d,%d' % (self.kernel_size, self.strides) def get_config(self): return { 'name': 'pool', '_type': self._type, 'kernel_size': self.kernel_size, 'strides': self.strides, **super(PoolLayer, self).get_config(), } @staticmethod def set_from_config(layer_config, layer_init=None): pool_layer = PoolLayer(**layer_config) pool_layer._init = layer_init return pool_layer def build(self, _input, net: BasicModel, store_output_op=False): output = _input if not self.ready: return output with tf.variable_scope(self._id): self._scope = tf.get_variable_scope().name param_initializer = self.param_initializer if self.pre_activation: # batch normalization if self.use_bn: output = BasicModel.batch_norm(output, net.is_training, net.net_config.bn_epsilon, net.net_config.bn_decay, param_initializer=param_initializer) # activation output = BasicModel.activation(output, self.activation) # Pooling if self._type == 'avg': output = BasicModel.avg_pool(output, k=self.kernel_size, s=self.strides) elif self._type == 'max': output = BasicModel.max_pool(output, k=self.kernel_size, s=self.strides) else: raise ValueError('Do not support the pooling type: %s' % self._type) else: # Pooling if self._type == 'avg': output = BasicModel.avg_pool(output, k=self.kernel_size, s=self.strides) elif self._type == 'max': output = BasicModel.max_pool(output, k=self.kernel_size, s=self.strides) else: raise ValueError('Do not support the pooling type: %s' % self._type) # batch normalization if self.use_bn: output = BasicModel.batch_norm(output, net.is_training, net.net_config.bn_epsilon, net.net_config.bn_decay, param_initializer=param_initializer) # activation output = BasicModel.activation(output, self.activation) # dropout output = BasicModel.dropout(output, self.keep_prob, net.is_training) if store_output_op: self.output_op = output return output def set_identity_layer(self, strict=True, param=None, noise=None): raise ValueError('Pooling layer can never be an identity layer') def prev_widen(self, indices, magnifier, noise=None): self.widen_bn(indices, magnifier, noise=noise) ================================================ FILE: Examples/cai_eas/eas/models/utils.py ================================================ from models.dense_net import DenseNetConfig, DenseNet from models.convnet import SimpleConvnetConfig, SimpleConvnet import numpy as np def get_model_config_by_name(name): if name == 'DenseNet': return DenseNetConfig elif name == 'SimpleConvnet': return SimpleConvnetConfig else: raise ValueError('Unknown model type %s' % name) def get_model_by_name(name): if name == 'DenseNet': return DenseNet elif name == 'SimpleConvnet': return SimpleConvnet else: raise ValueError('Unknown model type %s' % name) class RunConfig: def __init__(self, batch_size, n_epochs, init_lr, reduce_lr_epochs, reduce_lr_factors, opt_config, dataset, validation_size, validation_frequency, shuffle, normalization, should_save_logs, should_save_model, renew_logs=False, other_lr_schedule=None, include_extra=True, **kwargs): self.batch_size = batch_size self.n_epochs = n_epochs self.init_lr = init_lr self.reduce_lr_epochs = reduce_lr_epochs self.reduce_lr_factors = reduce_lr_factors self.opt_config = opt_config self.dataset = dataset self.validation_size = validation_size self.validation_frequency = validation_frequency self.shuffle = shuffle self.normalization = normalization self.should_save_logs = should_save_logs self.should_save_model = should_save_model self.renew_logs = renew_logs self.other_lr_schedule = other_lr_schedule self.include_extra = include_extra def get_config(self): return self.__dict__ def update(self, new_config): self.__dict__.update(new_config) def copy(self): return RunConfig(**self.get_config()) def learning_rate(self, epoch): if self.other_lr_schedule is None or self.other_lr_schedule.get('type') is None: lr = self.init_lr for reduce_lr_epoch, reduce_factor in zip(self.reduce_lr_epochs, self.reduce_lr_factors): if epoch >= reduce_lr_epoch * self.n_epochs: lr /= reduce_factor else: if self.other_lr_schedule['type'] == 'cosine': lr_max = self.init_lr lr_min = self.other_lr_schedule.get('lr_min', 0) lr = lr_min + 0.5 * (lr_max - lr_min) * (1 + np.cos((epoch - 1) / self.n_epochs * np.pi)) else: raise ValueError('Do not support %s' % self.other_lr_schedule['type']) return lr @staticmethod def get_default_run_config(dataset='C10+'): if dataset in ['C10', 'C10+', 'C100', 'C100+']: run_config = { 'batch_size': 64, 'n_epochs': 30, 'init_lr': 0.1, 'reduce_lr_epochs': [0.5, 0.75], # epochs * 0.5, epochs * 0.75 'reduce_lr_factors': [10, 10], 'opt_config': ['momentum', {'momentum': 0.9, 'use_nesterov': True}], 'dataset': dataset, # choices = [C10, C10+, C100, C100+] 'validation_size': None, # None or int 'validation_frequency': 10, 'shuffle': 'every_epoch', # None, once_prior_train, every_epoch 'normalization': 'by_channels', # None, divide_256, divide_255, by_channels 'should_save_logs': True, 'should_save_model': True, 'renew_logs': True, 'other_lr_schedule': {'type': 'cosine'}, # None, or cosine } elif dataset in ['SVHN']: run_config = { 'batch_size': 64, 'n_epochs': 40, 'init_lr': 0.1, 'reduce_lr_epochs': [0.5, 0.75], # epochs * 0.5, epochs * 0.75 'reduce_lr_factors': [10, 10], 'opt_config': ['momentum', {'momentum': 0.9, 'use_nesterov': True}], 'dataset': dataset, # choices = [C10, C10+, C100, C100+] 'validation_size': None, # None or int 'validation_frequency': 1, 'shuffle': True, 'normalization': 'divide_255', # None, divide_256, divide_255, by_channels 'should_save_logs': True, 'should_save_model': True, 'renew_logs': True, 'other_lr_schedule': {'type': 'cosine'}, # None, or cosine 'include_extra': False, } else: raise ValueError return run_config ================================================ FILE: Examples/cai_eas/start_nets/start_net_convnet_small_C10+/net.config ================================================ { "name": "SimpleConvnet", "weight_decay": 0.0001, "bn_epsilon": 1e-05, "bn_decay": 0.9, "drop_scheme": { "type": "conv", "conv_drop": 1.0, "pool_drop": 0.7, "fc_drop": 0.5 }, "layer_cascade": { "_id": "SimpleConvNet", "layers": [ { "name": "conv", "filter_num": 4, "kernel_size": 3, "strides": 1, "_id": "conv_0", "use_bn": true, "activation": "relu", "keep_prob": 1.0, "pre_activation": false }, { "name": "pool", "_type": "max", "kernel_size": 2, "strides": 2, "_id": "pool_0", "use_bn": false, "activation": null, "keep_prob": 1.0, "pre_activation": false }, { "name": "conv", "filter_num": 4, "kernel_size": 3, "strides": 1, "_id": "conv_1", "use_bn": true, "activation": "relu", "keep_prob": 1.0, "pre_activation": false }, { "name": "pool", "_type": "max", "kernel_size": 2, "strides": 2, "_id": "pool_1", "use_bn": false, "activation": null, "keep_prob": 1.0, "pre_activation": false }, { "name": "conv", "filter_num": 4, "kernel_size": 3, "strides": 1, "_id": "conv_2", "use_bn": true, "activation": "relu", "keep_prob": 1.0, "pre_activation": false }, { "name": "pool", "_type": "max", "kernel_size": 2, "strides": 2, "_id": "pool_2", "use_bn": false, "activation": null, "keep_prob": 1.0, "pre_activation": false }, { "name": "conv", "filter_num": 4, "kernel_size": 3, "strides": 1, "_id": "conv_3", "use_bn": true, "activation": "relu", "keep_prob": 1.0, "pre_activation": false }, { "name": "pool", "_type": "avg", "kernel_size": 4, "strides": 4, "_id": "pool_4", "use_bn": false, "activation": null, "keep_prob": 1.0, "pre_activation": false }, { "name": "fc", "units": 8, "use_bias": false, "_id": "fc_0", "use_bn": true, "activation": "relu", "keep_prob": 1.0, "pre_activation": false }, { "name": "fc", "units": 10, "use_bias": true, "_id": "fc_1", "use_bn": false, "activation": null, "keep_prob": 1.0, "pre_activation": false } ] } } ================================================ FILE: Examples/compression/mnist_pytorch/README.md ================================================ # Compression examples (PyTorch) ## Requirements The base requirements for Auptimizer apply here. Additionally, in order for the examples to work, torch >= 1.7.0 is needed. ## Example details We provide an example configuration file and a corresponding training script for each of the compressors supported. Due to the fact that some compressors require additional modification of the training script, we provide individual training scripts for those compressors for clarity. For pruners, we also provide the configuration files for both one-time compression and automatic compression experiments. For one-time compression, the configuration file is named as ``exp_.json``. For automatic compression, the configuration file is named as ``exp_auto.json``. For quantizers, the configuration file is named as ``exp_.json``. To further demonstrate the usage of automatic compression experiments using different Proposers and hyperparameter settings, we provide multiple examples for each of the Proposer. The corresponding configuration files are named ``exp_auto_fpgm_.json``. In addition, to showcase the two use cases where the user can assign the same or different hyperparameter values for a group of layers, the configuration files ``exp_auto_fpgm_random_no_expand.json`` and ``exp_auto_fpgm_random.json`` can be used as references comparatively. Finally, ``exp_auto_fpgm_aup_args.json`` and ``mnist_aup_args.py`` demonstrate how to use the decorator ``@aup_args`` to launch a compression experiment. ## Running the examples For one-time compression: ```sh python -m aup.compression exp_level.json ``` For automatic compression: ```sh python -m aup.compression exp_auto_level.json --automatic ``` The ``--launch_dashboard`` flag can be added to the command if the user wants to show the dashboard while running the experiment. ================================================ FILE: Examples/compression/mnist_pytorch/exp_activation_apoz_rank.json ================================================ { "name": "PyTorch MNIST Activation APoZ Rank Filter Pruner", "script": "mnist.py", "resource": "cpu", "compression": { "framework": "torch", "type": "pruning", "compressor": "activation_apoz_rank_filter", "config_list": [{ "sparsity": 0.5, "op_types": ["Conv2d"] } ] } } ================================================ FILE: Examples/compression/mnist_pytorch/exp_activation_apoz_rank_dependency_aware.json ================================================ { "name": "PyTorch MNIST Activation APoZ Rank Filter Pruner (dependency aware)", "script": "mnist_dependency_aware.py", "resource": "cpu", "compression": { "framework": "torch", "type": "pruning", "compressor": "activation_apoz_rank_filter", "config_list": [{ "sparsity": 0.5, "op_types": ["Conv2d"] } ] } } ================================================ FILE: Examples/compression/mnist_pytorch/exp_activation_mean_rank.json ================================================ { "name": "PyTorch MNIST Activation Mean Rank Filter Pruner", "script": "mnist.py", "resource": "cpu", "compression": { "framework": "torch", "type": "pruning", "compressor": "activation_mean_rank_filter", "config_list": [{ "sparsity": 0.5, "op_types": ["Conv2d"] } ] } } ================================================ FILE: Examples/compression/mnist_pytorch/exp_activation_mean_rank_dependency_aware.json ================================================ { "name": "PyTorch MNIST Activation Mean Rank Filter Pruner (dependency aware)", "script": "mnist_dependency_aware.py", "resource": "cpu", "compression": { "framework": "torch", "type": "pruning", "compressor": "activation_mean_rank_filter", "config_list": [{ "sparsity": 0.5, "op_types": ["Conv2d"] } ] } } ================================================ FILE: Examples/compression/mnist_pytorch/exp_admm.json ================================================ { "name": "PyTorch MNIST ADMM Pruner", "script": "mnist_admm.py", "resource": "cpu", "compression": { "framework": "torch", "type": "pruning", "compressor": "admm", "config_list": [{ "sparsity": 0.5, "op_types": ["Conv2d"], "op_names": ["conv1"] }, { "sparsity": 0.5, "op_types": ["Conv2d"], "op_names": ["conv2"] } ] } } ================================================ FILE: Examples/compression/mnist_pytorch/exp_agp.json ================================================ { "name": "PyTorch MNIST AGP Pruner", "script": "mnist_agp.py", "resource": "cpu", "compression": { "framework": "torch", "type": "pruning", "compressor": "agp", "config_list": [{ "initial_sparsity": 0.0, "final_sparsity": 0.8, "start_epoch": 0, "end_epoch": 2, "frequency": 1, "op_names": ["conv1", "conv2", "fc1", "fc2"], "op_types": ["default"] } ] } } ================================================ FILE: Examples/compression/mnist_pytorch/exp_amc.json ================================================ { "name": "PyTorch MNIST AMC Pruner", "script": "mnist_amc.py", "resource": "cpu", "compression": { "framework": "torch", "type": "pruning", "compressor": "amc", "config_list": [{ "op_types": ["Conv2d", "Linear"] } ] } } ================================================ FILE: Examples/compression/mnist_pytorch/exp_auto_activation_apoz_rank.json ================================================ { "name": "PyTorch MNIST Activation APoZ Rank Filter Pruner (automatic)", "script": "mnist.py", "resource": "cpu", "resource_args": { "save_model": true }, "compression": { "framework": "torch", "type": "pruning", "compressor": "activation_apoz_rank_filter", "config_list": [{ "sparsity": { "range": [0.1, 0.9], "type": "float" }, "op_names": ["conv1", "conv2"] } ] }, "proposer": "random", "n_parallel": 4, "target": "max", "n_samples": 5 } ================================================ FILE: Examples/compression/mnist_pytorch/exp_auto_activation_mean_rank.json ================================================ { "name": "PyTorch MNIST Activation Mean Rank Filter Pruner (automatic)", "script": "mnist.py", "resource": "cpu", "resource_args": { "save_model": true }, "compression": { "framework": "torch", "type": "pruning", "compressor": "activation_mean_rank_filter", "config_list": [{ "sparsity": { "range": [0.1, 0.9], "type": "float" }, "op_names": ["conv1", "conv2"] } ] }, "proposer": "random", "n_parallel": 4, "target": "max", "n_samples": 5 } ================================================ FILE: Examples/compression/mnist_pytorch/exp_auto_admm.json ================================================ { "name": "PyTorch MNIST ADMM Pruner (automatic)", "script": "mnist_admm.py", "resource": "cpu", "resource_args": { "save_model": true }, "compression": { "framework": "torch", "type": "pruning", "compressor": "admm", "config_list": [{ "sparsity": { "range": [0.1, 0.9], "type": "float" }, "op_names": ["conv1", "conv2"], "op_types": ["Conv2d"] }] }, "proposer": "random", "n_parallel": 4, "target": "max", "n_samples": 5 } ================================================ FILE: Examples/compression/mnist_pytorch/exp_auto_agp.json ================================================ { "name": "PyTorch MNIST AGP Pruner (automatic)", "script": "mnist_no_speedup.py", "resource": "cpu", "resource_args": { "save_model": true }, "compression": { "framework": "torch", "type": "pruning", "compressor": "agp", "config_list": [{ "initial_sparsity": 0.0, "final_sparsity": { "range": [0.0, 0.9], "type": "float" }, "start_epoch": 0, "end_epoch": 2, "frequency": 1, "op_names": ["conv1", "conv2", "fc1", "fc2"] } ] }, "proposer": "random", "n_parallel": 4, "target": "max", "n_samples": 5 } ================================================ FILE: Examples/compression/mnist_pytorch/exp_auto_fpgm_aup_args.json ================================================ { "name": "PyTorch MNIST FPGM Pruner (@aup_args) (automatic)", "script": "mnist_aup_args.py", "resource": "cpu", "resource_args": { "save_model": true }, "compression": { "framework": "torch", "type": "pruning", "compressor": "fpgm", "config_list": [{ "sparsity": { "range": [0.1, 0.9], "type": "float" }, "op_names": ["conv1", "conv2"] } ] }, "proposer": "random", "n_parallel": 4, "target": "max", "n_samples": 5 } ================================================ FILE: Examples/compression/mnist_pytorch/exp_auto_fpgm_bohb.json ================================================ { "name": "PyTorch MNIST FPGM Pruner (automatic)", "script": "mnist.py", "resource": "cpu", "resource_args": { "save_model": true }, "compression": { "framework": "torch", "type": "pruning", "compressor": "fpgm", "config_list": [{ "sparsity": { "range": [0.1, 0.9], "type": "float" }, "op_names": ["conv1", "conv2"] } ] }, "proposer": "bohb", "n_parallel": 4, "target": "max", "n_samples": 5, "num_samples": 4 } ================================================ FILE: Examples/compression/mnist_pytorch/exp_auto_fpgm_hyperband.json ================================================ { "name": "PyTorch MNIST FPGM Pruner (automatic)", "script": "mnist.py", "resource": "cpu", "resource_args": { "save_model": true }, "compression": { "framework": "torch", "type": "pruning", "compressor": "fpgm", "config_list": [{ "sparsity": { "range": [0.1, 0.9], "type": "float" }, "op_names": ["conv1", "conv2"] } ] }, "proposer": "hyperband", "n_parallel": 4, "target": "max", "n_samples": 5 } ================================================ FILE: Examples/compression/mnist_pytorch/exp_auto_fpgm_hyperopt.json ================================================ { "name": "PyTorch MNIST FPGM Pruner (automatic)", "script": "mnist.py", "resource": "cpu", "resource_args": { "save_model": true }, "compression": { "framework": "torch", "type": "pruning", "compressor": "fpgm", "config_list": [{ "sparsity": { "range": [0.1, 0.9], "type": "float" }, "op_names": ["conv1", "conv2"] } ] }, "proposer": "hyperopt", "n_parallel": 4, "target": "max", "n_samples": 5 } ================================================ FILE: Examples/compression/mnist_pytorch/exp_auto_fpgm_no_expand.json ================================================ { "name": "PyTorch MNIST FPGM Pruner (automatic)", "script": "mnist.py", "resource": "cpu", "resource_args": { "save_model": true }, "compression": { "framework": "torch", "type": "pruning", "compressor": "fpgm", "config_list": [{ "sparsity": { "range": [0.1, 0.9], "type": "float" }, "op_names": ["conv1"] }, { "sparsity": { "range": [0.1, 0.9], "type": "float" }, "op_names": ["conv2"] } ] }, "proposer": "random", "n_parallel": 4, "target": "max", "n_samples": 5 } ================================================ FILE: Examples/compression/mnist_pytorch/exp_auto_fpgm_random.json ================================================ { "name": "PyTorch MNIST FPGM Pruner (automatic)", "script": "mnist.py", "resource": "cpu", "resource_args": { "save_model": true }, "compression": { "framework": "torch", "type": "pruning", "compressor": "fpgm", "config_list": [{ "sparsity": { "range": [0.1, 0.9], "type": "float" }, "op_names": ["conv1", "conv2"] } ] }, "proposer": "random", "n_parallel": 4, "target": "max", "n_samples": 5 } ================================================ FILE: Examples/compression/mnist_pytorch/exp_auto_fpgm_random_no_expand.json ================================================ { "name": "PyTorch MNIST FPGM Pruner (automatic)", "script": "mnist.py", "resource": "cpu", "resource_args": { "save_model": true }, "compression": { "framework": "torch", "type": "pruning", "compressor": "fpgm", "config_list": [{ "sparsity": { "range": [0.1, 0.9], "type": "float" }, "expand_op_names": false, "op_names": ["conv1", "conv2"] } ] }, "proposer": "random", "n_parallel": 4, "target": "max", "n_samples": 5 } ================================================ FILE: Examples/compression/mnist_pytorch/exp_auto_fpgm_sequence.json ================================================ { "name": "PyTorch MNIST FPGM Pruner (automatic)", "script": "mnist.py", "resource": "cpu", "resource_args": { "save_model": true }, "compression": { "framework": "torch", "type": "pruning", "compressor": "fpgm", "config_list": [{ "sparsity": { "range": [0.1, 0.9], "type": "float", "interval": 0.2 }, "op_names": ["conv1", "conv2"] } ] }, "proposer": "sequence", "n_parallel": 4, "target": "max", "n_samples": 5 } ================================================ FILE: Examples/compression/mnist_pytorch/exp_auto_fpgm_spearmint.json ================================================ { "name": "PyTorch MNIST FPGM Pruner (automatic)", "script": "mnist.py", "resource": "cpu", "resource_args": { "save_model": true }, "compression": { "framework": "torch", "type": "pruning", "compressor": "fpgm", "config_list": [{ "sparsity": { "range": [0.1, 0.9], "type": "float" }, "op_names": ["conv1", "conv2"] } ] }, "proposer": "spearmint", "n_parallel": 4, "target": "max", "n_samples": 5 } ================================================ FILE: Examples/compression/mnist_pytorch/exp_auto_l1filter.json ================================================ { "name": "PyTorch MNIST L1 Filter Pruner (automatic)", "script": "mnist.py", "resource": "cpu", "resource_args": { "save_model": true }, "compression": { "framework": "torch", "type": "pruning", "compressor": "l1_filter", "config_list": [{ "sparsity": { "range": [0.1, 0.9], "type": "float" }, "op_names": ["conv1", "conv2"] } ] }, "proposer": "random", "n_parallel": 4, "target": "max", "n_samples": 5 } ================================================ FILE: Examples/compression/mnist_pytorch/exp_auto_l2filter.json ================================================ { "name": "PyTorch MNIST L2 Filter Pruner (automatic)", "script": "mnist.py", "resource": "cpu", "resource_args": { "save_model": true }, "compression": { "framework": "torch", "type": "pruning", "compressor": "l2_filter", "config_list": [{ "sparsity": { "range": [0.1, 0.9], "type": "float" }, "op_names": ["conv1", "conv2"] } ] }, "proposer": "random", "n_parallel": 4, "target": "max", "n_samples": 5 } ================================================ FILE: Examples/compression/mnist_pytorch/exp_auto_level.json ================================================ { "name": "PyTorch MNIST Level Pruner (automatic)", "script": "mnist_no_speedup.py", "resource": "cpu", "resource_args": { "save_model": true }, "compression": { "framework": "torch", "type": "pruning", "compressor": "level", "config_list": [{ "sparsity": { "range": [0.1, 0.9], "type": "float" }, "op_names": ["conv1", "conv2", "fc1", "fc2"] } ] }, "proposer": "random", "n_parallel": 4, "target": "max", "n_samples": 5 } ================================================ FILE: Examples/compression/mnist_pytorch/exp_auto_lottery_ticket.json ================================================ { "name": "PyTorch MNIST Lottery Ticket Pruner (automatic)", "script": "mnist_lottery_ticket.py", "resource": "cpu", "resource_args": { "save_model": true }, "compression": { "framework": "torch", "type": "pruning", "compressor": "lottery_ticket", "config_list": [{ "prune_iterations": { "range": [1, 10], "type": "int" }, "sparsity": { "range": [0.1, 0.9], "type": "float" }, "op_types": ["Conv2d"] } ] }, "proposer": "random", "n_parallel": 4, "target": "max", "n_samples": 5 } ================================================ FILE: Examples/compression/mnist_pytorch/exp_auto_taylor_fo.json ================================================ { "name": "PyTorch MNIST Taylor FO Weight Filter Pruner (automatic)", "script": "mnist.py", "resource": "cpu", "resource_args": { "save_model": true }, "compression": { "framework": "torch", "type": "pruning", "compressor": "taylor_fo_weight_filter", "config_list": [{ "sparsity": { "range": [0.1, 0.9], "type": "float" }, "op_names": ["conv1", "conv2"] } ] }, "proposer": "random", "n_parallel": 4, "target": "max", "n_samples": 5 } ================================================ FILE: Examples/compression/mnist_pytorch/exp_autocompress.json ================================================ { "name": "PyTorch MNIST Auto Compress Pruner", "script": "mnist_autocompress.py", "resource": "cpu", "compression": { "framework": "torch", "type": "pruning", "compressor": "auto_compress", "config_list": [{ "sparsity": 0.5, "op_types": ["Conv2d"] } ] } } ================================================ FILE: Examples/compression/mnist_pytorch/exp_fpgm.json ================================================ { "name": "PyTorch MNIST FPGM Pruner", "script": "mnist.py", "resource": "cpu", "compression": { "framework": "torch", "type": "pruning", "compressor": "fpgm", "config_list": [{ "sparsity": 0.5, "op_types": ["Conv2d"] } ] } } ================================================ FILE: Examples/compression/mnist_pytorch/exp_fpgm_aup_args.json ================================================ { "name": "PyTorch MNIST FPGM Pruner (@aup_args)", "script": "mnist_aup_args.py", "resource": "cpu", "compression": { "framework": "torch", "type": "pruning", "compressor": "fpgm", "config_list": [{ "sparsity": 0.5, "op_types": ["Conv2d"] } ] } } ================================================ FILE: Examples/compression/mnist_pytorch/exp_fpgm_dependency_aware.json ================================================ { "name": "PyTorch MNIST FPGM Pruner (dependency aware)", "script": "mnist_dependency_aware.py", "resource": "cpu", "compression": { "framework": "torch", "type": "pruning", "compressor": "fpgm", "config_list": [{ "sparsity": 0.5, "op_types": ["Conv2d"] } ] } } ================================================ FILE: Examples/compression/mnist_pytorch/exp_l1filter.json ================================================ { "name": "PyTorch MNIST L1 Filter Pruner", "script": "mnist.py", "resource": "cpu", "compression": { "framework": "torch", "type": "pruning", "compressor": "l1_filter", "config_list": [{ "sparsity": 0.5, "op_types": ["Conv2d"] } ] } } ================================================ FILE: Examples/compression/mnist_pytorch/exp_l1filter_dependency_aware.json ================================================ { "name": "PyTorch MNIST L1 Filter Pruner (dependency aware)", "script": "mnist_dependency_aware.py", "resource": "cpu", "compression": { "framework": "torch", "type": "pruning", "compressor": "l1_filter", "config_list": [{ "sparsity": 0.5, "op_types": ["Conv2d"] } ] } } ================================================ FILE: Examples/compression/mnist_pytorch/exp_l2filter.json ================================================ { "name": "PyTorch MNIST L2 Filter Pruner", "script": "mnist.py", "resource": "cpu", "compression": { "framework": "torch", "type": "pruning", "compressor": "l2_filter", "config_list": [{ "sparsity": 0.5, "op_types": ["Conv2d"] } ] } } ================================================ FILE: Examples/compression/mnist_pytorch/exp_l2filter_dependency_aware.json ================================================ { "name": "PyTorch MNIST L2 Filter Pruner (dependency aware)", "script": "mnist_dependency_aware.py", "resource": "cpu", "compression": { "framework": "torch", "type": "pruning", "compressor": "l2_filter", "config_list": [{ "sparsity": 0.5, "op_types": ["Conv2d"] } ] } } ================================================ FILE: Examples/compression/mnist_pytorch/exp_level.json ================================================ { "name": "PyTorch MNIST Level Pruner", "script": "mnist_no_speedup.py", "resource": "cpu", "compression": { "framework": "torch", "type": "pruning", "compressor": "level", "config_list": [{ "sparsity": 0.8, "op_types": ["default"] } ] } } ================================================ FILE: Examples/compression/mnist_pytorch/exp_lottery_ticket.json ================================================ { "name": "PyTorch MNIST Lottery Ticket Pruner", "script": "mnist_lottery_ticket.py", "resource": "cpu", "compression": { "framework": "torch", "type": "pruning", "compressor": "lottery_ticket", "config_list": [{ "prune_iterations": 5, "sparsity": 0.8, "op_types": ["Conv2d"] } ] } } ================================================ FILE: Examples/compression/mnist_pytorch/exp_net_adapt.json ================================================ { "name": "PyTorch MNIST NetAdapt Pruner", "script": "mnist_net_adapt.py", "resource": "cpu", "compression": { "framework": "torch", "type": "pruning", "compressor": "net_adapt", "config_list": [{ "sparsity": 0.5, "op_types": ["Conv2d"] } ] } } ================================================ FILE: Examples/compression/mnist_pytorch/exp_quantization_bnn.json ================================================ { "name": "PyTorch MNIST BNN Quantizer", "script": "mnist_no_speedup.py", "resource": "cpu", "compression": { "framework": "torch", "type": "quantization", "compressor": "bnn", "config_list": [{ "quant_bits": 1, "quant_types": ["weight"], "op_types": ["Conv2d", "Linear"], "op_names": ["conv1", "conv2", "fc1", "fc2"] }] } } ================================================ FILE: Examples/compression/mnist_pytorch/exp_quantization_dorefa.json ================================================ { "name": "PyTorch MNIST DoReFa Quantizer", "script": "mnist_no_speedup.py", "resource": "cpu", "compression": { "framework": "torch", "type": "quantization", "compressor": "dorefa", "config_list": [{ "quant_types": ["weight"], "quant_bits": 8, "op_types": ["default"] }] } } ================================================ FILE: Examples/compression/mnist_pytorch/exp_quantization_naive.json ================================================ { "name": "PyTorch MNIST Naive Quantizer", "script": "mnist_no_speedup.py", "resource": "cpu", "compression": { "framework": "torch", "type": "quantization", "compressor": "naive", "config_list": [] } } ================================================ FILE: Examples/compression/mnist_pytorch/exp_quantization_qat.json ================================================ { "name": "PyTorch MNIST QAT Quantizer", "script": "mnist_no_speedup.py", "resource": "cpu", "compression": { "framework": "torch", "type": "quantization", "compressor": "qat", "config_list": [{ "quant_types": ["weight"], "quant_bits": { "weight": 8 }, "op_types": ["Conv2d", "Linear"] }, { "quant_types": ["output"], "quant_bits": 8, "quant_start_step": 7000, "op_types":["ReLU6"] }] } } ================================================ FILE: Examples/compression/mnist_pytorch/exp_sensitivity.json ================================================ { "name": "PyTorch MNIST Sensitivity Pruner", "script": "mnist_sensitivity.py", "resource": "cpu", "compression": { "framework": "torch", "type": "pruning", "compressor": "sensitivity", "config_list": [{ "sparsity": 0.5, "op_types": ["Conv2d"] } ] } } ================================================ FILE: Examples/compression/mnist_pytorch/exp_simulated_annealing.json ================================================ { "name": "PyTorch MNIST Simulated Annealing Pruner", "script": "mnist_simulated_annealing.py", "resource": "cpu", "compression": { "framework": "torch", "type": "pruning", "compressor": "simulated_annealing", "config_list": [{ "sparsity": 0.5, "op_types": ["Conv2d"] } ] } } ================================================ FILE: Examples/compression/mnist_pytorch/exp_taylor_fo.json ================================================ { "name": "PyTorch MNIST Taylor FO Weight Filter Pruner", "script": "mnist.py", "resource": "cpu", "compression": { "framework": "torch", "type": "pruning", "compressor": "taylor_fo_weight_filter", "config_list": [{ "sparsity": 0.5, "op_types": ["Conv2d"] } ] } } ================================================ FILE: Examples/compression/mnist_pytorch/exp_taylor_fo_dependency_aware.json ================================================ { "name": "PyTorch MNIST Taylor FO Weight Filter Pruner (dependency aware)", "script": "mnist_dependency_aware.py", "resource": "cpu", "compression": { "framework": "torch", "type": "pruning", "compressor": "taylor_fo_weight_filter", "config_list": [{ "sparsity": 0.5, "op_types": ["Conv2d"] } ] } } ================================================ FILE: Examples/compression/mnist_pytorch/mnist.py ================================================ #!/usr/bin/env python3 """ MNIST convolutional network using pytorch ============================================ .. Copyright (c) 2018 LG Electronics Inc. SPDX-License-Identifier: GPL-3.0-or-later """ from __future__ import print_function import argparse import sys import time import numpy as np import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim from torchvision import datasets, transforms from torch.optim.lr_scheduler import StepLR import aup class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d(1, 32, 3, 1) self.conv2 = nn.Conv2d(32, 64, 3, 1) self.dropout1 = nn.Dropout2d(0.25) self.dropout2 = nn.Dropout2d(0.5) self.fc1 = nn.Linear(9216, 128) self.fc2 = nn.Linear(128, 10) def forward(self, x): x = self.conv1(x) x = F.relu(x) x = self.conv2(x) x = F.relu(x) x = F.max_pool2d(x, 2) x = self.dropout1(x) x = torch.flatten(x, 1) x = self.fc1(x) x = F.relu(x) x = self.dropout2(x) x = self.fc2(x) output = F.log_softmax(x, dim=1) return output def train(args, model, device, train_loader, optimizer, epoch): model.train() for batch_idx, (data, target) in enumerate(train_loader): data, target = data.to(device), target.to(device) optimizer.zero_grad() output = model(data) loss = F.nll_loss(output, target) loss.backward() optimizer.step() if batch_idx % args.log_interval == 0: print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format( epoch, batch_idx * len(data), len(train_loader.dataset), 100. * batch_idx / len(train_loader), loss.item())) if args.dry_run: break def test(model, device, test_loader): model.eval() test_loss = 0 correct = 0 with torch.no_grad(): for data, target in test_loader: data, target = data.to(device), target.to(device) output = model(data) test_loss += F.nll_loss(output, target, reduction='sum').item() # sum up batch loss pred = output.argmax(dim=1, keepdim=True) # get the index of the max log-probability correct += pred.eq(target.view_as(pred)).sum().item() test_loss /= len(test_loader.dataset) print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format( test_loss, correct, len(test_loader.dataset), 100. * correct / len(test_loader.dataset))) return test_loss, correct / len(test_loader.dataset) def main(config): # Training settings parser = argparse.ArgumentParser(description='PyTorch MNIST Example') parser.add_argument('--batch-size', type=int, default=64, metavar='N', help='input batch size for training (default: 64)') parser.add_argument('--test-batch-size', type=int, default=1000, metavar='N', help='input batch size for testing (default: 1000)') parser.add_argument('--epochs', type=int, default=1, metavar='N', help='number of epochs to train (default: 14)') parser.add_argument('--lr', type=float, default=1.0, metavar='LR', help='learning rate (default: 1.0)') parser.add_argument('--gamma', type=float, default=0.7, metavar='M', help='Learning rate step gamma (default: 0.7)') parser.add_argument('--no-cuda', action='store_true', default=False, help='disables CUDA training') parser.add_argument('--dry-run', action='store_true', default=False, help='quickly check a single pass') parser.add_argument('--seed', type=int, default=1, metavar='S', help='random seed (default: 1)') parser.add_argument('--log-interval', type=int, default=10, metavar='N', help='how many batches to wait before logging training status') args, _ = parser.parse_known_args() use_cuda = not args.no_cuda and torch.cuda.is_available() torch.manual_seed(args.seed) device = torch.device("cuda" if use_cuda else "cpu") kwargs = {'batch_size': args.batch_size} if use_cuda: kwargs.update({'num_workers': 1, 'pin_memory': True, 'shuffle': True}, ) transform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,)) ]) dataset1 = datasets.MNIST('/tmp/torch_mnist_data', train=True, download=True, transform=transform) dataset2 = datasets.MNIST('/tmp/torch_mnist_data', train=False, transform=transform) train_loader = torch.utils.data.DataLoader(dataset1, **kwargs) test_loader = torch.utils.data.DataLoader(dataset2, **kwargs) model = Net().to(device) model.load_state_dict(torch.load("mnist_pretrained.pth", map_location=lambda storage, location: storage)) optimizer = optim.Adadelta(model.parameters(), lr=args.lr) _, test_acc = test(model, device, test_loader) compressor = aup.compression.create_compressor(model, config, optimizer=optimizer) model = compressor.compress() scheduler = StepLR(optimizer, step_size=1, gamma=args.gamma) for epoch in range(1, args.epochs + 1): train(args, model, device, train_loader, optimizer, epoch) _, test_acc = test(model, device, test_loader) scheduler.step() model = compressor.apply_speedup(dummy_input=torch.randn(1, 1, 28, 28).to(device)) flops, _, _ = compressor.count_flops_params((1, 1, 28, 28)) flops = int(flops) print("test_acc={} flops={}".format(test_acc, flops)) if "save_model" in config and config["save_model"]: compressor.export_model( model_path="mnist_compressed.pth", speedup=True, folder_name=config["folder_name"]) aup.print_result((test_acc - 1.) / np.log(flops)) if __name__ == '__main__': config = aup.BasicConfig().load(sys.argv[1]) main(config) ================================================ FILE: Examples/compression/mnist_pytorch/mnist_admm.py ================================================ #!/usr/bin/env python3 from __future__ import print_function import argparse import sys import time import numpy as np import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim from torchvision import datasets, transforms from torch.optim.lr_scheduler import StepLR import aup class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d(1, 32, 3, 1) self.conv2 = nn.Conv2d(32, 64, 3, 1) self.dropout1 = nn.Dropout2d(0.25) self.dropout2 = nn.Dropout2d(0.5) self.fc1 = nn.Linear(9216, 128) self.fc2 = nn.Linear(128, 10) def forward(self, x): x = self.conv1(x) x = F.relu(x) x = self.conv2(x) x = F.relu(x) x = F.max_pool2d(x, 2) x = self.dropout1(x) x = torch.flatten(x, 1) x = self.fc1(x) x = F.relu(x) x = self.dropout2(x) x = self.fc2(x) output = F.log_softmax(x, dim=1) return output def train(args, model, device, train_loader, optimizer, epoch): model.train() for batch_idx, (data, target) in enumerate(train_loader): data, target = data.to(device), target.to(device) optimizer.zero_grad() output = model(data) loss = F.nll_loss(output, target) loss.backward() optimizer.step() if batch_idx % args.log_interval == 0: print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format( epoch, batch_idx * len(data), len(train_loader.dataset), 100. * batch_idx / len(train_loader), loss.item())) if args.dry_run: break def test(model, device, test_loader): model.eval() test_loss = 0 correct = 0 with torch.no_grad(): for data, target in test_loader: data, target = data.to(device), target.to(device) output = model(data) test_loss += F.nll_loss(output, target, reduction='sum').item() # sum up batch loss pred = output.argmax(dim=1, keepdim=True) # get the index of the max log-probability correct += pred.eq(target.view_as(pred)).sum().item() test_loss /= len(test_loader.dataset) print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format( test_loss, correct, len(test_loader.dataset), 100. * correct / len(test_loader.dataset))) return test_loss, correct / len(test_loader.dataset) def main(config): # Training settings parser = argparse.ArgumentParser(description='PyTorch MNIST Example') parser.add_argument('--batch-size', type=int, default=64, metavar='N', help='input batch size for training (default: 64)') parser.add_argument('--test-batch-size', type=int, default=1000, metavar='N', help='input batch size for testing (default: 1000)') parser.add_argument('--epochs', type=int, default=2, metavar='N', help='number of epochs to train (default: 14)') parser.add_argument('--lr', type=float, default=1.0, metavar='LR', help='learning rate (default: 1.0)') parser.add_argument('--gamma', type=float, default=0.7, metavar='M', help='Learning rate step gamma (default: 0.7)') parser.add_argument('--no-cuda', action='store_true', default=False, help='disables CUDA training') parser.add_argument('--dry-run', action='store_true', default=False, help='quickly check a single pass') parser.add_argument('--seed', type=int, default=1, metavar='S', help='random seed (default: 1)') parser.add_argument('--log-interval', type=int, default=10, metavar='N', help='how many batches to wait before logging training status') args, _ = parser.parse_known_args() use_cuda = not args.no_cuda and torch.cuda.is_available() torch.manual_seed(args.seed) device = torch.device("cuda" if use_cuda else "cpu") kwargs = {'batch_size': args.batch_size} if use_cuda: kwargs.update({'num_workers': 1, 'pin_memory': True, 'shuffle': True}, ) transform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,)) ]) dataset1 = datasets.MNIST('/tmp/torch_mnist_data', train=True, download=True, transform=transform) dataset2 = datasets.MNIST('/tmp/torch_mnist_data', train=False, transform=transform) train_loader = torch.utils.data.DataLoader(dataset1, **kwargs) test_loader = torch.utils.data.DataLoader(dataset2, **kwargs) model = Net().to(device) model.load_state_dict(torch.load("mnist_pretrained.pth", map_location=lambda storage, location: storage)) optimizer = optim.Adadelta(model.parameters(), lr=args.lr) scheduler = StepLR(optimizer, step_size=1, gamma=args.gamma) _, test_acc = test(model, device, test_loader) def short_term_fine_tuner(model, criterion, optimizer, epoch, callback): model.train() for batch_idx, (data, target) in enumerate(train_loader): data, target = data.to(device), target.to(device) optimizer.zero_grad() output = model(data) loss = criterion(output, target) loss.backward() if callback: callback() optimizer.step() if batch_idx % args.log_interval == 0: print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format( epoch, batch_idx * len(data), len(train_loader.dataset), 100. * batch_idx / len(train_loader), loss.item())) if args.dry_run: break scheduler.step() def evaluator(model): _, test_acc = test(model, device, test_loader) return test_acc compressor = aup.compression.create_compressor(model, config, trainer=short_term_fine_tuner, num_iterations=30, training_epochs=1) model = compressor.compress() model = compressor.apply_speedup(dummy_input=torch.randn(1, 1, 28, 28).to(device)) flops, _, _ = compressor.count_flops_params((1, 1, 28, 28)) flops = int(flops) print("test_acc={} flops={}".format(test_acc, flops)) compressor.export_model( model_path="mnist_compressed.pth", save_best_only=True, speedup=True, **config) aup.print_result((test_acc - 1.) / np.log(flops)) if __name__ == '__main__': config = aup.BasicConfig().load(sys.argv[1]) main(config) ================================================ FILE: Examples/compression/mnist_pytorch/mnist_agp.py ================================================ #!/usr/bin/env python3 from __future__ import print_function import argparse import sys import time import numpy as np import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim from torchvision import datasets, transforms from torch.optim.lr_scheduler import StepLR import aup class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d(1, 32, 3, 1) self.conv2 = nn.Conv2d(32, 64, 3, 1) self.dropout1 = nn.Dropout2d(0.25) self.dropout2 = nn.Dropout2d(0.5) self.fc1 = nn.Linear(9216, 128) self.fc2 = nn.Linear(128, 10) def forward(self, x): x = self.conv1(x) x = F.relu(x) x = self.conv2(x) x = F.relu(x) x = F.max_pool2d(x, 2) x = self.dropout1(x) x = torch.flatten(x, 1) x = self.fc1(x) x = F.relu(x) x = self.dropout2(x) x = self.fc2(x) output = F.log_softmax(x, dim=1) return output def train(args, model, device, train_loader, optimizer, epoch): model.train() for batch_idx, (data, target) in enumerate(train_loader): data, target = data.to(device), target.to(device) optimizer.zero_grad() output = model(data) loss = F.nll_loss(output, target) loss.backward() optimizer.step() if batch_idx % args.log_interval == 0: print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format( epoch, batch_idx * len(data), len(train_loader.dataset), 100. * batch_idx / len(train_loader), loss.item())) if args.dry_run: break def test(model, device, test_loader): model.eval() test_loss = 0 correct = 0 with torch.no_grad(): for data, target in test_loader: data, target = data.to(device), target.to(device) output = model(data) test_loss += F.nll_loss(output, target, reduction='sum').item() # sum up batch loss pred = output.argmax(dim=1, keepdim=True) # get the index of the max log-probability correct += pred.eq(target.view_as(pred)).sum().item() test_loss /= len(test_loader.dataset) print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format( test_loss, correct, len(test_loader.dataset), 100. * correct / len(test_loader.dataset))) return test_loss, correct / len(test_loader.dataset) def main(config): # Training settings parser = argparse.ArgumentParser(description='PyTorch MNIST Example') parser.add_argument('--batch-size', type=int, default=64, metavar='N', help='input batch size for training (default: 64)') parser.add_argument('--test-batch-size', type=int, default=1000, metavar='N', help='input batch size for testing (default: 1000)') parser.add_argument('--epochs', type=int, default=2, metavar='N', help='number of epochs to train (default: 14)') parser.add_argument('--lr', type=float, default=1.0, metavar='LR', help='learning rate (default: 1.0)') parser.add_argument('--gamma', type=float, default=0.7, metavar='M', help='Learning rate step gamma (default: 0.7)') parser.add_argument('--no-cuda', action='store_true', default=False, help='disables CUDA training') parser.add_argument('--dry-run', action='store_true', default=False, help='quickly check a single pass') parser.add_argument('--seed', type=int, default=1, metavar='S', help='random seed (default: 1)') parser.add_argument('--log-interval', type=int, default=10, metavar='N', help='how many batches to wait before logging training status') args, _ = parser.parse_known_args() use_cuda = not args.no_cuda and torch.cuda.is_available() torch.manual_seed(args.seed) device = torch.device("cuda" if use_cuda else "cpu") kwargs = {'batch_size': args.batch_size} if use_cuda: kwargs.update({'num_workers': 1, 'pin_memory': True, 'shuffle': True}, ) transform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,)) ]) dataset1 = datasets.MNIST('/tmp/torch_mnist_data', train=True, download=True, transform=transform) dataset2 = datasets.MNIST('/tmp/torch_mnist_data', train=False, transform=transform) train_loader = torch.utils.data.DataLoader(dataset1, **kwargs) test_loader = torch.utils.data.DataLoader(dataset2, **kwargs) model = Net().to(device) model.load_state_dict(torch.load("mnist_pretrained.pth", map_location=lambda storage, location: storage)) optimizer = optim.Adadelta(model.parameters(), lr=args.lr) _, test_acc = test(model, device, test_loader) compressor = aup.compression.create_compressor(model, config, optimizer=optimizer) model = compressor.compress() scheduler = StepLR(optimizer, step_size=1, gamma=args.gamma) for epoch in range(1, args.epochs + 1): train(args, model, device, train_loader, optimizer, epoch) _, test_acc = test(model, device, test_loader) scheduler.step() compressor.update_epoch(epoch) flops, _, _ = compressor.count_flops_params((1, 1, 28, 28)) flops = int(flops) print("test_acc={} flops={}".format(test_acc, flops)) compressor.export_model( model_path="mnist_compressed.pth", mask_path="mnist_compressed_mask.pth", save_best_only=True, **config) aup.print_result((test_acc - 1.) / np.log(flops)) if __name__ == '__main__': config = aup.BasicConfig().load(sys.argv[1]) main(config) ================================================ FILE: Examples/compression/mnist_pytorch/mnist_amc.py ================================================ #!/usr/bin/env python3 from __future__ import print_function import argparse import sys import time import numpy as np from PIL import Image import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim import torchvision from torchvision import datasets, transforms from torch.optim.lr_scheduler import StepLR import aup def train(args, model, device, train_loader, optimizer, epoch): model.train() for batch_idx, (data, target) in enumerate(train_loader): data, target = data.to(device), target.to(device) optimizer.zero_grad() output = model(data) loss = F.nll_loss(output, target) loss.backward() optimizer.step() if batch_idx % args.log_interval == 0: print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format( epoch, batch_idx * len(data), len(train_loader.dataset), 100. * batch_idx / len(train_loader), loss.item())) if args.dry_run: break def test(model, device, test_loader): model.eval() test_loss = 0 correct = 0 with torch.no_grad(): for data, target in test_loader: data, target = data.to(device), target.to(device) output = model(data) test_loss += F.nll_loss(output, target, reduction='sum').item() # sum up batch loss pred = output.argmax(dim=1, keepdim=True) # get the index of the max log-probability correct += pred.eq(target.view_as(pred)).sum().item() test_loss /= len(test_loader.dataset) print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format( test_loss, correct, len(test_loader.dataset), 100. * correct / len(test_loader.dataset))) return test_loss, correct / len(test_loader.dataset) def main(config): # Training settings parser = argparse.ArgumentParser(description='PyTorch MNIST Example') parser.add_argument('--batch-size', type=int, default=64, metavar='N', help='input batch size for training (default: 64)') parser.add_argument('--test-batch-size', type=int, default=1000, metavar='N', help='input batch size for testing (default: 1000)') parser.add_argument('--epochs', type=int, default=1, metavar='N', help='number of epochs to train (default: 14)') parser.add_argument('--lr', type=float, default=1.0, metavar='LR', help='learning rate (default: 1.0)') parser.add_argument('--gamma', type=float, default=0.7, metavar='M', help='Learning rate step gamma (default: 0.7)') parser.add_argument('--no-cuda', action='store_true', default=False, help='disables CUDA training') parser.add_argument('--dry-run', action='store_true', default=False, help='quickly check a single pass') parser.add_argument('--seed', type=int, default=1, metavar='S', help='random seed (default: 1)') parser.add_argument('--log-interval', type=int, default=10, metavar='N', help='how many batches to wait before logging training status') args, _ = parser.parse_known_args() use_cuda = not args.no_cuda and torch.cuda.is_available() torch.manual_seed(args.seed) device = torch.device("cuda" if use_cuda else "cpu") kwargs = {'batch_size': args.batch_size} if use_cuda: kwargs.update({'num_workers': 1, 'pin_memory': True, 'shuffle': True}, ) def new_getitem(self, index): img, target = self.data[index], int(self.targets[index]) # doing this so that it is consistent with all other datasets # to return a PIL Image img = Image.fromarray(img.numpy(), mode='L') img = img.convert('RGB') if self.transform is not None: img = self.transform(img) if self.target_transform is not None: target = self.target_transform(target) return img, target datasets.mnist.MNIST.__getitem__ = new_getitem transform = transforms.Compose([ transforms.Resize(256), transforms.CenterCrop(224), transforms.ToTensor(), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]), ]) dataset1 = datasets.MNIST('/tmp/torch_mnist_data', train=True, download=True, transform=transform) dataset2 = datasets.MNIST('/tmp/torch_mnist_data', train=False, transform=transform) train_loader = torch.utils.data.DataLoader(dataset1, **kwargs) test_loader = torch.utils.data.DataLoader(dataset2, **kwargs) model = torch.hub.load('pytorch/vision:v{}'.format(torchvision.__version__), 'mobilenet_v2', pretrained=True).to(device) optimizer = optim.Adadelta(model.parameters(), lr=args.lr) scheduler = StepLR(optimizer, step_size=1, gamma=args.gamma) _, test_acc = test(model, device, test_loader) def evaluator(val_loader, model): _, test_acc = test(model, device, val_loader) return test_acc compressor = aup.compression.create_compressor( model, config, evaluator=evaluator, val_loader=test_loader, flops_ratio=0.5, model_type="mobilenetv2", n_calibration_batches=1, n_points_per_layer=1, warmup=1, hidden1=32, hidden2=32, train_episode=1, max_episode_length=1) compressor.compress() flops, _, _ = compressor.count_flops_params((1, 3, 28, 28)) print("test_acc={} flops={}".format(test_acc, flops)) if "save_model" in config and config["save_model"]: compressor.export_model( model_path="mnist_compressed.pth", mask_path="mnist_compressed_mask.pth", save_best_only=True, folder_name=config["folder_name"]) aup.print_result((test_acc - 1.) / np.log(flops)) if __name__ == '__main__': config = aup.BasicConfig().load(sys.argv[1]) main(config) ================================================ FILE: Examples/compression/mnist_pytorch/mnist_aup_args.py ================================================ #!/usr/bin/env python3 from __future__ import print_function import argparse import sys import time import numpy as np import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim from torchvision import datasets, transforms from torch.optim.lr_scheduler import StepLR import aup class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d(1, 32, 3, 1) self.conv2 = nn.Conv2d(32, 64, 3, 1) self.dropout1 = nn.Dropout2d(0.25) self.dropout2 = nn.Dropout2d(0.5) self.fc1 = nn.Linear(9216, 128) self.fc2 = nn.Linear(128, 10) def forward(self, x): x = self.conv1(x) x = F.relu(x) x = self.conv2(x) x = F.relu(x) x = F.max_pool2d(x, 2) x = self.dropout1(x) x = torch.flatten(x, 1) x = self.fc1(x) x = F.relu(x) x = self.dropout2(x) x = self.fc2(x) output = F.log_softmax(x, dim=1) return output def train(args, model, device, train_loader, optimizer, epoch): model.train() for batch_idx, (data, target) in enumerate(train_loader): data, target = data.to(device), target.to(device) optimizer.zero_grad() output = model(data) loss = F.nll_loss(output, target) loss.backward() optimizer.step() if batch_idx % args.log_interval == 0: print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format( epoch, batch_idx * len(data), len(train_loader.dataset), 100. * batch_idx / len(train_loader), loss.item())) if args.dry_run: break def test(model, device, test_loader): model.eval() test_loss = 0 correct = 0 with torch.no_grad(): for data, target in test_loader: data, target = data.to(device), target.to(device) output = model(data) test_loss += F.nll_loss(output, target, reduction='sum').item() # sum up batch loss pred = output.argmax(dim=1, keepdim=True) # get the index of the max log-probability correct += pred.eq(target.view_as(pred)).sum().item() test_loss /= len(test_loader.dataset) print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format( test_loss, correct, len(test_loader.dataset), 100. * correct / len(test_loader.dataset))) return test_loss, correct / len(test_loader.dataset) @aup.aup_args def main(compression_type, compression_framework, compressor, config_list): config = locals() # Training settings parser = argparse.ArgumentParser(description='PyTorch MNIST Example') parser.add_argument('--batch-size', type=int, default=64, metavar='N', help='input batch size for training (default: 64)') parser.add_argument('--test-batch-size', type=int, default=1000, metavar='N', help='input batch size for testing (default: 1000)') parser.add_argument('--epochs', type=int, default=1, metavar='N', help='number of epochs to train (default: 14)') parser.add_argument('--lr', type=float, default=1.0, metavar='LR', help='learning rate (default: 1.0)') parser.add_argument('--gamma', type=float, default=0.7, metavar='M', help='Learning rate step gamma (default: 0.7)') parser.add_argument('--no-cuda', action='store_true', default=False, help='disables CUDA training') parser.add_argument('--dry-run', action='store_true', default=False, help='quickly check a single pass') parser.add_argument('--seed', type=int, default=1, metavar='S', help='random seed (default: 1)') parser.add_argument('--log-interval', type=int, default=10, metavar='N', help='how many batches to wait before logging training status') args, _ = parser.parse_known_args() use_cuda = not args.no_cuda and torch.cuda.is_available() torch.manual_seed(args.seed) device = torch.device("cuda" if use_cuda else "cpu") kwargs = {'batch_size': args.batch_size} if use_cuda: kwargs.update({'num_workers': 1, 'pin_memory': True, 'shuffle': True}, ) transform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,)) ]) dataset1 = datasets.MNIST('/tmp/torch_mnist_data', train=True, download=True, transform=transform) dataset2 = datasets.MNIST('/tmp/torch_mnist_data', train=False, transform=transform) train_loader = torch.utils.data.DataLoader(dataset1, **kwargs) test_loader = torch.utils.data.DataLoader(dataset2, **kwargs) model = Net().to(device) model.load_state_dict(torch.load("mnist_pretrained.pth", map_location=lambda storage, location: storage)) optimizer = optim.Adadelta(model.parameters(), lr=args.lr) _, test_acc = test(model, device, test_loader) compressor = aup.compression.create_compressor(model, config, optimizer=optimizer) model = compressor.compress() scheduler = StepLR(optimizer, step_size=1, gamma=args.gamma) for epoch in range(1, args.epochs + 1): train(args, model, device, train_loader, optimizer, epoch) _, test_acc = test(model, device, test_loader) scheduler.step() model = compressor.apply_speedup(dummy_input=torch.randn(1, 1, 28, 28).to(device)) flops, _, _ = compressor.count_flops_params((1, 1, 28, 28)) flops = int(flops) print("test_acc={} flops={}".format(test_acc, flops)) aup.aup_save_model( compressor.export_model, model_path="mnist_compressed.pth", speedup=True) return (test_acc - 1.) / np.log(flops) if __name__ == '__main__': if len(sys.argv) < 2: print("config file required") exit(1) main(sys.argv[1]) ================================================ FILE: Examples/compression/mnist_pytorch/mnist_autocompress.py ================================================ #!/usr/bin/env python3 from __future__ import print_function import argparse import sys import time import numpy as np import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim from torchvision import datasets, transforms from torch.optim.lr_scheduler import StepLR import aup class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d(1, 32, 3, 1) self.conv2 = nn.Conv2d(32, 64, 3, 1) self.dropout1 = nn.Dropout2d(0.25) self.dropout2 = nn.Dropout2d(0.5) self.fc1 = nn.Linear(9216, 128) self.fc2 = nn.Linear(128, 10) def forward(self, x): x = self.conv1(x) x = F.relu(x) x = self.conv2(x) x = F.relu(x) x = F.max_pool2d(x, 2) x = self.dropout1(x) x = torch.flatten(x, 1) x = self.fc1(x) x = F.relu(x) x = self.dropout2(x) x = self.fc2(x) output = F.log_softmax(x, dim=1) return output def train(args, model, device, train_loader, optimizer, epoch): model.train() for batch_idx, (data, target) in enumerate(train_loader): data, target = data.to(device), target.to(device) optimizer.zero_grad() output = model(data) loss = F.nll_loss(output, target) loss.backward() optimizer.step() if batch_idx % args.log_interval == 0: print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format( epoch, batch_idx * len(data), len(train_loader.dataset), 100. * batch_idx / len(train_loader), loss.item())) if args.dry_run: break def test(model, device, test_loader): model.eval() test_loss = 0 correct = 0 with torch.no_grad(): for data, target in test_loader: data, target = data.to(device), target.to(device) output = model(data) test_loss += F.nll_loss(output, target, reduction='sum').item() # sum up batch loss pred = output.argmax(dim=1, keepdim=True) # get the index of the max log-probability correct += pred.eq(target.view_as(pred)).sum().item() test_loss /= len(test_loader.dataset) print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format( test_loss, correct, len(test_loader.dataset), 100. * correct / len(test_loader.dataset))) return test_loss, correct / len(test_loader.dataset) def main(config): # Training settings parser = argparse.ArgumentParser(description='PyTorch MNIST Example') parser.add_argument('--batch-size', type=int, default=64, metavar='N', help='input batch size for training (default: 64)') parser.add_argument('--test-batch-size', type=int, default=1000, metavar='N', help='input batch size for testing (default: 1000)') parser.add_argument('--epochs', type=int, default=2, metavar='N', help='number of epochs to train (default: 14)') parser.add_argument('--lr', type=float, default=1.0, metavar='LR', help='learning rate (default: 1.0)') parser.add_argument('--gamma', type=float, default=0.7, metavar='M', help='Learning rate step gamma (default: 0.7)') parser.add_argument('--no-cuda', action='store_true', default=False, help='disables CUDA training') parser.add_argument('--dry-run', action='store_true', default=False, help='quickly check a single pass') parser.add_argument('--seed', type=int, default=1, metavar='S', help='random seed (default: 1)') parser.add_argument('--log-interval', type=int, default=10, metavar='N', help='how many batches to wait before logging training status') args, _ = parser.parse_known_args() use_cuda = not args.no_cuda and torch.cuda.is_available() torch.manual_seed(args.seed) device = torch.device("cuda" if use_cuda else "cpu") kwargs = {'batch_size': args.batch_size} if use_cuda: kwargs.update({'num_workers': 1, 'pin_memory': True, 'shuffle': True}, ) transform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,)) ]) dataset1 = datasets.MNIST('/tmp/torch_mnist_data', train=True, download=True, transform=transform) dataset2 = datasets.MNIST('/tmp/torch_mnist_data', train=False, transform=transform) train_loader = torch.utils.data.DataLoader(dataset1, **kwargs) test_loader = torch.utils.data.DataLoader(dataset2, **kwargs) model = Net().to(device) model.load_state_dict(torch.load("mnist_pretrained.pth", map_location=lambda storage, location: storage)) optimizer = optim.Adadelta(model.parameters(), lr=args.lr) scheduler = StepLR(optimizer, step_size=1, gamma=args.gamma) _, test_acc = test(model, device, test_loader) def short_term_fine_tuner(model, optimizer, criterion, epoch, callback): model.train() for batch_idx, (data, target) in enumerate(train_loader): data, target = data.to(device), target.to(device) optimizer.zero_grad() output = model(data) loss = criterion(output, target) loss.backward() if callback: callback() optimizer.step() if batch_idx % args.log_interval == 0: print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format( epoch, batch_idx * len(data), len(train_loader.dataset), 100. * batch_idx / len(train_loader), loss.item())) if args.dry_run: break scheduler.step() def evaluator(model): _, test_acc = test(model, device, test_loader) return test_acc compressor = aup.compression.create_compressor( model, config, trainer=short_term_fine_tuner, evaluator=evaluator, dummy_input=torch.randn(1, 1, 28, 28).to(device), optimize_mode="maximize", num_iterations=1, admm_num_iterations=1, admm_training_epochs=1, experiment_data_dir="./autocompress") model = compressor.compress() flops, _, _ = compressor.count_flops_params((1, 1, 28, 28)) flops = int(flops) print("test_acc={} flops={}".format(test_acc, flops)) compressor.export_model( model_path="mnist_compressed.pth", mask_path="mnist_compressed_mask.pth", save_best_only=True, **config) aup.print_result((test_acc - 1.) / np.log(flops)) if __name__ == '__main__': config = aup.BasicConfig().load(sys.argv[1]) main(config) ================================================ FILE: Examples/compression/mnist_pytorch/mnist_dependency_aware.py ================================================ #!/usr/bin/env python3 from __future__ import print_function import argparse import sys import time import numpy as np import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim from torchvision import datasets, transforms from torch.optim.lr_scheduler import StepLR import aup class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d(1, 32, 3, 1) self.conv2 = nn.Conv2d(32, 64, 3, 1) self.dropout1 = nn.Dropout2d(0.25) self.dropout2 = nn.Dropout2d(0.5) self.fc1 = nn.Linear(9216, 128) self.fc2 = nn.Linear(128, 10) def forward(self, x): x = self.conv1(x) x = F.relu(x) x = self.conv2(x) x = F.relu(x) x = F.max_pool2d(x, 2) x = self.dropout1(x) x = torch.flatten(x, 1) x = self.fc1(x) x = F.relu(x) x = self.dropout2(x) x = self.fc2(x) output = F.log_softmax(x, dim=1) return output def train(args, model, device, train_loader, optimizer, epoch): model.train() for batch_idx, (data, target) in enumerate(train_loader): data, target = data.to(device), target.to(device) optimizer.zero_grad() output = model(data) loss = F.nll_loss(output, target) loss.backward() optimizer.step() if batch_idx % args.log_interval == 0: print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format( epoch, batch_idx * len(data), len(train_loader.dataset), 100. * batch_idx / len(train_loader), loss.item())) if args.dry_run: break def test(model, device, test_loader): model.eval() test_loss = 0 correct = 0 with torch.no_grad(): for data, target in test_loader: data, target = data.to(device), target.to(device) output = model(data) test_loss += F.nll_loss(output, target, reduction='sum').item() # sum up batch loss pred = output.argmax(dim=1, keepdim=True) # get the index of the max log-probability correct += pred.eq(target.view_as(pred)).sum().item() test_loss /= len(test_loader.dataset) print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format( test_loss, correct, len(test_loader.dataset), 100. * correct / len(test_loader.dataset))) return test_loss, correct / len(test_loader.dataset) def main(config): # Training settings parser = argparse.ArgumentParser(description='PyTorch MNIST Example') parser.add_argument('--batch-size', type=int, default=64, metavar='N', help='input batch size for training (default: 64)') parser.add_argument('--test-batch-size', type=int, default=1000, metavar='N', help='input batch size for testing (default: 1000)') parser.add_argument('--epochs', type=int, default=1, metavar='N', help='number of epochs to train (default: 14)') parser.add_argument('--lr', type=float, default=1.0, metavar='LR', help='learning rate (default: 1.0)') parser.add_argument('--gamma', type=float, default=0.7, metavar='M', help='Learning rate step gamma (default: 0.7)') parser.add_argument('--no-cuda', action='store_true', default=False, help='disables CUDA training') parser.add_argument('--dry-run', action='store_true', default=False, help='quickly check a single pass') parser.add_argument('--seed', type=int, default=1, metavar='S', help='random seed (default: 1)') parser.add_argument('--log-interval', type=int, default=10, metavar='N', help='how many batches to wait before logging training status') args, _ = parser.parse_known_args() use_cuda = not args.no_cuda and torch.cuda.is_available() torch.manual_seed(args.seed) device = torch.device("cuda" if use_cuda else "cpu") kwargs = {'batch_size': args.batch_size} if use_cuda: kwargs.update({'num_workers': 1, 'pin_memory': True, 'shuffle': True}, ) transform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,)) ]) dataset1 = datasets.MNIST('/tmp/torch_mnist_data', train=True, download=True, transform=transform) dataset2 = datasets.MNIST('/tmp/torch_mnist_data', train=False, transform=transform) train_loader = torch.utils.data.DataLoader(dataset1, **kwargs) test_loader = torch.utils.data.DataLoader(dataset2, **kwargs) model = Net().to(device) model.load_state_dict(torch.load("mnist_pretrained.pth", map_location=lambda storage, location: storage)) optimizer = optim.Adadelta(model.parameters(), lr=args.lr) _, test_acc = test(model, device, test_loader) compressor = aup.compression.create_compressor(model, config, optimizer=optimizer, dependency_aware=True, dummy_input=torch.randn(1, 1, 28, 28).to(device)) model = compressor.compress() scheduler = StepLR(optimizer, step_size=1, gamma=args.gamma) for epoch in range(1, args.epochs + 1): train(args, model, device, train_loader, optimizer, epoch) _, test_acc = test(model, device, test_loader) scheduler.step() model = compressor.apply_speedup(dummy_input=torch.randn(1, 1, 28, 28).to(device)) flops, _, _ = compressor.count_flops_params((1, 1, 28, 28)) flops = int(flops) print("test_acc={} flops={}".format(test_acc, flops)) if "save_model" in config and config["save_model"]: compressor.export_model( model_path="mnist_compressed.pth", save_best_only=True, speedup=True, folder_name=config["folder_name"]) aup.print_result((test_acc - 1.) / np.log(flops)) if __name__ == '__main__': config = aup.BasicConfig().load(sys.argv[1]) main(config) ================================================ FILE: Examples/compression/mnist_pytorch/mnist_lottery_ticket.py ================================================ #!/usr/bin/env python3 from __future__ import print_function import argparse import sys import time import numpy as np import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim from torchvision import datasets, transforms from torch.optim.lr_scheduler import StepLR import aup class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d(1, 32, 3, 1) self.conv2 = nn.Conv2d(32, 64, 3, 1) self.dropout1 = nn.Dropout2d(0.25) self.dropout2 = nn.Dropout2d(0.5) self.fc1 = nn.Linear(9216, 128) self.fc2 = nn.Linear(128, 10) def forward(self, x): x = self.conv1(x) x = F.relu(x) x = self.conv2(x) x = F.relu(x) x = F.max_pool2d(x, 2) x = self.dropout1(x) x = torch.flatten(x, 1) x = self.fc1(x) x = F.relu(x) x = self.dropout2(x) x = self.fc2(x) output = F.log_softmax(x, dim=1) return output def train(args, model, device, train_loader, optimizer, epoch): model.train() for batch_idx, (data, target) in enumerate(train_loader): data, target = data.to(device), target.to(device) optimizer.zero_grad() output = model(data) loss = F.nll_loss(output, target) loss.backward() optimizer.step() if batch_idx % args.log_interval == 0: print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format( epoch, batch_idx * len(data), len(train_loader.dataset), 100. * batch_idx / len(train_loader), loss.item())) if args.dry_run: break def test(model, device, test_loader): model.eval() test_loss = 0 correct = 0 with torch.no_grad(): for data, target in test_loader: data, target = data.to(device), target.to(device) output = model(data) test_loss += F.nll_loss(output, target, reduction='sum').item() # sum up batch loss pred = output.argmax(dim=1, keepdim=True) # get the index of the max log-probability correct += pred.eq(target.view_as(pred)).sum().item() test_loss /= len(test_loader.dataset) print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format( test_loss, correct, len(test_loader.dataset), 100. * correct / len(test_loader.dataset))) return test_loss, correct / len(test_loader.dataset) def main(config): # Training settings parser = argparse.ArgumentParser(description='PyTorch MNIST Example') parser.add_argument('--batch-size', type=int, default=64, metavar='N', help='input batch size for training (default: 64)') parser.add_argument('--test-batch-size', type=int, default=1000, metavar='N', help='input batch size for testing (default: 1000)') parser.add_argument('--epochs', type=int, default=1, metavar='N', help='number of epochs to train (default: 14)') parser.add_argument('--lr', type=float, default=1.0, metavar='LR', help='learning rate (default: 1.0)') parser.add_argument('--gamma', type=float, default=0.7, metavar='M', help='Learning rate step gamma (default: 0.7)') parser.add_argument('--no-cuda', action='store_true', default=False, help='disables CUDA training') parser.add_argument('--dry-run', action='store_true', default=False, help='quickly check a single pass') parser.add_argument('--seed', type=int, default=1, metavar='S', help='random seed (default: 1)') parser.add_argument('--log-interval', type=int, default=10, metavar='N', help='how many batches to wait before logging training status') args, _ = parser.parse_known_args() use_cuda = not args.no_cuda and torch.cuda.is_available() torch.manual_seed(args.seed) device = torch.device("cuda" if use_cuda else "cpu") kwargs = {'batch_size': args.batch_size} if use_cuda: kwargs.update({'num_workers': 1, 'pin_memory': True, 'shuffle': True}, ) transform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,)) ]) dataset1 = datasets.MNIST('/tmp/torch_mnist_data', train=True, download=True, transform=transform) dataset2 = datasets.MNIST('/tmp/torch_mnist_data', train=False, transform=transform) train_loader = torch.utils.data.DataLoader(dataset1, **kwargs) test_loader = torch.utils.data.DataLoader(dataset2, **kwargs) model = Net().to(device) model.load_state_dict(torch.load("mnist_pretrained.pth", map_location=lambda storage, location: storage)) optimizer = optim.Adadelta(model.parameters(), lr=args.lr) scheduler = StepLR(optimizer, step_size=1, gamma=args.gamma) _, test_acc = test(model, device, test_loader) compressor = aup.compression.create_compressor(model, config, optimizer=optimizer, lr_scheduler=scheduler) model = compressor.compress() for _ in compressor.get_prune_iterations(): compressor.prune_iteration_start() for epoch in range(1, args.epochs + 1): train(args, model, device, train_loader, optimizer, epoch) _, test_acc = test(model, device, test_loader) scheduler.step() flops, _, _ = compressor.count_flops_params((1, 1, 28, 28)) flops = int(flops) print("test_acc={} flops={}".format(test_acc, flops)) compressor.export_model( model_path="mnist_compressed.pth", mask_path="mnist_compressed_mask.pth", save_best_only=True, **config) aup.print_result((test_acc - 1.) / np.log(flops)) if __name__ == '__main__': config = aup.BasicConfig().load(sys.argv[1]) main(config) ================================================ FILE: Examples/compression/mnist_pytorch/mnist_net_adapt.py ================================================ #!/usr/bin/env python3 from __future__ import print_function import argparse import sys import time import numpy as np import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim from torchvision import datasets, transforms from torch.optim.lr_scheduler import StepLR import aup class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d(1, 32, 3, 1) self.conv2 = nn.Conv2d(32, 64, 3, 1) self.dropout1 = nn.Dropout2d(0.25) self.dropout2 = nn.Dropout2d(0.5) self.fc1 = nn.Linear(9216, 128) self.fc2 = nn.Linear(128, 10) def forward(self, x): x = self.conv1(x) x = F.relu(x) x = self.conv2(x) x = F.relu(x) x = F.max_pool2d(x, 2) x = self.dropout1(x) x = torch.flatten(x, 1) x = self.fc1(x) x = F.relu(x) x = self.dropout2(x) x = self.fc2(x) output = F.log_softmax(x, dim=1) return output def train(args, model, device, train_loader, optimizer, epoch): model.train() for batch_idx, (data, target) in enumerate(train_loader): data, target = data.to(device), target.to(device) optimizer.zero_grad() output = model(data) loss = F.nll_loss(output, target) loss.backward() optimizer.step() if batch_idx % args.log_interval == 0: print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format( epoch, batch_idx * len(data), len(train_loader.dataset), 100. * batch_idx / len(train_loader), loss.item())) if args.dry_run: break def test(model, device, test_loader): model.eval() test_loss = 0 correct = 0 with torch.no_grad(): for data, target in test_loader: data, target = data.to(device), target.to(device) output = model(data) test_loss += F.nll_loss(output, target, reduction='sum').item() # sum up batch loss pred = output.argmax(dim=1, keepdim=True) # get the index of the max log-probability correct += pred.eq(target.view_as(pred)).sum().item() test_loss /= len(test_loader.dataset) print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format( test_loss, correct, len(test_loader.dataset), 100. * correct / len(test_loader.dataset))) return test_loss, correct / len(test_loader.dataset) def main(config): # Training settings parser = argparse.ArgumentParser(description='PyTorch MNIST Example') parser.add_argument('--batch-size', type=int, default=64, metavar='N', help='input batch size for training (default: 64)') parser.add_argument('--test-batch-size', type=int, default=1000, metavar='N', help='input batch size for testing (default: 1000)') parser.add_argument('--epochs', type=int, default=2, metavar='N', help='number of epochs to train (default: 14)') parser.add_argument('--lr', type=float, default=1.0, metavar='LR', help='learning rate (default: 1.0)') parser.add_argument('--gamma', type=float, default=0.7, metavar='M', help='Learning rate step gamma (default: 0.7)') parser.add_argument('--no-cuda', action='store_true', default=False, help='disables CUDA training') parser.add_argument('--dry-run', action='store_true', default=False, help='quickly check a single pass') parser.add_argument('--seed', type=int, default=1, metavar='S', help='random seed (default: 1)') parser.add_argument('--log-interval', type=int, default=10, metavar='N', help='how many batches to wait before logging training status') args, _ = parser.parse_known_args() use_cuda = not args.no_cuda and torch.cuda.is_available() torch.manual_seed(args.seed) device = torch.device("cuda" if use_cuda else "cpu") kwargs = {'batch_size': args.batch_size} if use_cuda: kwargs.update({'num_workers': 1, 'pin_memory': True, 'shuffle': True}, ) transform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,)) ]) dataset1 = datasets.MNIST('/tmp/torch_mnist_data', train=True, download=True, transform=transform) dataset2 = datasets.MNIST('/tmp/torch_mnist_data', train=False, transform=transform) train_loader = torch.utils.data.DataLoader(dataset1, **kwargs) test_loader = torch.utils.data.DataLoader(dataset2, **kwargs) model = Net().to(device) model.load_state_dict(torch.load("mnist_pretrained.pth", map_location=lambda storage, location: storage)) optimizer = optim.Adadelta(model.parameters(), lr=args.lr) scheduler = StepLR(optimizer, step_size=1, gamma=args.gamma) _, test_acc = test(model, device, test_loader) def short_term_fine_tuner(model): train(args, model, device, train_loader, optimizer, 1) scheduler.step() def evaluator(model): _, test_acc = test(model, device, test_loader) return test_acc compressor = aup.compression.create_compressor(model, config, short_term_fine_tuner=short_term_fine_tuner, evaluator=evaluator, optimize_mode="maximize") model = compressor.compress() model = compressor.apply_speedup(dummy_input=torch.randn(1, 1, 28, 28).to(device)) flops, _, _ = compressor.count_flops_params((1, 1, 28, 28)) flops = int(flops) print("test_acc={} flops={}".format(test_acc, flops)) compressor.export_model( model_path="mnist_compressed.pth", save_best_only=True, speedup=True, **config) aup.print_result((test_acc - 1.) / np.log(flops)) if __name__ == '__main__': config = aup.BasicConfig().load(sys.argv[1]) main(config) ================================================ FILE: Examples/compression/mnist_pytorch/mnist_no_speedup.py ================================================ #!/usr/bin/env python3 from __future__ import print_function import argparse import sys import time import numpy as np import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim from torchvision import datasets, transforms from torch.optim.lr_scheduler import StepLR import aup class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d(1, 32, 3, 1) self.conv2 = nn.Conv2d(32, 64, 3, 1) self.dropout1 = nn.Dropout2d(0.25) self.dropout2 = nn.Dropout2d(0.5) self.fc1 = nn.Linear(9216, 128) self.fc2 = nn.Linear(128, 10) def forward(self, x): x = self.conv1(x) x = F.relu(x) x = self.conv2(x) x = F.relu(x) x = F.max_pool2d(x, 2) x = self.dropout1(x) x = torch.flatten(x, 1) x = self.fc1(x) x = F.relu(x) x = self.dropout2(x) x = self.fc2(x) output = F.log_softmax(x, dim=1) return output def train(args, model, device, train_loader, optimizer, epoch): model.train() for batch_idx, (data, target) in enumerate(train_loader): data, target = data.to(device), target.to(device) optimizer.zero_grad() output = model(data) loss = F.nll_loss(output, target) loss.backward() optimizer.step() if batch_idx % args.log_interval == 0: print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format( epoch, batch_idx * len(data), len(train_loader.dataset), 100. * batch_idx / len(train_loader), loss.item())) if args.dry_run: break def test(model, device, test_loader): model.eval() test_loss = 0 correct = 0 with torch.no_grad(): for data, target in test_loader: data, target = data.to(device), target.to(device) output = model(data) test_loss += F.nll_loss(output, target, reduction='sum').item() # sum up batch loss pred = output.argmax(dim=1, keepdim=True) # get the index of the max log-probability correct += pred.eq(target.view_as(pred)).sum().item() test_loss /= len(test_loader.dataset) print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format( test_loss, correct, len(test_loader.dataset), 100. * correct / len(test_loader.dataset))) return test_loss, correct / len(test_loader.dataset) def main(config): # Training settings parser = argparse.ArgumentParser(description='PyTorch MNIST Example') parser.add_argument('--batch-size', type=int, default=64, metavar='N', help='input batch size for training (default: 64)') parser.add_argument('--test-batch-size', type=int, default=1000, metavar='N', help='input batch size for testing (default: 1000)') parser.add_argument('--epochs', type=int, default=1, metavar='N', help='number of epochs to train (default: 14)') parser.add_argument('--lr', type=float, default=1.0, metavar='LR', help='learning rate (default: 1.0)') parser.add_argument('--gamma', type=float, default=0.7, metavar='M', help='Learning rate step gamma (default: 0.7)') parser.add_argument('--no-cuda', action='store_true', default=False, help='disables CUDA training') parser.add_argument('--dry-run', action='store_true', default=False, help='quickly check a single pass') parser.add_argument('--seed', type=int, default=1, metavar='S', help='random seed (default: 1)') parser.add_argument('--log-interval', type=int, default=10, metavar='N', help='how many batches to wait before logging training status') args, _ = parser.parse_known_args() use_cuda = not args.no_cuda and torch.cuda.is_available() torch.manual_seed(args.seed) device = torch.device("cuda" if use_cuda else "cpu") kwargs = {'batch_size': args.batch_size} if use_cuda: kwargs.update({'num_workers': 1, 'pin_memory': True, 'shuffle': True}, ) transform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,)) ]) dataset1 = datasets.MNIST('/tmp/torch_mnist_data', train=True, download=True, transform=transform) dataset2 = datasets.MNIST('/tmp/torch_mnist_data', train=False, transform=transform) train_loader = torch.utils.data.DataLoader(dataset1, **kwargs) test_loader = torch.utils.data.DataLoader(dataset2, **kwargs) model = Net().to(device) model.load_state_dict(torch.load("mnist_pretrained.pth", map_location=lambda storage, location: storage)) optimizer = optim.Adadelta(model.parameters(), lr=args.lr) _, test_acc = test(model, device, test_loader) compressor = aup.compression.create_compressor(model, config, optimizer=optimizer) model = compressor.compress() scheduler = StepLR(optimizer, step_size=1, gamma=args.gamma) for epoch in range(1, args.epochs + 1): train(args, model, device, train_loader, optimizer, epoch) _, test_acc = test(model, device, test_loader) scheduler.step() flops, _, _ = compressor.count_flops_params((1, 1, 28, 28)) flops = int(flops) print("test_acc={} flops={}".format(test_acc, flops)) compressor.export_model( model_path="mnist_compressed.pth", mask_path="mnist_compressed_mask.pth", save_best_only=True, **config) aup.print_result((test_acc - 1.) / np.log(flops)) if __name__ == '__main__': config = aup.BasicConfig().load(sys.argv[1]) main(config) ================================================ FILE: Examples/compression/mnist_pytorch/mnist_pretrained.py ================================================ from __future__ import print_function import argparse import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim from torchvision import datasets, transforms from torch.optim.lr_scheduler import StepLR class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d(1, 32, 3, 1) self.conv2 = nn.Conv2d(32, 64, 3, 1) self.dropout1 = nn.Dropout2d(0.25) self.dropout2 = nn.Dropout2d(0.5) self.fc1 = nn.Linear(9216, 128) self.fc2 = nn.Linear(128, 10) def forward(self, x): x = self.conv1(x) x = F.relu(x) x = self.conv2(x) x = F.relu(x) x = F.max_pool2d(x, 2) x = self.dropout1(x) x = torch.flatten(x, 1) x = self.fc1(x) x = F.relu(x) x = self.dropout2(x) x = self.fc2(x) output = F.log_softmax(x, dim=1) return output def train(args, model, device, train_loader, optimizer, epoch): model.train() for batch_idx, (data, target) in enumerate(train_loader): data, target = data.to(device), target.to(device) optimizer.zero_grad() output = model(data) loss = F.nll_loss(output, target) loss.backward() optimizer.step() if batch_idx % args.log_interval == 0: print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format( epoch, batch_idx * len(data), len(train_loader.dataset), 100. * batch_idx / len(train_loader), loss.item())) if args.dry_run: break def test(model, device, test_loader): model.eval() test_loss = 0 correct = 0 with torch.no_grad(): for data, target in test_loader: data, target = data.to(device), target.to(device) output = model(data) test_loss += F.nll_loss(output, target, reduction='sum').item() # sum up batch loss pred = output.argmax(dim=1, keepdim=True) # get the index of the max log-probability correct += pred.eq(target.view_as(pred)).sum().item() test_loss /= len(test_loader.dataset) print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format( test_loss, correct, len(test_loader.dataset), 100. * correct / len(test_loader.dataset))) def main(): # Training settings parser = argparse.ArgumentParser(description='PyTorch MNIST Example') parser.add_argument('--batch-size', type=int, default=64, metavar='N', help='input batch size for training (default: 64)') parser.add_argument('--test-batch-size', type=int, default=1000, metavar='N', help='input batch size for testing (default: 1000)') parser.add_argument('--epochs', type=int, default=14, metavar='N', help='number of epochs to train (default: 14)') parser.add_argument('--lr', type=float, default=1.0, metavar='LR', help='learning rate (default: 1.0)') parser.add_argument('--gamma', type=float, default=0.7, metavar='M', help='Learning rate step gamma (default: 0.7)') parser.add_argument('--no-cuda', action='store_true', default=False, help='disables CUDA training') parser.add_argument('--dry-run', action='store_true', default=False, help='quickly check a single pass') parser.add_argument('--seed', type=int, default=1, metavar='S', help='random seed (default: 1)') parser.add_argument('--log-interval', type=int, default=10, metavar='N', help='how many batches to wait before logging training status') parser.add_argument('--save-model', action='store_true', default=False, help='For Saving the current Model') parser.add_argument('--speedup-model', action='store_true', default=False, help='For speeding up the current Model') args = parser.parse_args() use_cuda = not args.no_cuda and torch.cuda.is_available() torch.manual_seed(args.seed) device = torch.device("cuda" if use_cuda else "cpu") kwargs = {'batch_size': args.batch_size} if use_cuda: kwargs.update({'num_workers': 1, 'pin_memory': True, 'shuffle': True}, ) transform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,)) ]) dataset1 = datasets.MNIST('/tmp/torch_mnist_data', train=True, download=True, transform=transform) dataset2 = datasets.MNIST('/tmp/torch_mnist_data', train=False, transform=transform) train_loader = torch.utils.data.DataLoader(dataset1, **kwargs) test_loader = torch.utils.data.DataLoader(dataset2, **kwargs) model = Net().to(device) optimizer = optim.Adadelta(model.parameters(), lr=args.lr) scheduler = StepLR(optimizer, step_size=1, gamma=args.gamma) for epoch in range(1, args.epochs + 1): train(args, model, device, train_loader, optimizer, epoch) test(model, device, test_loader) scheduler.step() torch.save(model.state_dict(), "mnist_pretrained.pth") if __name__ == '__main__': main() ================================================ FILE: Examples/compression/mnist_pytorch/mnist_sensitivity.py ================================================ #!/usr/bin/env python3 from __future__ import print_function import argparse import sys import time import numpy as np import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim from torchvision import datasets, transforms from torch.optim.lr_scheduler import StepLR import aup class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d(1, 32, 3, 1) self.conv2 = nn.Conv2d(32, 64, 3, 1) self.dropout1 = nn.Dropout2d(0.25) self.dropout2 = nn.Dropout2d(0.5) self.fc1 = nn.Linear(9216, 128) self.fc2 = nn.Linear(128, 10) def forward(self, x): x = self.conv1(x) x = F.relu(x) x = self.conv2(x) x = F.relu(x) x = F.max_pool2d(x, 2) x = self.dropout1(x) x = torch.flatten(x, 1) x = self.fc1(x) x = F.relu(x) x = self.dropout2(x) x = self.fc2(x) output = F.log_softmax(x, dim=1) return output def train(args, model, device, train_loader, optimizer, epoch): model.train() for batch_idx, (data, target) in enumerate(train_loader): data, target = data.to(device), target.to(device) optimizer.zero_grad() output = model(data) loss = F.nll_loss(output, target) loss.backward() optimizer.step() if batch_idx % args.log_interval == 0: print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format( epoch, batch_idx * len(data), len(train_loader.dataset), 100. * batch_idx / len(train_loader), loss.item())) if args.dry_run: break def test(model, device, test_loader): model.eval() test_loss = 0 correct = 0 with torch.no_grad(): for data, target in test_loader: data, target = data.to(device), target.to(device) output = model(data) test_loss += F.nll_loss(output, target, reduction='sum').item() # sum up batch loss pred = output.argmax(dim=1, keepdim=True) # get the index of the max log-probability correct += pred.eq(target.view_as(pred)).sum().item() test_loss /= len(test_loader.dataset) print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format( test_loss, correct, len(test_loader.dataset), 100. * correct / len(test_loader.dataset))) return test_loss, correct / len(test_loader.dataset) def main(config): # Training settings parser = argparse.ArgumentParser(description='PyTorch MNIST Example') parser.add_argument('--batch-size', type=int, default=64, metavar='N', help='input batch size for training (default: 64)') parser.add_argument('--test-batch-size', type=int, default=1000, metavar='N', help='input batch size for testing (default: 1000)') parser.add_argument('--epochs', type=int, default=1, metavar='N', help='number of epochs to train (default: 14)') parser.add_argument('--lr', type=float, default=1.0, metavar='LR', help='learning rate (default: 1.0)') parser.add_argument('--gamma', type=float, default=0.7, metavar='M', help='Learning rate step gamma (default: 0.7)') parser.add_argument('--no-cuda', action='store_true', default=False, help='disables CUDA training') parser.add_argument('--dry-run', action='store_true', default=False, help='quickly check a single pass') parser.add_argument('--seed', type=int, default=1, metavar='S', help='random seed (default: 1)') parser.add_argument('--log-interval', type=int, default=10, metavar='N', help='how many batches to wait before logging training status') args, _ = parser.parse_known_args() use_cuda = not args.no_cuda and torch.cuda.is_available() torch.manual_seed(args.seed) device = torch.device("cuda" if use_cuda else "cpu") kwargs = {'batch_size': args.batch_size} if use_cuda: kwargs.update({'num_workers': 1, 'pin_memory': True, 'shuffle': True}, ) transform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,)) ]) dataset1 = datasets.MNIST('/tmp/torch_mnist_data', train=True, download=True, transform=transform) dataset2 = datasets.MNIST('/tmp/torch_mnist_data', train=False, transform=transform) train_loader = torch.utils.data.DataLoader(dataset1, **kwargs) test_loader = torch.utils.data.DataLoader(dataset2, **kwargs) model = Net().to(device) model.load_state_dict(torch.load("mnist_pretrained.pth", map_location=lambda storage, location: storage)) optimizer = optim.Adadelta(model.parameters(), lr=args.lr) scheduler = StepLR(optimizer, step_size=1, gamma=args.gamma) _, test_acc = test(model, device, test_loader) def short_term_fine_tuner(model): train(args, model, device, train_loader, optimizer, 1) scheduler.step() def evaluator(model): _, test_acc = test(model, device, test_loader) return test_acc compressor = aup.compression.create_compressor(model, config, finetuner=short_term_fine_tuner, evaluator=evaluator) model = compressor.compress(eval_args=[model], finetune_args=[model]) model = compressor.apply_speedup(dummy_input=torch.randn(1, 1, 28, 28).to(device)) flops, _, _ = compressor.count_flops_params((1, 1, 28, 28)) flops = int(flops) print("test_acc={} flops={}".format(test_acc, flops)) compressor.export_model( model_path="mnist_compressed.pth", save_best_only=True, speedup=True, **config) aup.print_result((test_acc - 1.) / np.log(flops)) if __name__ == '__main__': config = aup.BasicConfig().load(sys.argv[1]) main(config) ================================================ FILE: Examples/compression/mnist_pytorch/mnist_simulated_annealing.py ================================================ #!/usr/bin/env python3 from __future__ import print_function import argparse import sys import time import numpy as np import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim from torchvision import datasets, transforms from torch.optim.lr_scheduler import StepLR import aup class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d(1, 32, 3, 1) self.conv2 = nn.Conv2d(32, 64, 3, 1) self.dropout1 = nn.Dropout2d(0.25) self.dropout2 = nn.Dropout2d(0.5) self.fc1 = nn.Linear(9216, 128) self.fc2 = nn.Linear(128, 10) def forward(self, x): x = self.conv1(x) x = F.relu(x) x = self.conv2(x) x = F.relu(x) x = F.max_pool2d(x, 2) x = self.dropout1(x) x = torch.flatten(x, 1) x = self.fc1(x) x = F.relu(x) x = self.dropout2(x) x = self.fc2(x) output = F.log_softmax(x, dim=1) return output def train(args, model, device, train_loader, optimizer, epoch): model.train() for batch_idx, (data, target) in enumerate(train_loader): data, target = data.to(device), target.to(device) optimizer.zero_grad() output = model(data) loss = F.nll_loss(output, target) loss.backward() optimizer.step() if batch_idx % args.log_interval == 0: print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format( epoch, batch_idx * len(data), len(train_loader.dataset), 100. * batch_idx / len(train_loader), loss.item())) if args.dry_run: break def test(model, device, test_loader): model.eval() test_loss = 0 correct = 0 with torch.no_grad(): for data, target in test_loader: data, target = data.to(device), target.to(device) output = model(data) test_loss += F.nll_loss(output, target, reduction='sum').item() # sum up batch loss pred = output.argmax(dim=1, keepdim=True) # get the index of the max log-probability correct += pred.eq(target.view_as(pred)).sum().item() test_loss /= len(test_loader.dataset) print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format( test_loss, correct, len(test_loader.dataset), 100. * correct / len(test_loader.dataset))) return test_loss, correct / len(test_loader.dataset) def main(config): # Training settings parser = argparse.ArgumentParser(description='PyTorch MNIST Example') parser.add_argument('--batch-size', type=int, default=64, metavar='N', help='input batch size for training (default: 64)') parser.add_argument('--test-batch-size', type=int, default=1000, metavar='N', help='input batch size for testing (default: 1000)') parser.add_argument('--epochs', type=int, default=1, metavar='N', help='number of epochs to train (default: 14)') parser.add_argument('--lr', type=float, default=1.0, metavar='LR', help='learning rate (default: 1.0)') parser.add_argument('--gamma', type=float, default=0.7, metavar='M', help='Learning rate step gamma (default: 0.7)') parser.add_argument('--no-cuda', action='store_true', default=False, help='disables CUDA training') parser.add_argument('--dry-run', action='store_true', default=False, help='quickly check a single pass') parser.add_argument('--seed', type=int, default=1, metavar='S', help='random seed (default: 1)') parser.add_argument('--log-interval', type=int, default=10, metavar='N', help='how many batches to wait before logging training status') args, _ = parser.parse_known_args() use_cuda = not args.no_cuda and torch.cuda.is_available() torch.manual_seed(args.seed) device = torch.device("cuda" if use_cuda else "cpu") kwargs = {'batch_size': args.batch_size} if use_cuda: kwargs.update({'num_workers': 1, 'pin_memory': True, 'shuffle': True}, ) transform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,)) ]) dataset1 = datasets.MNIST('/tmp/torch_mnist_data', train=True, download=True, transform=transform) dataset2 = datasets.MNIST('/tmp/torch_mnist_data', train=False, transform=transform) train_loader = torch.utils.data.DataLoader(dataset1, **kwargs) test_loader = torch.utils.data.DataLoader(dataset2, **kwargs) model = Net().to(device) model.load_state_dict(torch.load("mnist_pretrained.pth", map_location=lambda storage, location: storage)) optimizer = optim.Adadelta(model.parameters(), lr=args.lr) scheduler = StepLR(optimizer, step_size=1, gamma=args.gamma) _, test_acc = test(model, device, test_loader) def evaluator(model): _, test_acc = test(model, device, test_loader) return test_acc compressor = aup.compression.create_compressor(model, config, evaluator=evaluator, optimize_mode="maximize") model = compressor.compress() flops, _, _ = compressor.count_flops_params((1, 1, 28, 28)) flops = int(flops) print("test_acc={} flops={}".format(test_acc, flops)) compressor.export_model( model_path="mnist_compressed.pth", mask_path="mnist_compressed_mask.pth", save_best_only=True, **config) aup.print_result((test_acc - 1.) / np.log(flops)) if __name__ == '__main__': config = aup.BasicConfig().load(sys.argv[1]) main(config) ================================================ FILE: Examples/compression/mnist_tensorflow/README.md ================================================ # Compression examples (Tensorflow) ## Requirements The basic requirements for Auptimizer apply here. Additionally, in order for the examples to work, the following packages are required: * tensorflow >= 2.0 ## Running the examples For non-automatic examples: ```sh python -m aup.compression exp_fpgm.json ``` For automatic examples: ```sh python -m aup.compression exp_auto_fpgm.json --automatic ``` The ``--launch_dashboard`` flag can be added to the command if the user wants to show the dashboard while running the experiment. ================================================ FILE: Examples/compression/mnist_tensorflow/exp_auto_level.json ================================================ { "name": "Tensorflow MNIST Level Pruner (automatic)", "script": "mnist.py", "resource": "cpu", "resource_args": { "save_model": true }, "compression": { "framework": "tensorflow", "type": "pruning", "compressor": "level", "config_list": [{ "sparsity": { "range": [0.1, 0.9], "type": "float" }, "op_names": ["conv1", "conv2", "fc1", "fc2"] } ] }, "proposer": "hyperopt", "n_parallel": 4, "target": "max", "n_samples": 5 } ================================================ FILE: Examples/compression/mnist_tensorflow/exp_level.json ================================================ { "name": "Tensorflow MNIST Level Pruner", "script": "mnist.py", "resource": "cpu", "compression": { "framework": "tensorflow", "type": "pruning", "compressor": "level", "config_list": [{ "sparsity": 0.8, "op_types": ["default"] } ] } } ================================================ FILE: Examples/compression/mnist_tensorflow/mnist.py ================================================ #!/usr/bin/env python3 """ MNIST convolutional network using pytorch ============================================ .. Copyright (c) 2018 LG Electronics Inc. SPDX-License-Identifier: GPL-3.0-or-later """ from aup import print_result, aup_args import tensorflow as tf import numpy as np from tensorflow import keras from tensorflow.keras import layers import tqdm from math import log import sys import aup num_epochs = 1 batch_size = 64 num_classes = 10 input_shape = (28, 28, 1) def get_model(**kwargs): model = keras.Sequential( [ keras.Input(shape=input_shape), layers.Conv2D(kwargs['conv1'], kernel_size=(3, 3), activation="relu"), layers.MaxPooling2D(pool_size=(2, 2)), layers.Conv2D(kwargs['conv2'], kernel_size=(3, 3), activation="relu"), layers.MaxPooling2D(pool_size=(2, 2)), layers.Flatten(), layers.Dropout(kwargs['dropout']), layers.Dense(num_classes, activation="softmax"), ] ) return model def test_model(model, test_dataset): correct = [] for (batch, (images, labels)) in enumerate(test_dataset): logits = model(images) correct += list(labels.numpy() == np.argmax(logits.numpy(), axis=1)) return np.mean(correct) def main(config): (train_images, train_labels), (test_images, test_labels) = tf.keras.datasets.mnist.load_data() train_dataset = tf.data.Dataset.from_tensor_slices( (tf.cast(train_images[...,tf.newaxis]/255, tf.float32), tf.cast(train_labels,tf.int64))) train_dataset = train_dataset.shuffle(1000).batch(32) test_dataset = tf.data.Dataset.from_tensor_slices( (tf.cast(test_images[...,tf.newaxis]/255, tf.float32), tf.cast(test_labels,tf.int64))) test_dataset = test_dataset.shuffle(1000).batch(32) model = get_model(dropout=0.1, conv1=32, conv2=64) optimizer = tf.keras.optimizers.Adam() loss_object = tf.keras.losses.SparseCategoricalCrossentropy() model.load_weights("mnist_pretrained.h5") def train_step(images, labels): with tf.GradientTape() as tape: logits = model(images, training=True) tf.debugging.assert_equal(logits.shape, (32, 10)) loss_value = loss_object(labels, logits) grads = tape.gradient(loss_value, model.trainable_variables) optimizer.apply_gradients(zip(grads, model.trainable_variables)) compressor = aup.compression.create_compressor(model, config) compressor.compress() for epoch in range(num_epochs): for (batch, (images, labels)) in enumerate(train_dataset): train_step(images, labels) acc = test_model(model, test_dataset) print ('Epoch {} finished - test_acc={}'.format(epoch, acc)) compressor.export_model("mnist_compressed.h5", **config) aup.print_result(acc - 1.) if __name__ == '__main__': config = aup.BasicConfig().load(sys.argv[1]) main(config) ================================================ FILE: Examples/compression/mnist_tensorflow/mnist_pretrained.py ================================================ #!/usr/bin/env python3 from aup import print_result, aup_args import tensorflow as tf import numpy as np from tensorflow import keras from tensorflow.keras import layers import tqdm from math import log import sys num_epochs = 14 batch_size = 64 num_classes = 10 input_shape = (28, 28, 1) def get_model(**kwargs): model = keras.Sequential( [ keras.Input(shape=input_shape), layers.Conv2D(kwargs['conv1'], kernel_size=(3, 3), activation="relu"), layers.MaxPooling2D(pool_size=(2, 2)), layers.Conv2D(kwargs['conv2'], kernel_size=(3, 3), activation="relu"), layers.MaxPooling2D(pool_size=(2, 2)), layers.Flatten(), layers.Dropout(kwargs['dropout']), layers.Dense(num_classes, activation="softmax"), ] ) return model def test_model(model, test_dataset): correct = [] for (batch, (images, labels)) in enumerate(test_dataset): logits = model(images) correct += list(labels.numpy() == np.argmax(logits.numpy(), axis=1)) return np.mean(correct) def main(): (train_images, train_labels), (test_images, test_labels) = tf.keras.datasets.mnist.load_data() train_dataset = tf.data.Dataset.from_tensor_slices( (tf.cast(train_images[...,tf.newaxis]/255, tf.float32), tf.cast(train_labels,tf.int64))) train_dataset = train_dataset.shuffle(1000).batch(32) test_dataset = tf.data.Dataset.from_tensor_slices( (tf.cast(test_images[...,tf.newaxis]/255, tf.float32), tf.cast(test_labels,tf.int64))) test_dataset = test_dataset.shuffle(1000).batch(32) model = get_model(dropout=0.1, conv1=32, conv2=64) optimizer = tf.keras.optimizers.Adam() loss_object = tf.keras.losses.SparseCategoricalCrossentropy() def train_step(images, labels): with tf.GradientTape() as tape: logits = model(images, training=True) tf.debugging.assert_equal(logits.shape, (32, 10)) loss_value = loss_object(labels, logits) grads = tape.gradient(loss_value, model.trainable_variables) optimizer.apply_gradients(zip(grads, model.trainable_variables)) for epoch in range(num_epochs): for (batch, (images, labels)) in enumerate(tqdm.tqdm(train_dataset)): train_step(images, labels) acc = test_model(model, test_dataset) print ('Epoch {} finished - test_acc={}'.format(epoch, acc)) model.save("mnist_pretrained.h5") print("test_acc={}".format(acc)) if __name__ == '__main__': main() ================================================ FILE: Examples/compression/utility_functions/README.md ================================================ # Compression utility functions This example provides an example training script ``mnist.py``, where the compression utility functions sensitivity analysis and channel dependency analysis are applied. To just use these utility functions, there is no need to launch an Auptimizer experiment. The analysis outputs will be saved to folder ``output``. ================================================ FILE: Examples/compression/utility_functions/mnist.py ================================================ #!/usr/bin/env python3 """ MNIST convolutional network using pytorch ============================================ .. Copyright (c) 2018 LG Electronics Inc. SPDX-License-Identifier: GPL-3.0-or-later """ from __future__ import print_function import argparse import os import sys import time import numpy as np import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim from torchvision import datasets, transforms from torch.optim.lr_scheduler import StepLR import aup OUT_DIR = "output" class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d(1, 32, 3, 1) self.conv2 = nn.Conv2d(32, 64, 3, 1) self.dropout1 = nn.Dropout2d(0.25) self.dropout2 = nn.Dropout2d(0.5) self.fc1 = nn.Linear(9216, 128) self.fc2 = nn.Linear(128, 10) def forward(self, x): x = self.conv1(x) x = F.relu(x) x = self.conv2(x) x = F.relu(x) x = F.max_pool2d(x, 2) x = self.dropout1(x) x = torch.flatten(x, 1) x = self.fc1(x) x = F.relu(x) x = self.dropout2(x) x = self.fc2(x) output = F.log_softmax(x, dim=1) return output def train(args, model, device, train_loader, optimizer, epoch): model.train() for batch_idx, (data, target) in enumerate(train_loader): data, target = data.to(device), target.to(device) optimizer.zero_grad() output = model(data) loss = F.nll_loss(output, target) loss.backward() optimizer.step() if batch_idx % args.log_interval == 0: print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format( epoch, batch_idx * len(data), len(train_loader.dataset), 100. * batch_idx / len(train_loader), loss.item())) if args.dry_run: break def test(model, device, test_loader): model.eval() test_loss = 0 correct = 0 with torch.no_grad(): for data, target in test_loader: data, target = data.to(device), target.to(device) output = model(data) test_loss += F.nll_loss(output, target, reduction='sum').item() # sum up batch loss pred = output.argmax(dim=1, keepdim=True) # get the index of the max log-probability correct += pred.eq(target.view_as(pred)).sum().item() test_loss /= len(test_loader.dataset) print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format( test_loss, correct, len(test_loader.dataset), 100. * correct / len(test_loader.dataset))) return test_loss, correct / len(test_loader.dataset) def main(): # Training settings parser = argparse.ArgumentParser(description='PyTorch MNIST Example') parser.add_argument('--batch-size', type=int, default=64, metavar='N', help='input batch size for training (default: 64)') parser.add_argument('--test-batch-size', type=int, default=1000, metavar='N', help='input batch size for testing (default: 1000)') parser.add_argument('--epochs', type=int, default=1, metavar='N', help='number of epochs to train (default: 14)') parser.add_argument('--lr', type=float, default=1.0, metavar='LR', help='learning rate (default: 1.0)') parser.add_argument('--gamma', type=float, default=0.7, metavar='M', help='Learning rate step gamma (default: 0.7)') parser.add_argument('--no-cuda', action='store_true', default=False, help='disables CUDA training') parser.add_argument('--dry-run', action='store_true', default=False, help='quickly check a single pass') parser.add_argument('--seed', type=int, default=1, metavar='S', help='random seed (default: 1)') parser.add_argument('--log-interval', type=int, default=10, metavar='N', help='how many batches to wait before logging training status') args, _ = parser.parse_known_args() use_cuda = not args.no_cuda and torch.cuda.is_available() torch.manual_seed(args.seed) device = torch.device("cuda" if use_cuda else "cpu") kwargs = {'batch_size': args.batch_size} if use_cuda: kwargs.update({'num_workers': 1, 'pin_memory': True, 'shuffle': True}, ) transform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,)) ]) dataset1 = datasets.MNIST('/tmp/torch_mnist_data', train=True, download=True, transform=transform) dataset2 = datasets.MNIST('/tmp/torch_mnist_data', train=False, transform=transform) train_loader = torch.utils.data.DataLoader(dataset1, **kwargs) test_loader = torch.utils.data.DataLoader(dataset2, **kwargs) model = Net().to(device) model.load_state_dict(torch.load("../mnist_pytorch/mnist_pretrained.pth", map_location=lambda storage, location: storage)) optimizer = optim.Adadelta(model.parameters(), lr=args.lr) os.makedirs(OUT_DIR, exist_ok=True) # Example of Sensitivity Analysis usage s_analyzer = aup.compression.sensitivity_analysis.SensitivityAnalysis(model=model, val_func=lambda model: test(model, device, test_loader)) sensitivity = s_analyzer.analysis(val_args=[model]) s_analyzer.export(os.path.join(OUT_DIR, "sensitivity_analysis.log")) # ChannelDependency data = torch.ones(1, 1, 28, 28).to(device) channel_depen = aup.compression.shape_dependency.ChannelDependency(model, data) channel_depen.export(os.path.join(OUT_DIR, "channel_dependency.csv")) if __name__ == '__main__': main() ================================================ FILE: Examples/converter_examples/Convert_Benchmark/.gitignore ================================================ .ipynb_checkpoints/ *.tflite *.h5 *.tgz pytorch/ ================================================ FILE: Examples/converter_examples/Convert_Benchmark/Benchmark.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Using TensorFlow backend.\n" ] } ], "source": [ "\"\"\"\n", " Copyright (c) 2018 LG Electronics Inc.\n", " SPDX-License-Identifier: GPL-3.0-or-later\n", "\"\"\" \n", "import keras\n", "import subprocess\n", "from os import path\n", "import pandas as pd\n", "import json\n", "\n", "# see models here - https://www.tensorflow.org/lite/guide/hosted_models\n", "STORAGE_LINK = \"https://storage.googleapis.com/download.tensorflow.org/models/mobilenet_v1_2018_08_02/\"\n", "ADB_LOCAL = path.expanduser(\"~/Library/Android/sdk/platform-tools/adb\") # for MacOS\n", "\n", "ALPHA = [\"1.0\",\"0.75\",\"0.5\",\"0.25\"]\n", "SIZE = [\"224\",\"192\",\"160\",\"128\"]\n", "REP_DATA = \"repdata.py\"\n", "\n", "OP_TYPE = [\"float\", \"float16\", \"uint8\", \"int8\"]\n", "\n", "KEYS = [[a,b] for a in ALPHA for b in SIZE]\n", "MOBILENET = \"mobilenet_v1\"\n", "df = pd.DataFrame({\"model\":[], \"alpha\":[], \"size\":[], \"gpu\":[], \"nnapi\":[], \"op\": [], \"size_init\":[],\n", " \"size_peak\":[], \"warmup\":[], \"init\":[], \"inference\":[]})" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def preprocess(name):\n", " try:\n", " process = subprocess.Popen(\" wget \" + STORAGE_LINK + name + \".tgz \", shell=True).wait()\n", " except:\n", " print(\"Could not retrieve\")\n", " return 0\n", "\n", " try:\n", " process = subprocess.Popen(\" tar -xzf \" + name + \".tgz\", shell=True).wait()\n", " except:\n", " print(\"Could not unpack\")\n", " return 0\n", "\n", " return 1\n", "\n", "def push_to_device(name):\n", " try:\n", " process = subprocess.Popen(ADB_LOCAL + \" push \" + name + \".tflite /data/local/tmp/\",\n", " shell=True, stdout=subprocess.DEVNULL).wait()\n", " except:\n", " print(\"Could not push\")\n", " return 0\n", " return 1\n", "\n", "\n", "def run_benchmark(name):\n", " command_template = ADB_LOCAL + \" shell /data/local/tmp/benchmark_model --graph=/data/local/tmp/\"\n", " command = command_template + name + \".tflite --num_threads=4\"\n", " process2 = subprocess.Popen(command.split(), stdout=subprocess.PIPE)\n", " output, error = process2.communicate()\n", " output = output.decode('utf-8')\n", " output = output.split(\"\\n\")\n", " infer, memo = \"\",\"\"\n", " for p in output:\n", " if \"Inference timings\" in p:\n", " infer = p\n", " if \"Peak memory footprint\" in p:\n", " memo = p\n", " #output = output.split(\"\\n\")\n", " #infer = output\n", " return (infer, memo)\n", "\n", "def compile_results(infer, memo, df, of, op, alpha, size):\n", " data = []\n", " try:\n", " idx = memo.find(\"init=\")\n", " max_size = float(memo[idx+5:idx + memo[idx:].find(\" \")-1])\n", " except:\n", " max_size = float('nan')\n", " idx = memo.find(\"overall=\")\n", " try:\n", " malloc_size = float(memo[idx+8:])\n", " except:\n", " malloc_size = float('nan')\n", " idx = infer.find(\"Warmup (avg):\")\n", " try:\n", " warmup = float(infer[idx+14:idx + infer[idx:].find(\",\")])\n", " except:\n", " warmup = float('nan')\n", " idx = infer.find(\"Init:\")\n", " try:\n", " init = float(infer[idx+6:idx + infer[idx:].find(\",\")])\n", " except:\n", " init = float('nan')\n", " idx = infer.find(\"Inference (avg):\")\n", " try:\n", " no_stat = float(infer[idx+17:])\n", " except:\n", " no_stat = float('nan')\n", " df = df.append(pd.Series([of, alpha, size, op, max_size, malloc_size,\n", " warmup, init, no_stat], index=df.columns), ignore_index=True)\n", " return df\n", "\n", "def convert(name, size, op):\n", " json_dic = {}\n", " json_dic[\"convert_from\"] = name+\"_frozen.pb\"\n", " json_dic[\"convert_to\"] = name+\"_\"+op+\"_converted.tflite\"\n", " json_dic[\"input_nodes\"] = \"input\"\n", " json_dic[\"output_nodes\"] = \"MobilenetV1/Predictions/Reshape_1:0\"\n", " command = \"\"\n", " if op == 'float':\n", " command = json.dumps([json_dic])\n", " if op == 'float16':\n", " quant_dic = {}\n", " quant_dic[\"type\"]=\"float16\"\n", " quant_dic[\"opsset\"] = \"tf\"\n", " json_dic[\"quantization\"] = quant_dic\n", " command = json.dumps([json_dic])\n", " if op == 'int8':\n", " quant_dic = {}\n", " quant_dic[\"type\"]=\"int8\"\n", " quant_dic[\"opsset\"] = \"int8\"\n", " quant_dic[\"load\"] = REP_DATA + \" --custom_data '1,\" + size + \",\" + size + \",\" + \"3,1000' --undefok custom_data\"\n", " json_dic[\"quantization\"] = quant_dic\n", " command = json.dumps([json_dic])\n", " if op == 'uint8':\n", " quant_dic = {}\n", " quant_dic[\"type\"]=\"uint8\"\n", " quant_dic[\"opsset\"] = \"tf\"\n", " quant_dic[\"load\"] = REP_DATA + \" --custom_data '1,\" + size + \",\" + size + \",\" + \"3,1000' --undefok custom_data\"\n", " json_dic[\"quantization\"] = quant_dic\n", " command = json.dumps([json_dic])\n", " try:\n", " process = subprocess.Popen(\"python3 -m aup.dlconvert -d \" + \"'\" + str(command) + \"'\", shell=True).wait()\n", " except:\n", " print(\"Could not Convert= \" + str(command))\n", " return 0\n", " return 1\n", " " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "for key in KEYS:\n", "\n", " name = MOBILENET + \"_\" + key[0] + \"_\" + key[1]\n", "\n", " print(\"Starting \" + str(name))\n", "\n", " if(not preprocess(name)):\n", " continue\n", "\n", " if(not push_to_device(name)):\n", " continue\n", "\n", " infer,memo = run_benchmark(name)\n", "\n", " df = compile_results(infer, memo, df, \"official\", \"float\", key[0], key[1])\n", "\n", " new_name = name + \"_quant\"\n", "\n", " print(\"Starting \" + str(new_name))\n", "\n", " if(not preprocess(new_name)):\n", " continue\n", "\n", " if(not push_to_device(new_name)):\n", " continue\n", "\n", " infer,memo = run_benchmark(new_name)\n", "\n", " df = compile_results(infer, memo , df, \"official\", \"int8\", key[0], key[1])\n", " \n", " print(\"Starting converted tflite benchmarking\")\n", "\n", " for op in OP_TYPE:\n", "\n", " converted = convert(name, key[1], op)\n", "\n", " if not converted:\n", " print(\"Failed \" + str(name) + \" \" + str(op))\n", " continue\n", "\n", " print(\"testing= \" + str(name) + \" \" + str(op))\n", "\n", " new_name = name + \"_\" + op + \"_converted\"\n", "\n", " if(not push_to_device(new_name)):\n", " continue\n", "\n", " infer,memo = run_benchmark(new_name)\n", "\n", " df = compile_results(infer, memo, df, \"converted\", str(op), key[0], key[1])\n", " \n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " model alpha size op size_init size_peak warmup init inference\n", "0 official 1.0 224 float 0.78906 26.74220 33998.60 2196.0 33562.00\n", "1 official 1.0 224 int8 0.87890 7.19531 24491.30 2017.0 23836.70\n", "2 converted 1.0 224 float 0.79687 26.69530 34708.60 1929.0 33686.70\n", "3 converted 1.0 224 float16 0.79296 34.55470 35102.30 2033.0 32647.30\n", "4 converted 1.0 224 uint8 1.39060 8.44531 24231.40 3134.0 23624.50\n", "5 converted 1.0 224 int8 1.39060 8.47266 27206.70 2890.0 23835.60\n", "6 official 1.0 192 float 0.78906 25.14060 25100.70 1669.0 24425.90\n", "7 official 1.0 192 int8 0.76562 6.64844 18825.00 2148.0 18390.10\n", "8 converted 1.0 192 float 0.79687 25.37500 24657.60 1756.0 24129.00\n", "9 converted 1.0 192 float16 0.79296 33.19920 26244.60 2075.0 25446.30\n", "10 converted 1.0 192 uint8 1.39060 7.90234 18417.10 3117.0 18072.60\n", "11 converted 1.0 192 int8 1.39060 8.06641 18780.40 2770.0 18272.40\n", "12 official 1.0 160 float 0.78906 23.96480 18737.10 1639.0 18147.10\n", "13 official 1.0 160 int8 0.76562 6.42969 14405.30 2022.0 13266.50\n", "14 converted 1.0 160 float 0.79687 24.06640 18471.30 1768.0 19325.60\n", "15 converted 1.0 160 float16 0.79687 31.91020 19203.30 1973.0 17638.40\n", "16 converted 1.0 160 uint8 1.39060 7.23828 17993.90 2886.0 13290.70\n", "17 converted 1.0 160 int8 1.39060 7.44141 21174.00 2649.0 20724.60\n", "18 official 1.0 128 float 0.78515 22.92970 12444.20 1581.0 11945.00\n", "19 official 1.0 128 int8 0.76562 6.20703 13523.20 2059.0 13424.40\n", "20 converted 1.0 128 float 0.79296 22.69530 12496.10 1804.0 11959.30\n", "21 converted 1.0 128 float16 0.78906 30.79300 13551.10 1828.0 12529.10\n", "22 converted 1.0 128 uint8 1.28120 6.80469 8976.34 2915.0 8992.86\n", "23 converted 1.0 128 int8 1.28120 6.92188 13422.40 2487.0 10108.50\n", "24 official 0.75 224 float 0.76562 17.43360 21263.80 1878.0 21159.90\n", "25 official 0.75 224 int8 0.82812 4.98047 17237.40 1988.0 16508.00\n", "26 converted 0.75 224 float 0.78120 17.39450 22503.70 1607.0 21283.40\n", "27 converted 0.75 224 float16 0.78120 22.75780 22192.10 2129.0 21192.60\n", "28 converted 0.75 224 uint8 1.21870 6.03516 22660.10 2414.0 16021.80\n", "29 converted 0.75 224 int8 1.21870 6.30859 15966.20 2838.0 15849.00\n", "30 official 0.75 192 float 0.76562 16.13670 16253.70 1612.0 15627.30\n", "31 official 0.75 192 int8 0.76562 4.30469 17908.20 1741.0 16690.40\n", "32 converted 0.75 192 float 0.78120 16.42580 16129.60 1602.0 16212.00\n", "33 converted 0.75 192 float16 0.78515 21.24220 15744.60 1838.0 15032.60\n", "34 converted 0.75 192 uint8 1.21870 5.56250 12433.50 2599.0 12068.50\n", "35 converted 0.75 192 int8 1.21870 5.62109 12045.20 2587.0 11737.50\n", "36 official 0.75 160 float 0.76562 15.27340 11488.00 1807.0 11356.20\n", "37 official 0.75 160 int8 0.76562 4.49219 9148.42 1905.0 9103.98\n", "38 converted 0.75 160 float 0.78515 15.10160 11819.20 1928.0 11335.40\n", "39 converted 0.75 160 float16 0.78515 19.90620 11790.90 1945.0 11200.20\n", "40 converted 0.75 160 uint8 1.02340 5.09375 9288.87 2472.0 9114.61\n", "41 converted 0.75 160 int8 1.02340 5.11328 9300.00 2543.0 9019.50\n", "42 official 0.75 128 float 0.76171 14.07810 10167.30 1584.0 9786.01\n", "43 official 0.75 128 int8 0.76562 3.81250 6325.96 1982.0 6249.11\n", "44 converted 0.75 128 float 0.77734 14.44530 7544.64 1898.0 7422.35\n", "45 converted 0.75 128 float16 0.78120 19.16020 8644.24 2002.0 8227.14\n", "46 converted 0.75 128 uint8 1.02340 4.91016 6686.88 2458.0 5826.48\n", "47 converted 0.75 128 int8 1.02340 4.85547 5921.82 2732.0 5877.53\n", "48 official 0.5 224 float 0.75781 11.06250 12346.40 1864.0 11818.80\n", "49 official 0.5 224 int8 0.76562 3.47656 9217.15 1663.0 9174.97\n", "50 converted 0.5 224 float 0.75781 10.81250 12604.10 1658.0 11342.90\n", "51 converted 0.5 224 float16 0.77734 13.45700 12766.20 1729.0 11792.10\n", "52 converted 0.5 224 uint8 1.07810 4.51172 9011.44 2313.0 8938.94\n", "53 converted 0.5 224 int8 1.07810 4.55078 9348.15 2308.0 9034.15\n", "54 official 0.5 192 float 0.75781 9.57031 9739.80 1711.0 8417.13\n", "55 official 0.5 192 int8 0.76562 2.90625 6879.19 1806.0 7067.31\n", "56 converted 0.5 192 float 0.75781 9.56641 14427.00 1585.0 11264.40\n", "57 converted 0.5 192 float16 0.77734 12.27340 9537.10 2055.0 9057.24\n", "58 converted 0.5 192 uint8 1.07810 3.95703 6889.69 2352.0 6899.43\n", "59 converted 0.5 192 int8 1.07810 3.68359 6866.42 2086.0 6884.52\n", "60 official 0.5 160 float 0.75390 8.84375 6275.54 1826.0 6035.32\n", "61 official 0.5 160 int8 0.76562 2.87109 8104.90 1843.0 7316.42\n", "62 converted 0.5 160 float 0.75390 8.88281 6463.68 2811.0 6170.63\n", "63 converted 0.5 160 float16 0.77343 11.58980 6799.38 1878.0 6314.49\n", "64 converted 0.5 160 uint8 1.02340 3.66797 5131.54 2370.0 4970.17\n", "65 converted 0.5 160 int8 1.02340 3.50781 5028.12 2082.0 4984.45\n", "66 official 0.5 128 float 0.75390 7.90234 6759.62 1512.0 5552.03\n", "67 official 0.5 128 int8 0.76562 2.24609 3510.57 1807.0 3630.16\n", "68 converted 0.5 128 float 0.75390 7.99609 6622.07 1956.0 6976.16\n", "69 converted 0.5 128 float16 0.77343 10.48830 4392.34 1880.0 4282.03\n", "70 converted 0.5 128 uint8 1.02340 2.83984 3540.63 2307.0 3417.62\n", "71 converted 0.5 128 int8 1.02340 3.18750 3475.96 2033.0 3435.91\n", "72 official 0.25 224 float 0.73437 6.48438 6391.63 1487.0 6242.10\n", "73 official 0.25 224 int8 0.50781 2.35156 4271.29 1878.0 4192.14\n", "74 converted 0.25 224 float 0.74609 6.46484 4858.95 1478.0 4722.11\n", "75 converted 0.25 224 float16 0.70000 7.48438 5223.81 1822.0 4951.89\n", "76 converted 0.25 224 uint8 0.76562 3.60156 7467.73 2050.0 4353.84\n", "77 converted 0.25 224 int8 0.76562 3.61719 4379.18 1977.0 4262.76\n", "78 official 0.25 192 float 0.73046 5.38672 3590.72 1661.0 3483.75\n", "79 official 0.25 192 int8 0.50781 1.98047 5196.78 1905.0 4826.97\n", "80 converted 0.25 192 float 0.74218 5.38672 6775.37 1907.0 5215.93\n", "81 converted 0.25 192 float16 0.74609 6.32812 5244.89 1851.0 4777.14\n", "82 converted 0.25 192 uint8 0.76562 2.92969 4020.21 2084.0 3792.61\n", "83 converted 0.25 192 int8 0.76562 3.05078 3359.21 2063.0 3350.96\n", "84 official 0.25 160 float 0.73046 4.32812 2661.74 1759.0 2663.75\n", "85 official 0.25 160 int8 0.50781 1.82031 2533.19 1761.0 2412.00\n", "86 converted 0.25 160 float 0.74218 4.53125 3285.08 1705.0 2617.05\n", "87 converted 0.25 160 float16 0.74609 5.35156 2636.35 1803.0 2572.78\n", "88 converted 0.25 160 uint8 0.76562 2.35156 2531.91 2044.0 2494.01\n", "89 converted 0.25 160 int8 0.76562 2.44922 2601.15 1997.0 2512.17\n", "90 official 0.25 128 float 0.50781 3.79297 2639.18 1623.0 2469.44\n", "91 official 0.25 128 int8 0.50781 1.55078 1830.96 1647.0 1757.80\n", "92 converted 0.25 128 float 0.50781 3.69531 1923.96 1845.0 1857.89\n", "93 converted 0.25 128 float16 0.75390 4.66797 2439.37 1901.0 2373.20\n", "94 converted 0.25 128 uint8 0.76562 2.08984 1878.13 2049.0 1788.82\n", "95 converted 0.25 128 int8 0.76562 1.95312 2336.19 2063.0 1838.06\n" ] } ], "source": [ "df = pd.read_pickle(\"./data_mobilenet.pkl\")\n", "print(df.to_string())" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "import subprocess\n", "from os import path\n", "import pandas as pd\n", "import logging\n", "import matplotlib.pylab as plt\n", "%matplotlib inline\n", "%config InlineBackend.figure_format = 'retina'" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "def visualize(d, target, taget_label=None):\n", " d['size'] = d['size'].astype('int')\n", "\n", " alphas = d['alpha'].unique().tolist()\n", " labels = ['converted-float', 'converted-int8', 'official-float', 'official-int8'] # sorted((d['model'] + \"-\" + d['op']).unique().tolist())\n", " shapes = ['ob','og','+b','+g'] # ['or','oy','ok','oc','+r','+k']\n", "\n", "\n", " fig, axes = plt.subplots(figsize=(8,8), ncols=2, nrows=2, sharex=True, sharey=True)\n", " for i, alpha in enumerate(alphas):\n", " ax = axes[i%2][i//2]\n", " for label, shape in zip(labels,shapes):\n", " model, op = label.split(\"-\")\n", " t = d[(d['alpha']==alpha) & (d['model']==model) & (d['op']==op)]\n", " ax.plot(t['size'], t[target], shape, label=label)\n", " ax.xaxis.set_major_formatter(plt.FormatStrFormatter('%d'))\n", " if i==0:\n", " ax.set_ylabel(taget_label)\n", " if i==1:\n", " ax.set_ylabel(taget_label)\n", " ax.set_xlabel('input size')\n", " if i==3:\n", " ax.set_xlabel('input size')\n", " ax.legend(title=\"Model alpha=%.2f\"%float(alpha))\n", " plt.tight_layout()" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABG4AAARsCAYAAADPBdBhAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAWJQAAFiUBSVIk8AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3Xlc1VX+x/HXQRBXcEGSXAC3NGs0tHILEwrHRrPSNHMKsrGfNU1pZYuVuC9N1tg0TTOWaFlW2qTVZGom7o17pWiZivuSoLgLyvn9wb03LveCgKz6fj4e93HjfM/5nvP9yv3eTx++33OMtRYRERERERERESl7fEp7ACIiIiIiIiIi4p0SNyIiIiIiIiIiZZQSNyIiIiIiIiIiZZQSNyIiIiIiIiIiZZQSNyIiIiIiIiIiZZQSNyIiIiIiIiIiZZQSNyIiIiIiIiIiZZQSNyIiIiIiIiIiZZQSNyIiIiIiIiIiZZQSNyIiIiIiIiIiZZQSNyIiIiIiIiIiZZQSNyIiIiIiIiIiZZQSNyIiIiIiIiIiZZQSNyIiIiIiIiIiZVS5S9wYYyYaYxYZY/YYY84YY1KNMRuMMfHGmNo56oYZY2wer4/y6CfWGLPaGHPSGJNmjEk0xnTPo34FY8wQY8wP2cb1lTGmQx5tKhtjRhpjfjLGnDXGHDbGfGKMaVG4syMiIiIiIiIilxNjrS3tMRSIMSYdWA8kAYeBqkA7oC2wH2hnrd3jqBsG7AS+B+Z42d0ma+1sL328CjwN7AVmAxWB+4BawF+stW/mqG+AT4DewE/AF466fYFKQC9r7dwcbfyBRUBHYC3wLdAAuBdIB6Kstf/L94kRERERERERkctOeUzcVLLWnvVSPhYYBvzTWvuYoyyMrMTNdGttXD733wFYAWwHbrTWHs22r3VkJYqaW2uTs7XpB3wIrASineMzxtwILAfSgMbW2hPZ2rwAjCMrMdTXWpvpKO9JVpIpCbjeWV4YxpidQACQfJGqIiIiUnTCgOPW2vDSHggoHhARESklYRRRPOB76WMpWd6SNg6fkJW4aXqJXQxyvI91Jm0c/SYbY/4BvAw8BMRna/Oo4/2l7OOz1q4xxnwMPEDW3TgJ4LpDx9nPs9mTM9baucaYZcAtQGdg8SUcS0DlypVrtWjRotYl7ENEREQKYMuWLZw5c6a0h5Gd4gEREZESVpTxQLlL3OShh+P9By/brjbG/B9QG0gBVllrvdUDiHK8f+1l2zyyEjdROBI3xphKQAfgNLAslzYPONokOMoaAw2Bn621O3Npc4ujzaUkbpJbtGhRa926dZewCxERESmINm3asH79+uTSHkc2igdERERKWFHGA+U2cWOMeQaoBgSSNb9NJ7KSNhO8VL/d8crePhGItdbuzlZWFagHnLTWHvCyn22O92bZyhoDFYAd1trz+WxzjeP9Zy/1c2sjIiIiIiIiIleYcpu4AZ4Brsr289dAnLX212xlp4HRZM0Zs8NR9jtgBNAFWGSMaW2tPeXYFuh4T8ulT2d5jWxlJdUmV8aY3P6E1jw/7UVERKT8UzwgIiJyeSp3y4E7WWvrWmsNUBe4B2gEbDDGRGSrc9haO9xau95ae8zxWgrEAP8DmgB/Ko3xi4iIiIiIiIhcTHm+4wYAa+0h4DNjzHqyHj16D7juIm3OG2PeAW4GIoHJjk3OO10CvTb8rfxYtrKSapMra20bb+WOv7xFeNsmIiIilxfFAyIiIpencnvHTU7W2l1kLaHd0hgTlI8mzkeqqmbbxylgH1DNGBPipY1zxarsc9NsBy4AjYwx3hJh3tr85HjPbQ4bb21ERERERERE5Apz2SRuHK52vF/IR912jvcdOcq/dbz/3kubbjnqOJcnXwlUIWslqIu2ISvZsxtoZozxtqa7tzYiIiIiIiIicoUpV4kbY0wzY4zH40XGGB9jzFggGFhprT3qKI8wxngcozEmGhji+HFGjs1vO95fNMbUzNYmDPgzcI7flvV2+qfjfYxjeXBnmxuBvmTd3fOps9xaa7P180r2MRpjepKVAEoCluQcu4iIiIiIiIhcOcrbHDd3AOONMcuBnUAKWStLdSZrcuKDwMBs9V8DmhpjVgJ7HWW/A6Ic//2ytXZl9g6stSuNMa8BTwE/GGNmAxXJSsDUAv5irU3OMa6PyJoguTdZEyR/AdR2tKkADLTWHs/R5jWgu6PN/4wxi4CGwL1krYY1wFqbWYBzc0kyMzNJTU3lxIkTnDt3jqzckogUJ2MM/v7+VK9enVq1auHjU65y6SIiIlIKFLeLlLzSjtvLW+LmG7JWguoE3EDWctmnyJoL5n3gDWttarb67wN3AzeS9fiRH3AI+AR401q7zFsn1tqnjTE/knWHzSNAJrAe+Ku19ksv9a0xph9Zj0wNAP4CnAWWAmNyJoccbc4ZY24Hngf6kXUH0HGyli6Pt9YmFeC8XJLMzEz27NnD6dOnS6pLEQGstZw9e5azZ89y6tQpGjRooOSNiIiI5Epxu0jpKO24vVwlbqy1m4DHC1D/XeDdQvY1DZhWgPrngdcdr/y2OQ0Md7xKTWpqKqdPn8bX15e6detStWpV/c+jSAnIzMzk1KlTHDx4kNOnT5OamkpQUH7mVhcREZErkeJ2kdJR2nG7PuXCiRMnAKhbty7Vq1fXxV+khPj4+FC9enXq1q0L/PZZFBEREfFGcbtI6SjtuF2fdOHcuXMAVK1a9SI1RaQ4OD97zs+iiIiIiDeK20VKV2nF7UrciGtCM2XsRUqHMQZAkwuKiIhInhS3i5Su0orb9YkXESllzi8AEREREREpu0orbi9XkxOLiIiIFIXNm2HRIjh+HAICIDoaWrYs7VGJiIiIeFLiRkRERK4YixbBqFGwdKnntshIGD48K4kjIiIiUlboUSm54iQmJmKMYcSIEZe0n2nTpmGMYdq0aUUyrpySk5MxxhAXF3fJ+woLCyMsLOyS9yMiUp69+y7ExHhP2kBWeUwMTJ1asuMSEZHcKXYXUeJGSoAxBmMMPj4+bN++Pdd6Xbp0cdUtrguqlG0LFy7k6aefJjo6mtq1a2OMoVOnToXeX2pqKoMHDyYsLAx/f3+uvvpqBgwYwN69e3Nts3fvXgYMGMDVV1+Nv78/YWFhDB48mKNHjxZ6HCJS+hYtgkcegczMvOtlZsLAgVn1RUSuRIrdpSAKE297ExcX5/p98vbaunWr13ZXSuyuR6WkRPj6+nL+/Hneffddxo0b57F927ZtJCYmuurJlekf//gHc+fOpVKlSjRp0oTU1NRC7yslJYUOHTrw888/ExUVxX333cfWrVtJSEjgv//9L6tWraJRo0ZubbZv306HDh04fPgwPXv2pHnz5qxevZrJkyfz9ddfs2LFCmrXrn2phykipWDUqIsnbZwyM2H0aD0yJSJXLsXukh+Fibcv5sknn6RGjRoe5UFBQR5lV1LsrsSNlIirrrqKkJAQEhISGDVqFL6+7r9677zzDgA9evTgs88+K40hShnw3HPPMXbsWJo3b86ePXsIDw8v9L6GDRvGzz//zFNPPcWkSZNc5W+88QZPPvkkjz32GF9//bVbm8cee4zDhw/zxhtv8Je//MVV/tRTT/H666/z4osv8vbbbxd6TCJSOjZvzv3xqNwsWZLVThMWi8iVSLG75Edh4u2Lcd69kx9XUuyuR6WkxAwcOJCDBw/y5ZdfupVnZGQwbdo0OnTowLXXXptr+23btvHggw9Sr149KlasyNVXX82DDz7Itm3bvNY/dOgQDz/8MFdddRWVK1emdevWTJ8+Pc8xpqam8sILL9CiRQsqV65MYGAg0dHRLFiwoOAHnMP+/fsZNWoUHTt2pG7duq5juP/++0lKSsr3fpy3Ee7YsYPXXnuN5s2bU6lSJerXr8+QIUM4fvx4rm1PnTrF0KFDadiwIf7+/jRp0oSJEydirfWoO23aNHr16kWjRo2oXLkyAQEBdOzYkRkzZhTq+POjffv2tGzZkgoVKlzSfk6ePMn7779P1apVPZ6HfvzxxwkNDWX+/Pns2LHDVb59+3YWLFhAWFgYf/7zn93ajBw5kqpVq/L+++9z6tSpSxqbiJS8wj72pMelRORKpthdsXteChNvF6UrLXZX4kZKTL9+/ahataorQ+/0+eefc/jwYQYOHJhr2zVr1tC2bVtmzJjBjTfeyDPPPEO7du2YMWMGbdu2Zc2aNW71jxw5QocOHZg6dSrNmjVj8ODBtG7dmkGDBvH666977WPXrl20adOGCRMmUKdOHQYNGkTfvn3ZsmULv//975kyZcolHf/SpUuZMGECNWrUoFevXgwZMoR27doxe/ZsbrrpJr7//vsC7W/IkCGMHj2azp078+STTxIUFMTf/vY3oqKiOHv2rEf9jIwMunbtyqeffkq3bt3405/+xJkzZ3j++ecZNWqUR/1HH32UXbt2ERkZyeDBg7nvvvvYtWsXDzzwAC+//HKhz0NJ+O677zhz5gwdO3akevXqbtt8fHzo2rUrAIsXL3aVO/87JiYGHx/3S2P16tXp2LEjp0+f5rvvvivm0YtIUcsjJi6WdiIilwPF7ord81KYeDs/5s2bx8SJE3n11VeZM2dOromtKy1216NSUmKqV6/Offfdx7Rp09i7dy/169cHYMqUKQQEBNCnTx+vz9Baa3nwwQc5fvw4M2bMoH///q5tH3/8Mffddx8PPPAASUlJrg/tsGHD2LFjB4MHD3a72D/++OO0b9/e6/hiY2PZtWsXM2fO5L777nOVHzt2jFtvvZUnnniCO++8k6uuuqpQxx8VFcWhQ4c8Lmzff/89HTt25Pnnn2fevHn53t+KFSvYuHEjoaGhAIwfP557772X//znP/z1r3/1uEDv37+fVq1asXDhQipXrgxAfHw8zZo14/XXX2fYsGH4+fm56m/atInGjRu77SM9PZ1u3boxYcIEBg0aRL169VzbEhMTSUxMzPf4gUteHSA3P/30EwDNmjXzur1p06YA/PzzzwVqs2DBAn7++WeiNfGFSLkSEFCy7URELgeK3RW755Q9di9MvJ0fjz32mNvP1atXZ/z48R531Vxxsbu1Vq/L9AWsi4iIsBeTlJRkk5KSLlqvsABbr149a6213333nQXsyJEjrbXWJicnWx8fH/voo49aa6198cUXLWATEhJc7ZcvX24B2759e6/779SpkwXskiVLrLXWpqen2ypVqtjq1avbY8eOedSPjY21gI2Pj3eVbdy40QK2d+/eXvuYM2eOBew//vEPV1lCQoLHWAurR48e1t/f36anp7vKdu7caQEbGxvrdfyjRo3y2M/27dutj4+PDQsLcysPDQ21gN22bZtHmwcffNAC9scff8zXWD/99FML2OnTp7uVx8fHW6BAr7w4j79jx475Gld2Y8eOtYB98cUXvW7/97//bQH7yCOPuMoGDhxoATtlyhSvbYYNG2YBO27cuAKPJz+K+3MociXbtMlaKPhr06bC9RcREWGBdbYMxAK2APGAiJR9JREvKHa/OMXuhYu38/Luu+/ajz/+2O7atcueOXPGbt++3b766qu2evXqFrD/+te/3OqXZuye389hUcYDuuNGStTNN9/M9ddfz9SpU3nppZd45513yMzMzPNWy/Xr1wNZWW9voqKiWL58ORs2bCAyMpKtW7dy+vRpbrnlFgIDAz3q33rrrR7Py65atQqAtLQ0r3eB/PrrrwBs2bIlX8eZm//+97+8/fbbrF27liNHjnjMwn/kyBFCQkLyta/OnTt7lDVq1IgGDRqQnJzMsWPH3GZkDwwMpEmTJh5tGjRoAOCxZN7u3buZOHEiixYtYvfu3Zw5c8Zt+759+9x+HjFiRLHdQSMicilatoTIyIJNUNy5syYmFhFR7K7YvaQMGDDA7edGjRrx9NNPc80119CjRw9efPFFHn744UueC7O8UuJGStzAgQN54oknmDdvHgkJCbRp04Ybbrgh1/ppaWkAuV4UneXHjh1zq5/bbZF169b1KEtJSQFg4cKFLFy4MNexnDx5MtdtFzN58mQGDx5MzZo1uf3222nYsCFVqlTBGMOcOXP4/vvvOXfuXL73l9fx7dq1i7S0NLeLv7dl9QDXKgEXLlxwle3YsYObbrqJo0ePcssttxATE0NgYCAVKlQgOTmZ6dOnF2isJc35pe/8XcjJWZ7zy7GgbUSk/Bg+HGJi8rckuI8PlPGpvERESoxid8Xu3pRU7Ny9e3fq1avHvn37SEpK4vrrry/R/ssKJW6kxD3wwAM899xzDBo0iH379jF8+PA86zs/lAcPHvS6/cCBA271nO+HDh3yWt/bfpxtJk+ezBNPPJGPoyiY8+fPM2LECOrWrcv69es9vsicfzUoiEOHDnHNNdd4lDuPz9tfLPLrtddeIyUlhYSEBOLi4ty2zZw50+sM/2VpjhvnecntmVrnagbZn4ktTBsRKT+io+Hf/4ZHHsk7eePjA1OmZNUXERHF7ordf5M9di/J2LlOnTrs27fPbYWoKy12V+JGSlyNGjXo3bu3a/m4fv365VnfmdHP7cLinFE8IiICgObNm1OlShU2btxIWlqax0XQ237atWsHwLJly4rl4n/kyBGOHTvGPffc43HhP3nypOuW0oJYsmQJkZGRbmU7duxgz549hIWFXVJ2+ZdffgGgV69eXvv1JjExkZEjRxaon+JK3LRr147KlSuzYsUKTpw44TapXGZmpmuJyC5durjKnf+9YMECMjMz3WanP3HiBCtWrKBKlSqu3xURKX8efhjCwmD0aPB2KevcOetOGyVtRER+o9hdsbtT9ti9MPF2YaSlpbF161aMMYSHh7vKr7TYXcuBS6kYM2YMn332GfPnz/eYqT2njh07cs0117B8+XJmz57ttm327NksW7aMZs2a0alTJwD8/Pzo378/J06c8EgMrF27lg8++MCjj7Zt23LLLbfwn//8h6lTp3odx48//sjhw4cLcJS/CQ4OpkqVKqxbt87tls2MjAyefPJJjhw5UuB9Tp48mV27drl+zszMZOjQoWRmZvLQQw8VapxOYWFhgOcX5fz58z2WhHQaMWJEYSbMvGRbt25l69atbmXVqlXjgQce4NSpUx6/A2+++SbJycl07dqVRo0aucobN25MTEwMycnJ/OMf/3BrEx8fz6lTp3jggQeoWrVqkYxbREpHdDQkJsKmTTB5clYSZ/LkrJ8TE5W0ERHxRrF7FsXuvylMvA2wfft2tm7dSkZGhqvs4MGD7N2712OMJ0+eJC4ujrNnz3Lbbbe5PW52pcXuuuNGSkXDhg1p2LBhvuoaY5g+fTq33347ffv2pWfPnjRv3pyffvqJOXPmUL16dd577z23LOu4ceNYtGgRf/vb31i7di2dOnXiwIEDfPzxx9xxxx18/vnnHv18+OGHREVF8fDDD/PGG29w8803U6NGDfbu3csPP/zApk2bWLVqFcHBwQU+Xh8fH5544gkmTJjA9ddfT8+ePUlPT2fx4sWkpqbSpUsX118f8qtjx460bt2avn37EhgYyPz58/n+++9p06YNzz77bIHHmN1jjz1GQkIC9957L7179+bqq69m06ZNfP311/Tp04ePP/74kvafm+XLl7u+XJxfktu2bXO75XPatGlubVq0aAHg8WUybtw4EhMTee2119i4cSM33XQTW7ZsYe7cuQQHB3tc4AHeeustOnTowBNPPMGiRYto0aIF//vf/1i8eDHNmjVj7NixRXi0IlKaWrbU5MMiIvml2F2xuzeFibejo6PZtWsXO3fudCWctm7dym233Ub79u1p1qwZwcHB7Nu3j4ULF3Lw4EEaNWrkNQF1RcXuRbE0lV5l80UZXA78YrwtKei0detW+8c//tHWrVvX+vr62rp169r+/fvbrVu3et3XgQMH7EMPPWSDgoJspUqVbKtWrWxCQoJdvHixx5KCTsePH7djx461ERERtmrVqrZSpUo2LCzM3nHHHfZf//qXPXnypKtuQZcUzMjIsJMmTbItWrSwlSpVsldddZX94x//aJOTk13LBO7cudNV/2JLCjqXyLvmmmusv7+/vfrqq+2TTz5p09LSPPoODQ21oaGhXsflXApw8eLFbuUrVqywXbp0sTVq1LDVqlWzHTt2tJ999lme5+9SOc9pXq+cciu31tqUlBT7xBNP2IYNG1o/Pz9bt25d+9BDD9k9e/bkOobdu3fbuLg4W7duXevn52cbNmxon3zySZuamlpkx+mNlgMXuXxoOXARKS4lvRz4xSh23+mqfyXG7tYWPN52LnWe/dzt3r3bPvLII/aGG26wQUFB1tfX1wYEBNgbb7zRjhkzxh4/fjzX/ksjdi+N5cCNtUXzuIKUPcaYdRERERHr1q3Ls55zmTznnQtStsXFxTF9+nS3LLWUf/ocilw+2rRpw/r169dba9uU9lgg//GAiJR9ihfKH8Xul5/8fg6LMh7QHDciIiIiIiIiImWUEjciIiIiIiIiImWUEjciIiIiIiIiImWUEjci5cy0adOw1uoZWRERERGRMk6xuxQFJW5ERERERERERMooJW5ERERERERERMooJW5ERERERERERMooJW5ERERERERERMooJW5ERERERERERMooJW5ERERERERERMooJW5ERERERERERMooJW5ERERERERERMooJW5ERERERERERMooJW5EpEwwxnDrrbcWqE1GRgbx8fE0bdoUf39/jDHMmTOH5ORkjDHExcUVy1hFRERERK5kit1LlhI3UqI2b4Y33oAxY7LeN28u7RFJbkaMGIExhsTExNIeSq4mTZrEqFGjuPrqq3nmmWeIj4+nefPmpTqmwnyJiYiIiJQ1itvLF8XuhVNeYnff0h6AXBkWLYJRo2DpUs9tkZEwfDhER5f8uKR8+/LLL6lWrRoLFy6kYsWKrvLk5OTSG5SIiIhIOaa4XYqLYvfC0x03UuzefRdiYrxf/CGrPCYGpk4t2XFJ+bd//35q167tduEXERERkcJR3C7FSbF74SlxI8Vq0SJ45BHIzMy7XmYmDByYVb+0rV69mr59+1KvXj38/f0JCQkhJiaGTz75xK3eJ598QmRkJIGBgVSuXJnrr7+e8ePHc+7cOY99hoWFERYWxqlTpxg6dCgNGzbE39+fJk2aMHHiRKy1rrrfffcdxhjuvvvuXMfYokUL/P39SU1NdSufP38+d9xxB0FBQfj7+9O4cWOGDh3KsWPHch3T8ePHeeqppwgLC8PPz48RI0YQFhbGyJEjAejSpQvGGNcru9OnTzN+/Hhat25N1apVqVatGu3bt2fmzJlex52ens7o0aNp3Lgx/v7+hIeH89JLL3k9Z3mJi4vDGMPOnTvZtWuXa2xhYWEXbXvgwAH+/Oc/ExYWRsWKFalTpw733HMP69at86iblpbGX//6V6Kioqhfv76r/p133smqVavc6k6bNs11fpYsWeJ2zkaMGFGg4xMREREpaeUxbgfF7ordf3M5x+56VEqK1ahRF7/4O2VmwujRpXvr5ZQpU3j00UepUKECd955J02bNuXw4cOsXbuWt956iz59+gAwbNgwxo8fT1BQEPfffz/VqlVj3rx5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bduzZ0+7evVqr30kJCTYVq1a2SpVqtjatWvbu+66y/7www+5/rsdOnTI9uvXzwYHB1sfHx8L2Pj4+Isei5YDF7l8aDlwESkuits9KXb/jWL3kondS2M5cGOzvtDlMmSMWRcRERGxbt26POs5l33L+Sxgcdi8GRYtylo6MCAgK1Nfms/GipQVJfk5FJHi1aZNG9avX7/eWtumtMcC+Y8HRKTsU9wuUvry+zksynhAj0pJiWrZUhd8EREREZGyTnG7SNmhyYlFRERERERERMooJW5ERERERERERMooJW5ERERERERERMooJW5ERERERERERMooJW5ERERERERERMqocpe4McZMNMYsMsbsMcacMcakGmM2GGPijTG1c2nTwRjzlaPuGWPMD8aYwcaYCnn0090Yk2iMSTPGnDTG/M8YE3uRscUaY1Y76qc52nfPo34FY8wQx3icx/KVMaZD/s+IiIiIiIiIiFyuyl3iBhgCVAUWApOBD4DzwAjgB2NMg+yVjTE9gaVAJPAZ8CZQEXgd+MhbB8aYx4EvgOuAGcAU4GpgmjHm1VzavApMA0Ic9WcA1wNfOPaXs75x9P+aYzxvOsYXCSx1jFtERERERERErmC+pT2AQgiw1p7NWWiMGQsMA14AHnOUBZCVRLkA3GqtXesofxn4FuhtjLnPWvtRtv2EAa8CqUBba22yo3wUsAZ42hjzqbV2VbY2HYCnge3Ajdbao47yvwLrgFeNMV869+VwH9AbWAlEO4/JGPM2sByYYoz51lp7ovCnSkRERERERETKs3J3x423pI3DJ473ptnKegN1gI+cSZts+3jJ8eOjOfYzAPAH3syeaHEkY8Y5fhyUo43z57HOpI2jTTLwD8f+HsrRxtnvS9mPyVq7BvjYMe7eXo5TRERERERERK4Q5S5xk4cejvcfspVFOd6/9lJ/KXAa6GCM8c9nm3k56hSqjTGmEtDB0f+yAvQjIiIiIiIiIleQ8vioFADGmGeAakAg0BboRFbSZkK2atc43n/O2d5ae94YsxNoCTQCtuSjzQFjzCmgvjGmirX2tDGmKlAPOGmtPeBlqNsc782ylTUGKgA7rLXn89kmV8aYdblsap6f9iIiIlL+KR4QERG5PJXbxA3wDHBVtp+/BuKstb9mKwt0vKflsg9neY0CtqnqqHe6GPvI2UZERERERERErjDl9lEp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v/wlO+20U4/73lMf+chHOP3009lnn316tZ1169bR2NjI/fffz0EHHcR73vMeRo4cyYMPPsjXv/51vvWtb7FkyRIOOeSQXu2HJEnScDZU7tvBe/fe5L177zNxI/XQ//zP/wCw1157bVbZ6NGjGT16dI/b3Xrrrdf/34G+NmrUKEaNGtXr7dx2223cf//9NDY2snDhQmpqXp3VOWvWLGbPns3ll1/Odddd1+t9kSRJ0uDnvXvv8d6997nGjdTOzTffTH19PTvttBPbbbcdr3/96/nsZz/L2rVrgVfnl86aNQuA4447joggIpg/fz4RweTJkwH44Ac/uEEZbHqe7AMPPMBpp53GmDFjGDlyJKNHj2bixIncfPPN6+t0Nk/217/+NRdccAFveMMb2H333Rk5ciRjx45l+vTprFixopTPprN5shHBscceyx//+EemT5/O6NGjGTlyJHV1dVx//fUb1D3zzDM57rjjALjkkkvWfz5tr7t06VIATjzxxA1+8QNMmjQJgD/84Q+lvCdJkiQNXt67d85796HDETdSGxdeeCGf/exnGTVqFO9973t5zWtew913382FF17IPffcw8KFC9l3332ZNWsWixYtYvHixUyePJl9990XgPHjxzNr1iweffRRvve97zFp0qT1C5tVj52ZO3cuZ599NiNGjODkk0/mgAMOYOXKlTz00ENcffXVvPvd795k/L/927/xzW9+k+OOO44JEyawzTbb0NLSwrXXXssdd9zBQw891OMhnt3x3HPP8eY3v5ltttmGU045hbVr13LLLbcwZcoUampq1v9BrC4Cd8MNN9DQ0MCxxx67/hrVz7Gurg6Au+++m3PPPXeDPwB33nknAG95y1t67b1IkiRp4PPevee8dx9kMnPQPIDdgA8BtwG/Bf4MrAJ+BEwFatrV3xfITTwWbKKtycADwAuVNhYBJ22i/gjg48AvKv16BrgLmLCJmO2AS4BfAWuAlcDNwMElfV4PH3HEEdmVxx9/PB9//PEu65WFi0kups/a664lS5YkkHvvvXc+9dRT68+//PLLedJJJyWQl1122frzs2bNSiDvu+++ja51/fXXJ5DXX3/9RmWTJ09OIJctW7b+XEtLS2611Va5yy675GOPPbZRzH//93+vf75s2bIEcvLkyRvUWbFiRa5Zs2aj2HvuuSdramryrLPO2uD8fffdl0DOmjVro5jOdPaeqz9TU6dOzXXr1m3wvkaMGJEHH3zwZrXd2tqa73znOxPIQw45JD/60Y/mJz7xiTzuuONy6623znPOOSdffvnlbvd7MOjrn0NJveeII45I4OEcAPdOuRn3A5IGPu/bX+W9e9e8d+8d3f05LPN+YLCNuDkV+AbwFHAf8CTwV8A7gWuBt0XEqZnZfvWsnwO3d3C9xzpqJCIuB84HVgBzgW2A04E7IuKczLyyXf0AFgCnUCRhrgR2BU4DmiPiXZn5vXYxI4HvA28GHgK+CuxdeY8nRsTxmfnTLj+RAa66oFl3y/pz4bPqnMuLLrpog1Xkt9pqK770pS9x1113ce211260YFkZvvGNb7Bu3TpmzJixPmPd1mtf+9our9FZRn7ixInU1dVxzz33bHE/N2X77bfniiuuYMSIEevPHXLIIbz5zW+mubmZF154gde85jXdulZEcOutt3LJJZdw6aWX8vjjj68va2xs5L3vfS9bbTXYfn1JkiQNXIPpvh28d99S3rsPLoPt0/s1cDLw75nZWj0ZERdSjI55F0US57vt4h7NzIu700BETKBI2vwOOCozn62c/yLwMHB5RNyZmcvbhJ1OkbRZAjRm5ppKzDcpRgPNjYh7M/P5NjHnUSRtbgVOq76fiLiJIsl0XUS8vu37VO965JFHADj++OM3Knvd617Ha1/7WpYtW8aqVatKXxX+Jz/5CQBve9vbenyNzORf//VfmT9/Pj//+c959tlneeWVV9aXb7PNNl1e4/bbb+fRRx/d4Nz48ePXD5HclAMOOIDa2tqNzu+9994APPvss93+5b9mzRo+8IEPcPfdd3PVVVcxadIktt9+e+6//34++tGPUl9fzy233LJ+zqwkSZKGF+/dvXcfTgZV4iYz7+3k/NOVJMllwLFsnLjZHGdVjpdVkzaVNpZHxFXADOCDwKw2MWdXjhdVkzaVmAcriZgzKBI718P6ETrVdj7VNjmTmd+LiB8CxwANFCOLBq2OMvEDdVvBVatWAXS6avzo0aN58sknee6550r/5f/cc88BnWfeu+O8887jK1/5CqNHj+bv//7vGTNmDNtttx0A8+fP54knnujyGrfffjs33HDDBucmT57crV/+O++8c4fnq9n1tn+IuvK5z32OW265ha9+9av8wz/8w/rzb3vb27j11lsZP3485557rr/8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G0mqWbOmRo8eLcm11lFVxowbAECWvn376vHHH9ebb76p22+/Pat9/vz52rdvnyZPnqyffvrJZ+zq1av1u9/9TkePHtVtt92mdu3a6YcfftCsWbM0b948ff7557r66quz+u/fv1+dO3fW9u3b1bVrV3Xt2lW7d+/WsGHDFBMT4/McaWlpuvHGG5WamqobbrhBt9xyi44fP66PP/5Yt9xyi/79739ryJAhxb7+pKQkPffcc+rWrZvuuusu1a1bV1u3btXs2bM1f/58rVy5Uh07diz08UaOHKmkpCTdc8896t27txYvXqx//vOfWr58uVasWKFatWrl6H/mzBndfPPN2rVrl3r06KHq1atr7ty5+tvf/qZTp0553Vr08MMPKyIiQlFRUWratKkOHDigTz75RP369dOWLVsUFxdX7M/Cl6+++konT55UTEyM6tWrl2Ofw+HQzTffrKlTp2rp0qWFmhrty/z587Vnzx5FRUWpbdu2PvucPn1as2bN0s8//6zAwEBdfvnlioqKUrVq1Yp1TgCAN3ICcoL8lEVOIEk1atSQJK9ZXx5VJSegcAMAyFKvXj3dd999mjFjhnbu3KnmzZtLkqZNm6agoCDdc889Pu91t9aqf//+OnLkiGbNmqUHHngga9/777+v++67T/369dOmTZvkcLgme44ePVrbt2/XiBEj9NJLL2X1Hz58uK6//nqf4xswYIDS0tL03nvv6b777stqP3TokG688UY9+uijuu2223ThhRcW6/q7d++uvXv3eiUg3377rbp06aK//e1vWrRoUaGPt3LlSm3YsEGhoaGSpGeffVZ33323/ve//+kf//iHxowZk6P/rl271LFjR3322WeqXbu2JGncuHG65JJL9NJLL2n06NFZCYwkbdy4Ua1bt85xjIyMDPXo0UPPPfechg0bpmbNmmXtW7ZsWZG/scr+LdqWLVskSZdcconPvm3atJEk/fjjj0U6R3ZTp06VJP3hD3/Is8+ePXvUr1+/HG3h4eGKj49XdHR0sc8NAPgNOQE5QW5lnRNI0ltvvSVJuuWWW3zurzI5gbWWVyV9SVobGRlpAVR8mzZtsps2bSq140uyzZo1s9Za+9VXX1lJdvz48dZaa1NTU63D4bAPP/ywtdbap556ykqy8fHxWfErVqywkuz111/v8/hdu3a1kmxiYqK11tqMjAxbp04dW69ePXvo0CGv/gMGDLCS7Lhx47LaNmzYYCXZPn36+DzH3LlzrST72muvZbXFx8d7jbW4evXqZQMCAmxGRkZWW0pKipVkBwwY4HP8EyZM8DrOtm3brMPhsGFhYTnaQ0NDrSS7detWr5j+/ftbSfb7778v1FjnzJljJdmZM2fmaB83bpyVVKRXds8884yVZJ966imf5506daqVZIcOHVqoceaWkpJijTG2UaNG9tSpUz77xMbG2oSEBLtnzx57/Phx+/3339s//OEP1hhja9eubTds2FCscxdGYX8OIyMjraS11g9yAUs+AFQqpZ0PWEtOUBjkBKWfE1hr7bx586wxxjZv3tymp6d77S+vnKA88gFm3AAAcrj22mvVoUMHvfXWW3r66af15ptvKjMzM9/pxuvWrZPk+nbKl+7du2vFihVav369oqKi9MMPP+jEiRO64YYbFBwc7NX/xhtv9LqvfdWqVZKkw4cP+1yE7tdff5Ukbd68uVDXmZeFCxfqjTfe0Jo1a7R//36vp2Xs379fTZs2LdSxfH3T06pVK7Vo0UKpqak6dOiQ6tevn7UvODhYF198sVdMixYtJEkHDx7M0f7zzz9r8uTJSkhI0M8//6yTJ0/m2P/LL7/keB8bG+vXC/hNmzZN1loNGDDA56LEkrymhrdv315vvPGG6tatqxdeeEGxsbEslAkAJYScgJygvHz55Ze6//77FRgYqDlz5qhBgwZefapSTkDhBgDgZciQIXr00Ue1aNEixcfHq1OnTrryyivz7H/48GFJyjN58bQfOnQoR/+8pi83adLEq+3AgQOSpM8++0yfffZZnmM5duxYnvsK8vLLL2vEiBFq0KCBbrrpJrVs2VJ16tSRMUZz587Vt99+q9OnTxf6ePldX1pamg4fPpwjScv+5+w893WfO3cuq2379u265pprdPDgQd1www2KiYlRcHCwqlWrptTUVM2cObNIYy0MT0Lt+fvLzdOe13Xk5+zZs4qPj5dUvEWJhw0bphdeeEFJSUlFjgUA5I2cgJzAl9LMCVatWqUePXrI4XBo0aJFuuaaa4oUXxlzAgo3AAAv/fr101//+lcNGzZMv/zyi8aOHZtvf88v7z179vjcv3v37hz9PNu9e/f67O/rOJ6Yl19+WY8++mghrqJozp49q9jYWDVp0kTr1q3zSjg93+4Vxd69e3XppZd6tXuuz9c3i4X14osv6sCBA4qPj9fAgQNz7Hvvvfd8PonjfO9n91xLXvere54Uktf97vlZsGCBdu/erejoaJ+fWUEuuOACSa4ncAAASg45ATmBR1nkBMuXL9fvf/97ORwOLV68WNddd12R4qXKmRNQuAEAeKlfv7769OmT9ZjHvn375tvf881bXgnA0qVLJUmRkZGSpLZt26pOnTrasGGDDh8+7JWs+DqO5xf38uXLSyVJ279/vw4dOqQ777zTK0E7duxY1tTvokhMTFRUVFSOtu3bt2vHjh0KCwsr1rdQHp4nedx1110+z+vLsmXLNH78+CKdJ3uSdt1116l27dpauXKljh49mmPBxszMzKzHr3br1q1I55B+W5S4uI8A/+qrryTpvJ5cAQDwRk5ATuBR2jnBF198oV69eikgIECLFy/O8eSxoqiMOYGjvAcAAPBPEydO1EcffaTFixd7PVEhty5duujSSy/VihUrNHv27Bz7Zs+ereXLl+uSSy5R165dJbke7fjAAw/o6NGjXvdXr1mzRu+++67XOa666irdcMMN+t///pf1hIHcvv/+e+3bt68IV/mbkJAQ1alTR2vXrs0xtfrMmTN67LHHtH///iIf8+WXX1ZaWlrW+8zMTI0aNUqZmZl66KGHijVOj7CwMEneCe3ixYv15ptv+oyJjY0tzsK2WerWrat+/frp+PHjXn9vr776qlJTU3XzzTd7JUrbtm3TDz/8oDNnzvgcV1pampYsWaJGjRr5TDo9Nm/e7PPbs9TUVA0fPlyS9OCDD+YZDwAoHnICF3KC35R0TrBkyRL17NlTtWvXVkJCQoFFm6qWEzDjBgDgU8uWLdWyZctC9TXGaObMmbrpppt07/Cua4QAACAASURBVL33qnfv3mrbtq22bNmiuXPnql69enr77bezHvspSZMmTVJCQoL++c9/as2aNeratat2796t999/X7feeqvmz5/vdZ7//Oc/6t69uwYPHqwpU6bo2muvVf369bVz505999132rhxo1atWqWQkJAiX6/D4dCjjz6q5557Th06dFDv3r2VkZGhpUuXKj09Xd26dcv6lrCwunTpoiuuuEL33nuvgoODtXjxYn377bfq1KmT/vKXvxR5jNk98sgjio+P1913360+ffrooosu0saNG/Xpp5/qnnvu0fvvv39ex8/LpEmTtGzZMr34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O1zDnJ2dXaRdRQK0TH8AV1111Xb7mz59epE2q1evLvjmrbDSPsvBgweXuN/SpUsrNN7KeOWV1Krkfv36lSjbY489+P73v09+fj7vvvvu7h6aJNUINS0eAGOCnWFMkFKTYwITN5JUh3Vr040+2X12qk3f7L50a1NyLfnucMwxxwAwefLk7dbr2bMnkPrWpbgPP/yQ5cuX07lz5zK/TSuvJk2acPbZZ/Ppp5/y+uuv8/vf/56tW7eW+GYtM/Y1a9awaNGiSvVZWL169YDSv4n6/ve/T1ZWFm+++Wa575eTk0N+fj5vvfVWibLSPsvdKSsrq8xv3DLHkpZ1vGfmevETQyRJKTUtHgBjguKMCVJqa0xg4kaS6rgb+9xIVijfn4OskMXwPslvSFdel112GfXr12f06NEsXry4RPny5csBGDJkCABjxowp8od727ZtXHvtteTn53PxxRcnMqbMUZRPPfUUTz31FPXr1+eCCy4oUe+qq64CYOjQoXz66aclyr/++uuC9frllZk+vWzZshJlbdq04YILLmDu3LmMHj261ADno48+YsmSJQU/X3TRRQD89re/ZePGjQXXV69eXeSI0Kqwzz778M9//rPUsuOOOw6ARx99tMQ3r5MnT+btt9+mcePG9OrVa5ePU5JqqpoUD4AxQXHGBCm1NSZwjxtJquNy98/l0dMe5ZJXLiE/5pdZLytkMfZHY8ndv+qmRR966KE89NBDXHrppfTs2ZMBAwbQtWtXVq1axZw5c2jatCnTp0+nV69eXHfdddx+++10796dgQMHsueeezJ58mQWLlxI7969+dWvfpXImI499lgOOOAAJk6cyJYtW/jRj35U6mkFubm53HrrrfzmN7+ha9eu/Pu//zudO3dmw4YNfPLJJ8ycOZPevXvzxz/+sdx99+vXj6ysLH7zm9+wcOFCWrRoAaROzgB44IEH+Mc//sGNN97I7373O3r37s33vvc9Pv30U95//33mzJnDs88+S+fOnQE477zzeO655/if//kfunfvzoABA9iyZQsvvPACRx99NB999FECn1jF5ObmMmHCBH70ox+Rk5NDgwYN6NOnD3369GHgwIGceOKJvP766xxyyCH8+Mc/pm3btrz//vu88sorxBi59dZbi+wTIEkqqibFA2BMUJwxQS2PCZI4U9xX9XwB83JycqKkmm/x4sVx8eLFu7SP1z96PfYd1zcyghKvvuP6xtc/en2X9r8zZs+eHX/yk5/E1q1bxwYNGsR27drFk08+OU6cOLFIvWeffTYee+yxca+99oqNGjWKhx56aBwzZkz89ttvS9wzOzs7Zmdnl9pfXl5eBOL06dNLLR89enQEIhBfeOGF7Y79zTffjGeddVZs165dbNCgQWzVqlU84ogj4lVXXRXnzJlT7jFl/O53v4tHHHFEbNy4ccEYCtu0aVO8//774w9+8IPYtGnT2LBhw9ixY8d4wgknxLvvvjt++eWXJeqPHDkydu7cOTZs2DBmZ2fHYcOGxY0bN0Yg9u3bd7vjKWz69OkRiHl5eUWu9+3bt8Q4M8aNGxeBOG7cuCLXP//883jeeefFNm3axKysrBL33bx5c7z77rvjv/3bv8W999471qtXL7Zu3TqeeuqpccqUKeUe8/aU9/cwJycnAvNiNYgFovGAVKsYD5RkTPAdY4KUXR0TVEU8EGLqD7pqoRDCvJycnJx58+ZV9VAkVVLmeMZDDjlkl/e1aOUipi2ZxlebvqJpo6bkds6t0jXsUnVR3t/DI488kvnz58+PMR65O8a1I8YDUu1hPCBVvaqIB1wqJUkqolubbgZmkiTVccYDUvXh5sSSJEmSJEnVlIkbSZIkSZKkasrEjSRJkiRJUjVl4kaSJEmSJKmaMnEjSZIkSZJUTZm4kSRJkiRJqqZM3EiSJEmSJFVTJm4kSZIkSZKqKRM3kiRJkiRJ1ZSJG0mSJEmSpGrKxI0kSZIkSVI1ZeJGkiRJkiSpmjJxI0mq1aZOnUqvXr1o3rw5IQTOOOOMgrK5c+dy0kkn0apVK0II9OjRA4DBgwcTQmDp0qUV6nPp0qWEEBg8eHClxj5jxgxCCIwYMWKn2q1YsYJBgwbRoUMH6tWrRwiBtWvXMn78eEIIjB8/vlLjkiSpJjImMCaoqepX9QAkSdpVli5dyoABA2jevDlDhgyhadOmHHzwwQB89dVXnHrqqWzcuJELL7yQVq1a0bZt2yoecTIGDx7M1KlTOe+88zjggAMIIdC4ceMqG8+MGTPo168feXl5Ox1wSpKUBGMCY4KazMSNJKmEEFLvMVbtOCrr9ddfZ+PGjdx5552cf/75RcreeecdVq5cyU033cSwYcOKlN1yyy1cf/31tG/fvkL9tm/fnvfff59mzZpVeOwVtXnzZl577TVOPPFEnnnmmd3evySp9qgt8QAYExgT1GwmbiRJtdann34KwL777rtTZe3ataNdu3YV7rdBgwYF3+LtbitWrCA/P7/U55Ikqa4yJlBN5h43kqQa5/nnn6dPnz40a9aMJk2acNhhh3HLLbewadMm4Lt14Hl5eQD069ePEELBWu4QAoMGDQLgoosuKlIG21/P/s4773DOOefQvn17GjVqRLt27ejfvz/PP/98QZ2y1rN/8MEHXH/99Rx11FG0bt2aRo0akZ2dzSWXXMLy5csr/bl06tSJ7OxsAJ588smC5yrPuvp58+Zx5pln0qZNm4Jx/fznP+ezzz4rUXdnnmPw4MH069cPgJEjRxaMKYTAjBkzKv3MkqS6zZigdMYEtYszbiRJNcqwYcO45ZZbaNWqFeeffz577bUXkydPZtiwYUyZMoWpU6fSqVMn8vLymDFjBjNnzmTQoEF06tQJgB49epCXl8eCBQt46aWXGDBgQMEGhJn3sowdO5bLLruMevXqcfrpp9O1a1dWrlzJ3Llzeeihhzj77LO32/4Pf/gDjzzyCP369aNXr140bNiQRYsW8dhjj/Hyyy8zd+7cCk/FBrjyyitZunQp9957L0cccUTBpos7eq5XXnmFM888kxgjAwcOJDs7m3nz5vHwww/z0ksv8dZbb9G5c+cKPUdmDE8++SR9+/bl+OOPL7hP5r+JJEkVYUxQNmOCWibG6KuWvoB5OTk5UVLNt3jx4rh48eLd1l9qNftu667cZs+eHYHYsWPH+NlnnxVc37JlSzzttNMiEG+66aaC63l5eRGI06dPL3GvcePGRSCOGzeuRNmgQYMiEJcsWVJwbdGiRbF+/fqxRYsWceHChSXa/POf/yz495IlSyIQBw0aVKTO8uXL48aNG0u0nTJlSszKyoqXXnppkevTp0+PQMzLyyvRpixl9R1j6c+8fv362LJly5iVlRVnzZpVpP6tt94agXjSSSft9ueojsr7e5iTkxOBebEaxALReECqVYwHvmNMsGPGBLtGVcQDLpWSpDouhJKv8pRVhSeeeAKAG264ochpD/Xr1+fOO+8kKyuLxx57bJf0/fDDD7N161aGDx9Ot27dSpR36NBhh/fITKUurn///nTr1o0pU6YkMtad8dJLL7F69WrOOeccjjvuuCJl11xzDZ06deK1115j2bJlBder43NIkiqnJsUDYEywKxgTVF8ulZIk1Rjz588H4IQTTihRduCBB9KhQweWLFnCunXrEj+94c9//jMAp5xySoXvEWPkmWeeYfz48fzlL39hzZo1bNu2raC8YcOGO7zHpEmTWLBgQZFrPXr0KJh+vLO295nWr1+fPn36sHTpUt59913222+/xJ5DkqTKMCYwJqhLTNxIUh0XSznis7oe/7lu3TqAMk93aNeuHcuWLWPt2rWJB2lr164FqNR686uvvpp77rmHdu3acfLJJ9O+fXuaNGkCwPjx4/nkk092eI9Jkybx5JNPFrk2aNCgCgdp5flM4bvnT+o5JEnVS02KB8CYAIwJ6hITN5KkGiMTeK1YsYIuXbqUKM+cdpB0gAbQvHlzAP71r39V6FjPlStXct9999G9e3dmz57N3nvvXaT82WefLdd9xo8fX3DSRRIKf6alKf6ZJvUckiRVhjGBMUFd4h43kqQao2fPngClHhn54Ycfsnz5cjp37lwQUCXpmGOOAWDy5MkVav/xxx+Tn59P//79SwQ2y5cv5+OPP670GCtie5/p1q1befPNNwHIyckBKvYc9erVAygydVqSpMowJkieMUH1ZeJGklRjDBkyBIAxY8bwxRdfFFzftm0b1157Lfn5+Vx88cW7pO/LLruM+vXrM3r0aBYvXlyifPny5dttnznm8q233ioSrGzYsIGhQ4eydevWRMdbXmeccQYtW7bk2WefLVizn3HPPfewZMkSTjzxxIK17BV5jn322QegyGaGkiRVhjFB8owJqi+XSkmSaoxevXpx3XXXcfvtt9O9e3cGDhzInnvuyeTJk1m4cCG9e/fmV7/61S7p+9BDD+Whhx7i0ksvpWfPngwYMICuXbuyatUq5syZQ9OmTZk+fXqZ7du2bcu5557LhAkT6NGjB/3792fdunW89tprNG7cmB49epTYYHB32GuvvXjiiSc466yz6Nu3L2eddRb77bcf8+bNY+rUqbRt25b/+q//qtRzHHTQQbRv354JEybQoEEDsrOzCSFw4YUXkp2dvbsfWZJUCxgTJM+YoPoycSNJKqE6bkKYcdttt9GzZ08eeOABnnrqKbZs2UKXLl0YM2YM11xzzS49vWDo0KF0796dO+64gxkzZjBp0iRatWrF4Ycfzs9+9rMdtn/88cfZf//9ee6553jwwQdp3bo1p59+OqNGjeLMM8/c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\n", "text/plain": [ "
" ] }, "metadata": { "image/png": { "height": 566, "width": 567 }, "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "visualize(df, 'inference', 'avg inference [us]')" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABG0AAARsCAYAAAAkMmtiAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAWJQAAFiUBSVIk8AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3XlYlXX+//HnfQSRVHBBEjdwza1UdMrUICFxbDJq3FK/BuroWNPPtLLMUnDJpbTSmmqy3NKsrNQ2EiPAXEpFrRG0RUXFXVBcEZT79wdxxuM5KDsHfD2u61zEZ7k/7/vQubrPu89imKaJiIiIiIiIiIg4F0tZByAiIiIiIiIiIvaUtBERERERERERcUJK2oiIiIiIiIiIOCElbUREREREREREnJCSNiIiIiIiIiIiTkhJGxERERERERERJ6SkjYiIiIiIiIiIE1LSRkRERERERETECSlpIyIiIiIiIiLihJS0ERERERERERFxQkraiIiIiIiIiIg4ISVtRERERERERESckJI2IiIiIiIiIiJOSEkbEREREREREREnpKSNiIiIiIiIiIgTUtJGRERERERERMQJuZR1AOWdYRj7AA8guYxDERERkcLxA86Yptm4rAMBPVuIiIhUAH4U07OFkjZF5+Hu7l6rVatWtco6EBERESm4Xbt2cfHixbIO42p6thARESnHivPZQkmboktu1apVrYSEhLKOQ0RERAqhY8eObNu2Lbms47iKni1ERETKseJ8ttCeNiIiIiIiIiIiTkhJGxERERERERERJ6SkjYiIiIiIiIiIE1LSRkRERERERETECSlpIyIiIiIiIiLihJS0ERERERERERFxQkraiIiIiIiIiIg4IZeyDkBERERERERuLDs7m7S0NM6ePculS5cwTbOsQxKp8AzDwM3NjerVq1OrVi0sltKd+6KkjYiIiIiIiJPLzs7m4MGDXLhwoaxDEbmpmKZJRkYGGRkZnD9/noYNG5Zq4kZJGxERERERESeXlpbGhQsXcHFxoW7dulStWrXU/4+/yM0oOzub8+fPc/ToUS5cuEBaWhpeXl6lNr4+5SIiIiIiIk7u7NmzANStW5fq1asrYSNSSiwWC9WrV6du3brA/z6LpTZ+qY4mIiIiIiIiBXbp0iUAqlatWsaRiNyccj97uZ/F0qKkjYiI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Nmzg7NmzNhs2Z2dnW49d7969e4HGuFZ6ejq7d+/GMAwaN25sLc+9bnR0NNnZ2TYnSJ09e5YNGzZwyy23WP9dqQh05LeIiIg4reBgiIuDnTth7tycBM7cuTm/x8UpYSMiUpKmTZvGypUrWbNmjd1pStfq2rUrt912G+vXr+fTTz+1qfv000/54YcfaNGiBd26dQPA1dWVwYMHc/bsWbs9VrZu3cqyZcvsxujUqRP33HMPn3/+OQsWLHAYx3//+1+OHz9egLv8H29vb2655RYSEhJsllhlZWXx5JNPcvLkyQJfc+7cuezfv9/6e3Z2NuPGjSM7O5uhQ4cWKs5cfn5+gH2Ca82aNXZHtueKjIzENM0Cva5WrVo1hgwZwvnz5+3+bm+++SbJycn07NmTJk2a2NTt2bOH3bt3k5WVZS07evQoKSkpdjGeO3eO8PBwMjIyuO+++2yWmDVt2pSQkBCSk5P597//bdMvIiKC8+fPM2TIEKpWrerw/ssjzbQRERERp9emjTYaFhEpbY0aNaJRo0b5amsYBosXL6ZHjx4MGDCA0NBQWrZsya+//sqqVauoXr06S5YssZkZMX36dGJiYnj99dfZunUr3bp148iRI3z88cfcf//9fPHFF3bjfPjhhwQFBTF8+HDmzZvHXXfdRY0aNUhJSeGXX35h586dbNq0Kc9ToK7HYrEwevRoZs6cye23305oaCiZmZnExsaSlpZG9+7drTOG8qtr1660b9+eAQMG4OnpyZo1a/j555/p2LEjzz77bIFjvNrjjz/OwoUL6devH3379qVevXrs3LmTb7/9lv79+/Pxxx8X6fp5mT59OnFxcbz66qvs2LGDO++8k127drF69Wq8vb3tkikAwcHB7N+/n3379lmTTbt37+a+++7j7rvvpkWLFnh7e3Po0CHWrl3L0aNHadKkicPk01tvvUWXLl0YPXo0MTExtGrVip9++onY2FhatGjBSy+9VCL3XVY000ZERERERESK7K677mLLli0MGjSITZs28corr7Bx40YGDhzIli1buOuuu2zae3l5sWHDBoYOHcru3bt5/fXX2bFjB2+//TZjx451OEaDBg1ISEjgpZdeolKlSixbtox58+axceNGGjVqxH/+8x/rprWFMXXqVObMmYO7uzv/+c9/+Pzzz+nUqRObN2/OdwLraq+99hovvvgicXFx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PMowjDBgCnAF+AEY7WCqWLJpmov+/OdXgeaGYWwEUv4suwPI3Y1qommaG0s0aBEREREREScWHAzvvgsjR0J2dt7tLBaYP79sT4Zs3bo1b731FqNGjaJDhw6EhobSvHlzUlNT2bJlCx4eHsTGxtKlSxeeffZZXn75Zdq2bUvfvn2pWrUqUVFR7Ny5k27dujFu3Lhiialr1640a9aMFStWkJWVRe/evfH29rZrFxwczMyZM3n++edp3rw5999/P40bN+bcuXPs37+f+Ph4unXrxrfffpvvsbt3747FYuH5559n586d1KxZE8g5NQvgzTfHLlusAAAgAElEQVTf5Pfff2fSpEl88MEHdOvWjVtvvZXDhw+za9cutmzZwvLly2ncuDEAAwcO5OOPP+aLL76gbdu2hIaGkpWVxaeffspf/vIX9uzZUwzv2PW98847dO3alXHjxhEdHU2nTp04ePAgK1aswGKxsHDhQqpXr25tP3bsWOu/D3369MHV1ZUNGzaQlJRE7969+fLLL+3GCA4O5qOPPqJ37974+/vj6upKQEAAAQWddlYaiuPc8NJ6AZGAeYNX3FXthwNfAcnAOeAScAD4GLinmGJK8Pf3v+E57SIiIuKc/P39TSDBdIJnHVPPFiKSh6SkJDMpKalEx/juO9MMDMxd7Gz7CgzMqXcWGzduNP/+97+bderUMV1dXU0fHx+zZ8+e5ooVK2zaLV++3OzatatZrVo1083NzWzdurU5bdo08+LFi3bX9PX1NX19fR2OFxERYQJmbGysw/qpU6dav5N++umn1439hx9+MPv162f6+PiYrq6uppeXl9muXTtz7Nix5pYtW/IdU64PPvjAbNeunVmlShVrDFe7dOmS+cYbb5h333236eHhYVauXNls2LChGRQUZL722mvmyZMn7dpPnjzZbNy4sVm5cmXT19fXnDBhgpmRkWECZmBg4HXjuVZe97Bv3z4TMMPCwuzqUlJSzFGjRpmNGjUyXV1dzdq1a5uhoaHm5s2bHY6xcOFCs127duYtt9xi1q5d23zooYfMX375Jc+/27Fjx8yBAwea3t7epsViMQEzIiLihveS389hcT5bGKY2HygSwzAS/P39/RMSEso6FBERESmEjh07sm3btm1mHkdwlzY9W4iII7nHMl+7b0dJSEyEmJicY709PHJm1pTVHjYiziS/n8Pi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4H7gPiDXbM0FFlDSRkREREREREQkFwVN2jzqlShERERERERERIqowjrDqEBJG2vtFG8FIiIiIiIiIp4ZY7DWkpmZiY+PT2GHI3LDcSRtLrEdjNfp3S4iIiIiIlLE+fv7A3Dq1KlCjkTkxuR47znei1eLkjYiIiIiIiJFXKlSpQA4cOAAJ06cIDMzs9CWa4jcKByz206cOMGBAweAP96LV0u+l0cZY+YD06y1HxXG9SIiIiIiIjeKsmXLcurUKU6fPs3evXsLOxyRG1KJEiUoW7bsVR2zIDNt/gzUKMTrRUREREREbgg+Pj5UrlyZ8uXLExAQcNX31RC5URljCAgIoHz58lSuXPmq7ylV0NOjGhljHvFKJCIiIiIiIpIjHx8fQkJCCAkJKexQROQqKWjS5j6gcz6uU1pYRERERERERCQXBUnaPOqF8Td5oQ8RERERERERketOvpM21top3gxERERERERERET+oCO/RURERERERESKICVtRERERERERESKICVtRERERERERESKICVtRERERERERESKICVtRERERERERESKICVtRERERERERESKICVtRERERERERESKIN8r0akxpg5QF7jJWvvhlRhDREREREREROR65tWkjTGmEfA+0Dhb8YcX6toAC4CHrLXzvDmuiEhRlJmZSWpqKidOnODcuXNYaws7JJHrnjEGf39/SpUqRdmyZfHx0aRiERERuXZ57ZOMMaYWkATUBsaTlaDJbjmQCnT11pgiIkVVZmYme/bs4ffff+fs2bNK2IhcJdZazp49y++//86ePXvIzMws7JBERERE8s2bM23igeJAU2ttsjEmHujoqLTWWmPMauB2L44pIlIkpaamcvr0aXx9falQoQIlS5bU//iLXAWZmZmcOnWKAwcOcPr0aVJTUwkJCSnssERERETyxZu/QcQAn1lrk3Npswe4xYtjiogUSSdOnACgQoUKlCpVSgkbkavEx8eHUqVKUaFCBeCP96KIiIjItcibv0WUAfZeoo0hazaOiMh17dy5cwCULFmykCMRuTE53nuO96KIiIjItcibSZuDQI1LtKlP1mwbEZHrmmMPG82wESkcxhgA7SclIiIi1zRv/jbxLXCPMaa2p0pjzO1kLaFa6MUxRURERNw4kjYiIiIi1zJvJm1GAxnAcmPM41zYu8YYU//C83nACeA1L44pIiIiIiIiInJd8trpUdban4wxXYAZwNsXig3w44WvR4EHrLW7vTWmiIiIiIiIiMj1yqubLVhrvwaqAk8DnwDfAJ8Bg4Aa1tpvvTmeiIgUDUlJSRhjSEhIKFA/iYmJGGNITEz0SlwX27lzJ8YY4uLiCtxXREQEERERBe5HRERERCQnXt8h01p71Fo73lrb3Vrb3lr7oLV2nLU21dtjiYjcqIwxGGPw8fHh119/zbFd27ZtnW2vVCJEirbFixfzz3/+k5iYGMqVK4cxhtatW+e7v9TUVAYMGEBERAT+/v7ccsst9O7dm717cz5Acu/evfTu3ZtbbrkFf39/IiIiGDBgAEeOHMl3HCIiIiI3Aq8lbYwxUcaYppdoU8UYE+WtMUVEbmS+vr5Ya/nggw881v/8888kJSXh6+u1lbByDXrnnXd4/fXXWbVqFbfcckuB+kpJSaFFixaMHz+e6tWrM3DgQJo1a8bkyZNp0qQJ27dvd7vm119/pUmTJkyePJlmzZoxcOBAqlWrxvjx42nRogUpKSkFiklERETkeubNmTZJwH+MMbltNPwosNSLY4qI3LBuvvlmmjZtyuTJk8nIyHCrf//99wG45557rnZoUoQ899xzbN68mZMnTzJv3rwC9TV48GD+97//8fTTT7NkyRLGjBnDnDlzGD9+PIcOHeKJJ55wu+aJJ57g0KFDTJgwgTlz5jBmzBi+/fZbBg4cyE8//cSLL75YoJhERERErmfeXh51DhhojPnUGBPg5b5FROQiffr04cCBA3z55Zcu5enp6SQmJtKyZUvq1auX4/U///wzjzzyCJUqVaJ48eLccsstPPLII/z8888e2x88eJDHHnuMm2++mcDAQBo1asSUKVNyjTE1NZUXXniBunXrEhgYSHBwMDExMSxatOjyb/gi+/btY/jw4bRq1YoKFSo476FHjx4kJyfnuZ+4uDiMMWzfvp3XX3+dOnXqEBAQQFhYGAMHDuT48eM5Xnvq1CkGDRpElSpV8Pf3p0aNGowdOxZrrVvbxMREunTpQrVq1QgMDCQoKIhWrVoxbdq0fN1/XrRo0YL69etTrFixAvVz8uRJPvzwQ0qWLOm2d9FTTz1FeHg4CxcudJlt8+uvv7Jo0SIiIiJ48sknXa4ZNmwYJUuW5MMPP+TUqVMFik1ERETkeuXtpM044EPgfiDJGFPey/2LiEg23bt3p2TJks5ZNQ5z587l0KFD9OnTJ8dr165dS9OmTZk2bRq33347zzzzDM2bN2fatGk0bdqUtWvXurQ/fPgwLVu2ZNKkSdSqVYsBAwbQqFEj+vbtyxtvvOFxjF27dtGkSRPGjBlD+fLl6du3Lw899BBbt27lz3/+MxMnTizQ/S9fvpwxY8ZQunRpunTpwsCBA2nevDmzZ8+mWbNm/PDDD5fV38CBAxkxYgRt2rShf//+hISE8OabbxIdHc3Zs2fd2qenp9OhQwc+/fRTOnbsyF//+lfOnDnD888/z/Dhw93aP/744+zatYuoqCgGDBjAww8/zK5du+jVqxdDhgzJ9+twNXz//fecOXOGVq1aUapUKZc6Hx8fOnToAMDSpX9MqHX8uX379vj4uH7kKFWqFK1ateL06dN8//33Vzh6ERERkWuTtzc6SLfWxhljtgMJwPfGmLuttT95eRwRESHrF9+HH36YxMRE9u7dS1hYGAATJ04kKCiIbt26MWrUKLfrrLU88sgjHD9+nGnTptGzZ09n3ccff8zDDz9Mr169SE5Odv6yPXjwYLZv386AAQNckjRPPfUULVq08BhfbGwsu3btYsaMGTz88MPO8qNHj3LXXXfRr18/7r33Xm6++eZ83X90dDQHDx50SyL88MMPtGrViueff54FCxbkub+VK1eyadMmwsPDARg9ejQPPvggn332Ga+++qpbYmXfvn00bNiQxYsXExgYCEB8fDy1atXijTfeYPDgwfj5+Tnbb968merVq7v0kZaWRseOHRkzZgx9+/alUqVKzrqkpCSSkpLyHD9Q4BO8cvLTT1n/lNeqVctjfc2aNQH43//+d1nXLFq0iP/973/ExMR4M1wRERGR68IV2Z3SWjvcGPMr8AGwyhjTxVqbdCXGEhG50fXp04cPPviASZMmMXToUHbt2sXixYv5+9//TokSJTxes2rVKrZt20aLFi1cEjYADz30EG+//TYrVqxgxYoVREVFkZ6ezvTp0ylVqpRbUqBp06b07NnTbZnUDz/8wLJly+jatatLwgagdOnSDBs2jPvuu49PP/3U414oeREaGuqxvGHDhkRHR7No0SLS09NdEie56d+/vzNhA1kzSF599VXmzJnDpEmTPM6GmTBhgjNh44ipc+fOTJ06lZ9++okGDRo46y5O2AAUL16cJ598km+//ZYlS5bwyCOPOOuSkpIYNmxYnmJ3uFJJm2PHjgEQHBzssd5RfvTo0QJdIyIiIiJ/uGJHilhrpxtj9gKfA18bY/52pcYSEbmR3XHHHdx6661MmjSJl156iffff5/MzMxcl0Zt2LAByJqp4kl0dDQrVqxg48aNREVFsW3bNk6fPs2dd97p8Rfwu+66yy1ps3r1aiDrF3dPiYTff/8dgK1bt+bpPnPy1Vdf8a9//Yt169Zx+PBht02ZDx8+TMWKFfPUV5s2bdzKqlWrRuXKldm5cydHjx6ldOnSzrrg4GBq1Kjhdk3lypUB3I603r17N2PHjmXJkiXs3r2bM2fOuNT/9ttvLs8TEhKuWBJGRERERIq+K3oOrLV2mTGmJfAVMBlwPwtUREQKrE+fPvTr148FCxY4j19u3Lhxju0dMyBySmY4yh0zIBztc1rGVKFCBbcyx1HOixcvZvHixTnGcvLkyRzrLmX8+PEMGDCAMmXK0K5dO6pUqUKJEiUwxjBnzhx++OEHzp07l+f+cru/Xbt2cezYMZekTfY/Z+c4Zv38+fPOsu3bt9OsWTOOHDnCnXfeSfv27QkODqZYsWLs3LmTKVOmXFasV5sjWef4WbiYo/zipNblXiMiIiIif7iiSRsAa+02Y8wdwDzgDsD9OA0RESmQXr168dxzz9G3b19+++03hg4dmmt7xy/TBw4c8Fi/f/9+l3aOrwcPHvTY3lM/jmvGjx9Pv3798nAXlycjI4OEhAQqVKjAhg0b3BJQjpk+l+PgwYPUrl3brdxxfzkt88mL119/nZSUFCZPnkxcXJxL3YwZMzyewlWU9rRxvC7Z96zJznHiWPb9a/JzjYiIiIj8wZtJm7bATk8V1trDxpi7gP5AoKc2IiKSf6VLl6Zr167OI5m7d++ea3vHLJycEgKOU38iIyMBqFOnDiVKlGDTpk0cO3bMLXnhqZ/mzZsD8N13312RpM3hw4c5evQoDzzwgFvC5uTJk84lYJdj2bJlREVFuZRt376dPXv2EBERUaAZIb/88gsAXbp08TiuJ0VpT5vmzZsTGBjIypUrOXHihMvmz5mZmc4j3Nu2bessd/x50aJFZGZmupwgdeLECVauXEmJEiWcPysiIiIi4sprR35ba5dZa3flUn/OWvuKtfbyPn2KiEiejBw5ks8//5yFCxe6naZ0sVatWlG7dm1WrFjB7NmzXepmz57Nd999R61atWjdujUAfn5+9OzZkxMnTrglBdatW8f06dPdxmjatCl33nknn332GZMmTfIYx3//+18OHTp0GXf5h9DQUEqUKMH69etdllilp6fTv39/Dh8+fNl9jh8/nl27/vinLDMzk0GDBpGZmcmjjz6arzgdIiIiAPcE18KFC92ObHdISEjAWntZD2/Ytm0b27Ztcym76aab6NWrF6dOnXL7GXj77bfZuXMnHTp0oFq1as7y6tWr0759e3bu3Mk777zjck18fDynTp2iV69elCxZ0itxi4iIiFxvrvjyKBERuTqqVKlClSpV8tTWGMOUKVNo164dDz30EJ07d6ZOnTr89NNPzJkzh1KlSjF16lSXmRGjRo1iyZIlvPnmm6xbt47WrVuzf/9+Pv74Y+6++27mzp3rNs5HH31EdHQ0jz32GBMmTOCOO+6gdOnS7N27lx9//JHNmzezevXqHE+Byo2Pjw/9+vVjzJgx3HrrrXTu3Jm0tDSWLl1Kamoqbdu2dc4YyqtWrVrRqFEjHnroIYKDg1m4cCE//PADTZo04dlnn73sGLN74oknmDx5Mg8++CBdu3bllltuYfPmzXz99dd069aNjz/+uED952TFihXOpJAjufXzzz+7LNFKTEx0uaZu3boAbkmgUaNGkZSUxOuvv86mTZto1qwZW7du5YsvviA0NNQtMQPw7rvv0rJlS/r168eSJUuoW7cu//nPf1i6dCm1atXi5Zdf9uLdioiIiFxf8p20McZ8S9b+NLHW2r0XnueFtdbG5HdcERHxjjvuuIO1a9cycuRIvvnmG+bNm0dISAjdu3dnyJAhbnu7hISEsHLlSgYPHsy8efNYt24dtWvX5r333iMiIsJj0iYsLIz169fz1ltv8emnnzJ9+nTOnz9PhQoVqFevHv/4xz+49dZb830PI0aMoHz58rz//vv83//9H8HBwbRr146RI0cSHx9/2f298cYbfP7550ycOJGdO3dSrlw5+vfvz/DhwwkICMh3nAC33XYbS5cu5aWXXuKrr74iIyODhg0b8tlnn1G6dOkrlrT55Zdf3PbLOXTokEvZxUmbnJQrV47Vq1czbNgw5syZw3fffUe5cuV49NFHGT58OGFhYW7XVK9enXXr1jF06FC+/vpr5s+fT8WKFenfvz/x8fGUKVOmQPcnIiIicj0z+Z1KbYzJJCtpU9da+78Lz/PCWmuL5WvQIsgYsz4yMjJy/fr1hR2KiBQhjmOsHTMWpGiLi4tjypQp7Nixw7mMSa59eX0fNmnShA0bNmyw1ja5GnFdij5biIiIXNu8+dki3zNtrLU+uT0XEREREREREZH8U6JFRERERERERKQIuipJG2NMGWOMjoYQEREREREREckjryVtjDExxphXjDFlspWFGmOWAYeBVGPM694aT0RExFsSExOx1mo/GxEREREpUrw50+YfwAPW2iPZyl4D7gR+BVKA/saYbl4cU0RERERERETkuuTNpE1DYIXjiTEmEOgKLLbW1gJqA3uAvl4cU0RERERERETkuuTNpE0osC/b8zuAACARwFp7AviSrOSNiIiIiIiIiIjkwptJm3NAYLbndwIWWJ6t7DhQ1otjioiIiIiIiIhcl7yZtNkBRGd73gX42Vr7W7ayymRtSiwiIiIiIiIiIrnwZtJmCnCrMeY/xpjvgFuBjy5qcxvwkxfHFBERERERERG5LnkzafMeMBNoCrQia/+asY5KY0wDshI5SV4cU0RERERERETkuuTrrY6stelAD2NM36yn9sRFTQ4AjYGd3hpTREREREREROR65bWkjYO19ngO5YfRfjYiIiIiIiIiInnizeVRIiIiUsQYY7jrrrsu65r09HTi4+OpWbMm/v7+GGOYM2cOO3fuxBhDXFzcFYlVRERERFwpaSMico3bsgUmTICRI7O+btlS2BFJbhISEjDGkJSUVNih5GjcuHEMHz6cW265hWeeeYb4+Hjq1KlTqDHlJ/kkIiIicq3z+vIoERG5OpYsgeHDYfly97qoKBg6FGJirn5ccu378ssvuemmm1i8eDHFixd3lu/cubPwghIRERG5AWmmjYjINeiDD6B9e88JG8gqb98eJk26unHJ9WHfvn2UK1fOJWEjIiIiIlefkjYiIteYJUvgb3+DzMzc22VmQp8+We2LgjVr1vDQQw9RqVIl/P39qVixIu3bt+eTTz5xaffJJ58QFRVFcHAwgYGB3HrrrYwePZpz58659RkREUFERASnTp1i0KBBVKlSBX9/f2rUqMHYsWOx1jrbfv/99xhjuP/++3OMsW7duvj7+5OamupSvnDhQu6++25CQkLw9/enevXqDBo0iKNHj+YY0/Hjx3n66aeJiIjAz8+PhIQEIiIiGDZsGABt27bFGON8ZHf69GlGjx5No0aNKFmyJDfddBMtWrRgxowZHuNOS0tjxIgRVK9eHX9/f6pWrcpLL73k8TXLTVxcHMYYduzYwa5du5yxRUREXPLa/fv38+STTxIREUHx4sUpX748DzzwAOvXr3dre+zYMV599VWio6MJCwtztr/33ntZvXq1S9vExETn67Ns2TKX1ywhIeGy7k9ERETkWqPlUSIi15jhwy+dsHHIzIQRIwp/mdTEiRN5/PHHKVasGPfeey81a9bk0KFDrFu3jnfffZdu3boBMHjwYEaPHk1ISAg9evTgpptuYsGCBQwePJiFCxeyaNEit9kf6enpdOjQgX379tGxY0d8fX2ZM2cOzz//PGfPniU+Ph6A5s2bU7t2bebPn09KSgrlypVz6WfNmjVs27aNLl26ULZsWWf5sGHDSEhIoGzZsnTq1InQ0FB+/PFHXnvtNebPn8/q1asJCgpy6SstLY3o6GhSU1Np3749QUFBVK1alQEDBjBnzhyWLVtGbGysx2TI0aNHiY6OZuPGjURGRtK7d28yMzNZuHAhPXr0YMuWLYwcOdLZ3lpLt27d+OKLL6hevTpPPfUUaWlpTJo0HKRWHwAAIABJREFUif/+97+X9X267777iIiI4M033wRgwIABAJQuXTrX63bs2EHr1q3Zt28f0dHRdO/enT179jBr1iy++uorPv30Uzp16uRsv3XrVl588UWioqL4y1/+QpkyZdi9ezdz585lwYIFzJs3jz//+c8ANGrUiPj4eIYNG0Z4eLjLJsja40ZERESue9ZarzyA7UC/S7R5EtjurTGLwgNYHxkZaUVEsktOTrbJycle73fzZmvh8h+bN3s9lDzbsmWL9fX1tWXKlLGbPQSyZ88ea621q1atsoCtXLmy3b9/v7M+PT3ddurUyQL25Zdfdrk2PDzcArZjx4729OnTzvKDBw/a4OBgGxwcbNPS0pzlo0aNsoB966233OJ44oknLGDnzp3rLPv2228tYFu0aGGPHDni0n7y5MkWsAMGDPAYU0xMjD158qTbOPHx8RawS5cu9fRy2djYWAvYsWPHupSfOXPGdujQwRpj7MaNG53l06dPt4Bt3ry5PXPmjLM8JSXFVqtWzQK2TZs2HsfKSXh4uA0PD3cr37FjhwVsbGysS3n79u0tYEeOHOlSvnLlSlusWDFbtmxZe+LECWf50aNH7e+//+7W/549e2zFihVtnTp13Orycx95fR9GRkZaYL0tAp8rrD5biIiIXPO8+dnCm8ujIoDc/ysuqz7ci2OKiNxQ8rvUqTCXSL333ntkZGQwZMgQ6tev71YfFhYGwKQLG/C89NJLVKhQwVnv6+vLuHHj8PHx4f333/c4xoQJEwgMDHQ+Dw0NpXPnzhw7doyffvrJWd6rVy98fHyYMmWKy/VpaWnMnDmT0NBQOnbs6NIvZM0Uuni2SVxcHI0aNWL69OkeYxo3bhwlS5b0WJeTlJQUpk2bRtOmTXn22Wdd6gICApxLvj766CNn+eTJkwEYNWoUAQEBzvKyZcsyZMiQyxo/P/bu3cuiRYuoUqWKW8wtW7ake/fupKam8tlnnznLg4ODCQkJcesrLCyMrl27sm3bNnbv3n3FYxcREREp6q728qhSQNpVHlNE5Lpx/PjVvc4bvv/+ewCXZIgnGzZsACA6OtqtrlatWoSFhbFjxw6OHTtGcHCwsy44OJgaNWq4XVO5cmUAjhw54iwLCwsjJiaGxYsXk5ycTL169QCYN28eqampDBw4EF/fP/5pXL16NX5+fsyaNYtZs2a5jZGWlsbvv//uttwqICCA2267Ldf79WTt2rWcP38+x/1a0tPTgazlRQ4bNmzAx8eH1q1bu7X3tHxo06ZNzJkzx6WsdOnSzqVQl2vjxo0A3Hnnnfj5+bnVR0dHM23aNDZu3MgjjzziLF+5ciXjx49n9erVHDp0iLQ0148Hv/32G1WqVMlXTCIiIiLXiwIlbYwxF3+aKu2hDKAYUAXoQtYyKhERyYeLtk654td5g2Oz3kqVKuXa7tixYwBUrFjRY33FihXZvXs3R48edUna5LTfiiP5cv78eZfyuLg4Fi9ezJQpUxg7diyAc+ZNbGysS9uUlBQyMjKcmwfn5OTJky5Jm9DQULfNhfMiJSUFyErerF27NtfxHI4dO0bZsmU9Jkyyz1hy2LRpk9v9hIeH5ztpk5fvG+CyafPnn39O165dCQgIoF27dlSvXp2SJUvi4+NDUlISy5Ytu+xNlEVERESuRwWdabMTsNme97/wyIkBni7gmCIiN6z8bihcmBsRO5Iqv/32G3Xq1MmxnSMRc+DAAapXr+5Wv3//fpd2+XX//fcTFBTEtGnTGDVqFCkpKSxYsICGDRvSsGFDt5gyMzPdTpO6lPwkbBzjAQwcOJDXX389z9ekpqaSnp7ulrg5cOCAW/u4uDiXzXwLKvv3zRNP37chQ4ZQvHhx1q1bR926dV3a//3vf2fZsmVei09ERETkWlbQPW2mXnh8eOH5j9nKsj8mA68Bf7bWvlnAMUVEblj160NU1OVd06ZN1nWFpXnz5gAsWLAg13aNGzcGICkpya3ul19+Ye/evVStWvWSJxldSmBgIN26dWPfvn188803fPTRR2RkZLjNsnHEfuTIEbZs2VKgMbMrVqwY4D4DCKBZs2b4+Pjw3Xff5bm/yMhIMjMzWbFihVudp9fS2xzftxUrVpCRkeFWv3TpUiArTodffvmFevXquSVscroPAB8fH4+vmYiIiMj1rEBJG2ttnLX2UWtt3IWizy88v/jxV2vtc9baRQUPWUTkxjZ0KPjk8W9vHx+4CnvR5urxxx/H19eXESNGkJyc7Fa/d+9eAHr37g3AyJEj+f33353158+f55lnniEzM5PHHnvMKzE5ZppMnTqVqVOn4uvrS8+ePd3aDRw4EIA+ffqwb98+t/pTp0459+zJK8cyKk8b7YaGhtKzZ0/WrVvHiBEjPCYpfv31V3bs2OF8/uijjwLw4osvcvbsWWd5amqqy9HgV0pYWBjt2rVj586dzqPCHf7zn//w0UcfUaZMGe6//35neUREBD///LPLa2qtJSEhwePPCGS9bnv27LkyNyEiIiJSRHltI2JrrTdPohIRkRzExMC//w1/+xtkZubczscHJk4s3KVRAPXq1ePdd9+lb9++NG7cmM6dO1OzZk1SUlJYu3YtQUFBLF26lJYtW/Lss8/yyiuv0KBBA7p27UrJkiVZsGABmzdvpnXr1gwaNMgrMbVq1YoaNWowa9Ys0tPTueeeewgNDXVrFxMTw5gxY3jhhReoWbMmd999N1WrVuXkyZPs2rWLZcuW0bp1a77++us8j922bVt8fHx44YUX2Lx5M2XKlAGyTs0CePvtt/n5558ZOnQoH374Ia1bt+bmm29m3759bN26lbVr1zJjxgyqVq0KQPfu3fn444+ZO3cuDRo0oHPnzqSnpzN79mxuv/12fv31Vy+8Yrn717/+RatWrRg0aBCLFi2iadOm7Nmzh1mzZuHj48PkyZMpVaqUs/3AgQOdPw9dunTBz8+PlStXkpyczD333MO8efPcxoiJiWHmzJncc889REZG4ufnR1RUFFGXO/VMRERE5FrijXPDL34AdYD7gV5Xov+i9ADWR0ZGejybXURuXMnJyTY5OfmKjvHNN9a2aWMtuD/atMmqL0pWrVplH3jgAVu+fHnr5+dnK1asaDt06GBnzZrl0m7GjBm2VatW9qabbrL+/v62Xr16duTIkfbMmTNufYaHh9vw8HCP48XHx1vALl261GP9iBEjLFn7stnZs2fnGvt3331nH3zwQVuxYkXr5+dnQ0JCbMOGDe3AgQPt2rVr8xyTw4cffmgbNmxoAwICnDFkd+7cOfvWW2/ZFi1a2KCgIFu8eHFbuXJlGx0dbd944w17+PBht/bDhg2zVatWtcWLF7fh4eF28ODB9uzZsxawbdq0yTWei+V0Dzt27LCAjY2Ndavbu3ev7du3r61SpYr18/Oz5cqVs507d7Zr1qzxOMbkyZNtw4YNbYkSJWy5cuXsfffdZ3/88cccv28HDx603bt3t6GhodbHx8cCNj4+Ptf7yOv7MDIy0gLrbRH4XGH12UJEROSa583PFsZai7cYYxoB7wONsyWFil2oawMsAB6y1rr/F9o1yhizPjIyMnL9+vWFHYqIFCGOI5kv3rPjStiyBZYsyTrWOygoa2ZNYe5hI1JU5PV92KRJEzZs2LDBWtvkasR1KfpsISIicm3z5mcLry2PMsbUApLIOt57PFAL6JityXIgFegKXDdJGxGRwla/vpI0IiIiIiLXI2/uQxMPFAfusNY+DazNXmmzpvSsBm4vyCDGmK7GmLeMMd8ZY44bY6wxZloObSMu1Of0mFmQWERERERERERErhSvzbQBYoDPrLWej33IsgdoV8BxXgIaAieBvWTtn3MpPwBzPJRvLmAsIiIiIiIiIiJXhDeTNmXISqLkxpA1G6cgBl4Y5xegDbA0D9dsstYmFHBcEREREREREZGrxptJm4NAjUu0qU/WbJt8s9Y6kzTGmIJ0JSIiIiIiIiJSZHkzafMt0N0YU9ta+9PFlcaY28laQvWOF8fMq1uMMX8HygEpwGpr7Y+FEIeIiIiIiIiISJ54M2kzGngQWG6MSQBuATDG1AeiyNqo+ATwmhfHzKt2XLSXjjEmCYi11u7OSwfGmJzO3czLnjoiIiIiLvTZQkRERC7Fa6dHXZhd04WsPWveBv5K1h42P5I1u6Y48EBekyRechoYATQha8+dMvyxD85dwBJjTMmrGI+IiIiIiIiISJ54c6YN1tqvjTFVgVigOVnLkY4B3wOTrbWp3hwvD/EcAoZeVLzcGNMeWAHcQVZyaXwe+mriqfzC/5JFFjBUERERucHos4WIiIhcileTNgDW2qNkJUEumQgpLNbaDGPM+2QlbaIowrGKiIiIiIiIyI3Ja8ujcmOMKVMElyH9fuFrUYtLRERERERERMR7SRtjTIwx5hVjTJlsZaHGmGXAYSDVGPO6t8bzguYXvm4v1ChERERERERERDzw5kybf5C10fCRbGWvAXcCv5J11HZ/Y0w3L46ZK2NMpDHG7R6NMTHAwAtPp12teERERERERERE8sqbSZuGZG3uC4AxJhDoCiy21tYCagN7gL4FGcQYc58xJtEYkwg8f6G4haPMGJP9SPHXgT3GmFnGmDcuPJYA3wD+wBBr7aqCxCMiIlKUGWO466678tw+KSkJYwwJCQlXLCYRERERyRtvJm1CgX3Znt8BBACJANbaE8CXZCVvCqIRWadTxQIdLpRVy1bWNVvbD4GNwO1AH+AJoCbwCRBlrR1ZwFhERArdlkNbmPCfCYxcPpIJ/5nAlkNbCjskyUVCQgLGGJKSkgo7lCsuLwmjr776ivbt2xMWFkZgYCDVqlXjwQcfZPXq1VcnSBEREZEizJunR50DArM9vxOwwPJsZceBsgUZxFqbACTkse0HwAcFGU9EpKhasn0Jw5cPZ/mu5W51UeFRDI0aSky1mEKITK5lzZo1Y+vWrYSEhFzxsZ577jleeeUVypUrx3333UdISAi//PILX3zxBZ9++ilTp07l//2//3fF4xAREREpqryZtNkBRGd73gX42Vr7W7ayymRtSiwiIgXwwYYP+NuXfyPTZnqsX75rOe2ntWfiPRPp3bj3VY5OrmUlSpSgTp06V3ycAwcO8Nprr3HzzTfz448/Ehoa6qxbunQp0dHRDB06VEkbERERuaF5c3nUFOBWY8x/jDHfAbcCH13U5jbgJy+OKSJyw1myfUmuCRuHTJtJn3l9WLJ9yVWKLHdr1qzhoYceolKlSvj7+1OxYkXat2/PJ5984tLuk08+ISoqiuDgYAIDA7n11lsZPXo0586dc+szIiKCiIgITp06xaBBg6hSpQr+/v7UqFGDsWPHYq11tv3+++8xxnD//ffnGGPdunXx9/cnNTXVpXzhwoXcfffdhISE4O/vT/Xq1Rk0aBBHjx7NMabjx4/z9NNPExERgZ+fHwkJCURERDBs2DAA2rZtizHG+cju9OnTjB49mkaNGlGyZEluuukmWrRowYwZMzzGnZaWxogRI6hevTr+/v5UrVqVl156yeNrdik57Wlz1113YYwhIyODUaNGUbNmTfz9/alcuTLPPfccaWlpzraJiYnOe1q2bJnLfTr63bVrF5mZmdxxxx0uCRvHa1OqVCl+//33y45fRERE5HrizZk275F1jPZDgAHmAWMdlcaYBmQlcoZ6cUwRkRvO8OXDL5mwcci0mYxYPqLQl0lNnDiRxx9/nGLFinHvvfdSs2ZNDh06xLp163j33Xfp1i3rYMHBgwczevRoQkJC6NGjBzfddBMLFixg8ODBLFy4kEWLFlG8eHGXvtPT0+nQoQP79u2jY8eO+Pr6MmfOHJ5//nnOnj1LfHw8AM2bN6d27drMnz+flJQUypUr59LPmjVr2LZtG126dKFs2T9W8g4bNoyEhATKli1Lp06dCA0N5ccff+S1115j/vz5rF69mqCgIJe+0tLSiI6OJjU1lfbt2xMUFETVqlUZMGAAc+bMYdmyZcTGxhIREeH2Wh09epTo6Gg2btxIZGQkvXv3JjMzk4ULF9KjRw+2bNnCyJF/bMlmraVbt2588cUXVK9enaeeeoq0tDQmTZrEf//73wJ93zzp0aMH3333HR07diQoKIj58+fzyiuvcOjQISZPngxAo0aNiI+PZ9iwYYSHhxMXF+e83rHHTc2aNSlevDhr1qzh8OHDLsuxli9fzokTJ7jvvvu8Hr+IiIjINcVa69UHEASU8lAeQtYJU8HeHrMwH8D6yMhIKyKSXXJysk1OTvZ6v5sPbrYkcNmPzQc3ez2WvNqyZYv19fW1ZcqUsZs3u8exZ88ea621q1atsoCtXLmy3b9/v7M+PT3ddurUyQL25Zdfdrk2PDzcArZjx4729OnTzvKDBw/a4OBgGxwcbNPS0pzlo0aNsoB966233OJ44oknLGDnzp3rLPv2228tYFu0aGGPHDni0n7y5MkWsAMGDPAYU0xMjD158qTbOPHx8RawS5cu9fRy2djYWAvYsWPHupSfOXPGdujQwRpj7MaNG53l06dPt4Bt3ry5PXPmjLM8JSXFVqtWzQK2TZs2HsfyZOnSpRaw8fHxLuVt2rSxgI2MjLQpKSnO8pMnT9rq1atbHx8fl++btfaSY7/xxhvWGGPLly9v+/TpY59//nn74IMPWn9/f9uuXTt78ODBPMftSV7fh5GRkRZYb4vA5wqrzxYiIiLXPG9+tvDm8ihHEui4zTop6uLyw9baH6y1x7w9pojIjWLJjvwtdcrvdd7w3nvvkZGRwZAhQ6hfv75bfVhYGACTJk0C4KWXXqJChQrOel9fX8aNG4ePjw/vv/++xzEmTJhAYOAfe+GHhobSuXNnjh07xk8//bEqt1evXvj4+DBlyhSX69PS0pg5cyahoaF07NjRpV/ImilUunRpl2vi4uJo1KgR06dP9xjTuHHjKFmypMe6nKSkpDBt2jSaNm3Ks88+61IXEBDgXPL10Ud/rD52zG4ZNWoUAQEBzvKyZcsyZMiQyxo/L8aOHesyE6lkyZL07NmTzMxM1q1bd1l9DRgwgM8++4yMjAwmTpzImDFjmDVrFpUrVyYuLs5t2ZSIiIjIjcaby6NEROQKO37u+FW9zhu+//57AJdkiCcbNmwAIDo62q2uVq1ahIWFsWPHDo4dO0ZwcLCzLjg4mBo1arhdU7lyZQCOHDniLAsLCyMmJobFixeTnJxMvXr1AJg3bx6pqakMHDgQX98//mlcvXo1fn5+zJo1i1mzZrmNkZaWxu+//+623CogIIDbbrst1/v1ZO3atZw/f97jnjKQtRQMYOvWrc6yDRs24OPjQ+vWrd3aezpue9OmTcyZM8elrHTp0gwYMCBPMTZt2tStzNNrnRevvPIKgwcPpl+/fjz11FNUqFCBbdu28cILL9CzZ082bdrEK6+8cll9ioiIiFxPlLQREbmGBPkHXbqRF6/zBsdmvZUqVcq13bFjWRMxK1as6LG+YsWK7N69m6NHj7okbS6eAePgSL6cP3/epTwuLo7FixczZcoUxo7N2nrNMfMmNjbWpW1KSgoZGRnOzYNzcvLkSZekTWhoqNvmwnmRkpICZCVv1q5dm+t4DseOHaNs2bL4+fm5tcs+Y8lh06ZNbvcTHh6e56SNp9c7p9c6N0lJSTz33HPcf//9vP76687yyMhIPv/8c2rVqsW4cePo27cv1apVy3O/IiIiItcTry+PEhGRKyemav42FM7vdd7g+CX/t99+y7WdIxFz4MABj/X79+93aZdf999/P0FBQUybNo3z589z6NAhFixYQMOGDWnYsKFbTGXKlLnkWuPw8HCX6/KTsHGMBzBw4MBcx1u6dKnLNampqc5ZONl5ei3j4uLc+tu5c2e+4i2IL7/8Esg6KepiJUqUoFmzZmRmZrJx48arHZqIiIhIkaGkjYjINaR+aH2iwqMu65o24W2oH+q+l8zV0rx5cwAWLFiQa7vGjRsDWTMwLvbLL7+wd+9eqlatmuPMmrwKDAykW7du7Nu3j2+++YaPPvqIjIwMt1k2jtiPHDnCli1bCjRmdsWKFQM8z0pp1qwZPj4+fPfdd3nuLzIykszMTFasWOFW5+m1vJp8fHxynH3jOI48p2O9HeUXnxYmIiIiciNR0kZE5BozNGooPiZvf337GB+GRHl/M9rL8fjjj+Pr68uIESNITk52q9+7dy8AvXv3BmDkyJEuv8ifP3+eZ555hszMTB577DGvxOQ4gnrq1KlMnToVX19fevbs6dZu4MCBAPTp04d9+/a51Z86dcq5Z09eOZZR7d69260uNDSUnj17sm7dOkaMGOEx4fHrr7+yY8cO5/NHH30UgBdffJGzZ886y1NTU12OBi8M5cqVY8+ePR7r7rzzTgD+/e9/u83CWrBgAStXriQgIICWLVte8ThFREREiirtaSMico2JqRbDvzv9m799+TcybWaO7XyMDxPvmUhMtcJbGgVQr1493n33Xfr27Uvjxo3p3LkzNWvWJCUlhbVr1xIUFMTSpUtp2bIlzz77LK+88goNGjSga9eulCxZkgULFrB582Zat27NoEGDvBJTq1atqFGjBrNmzSI9PZ177rnH40lFMTExjBkzhhdeeIGaNWty9913U7VqVU6ePMmuXbtYtmwZrVu35uuvv87z2G3btsXHx4cXXniBzZs3U6ZMGSDr1CyAt99+m59//pmhQ4fy4Ycf0rp1a26++Wb27dvH1q1bWbt2LTNmzKBq1aoAdO/enY8//pi5c+fSoEEDOnfuTHp6OrNnz+b222/n119/9cIrlj8xMTHMnDmTe+65h8jISPz8/IiKiiIqKoquXbvypz/9iW+++Ya6dety//33U6FCBbZu3cqXX36JtZYxY8a47BUkIiIicqPxWtLGGLMdeNNaOyGXNk8C/7TWakdBEZECeCzyMSJKRzBi+QiW7VrmVt8mvA1DooYUesLGoU+fPjRo0IDXXnuNpKQk5syZQ0hICLfddht//etfne3Gjh1L48aNefvtt5k6dSrp6elUr16dkSNH8s9//tOrS2ViY2OdR2J7Whrl8Nxzz9GqVSsmTJjAihUr+OKLLwgODqZSpUr87W9/o0ePHpc1bt26dZkyZQqvvfYa7777rnN2jCNpExQUxLJly/j3v//NRx99xKeffsrZs2e5+eabqVmzJm+88Qbt2rVz9meMYdasWYwZM4bExETefvttKlasyKOPPsrQoUNdjgG/2saPH48xhiVLljB//nwyMzOJj48nKioKHx8f5s+fzzvvvMPMmTP5/PPPOX36NGXLluXuu++mX79+tG/fvtBiFxERESkKjLXWOx0ZkwkkWGuH59LmRWC4tbaYVwYtAowx6yMjIyPXr19f2KGISBHiOJK5bt26V3ysLYe2sGTHEo6fO06QfxAxVWMKdQ8bkaIir+/DJk2asGHDhg3W2iZXI65L0WcLERGRa5s3P1tc7eVRpYC0qzymiMh1rX5ofSVpRERERESuQwVK2hhjqlxUVNpDGUAxoArQBdhekDFFRERERERERG4EBZ1psxPIvr6q/4VHTgzwdAHHFBERERERERG57hU0aTOVrKSNAR4BfgQ2eWh3HkgBllhrFxVwTBERERERERGR616BkjbW2jjHn40xjwCf57YRsYiIiIiIiIiI5I3XNiK21vp4qy8RERERERERkRudEi0iIiIiIiIiIkWQV4/8NsaUBXoDzYAyZJ0adTFrrY3x5rgiIiIiIiIiItcbryVtjDF1gCSgPFkbE+fE5lInIiIiIiIiIiJ4d3nUa0AoMBaoBvhZa308PDzNvhERERERERERkWy8uTzqTuAra+1gL/YpIiIiIiIiInJD8uZMGwMke7E/EREREREREZEbljeTNuuB2l7sT0RERERERETkhuXNpM1w4G5jzF1e7FNERG5AixYtomXLlpQuXRpjDPfdd5+zbt26dbRr146QkBCMMTRq1AiAuLg4jDHs3LkzX2Pu3LkTYwxxcXEFij0pKQljDAkJCZd13YEDB4iNjSUsLIxixYphjOHo0aMkJiZijCExMbFAcYmIiIjItcebe9pUBr4AFhljZpA18+aop4bW2qleHFdERK4jO3fupHPnzpQuXZrevXsTFBREnTp1ADh+/Dh/+ctfOHv2LL169SIkJIQKFSoUcsTeERcXx6JFi+jevTs1atTAGENAQEChxZOUlETbtm2Jj4+/7ASU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yfYkSW3T4sWLGTp0KD169CCEwLnnnltx7rnnnuO0006jZ8+ehBAYNGgQAGPGjCGEwJo1axrV5po1awghMGbMmCb1fcmSJYQQmDp1ar3vmTp1KiEElixZ0qS2JUmS1LYkuTyqQoxxJ/BiczxbktS2rVmzhhEjRtCjRw8uueQSMjMzOfroowHYsmULZ511Ftu3b+eiiy6iZ8+e9OrVK8U9Th9Llixh+PDhTJkypcbQaMeOHcycOZN58+ZRUlLC9u3b6du3L6eddhpXXXUVWVlZLdtpSZIk1ahZQhtJUssK1wUA4pSY4p403Z///Ge2b9/OzTffzKhRoyqde+aZZ9iwYQM/+tGPmDixcom0G264gauvvpo+ffo0qt0+ffrw0ksv0b1790b3vbG+/e1vM3LkSA477LBmbWfnzp3k5eWxbNkyjj76aL761a/SuXNnnn32WX7xi1/w61//mieffJJjjz22WfshSZKUDkLZEJqYxkPoRoc2IYT/B0RgdIxx3a6v6yPGGPMa264kqW178803ATjkkEMadK5379707t270e3utddeFTN6WlrPnj3p2bNns7fzwAMPsGzZMvLy8li8eDEZGf9eJT1lyhQKCgq46aabmD17drP3RZIkSXVrSk2bYbs+9tnj6/p8SJLamd/97nfk5OTQvXt3unTpwnHHHccNN9zAjh07gH/XgpkyZQoAw4cPJ4RACIG5c+cSQmD06NEAfP3rX690DmqvafPMM8/wla98hT59+tC5c2d69+5Nfn4+v/vd7yquqammzcsvv8zVV1/Npz/9aQ488EA6d+5MVlYW48ePZ926dYm8NzXVtAkhMGzYMN555x3Gjx9P79696dy5M9nZ2cyZM6fStWPGjGH48OEAXHfddRXvz+7PLSkpAeCss86qFNgAjBgxAoB//etfibwmSZIkNV2jZ9rEGDNq+1qSpHITJ07khhtuoGfPnowaNYp9992XhQsXMnHiRBYtWsTixYvp168fU6ZMYcmSJSxdupTRo0fTr18/AAYNGsSUKVNYuXIlDz74ICNGjKgoQFz+uSYzZszg0ksvpUOHDpxzzjkcccQRbNiwgeeee4477riDCy+8sNb777//fu666y6GDx/O0KFD6dSpE8XFxcycOZOHHnqI5557rtFLsupj06ZNnHTSSXTq1IkLLriAHTt2cN9993HJJZeQkZFREWSVF2ueN28eubm5DBs2rOIZ5e9jdnY2AAsXLuTyyy+vFNw8/PDDAHzxi19sttciSZKULoqL//3Pt90GeXmwa6iUVqxpI0lqVk899RQ33HADffv25ZlnnqkoHHzDDTfwn//5nzz88MPcdNNNTJw4kalTpzJ16lSWLl3KmDFjKgUPgwYNYu7cuTz44IOce+659drladWqVXzrW98iMzOTxx9/vCK0KFefmTIXXXQR3/nOd+jcuXOl44sXL+bMM8/k+uuv584776z7jWikF154gbFjx/KrX/2KDh06AHDFFVdw/PHHc+ONN1YKbXr06MG8efMYNmxYtYWIzzrrLM477zzuv/9+jjvuOL74xS/SqVMnli9fzhNPPMH//M//8N///d/N9lokSZJSrbAQCgqgqOjfxy6/vOxzTg5MnlwW4KSLFgltQgj7AR/FGLe1RHuS1JaVFx2u77lUFycur49y7bXXVtrpqWPHjtx888386U9/YubMmVUKCyfhzjvvZOfOnUyaNKlKYANw6KGH1vmMmmbR5Ofnk52dzaJFi5rcz9rss88+/OxnP6sIbACOPfZYTjrpJIqKinj//ffZd9996/WsEAK///3vue6667j++utZtWpVxbm8vDxGjRpFx47+PUeSJLU9oeYhdIWiIiifdJwuxYkTG5mFEPKA04EbYozv7Tp2EHAfcDKwM4Rwe4zxyqTalCSlvxUrVgBw6qmnVjl35JFHcuihh7J69Wo2b96c+M5NTz/9NABnnnlmo58RY+S3v/0tc+fO5YUXXuC9997jk08+qTjfqVOnOp+xYMECVq5cWenYoEGDKpY01eaII44gMzOzyvG+ffsC8N5779U7tNm+fTsXX3wxCxcu5Pbbb2fEiBHss88+LFu2jMsuu4ycnBzuu+++ivo2kiRJ7VVhYXrMuEnyz2n/AwyMMX5/t2M3AacArwL7ApeHEJ6OMf6uugdIkupW3cyZdN7ye/PmzQA17uzUu3dvXnvtNTZt2pR4aLNp0yag5tky9XHllVdyyy230Lt3b04//XT69OlDly5dAJg7dy5r166t8xkLFixg3rx5lY6NHj26XqFNjx49qj1ePiNm9wCpLj/5yU+47777uPXWW/nmN79ZcfzMM8/k97//PYMGDeLyyy83tJEkSW1OTk7lJVF1mTat7YU2JwBLy78IIXQBLgAejTGeHkLoBvwNmAAY2khSO1EexKxfv57DDz+8yvm33nqr0nVJKg883njjjUZt571hwwZuu+02Bg4cyJNPPkm3bt0qnb/77rvr9Zy5c+dW7HKVSuXFhst3mdrdCSecwH777cfatWt59913OeCAA1q6e5IkSc2iuLhhgQ3A0qVl96W6OHGSOz4dBLy529efA/YG5gLEGLcCDwNHJdimJCnNDR48GKDKdtYAr776KuvWraN///41zihpis9//vNA2W5JjVFSUkJpaSn5+flVApt169ZVbKGdLsrr3tQ0+6Z8e/XqtvXesWMHW7duBeq35EuSJKm1KCxs2fuSlGRoswPostvXpwAR2D3P2gLsn2CbkqQ0d8kllwBw/fXXVwoLPvnkE7773e9SWlrK2LFjm6XtSy+9lI4dOzJt2rRKRXfL1bV7VPlW2U888USlIOT9999n3Lhx7Ny5M9H+NlX57JjXXnut2vOnnHIKAD/+8Y8rApxyU6dOZefOnXzmM5+pElBJkiS1Zlu2tOx9SUpyedRqYPcqk+cDr8QY39jtWF/gnQTblCSluaFDh/L973+fn/70pwwcOJALLriArl27snDhQl588UVOPvlkvve97zVL28ceeyx33HEHEyZMYPDgwYwYMYIjjjiCd999l2effZbMzEwee+yxGu/v1asXI0eO5J577mHQoEHk5+ezefNmHn30Ufbee28GDRpUpcBwKh111FH06dOHe+65h7322ousrCxCCFx00UVkZWVxzTXX8NBDD1FYWMjRRx/NGWecQZcuXVi2bBnPPPMMXbp04dZbb031y5AkSUpUNXs6NOt9SUoytJkH3BJC+AvwEXAccN0e1xwP/CPBNiVJpGcB4t3deOONDB48mF/+8pf8+te/5uOPP+bwww/n+uuv56qrrmrW5Tjjxo1j4MCB3HTTTSxZsoQFCxbQs2dPjj/+eL7xjW/Uef+sWbMYMGAA9957L7fffjsHHngg55xzDgUFBZx//vnN1u/G6NChAw888ABXX3019913H1u3biXGyMknn0xWVhZ9+vRhxYoV3HjjjTzyyCPMmTOH0tJSevfuzZgxY/jBD37QqNo/kiRJ6ayxBYXToRBxiAltPh5C2Iuy4OYrQAAeAi6MMe7YdX4g8Fdgcozx+kQaTQMhhOVDhgwZsnz58lR3RVIaeemllwA45phjUtwTqf2q78/hiSee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48c3obeSpFRzXOG4ojZJjiv69OnDt771rUqBDUCnTp2YOHEiUFbbqL1zpo0ktXJf/epXufLKK5k5cybnnntuxfE//vGPbNiwgRtvvJFXX3212nufffZZvvjFL7J161bOOeccjj32WP7+978zf/58HnzwQf785z/zmc98puL6d955h6FDh1JSUsLJJ5/MySefzFtvvcWECRPIz8+vto21a9cybNgw1qxZwymnnMIZZ5zBtm3bePjhhznjjDP41a9+xbhx4xr9+ouKivjJT37C8OHDOf/889l333155ZVX+P3vf88f//hHli1bxgknnFDv533nO9+hqKiICy+8kBEjRrBo0SJuueUWHn/8cZ544gn23nvvStd//PHHnH766bz55puceeaZdOzYkQULFnD11Vezffv2KsuJLr30UrKzs8nJyaF37968++67/OlPf+Kiiy7iH//4B9OmTWv0e1Gdp59+mg8//JD8/Hy6detW6VxGRgann34606dP57HHHqvXVObq/PGPf2T9+vXk5ORw9NFHV3vNjh07mD9/Pq+99hpdu3bl+OOPJycnhw4dOjSqTUlS83Bc4biiNi0xrgDYa6+9AKrM9irXnsYVhjaS1Mp169aNkSNHMnfuXNatW8ehhx4KwIwZM8jMzOTCCy+sdl16jJGLL76YLVu2MH/+fP7rv/6r4ty9997LyJEjueiii1i1ahUZGWUTMydOnEhJSQlXXHEFP//5zyuu//a3v80XvvCFavs3evRo1q5dy913383IkSMrjm/atIlhw4Zx2WWXcc4553DwwQc36vWfeuqpvP3221UGDi+88AInnXQSV199NQsXLqz385YtW8bKlSvJysoC4IYbbuDLX/4y999/P//7v//LpEmTKl3/5ptvcsIJJ/Doo4/SpUsXAKZMmcKRRx7Jz3/+cyZOnFgx8AB48cUXOfzwwys946OPPuLMM8/kJz/5CRMmTKBPnz4V55YsWdLgvzLt/pevf/zjHwAceeSR1V57xBFHAPDyyy83qI3dTZ8+HYBvfvObNV6zfv16LrrookrH+vfvz5w5c8jNzW1025KkZDmucFyxp5YeVwDMnj0bgDPOOKPa8+1qXBFj9KMJH8DyIUOGREna3apVq+KqVauatQ0g9unTJ8YY49NPPx2BeN1118UYY1yzZk3MyMiIl156aYwxxmuuuSYCcc6cORX3P/HEExGIX/jCF6p9/sknnxyBuHTp0hhjjB999FHcZ599Yrdu3eKmTZuqXD969OgIxClTplQcW7lyZQTiBRdcUG0bCxYsiEC8/fbbK47NmTOnSl8b6+yzz46dO3eOH330UcWx1atXRyCOHj262v4XFBRUec4///nPmJGREfv161fpeFZWVgTiK6+8UuWeiy++OALxb3/7W736+oc//CECcd68eZWOT5kyJQIN+tjdj370owjEa665ptp2p0+fHoE4fvz4evVzT6tXr44hhHjAAQfE7du3V3vN1KlTY2FhYVy/fn3ctm1b/Nvf/ha/+c1vxhBC7NKlS1y5cmWj2q5LfX8OhwwZEoHlMQ3GFdGxhaQaNPfYwnFF3RxXNP+4IsYYH3zwwRhCiIceemjcuHFjlfOpGlfEmJqxhTNtJKkN+NznPsdxxx3H7Nmzufbaa5k5cyalpaW1Tg9esWIFUPYXpeqceuqpPPHEEzz//PPk5OTw97//nQ8++IBTTjmF7t27V7l+2LBhVdagP/XUUwBs3ry52mJx//rXvwB46aWX6vU6a/LII49w11138dxzz/HOO+9U2dHinXfeoXfv3vV6VnV/nRkwYAB9+/ZlzZo1bNq0iR49elSc6969O5/61Keq3NO3b18A3nvvvUrHX3vtNW688UYKCwt57bXX+PDDDyudf+ONNyp9PXXq1LQutDdjxgxijIwePbraAsRAlancAwcO5K677mLffffl5ptvZurUqRa0lKQ04rjCcUWqPPnkk4waNYquXbvyhz/8gf3226/KNe1tXGFoI0ltxLhx47jssstYuHAhc+bM4cQTT2Tw4ME1Xr9582aAGgcd5cc3bdpU6fqaphv36tWryrF3330XgEcffZRHH320xr68//77NZ6ry6233soVV1zBfvvtx2mnncZhhx3GPvvsQwiBBQsW8MILL7Bjx456P6+217d27Vo2b95caXC1+z/vrnwN9ieffFJxrKSkhM9+9rO89957nHLKKeTn59O9e3c6dOjAmjVrmDdvXoP6Wh/lA+Hyf397Kj9e0+uozc6dO5kzZw7QuALEEyZM4Oabb6aoqKjB90qSmpfjCscV1WnOccVTTz3FmWeeSUZGBgsXLuSzn/1sg+5vq+MKQxtJaiMuuugifvCDHzBhwgTeeOMNJk+eXOv15f/TXb9+fbXn33rrrUrXlX9+++23q72+uueU33Prrbdy2WWX1eNVNMzOnTuZOnUqvXr1YsWKFVUGiuV/kWuIt99+m6OOOqrK8fLXV91fA+vrZz/7Ge+++y5z5sxhzJgxlc7dfffd1e6W0dS15+Wvpaa15eW7edS0Nr02Dz30EG+99Ra5ubnVvmd1OfDAA4GyXTIkSenFcYXjinItMa54/PHHOeuss8jIyGDRokV8/vOfb9D90HbHFYY2ktRG9OjRgwsuuKBiG8avfvWrtV5f/teymv7H/dhjjwEwZMgQAI4++mj22WcfVq5cyebNm6sMMqp7Tvn/cB9//PFmGVy98847bNq0ifPOO6/KwOr999+vmKrdEEuXLiUnJ6fSsZKSEl5//XX69evXqL8clSvfbeP888+vtt3/z96dx1VdJf4ffx0E0VTckJFcgMxyK5GsTA1DEsey0FwabQyybLRfU1pZZhmopNk327cZLZcyTawwK8IlUHMZFXVKsabFjdQsF1ILBTm/P5Cb1wuKcIELvp+Px30wnHM+n3M+l+74fpz7+ZxTmLS0NMaPH39e/Zwerjp16kTNmjVZtWoVR44ccVpYMS8vz7E9akRExHn1AX8uQFzSbb7Xrl0LUKrdJUREpGwoVyhXFCjrXPHFF19wyy234OvrS0pKitMOY+ejquYKr4oegIiIuE9CQgIfffQRKSkpLrsenKlLly5cfvnlfPnllyxYsMCpbsGCBaxcuZLLLruMrl27AvlbL95xxx0cOXLE5VnoDRs2MGfOHJc+OnbsyPXXX8+HH37o2AXgTF9//TX79+8/j6v8U0BAABdddBHp6elOt0Ln5OTw4IMP8uuvv573OV966SV27tzp+D0vL4/Ro0eTl5fHXXfdVaJxFggODgZcg2hKSgrTp08v9Jj4+PiSLGTrULt2bYYMGcKxY8dc/m6vvvoqO3bsoGfPni4B54cffuCbb74hJyen0HHt3LmTxYsX07Bhw0LDYoFt27YV+o3Xjh07uP/++wH4+9//XuTxIiJScZQr8ilX/MnduWLx4sX07t2bmjVrsmzZsnNO2FyIuUJ32oiIVCHNmzenefPmxWprjGHWrFn06NGD22+/nejoaFq1asW3335LUlISderUYfbs2Y5tOQEmTZrEsmXLePHFF9mwYQNdu3Zl7969vP/++9x00018/PHHLv289957dO/enbvvvpuXX36Za6+9lnr16pGZmclXX33Fli1bWLNmDQEBAed9vV5eXjzwwAM888wzXHHFFURHR3PixAlSU1M5ePAgERERjm/2iqtLly6EhoZy++23U7duXVJSUvjvf//LVVddxaOPPnreYzzdfffdx4wZMxgwYAD9+/fn4osvZsuWLXz++ecMHDiQ999/v1TnL8qkSZNIS0vj+eefZ/PmzVxzzTVs27aNhQsXEhAQwGuvveZyTGRkJDt37mT79u2OUHi6gkUpz7YAMeRv8zp16lTCw8MJCgqiTp06/PDDD3z66adkZ2dz00038cgjj7jzckVExE2UK5QrCuOuXPHtt98SHR3tyAMLFy5k4cKFLseePjl0IeYKTdqIiFzArr32WtavX09CQgJLly5l0aJF+Pv7M2jQIMaNG+fyDLa/vz+rVq1i7NixLFq0iA0bNnD55ZfzxhtvEBwcXGi4atq0Kenp6bzyyit88MEHzJkzh5MnT9K4cWPatGnDP//5T6644ooSX8PEiRNp1KgR06dP51//+hd169alR48eJCQkuOwuUBwvvPACH330EdOmTWPHjh00bNiQBx98kAkTJlCjRo0SjxPgyiuvJDU1lSeffJJPP/2U3Nxc2rdvz4cffki9evXKLFw1bNiQNWvWMH78eJKSkli5ciUNGzbkrrvuYsKECTRt2vS8znfy5EnHN5znejQqIiKCb7/9lk2bNrFq1SqOHTtGvXr16Nq1K0OGDGHIkCEYY0p8bSIi4jmUK1wpVxRt7969ZGdnA/DBBx/wwQcfFNru9EmbCzFXmDNvd5LzY4xJDwsLC0tPT6/ooYiIBynYarJ169YVPBIprtjYWGbNmlXknSVS+RT3c3jVVVexcePGjdbaq8pjXOeibCEihVG2qFyUK6qmisgWWtNGRERERERERMQDadJGRERERERERMQDadJGRERERERERMQDadJGREQEmDlzJtZaPXcuIiIipaZcIe6iSRsREREREREREQ+kSRsREREREREREQ+kH5JzXAAAIABJREFUSRsREREREREREQ+kSRsREREREREREQ+kSRsREREREREREQ+kSRsREREREREREQ+kSRsREREREREREQ+kSRsREREREREREQ+kSRsREREREREREQ9UqSZtjDENjTH3GGM+MsZ8b4z5wxiTZYz50hhztzHG64z2wcYYe5bXvIq6FhER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tpC09uxbYFpr7cSJEy1gAbtgwYKzjn3lypV2wIABNjAw0Pr4+Fh/f3/bvn17O2rUKLt+/fpij6nAO++8Y9u3b29r1KjhGMPpjh8/bl955RV73XXXWT8/P1u9enXbrFkz2717d/vCCy/YX3/91aX9+PHjbUhIiK1evboNCgqyY8eOtdnZ2WW+NWeBzMxMO3z4cNu8eXPr4+NjGzZsaKOjo+26desK7WPGjBm2ffv29qKLLrINGza0ffr0sV999VWRf7eff/7ZDho0yAYEBFgvLy8L2Li4uLNeh6dv+V3US9lCRAqjbOFMueJPyhXlkyusrZhsYWx+OJASMsakh4WFhaWnp1f0UETEgxRsnXjms7VlYetWWLYsf+tNP7/8b78qcg0bEU9R3M/hVVddxcaNGzfaIrbgLm/KFiJSGGULkYpXEdmisj0eJSIiZ2jbVkFKRERE3EfZQsRzVKqFiEVERERERERELhSatBERERERERER8UCatBERERERERER8UCatBERERERERER8UCatBERERERERER8UCatBERERERERER8UCatBERERERERER8UCatBERERERERER8UCatBERERERERER8UCatBERERERERER8UCatBERERERERER8UCatBERERERERER8UCatBEREanCjDHccMMNxW6flpaGMYb4+PgyG5OIiIhUTsoV5U+TNiIildzW/Vt5+T8vk7AigZf/8zJb92+t6CHJWcTHx2OMIS0traKHUuaKE+w+/fRToqKiaNq0KTVr1uSSSy5hwIABrFmzpnwGKSIiLpQtKg/lCmdVMVd4V/QARESkZJb9uIwJKyawYucKl7rwoHCeCn+KyEsiK2BkUpldc801bNu2DX9//zLv67HHHuPZZ5+lYcOG9OnTB39/f77//nsWLlzIBx98wOzZs/n73/9e5uMQEZF8yhbibsoVpadJGxGRSuitjW9x7yf3kmfzCq1fsXMFUe9GMe2WaQztMLScRyeV2UUXXUSrVq3KvJ99+/bx3HPP8Ze//IWvvvqKgIAAR11qairdu3fnqaeeqpThSkSkMlK2kLKgXFF6ejxKRKSSWfbjsrOGqgJ5No9hi4ax7Mdl5TSys1u3bh233347TZo0wdfXl8DAQKKiopg/f75Tu/nz5xMeHk7dunWpWbMmV1xxBZMnT+b48eMu5wwODiY4OJhj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\n", "text/plain": [ "
" ] }, "metadata": { "image/png": { "height": 566, "width": 566 }, "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "visualize(df, 'size_peak', 'Max resident set size [MB]')" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'2.0.0'" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import tensorflow as tf\n", "tf.__version__" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'2.2.4-tf'" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from tensorflow.python import keras\n", "keras.__version__" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: Examples/converter_examples/Convert_Benchmark/README.md ================================================ # Quantization Benchmarking on Android Phone In this example, we use Converter to quantize and convert models into TensorFlow Lite format. We ran the experiment for image classification task using different configurations of MobileNet and obtained benchmarking results by deploying models on the LG G6 smartphone. The results reaffirm the benefits of model quantization for edge deployments in terms of inference speed and peak memory usage. The experiments are presented in the [Benchmark](Benchmark.ipynb) file along with figures showing model performance. To obtain the data pickle file, either run `Benchmark.ipynb` or `script_mobilenet.py`. The script first downloads different MobileNets in the Protobuf format and converts them to TensorFlow Lite using different quantization configurations. The script also downloads the official TensorFlow Lite versions (int8 and float32) of MobileNet to compare the performance of the converted models. To set up the mobile benchmarking pipeline please follow these steps. ### Setup 1. Android Studio / [adb](https://developer.android.com/studio/command-line/adb) ```bash export PATH=$PATH:~/Library/Android/sdk/platform-tools/ ``` 2. Compile model_benchmark See [step 1](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/tools/benchmark#on-android): Needs Ubuntu system / Android Studio. ```bash git clone git@github.com:tensorflow/tensorflow.git cd tensorflow bazel clean --expunge bazel build -c opt --config=android_arm --cxxopt='--std=c++11' tensorflow/lite/tools/benchmark:benchmark_model ``` 3. Prepare data on the phone See [step 2-4](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/tools/benchmark#on-android) ``` Android/Sdk/platform-tools/adb push bazel-bin/tensorflow/lite/tools/benchmark/benchmark_model /data/local/tmp ``` If the device is not connected, follow instructions [here](https://askubuntu.com/questions/863587/adb-device-list-doesnt-show-phone) Copy model ```bash adb push model.tflite /data/local/tmp ``` 4. Measure performance See [here](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/tools/benchmark#parameters) for more control arguments. ```bash adb shell /data/local/tmp/benchmark_model \ --num_threads=4 \ --graph=/data/local/tmp/model.tflite \ --warmup_runs=1 \ --num_runs=50 ``` ================================================ FILE: Examples/converter_examples/Convert_Benchmark/repdata.py ================================================ """ .. Copyright (c) 2018 LG Electronics Inc. SPDX-License-Identifier: GPL-3.0-or-later Create a synthetic tf.dataset for inference speed measure """ import numpy as np from absl import flags import sys def parse_arg(): try: idx = sys.argv.index("--custom_data") custom_data = str(sys.argv[idx+1:][0]) except ValueError: custom_data = "1,224,224,3,1000" return custom_data def get_dataset(): custom_data = parse_arg() print(custom_data) batch_size, img_len, img_wid, channel_size, label_size = [int(x) for x in custom_data.split(",")] labels = np.random.randint(0, label_size, size=batch_size).astype(np.float) imgs = np.random.random(size=(batch_size, img_len, img_wid, channel_size)) class Dataset: def __init__(self, data): self.data = data def numpy(self): return self.data[np.newaxis,:] for i in range(batch_size): yield Dataset(imgs[i]), Dataset(labels[i]) ================================================ FILE: Examples/converter_examples/Convert_Benchmark/script_mobilenet.py ================================================ """ Copyright (c) 2018 LG Electronics Inc. SPDX-License-Identifier: GPL-3.0-or-later """ import keras import subprocess from os import path import pandas as pd import json # see models here - https://www.tensorflow.org/lite/guide/hosted_models STORAGE_LINK = "https://storage.googleapis.com/download.tensorflow.org/models/mobilenet_v1_2018_08_02/" ADB_LOCAL = path.expanduser("~/Library/Android/sdk/platform-tools/adb") # for MacOS ALPHA = ["1.0","0.75","0.5","0.25"] SIZE = ["224","192","160","128"] REP_DATA = "repdata.py" OP_TYPE = ["float", "float16", "uint8", "int8"] KEYS = [[a,b] for a in ALPHA for b in SIZE] MOBILENET = "mobilenet_v1" df = pd.DataFrame({"model":[], "alpha":[], "size":[], "op": [], "size_init":[], "size_peak":[], "warmup":[], "init":[], "inference":[]}) def preprocess(name): try: process = subprocess.Popen(" wget " + STORAGE_LINK + name + ".tgz ", shell=True).wait() except: print("Could not retrieve") return 0 try: process = subprocess.Popen(" tar -xzf " + name + ".tgz", shell=True).wait() except: print("Could not unpack") return 0 return 1 def push_to_device(name): try: process = subprocess.Popen(ADB_LOCAL + " push " + name + ".tflite /data/local/tmp/", shell=True, stdout=subprocess.DEVNULL).wait() except: print("Could not push") return 0 return 1 def run_benchmark(name): command_template = ADB_LOCAL + " shell /data/local/tmp/benchmark_model --graph=/data/local/tmp/" command = command_template + name + ".tflite --num_threads=4" process2 = subprocess.Popen(command.split(), stdout=subprocess.PIPE) output, error = process2.communicate() output = output.decode('utf-8') output = output.split("\n") infer, memo = "","" for p in output: if "Inference timings" in p: infer = p if "Peak memory footprint" in p: memo = p #output = output.split("\n") #infer = output return (infer, memo) def compile_results(infer, memo, df, of, op, alpha, size): data = [] try: idx = memo.find("init=") max_size = float(memo[idx+5:idx + memo[idx:].find(" ")-1]) except: max_size = float('nan') idx = memo.find("overall=") try: malloc_size = float(memo[idx+8:]) except: malloc_size = float('nan') idx = infer.find("Warmup (avg):") try: warmup = float(infer[idx+14:idx + infer[idx:].find(",")]) except: warmup = float('nan') idx = infer.find("Init:") try: init = float(infer[idx+6:idx + infer[idx:].find(",")]) except: init = float('nan') idx = infer.find("Inference (avg):") try: no_stat = float(infer[idx+17:]) except: no_stat = float('nan') df = df.append(pd.Series([of, alpha, size, op, max_size, malloc_size, warmup, init, no_stat], index=df.columns), ignore_index=True) return df def convert(name, size, op): json_dic = {} json_dic["convert_from"] = name+"_frozen.pb" json_dic["convert_to"] = name+"_"+op+"_converted.tflite" json_dic["input_nodes"] = "input" json_dic["output_nodes"] = "MobilenetV1/Predictions/Reshape_1:0" command = "" if op == 'float': command = json.dumps([json_dic]) if op == 'float16': quant_dic = {} quant_dic["type"]="float16" quant_dic["opsset"] = "tf" json_dic["quantization"] = quant_dic command = json.dumps([json_dic]) if op == 'int8': quant_dic = {} quant_dic["type"]="int8" quant_dic["opsset"] = "int8" quant_dic["load"] = REP_DATA + " --custom_data '1," + size + "," + size + "," + "3,1000' --undefok custom_data" json_dic["quantization"] = quant_dic command = json.dumps([json_dic]) if op == 'uint8': quant_dic = {} quant_dic["type"]="uint8" quant_dic["opsset"] = "tf" quant_dic["load"] = REP_DATA + " --custom_data '1," + size + "," + size + "," + "3,1000' --undefok custom_data" json_dic["quantization"] = quant_dic command = json.dumps([json_dic]) try: process = subprocess.Popen("python3 -m aup.dlconvert -d " + "'" + str(command) + "'", shell=True).wait() except: print("Could not Convert= " + str(command)) return 0 return 1 for key in KEYS: name = MOBILENET + "_" + key[0] + "_" + key[1] print("Starting " + str(name)) if(not preprocess(name)): continue if(not push_to_device(name)): continue infer,memo = run_benchmark(name) df = compile_results(infer, memo, df, "official", "float", key[0], key[1]) new_name = name + "_quant" print("Starting " + str(new_name)) if(not preprocess(new_name)): continue if(not push_to_device(new_name)): continue infer,memo = run_benchmark(new_name) df = compile_results(infer, memo , df, "official", "int8", key[0], key[1]) print("Starting converted tflite benchmarking") for op in OP_TYPE: converted = convert(name, key[1], op) if not converted: print("Failed " + str(name) + " " + str(op)) continue print("testing= " + str(name) + " " + str(op)) new_name = name + "_" + op + "_converted" if(not push_to_device(new_name)): continue infer,memo = run_benchmark(new_name) df = compile_results(infer, memo, df, "converted", str(op), key[0], key[1]) print(df.to_string()) df.to_pickle("./data_mobilenet.pkl") ================================================ FILE: Examples/converter_examples/Convert_Profiler/.gitignore ================================================ mobilenet* input_models output_models *.tgz Dockerfile_* densenet* nasnet* squeezenet* ================================================ FILE: Examples/converter_examples/Convert_Profiler/README.md ================================================ # Profiling TensorFlow Lite/ONNX model performance for CPU In this example, we show how to use Converter to convert models into edge device-friendly formats (TensorFlow Lite and ONNX) and then profile their performance (i.e. runtime and memory usage) on CPU using Auptimizer's Profiler package. We use standard image classification models in Protobuf format and convert them to TensorFlow or ONNX. Once we have models in a common format, we can benchmark their performance using Profiler with different hardware settings. By pairing Auptimizer's Converter and Profiler capabilities, you can significantly reduce the effort needed to prepare an ML model for edge deployment. You can simply download models from various DL platforms and libraries, convert them to a common edge-friendly standard and estimate the script's runtime and memory usage for your target device constraints. ## How to run this example - *Step 1*: Download a few protobuf models for testing ``` python download_test_models.py ``` and create a new folder called `output\_models`. The `download_test_models.py` script should download the squeezenet, densenet, and nasnet-mobile models into `input_models` directory. - *Step 2*: Convert the models to TensorFlow Lite: ``` python -m aup.dlconvert -f convert_tflite.json ``` - *Step 3*: Profile the converted TensorFlow Lite models and the downloaded official TensorFlow Lite models released by TensorFlow for the same model architecture. Run the following to do profiling: ```bash python -m aup.profiler -e env_tflite.template -f model_names_tflite.txt ``` This creates an output text file with the details of the model performance. The Docker settings can be edited using the `env_tflite.template` file and the test script can be edited using `test_perf_tflite.py`. We show output from running the example on MacOS. From `tflite_output.txt`, we see that the performances of the converted models are very close to those of the official TensorFlow Lite models, which validates that the conversion from Protobuf to TensorFlow Lite works correctly. You can similarly convert the models to ONNX and profile the performances. The sample conversion configuration json file `convert_onnx.json` and the Profiling environment file `env_onnx.template` are provided. ================================================ FILE: Examples/converter_examples/Convert_Profiler/convert_onnx.json ================================================ [ { "convert_from":"input_models/densenet/densenet.pb", "convert_to":"output_models/densenet_converted.onnx", "input_nodes":"Placeholder:0", "output_nodes":"softmax_tensor:0,ArgMax:0" }, { "convert_from":"input_models/squeezenet.pb", "convert_to":"output_models/squeezenet_converted.onnx", "input_nodes":"Placeholder:0", "output_nodes":"softmax_tensor:0" }, { "convert_from":"input_models/nasnet_mobile.pb", "convert_to":"output_models/nasnet_mobile_converted.onnx", "input_nodes":"input:0", "output_nodes":"final_layer/predictions:0" } ] ================================================ FILE: Examples/converter_examples/Convert_Profiler/convert_tflite.json ================================================ [ { "convert_from":"input_models/squeezenet.pb", "convert_to":"output_models/squeezenet_converted.tflite", "input_nodes":"Placeholder:0", "output_nodes":"softmax_tensor:0" }, { "convert_from":"input_models/densenet/densenet.pb", "convert_to":"output_models/densenet_converted.tflite", "input_nodes":"Placeholder:0", "output_nodes":"softmax_tensor:0,ArgMax:0" }, { "convert_from":"input_models/nasnet_mobile.pb", "convert_to":"output_models/nasnet_mobile_converted.tflite", "input_nodes":"input:0", "output_nodes":"final_layer/predictions:0" } ] ================================================ FILE: Examples/converter_examples/Convert_Profiler/download_test_models.py ================================================ # Copyright (c) 2020 LG Electronics Inc. # SPDX-License-Identifier: GPL-3.0-or-later import os import json import argparse import logging import requests import shutil all_urls = {"densenet": "https://storage.googleapis.com/download.tensorflow.org/models/tflite/model_zoo/upload_20180427/densenet_2018_04_27.tgz", "squeezenet": "https://storage.googleapis.com/download.tensorflow.org/models/tflite/model_zoo/upload_20180427/squeezenet_2018_04_27.tgz", "nasnet_mobile": "https://storage.googleapis.com/download.tensorflow.org/models/tflite/model_zoo/upload_20180427/nasnet_mobile_2018_04_27.tgz"} model_folder = "input_models" def download_all_url(all_urls, model_folder): for model, url in all_urls.items(): tarFilename = url.split('/')[-1] # check if the tar file already exists on disk # if not tarFilename[0].isdigit() and os.path.isfile(tarFilename): if os.path.isfile(tarFilename): print ("File already exists, skipping ", url) continue print("Downloading ", url) response = requests.get(url, stream=True) if response.status_code == 200: with open(tarFilename, 'wb') as f: f.write(response.raw.read()) save_folder = model_folder shutil.unpack_archive(tarFilename, save_folder) if __name__ == '__main__': download_all_url(all_urls, model_folder) ================================================ FILE: Examples/converter_examples/Convert_Profiler/env_onnx.template ================================================ # Copyright (c) 2020 LG Electronics Inc. # SPDX-License-Identifier: GPL-3.0-or-later #User data Variables IMAGEREPO=tensorflow/tensorflow:1.15.0-py3 APTREQUIREMENTS="wget" PRERUN="pip install onnxruntime" DIR=./ SCRIPT=test_perf_onnx.py COMMAND=python SAMPLETIME=3 OUTPUTFILE=onnx_output.txt DOCFILE=Dockerfile DOCKCPUS="4.0" DOCKMEMORY="2.0g" # Additional docker arguments could be passed as following: # To run Docker container with privilege capability change to 'true' # To use Volume instead of copying data with the current folder # use the format "-v /path/in/source:/path/in/destination" as string # DOCKER_ARGS="--privileged -v /data:/mnist_data" DOCKER_ARGS= ================================================ FILE: Examples/converter_examples/Convert_Profiler/env_tflite.template ================================================ # Copyright (c) 2020 LG Electronics Inc. # SPDX-License-Identifier: GPL-3.0-or-later #User data Variables IMAGEREPO=tensorflow/tensorflow:1.15.0-py3 APTREQUIREMENTS="wget" # PIPREQUIREMENTS="ipython numpy" PRERUN="wget https://dl.google.com/coral/python/tflite_runtime-1.14.0-cp36-cp36m-linux_x86_64.whl; pip install tflite_runtime-1.14.0-cp36-cp36m-linux_x86_64.whl" DIR=./ SCRIPT=test_perf_tflite.py COMMAND=python SAMPLETIME=3 OUTPUTFILE=tflite_output.txt DOCFILE=Dockerfile DOCKCPUS="4.0" DOCKMEMORY="2.0g" # Additional docker arguments could be passed as following: # To run Docker container with privilege capability change to 'true' # To use Volume instead of copying data with the current folder # use the format "-v /path/in/source:/path/in/destination" as string # DOCKER_ARGS="--privileged -v /data:/mnist_data" DOCKER_ARGS= ================================================ FILE: Examples/converter_examples/Convert_Profiler/model_names_tflite.txt ================================================ input_models/densenet/densenet.tflite output_models/densenet_converted.tflite input_models/squeezenet.tflite output_models/squeezenet_converted.tflite input_models/nasnet_mobile.tflite output_models/nasnet_mobile_converted.tflite ================================================ FILE: Examples/converter_examples/Convert_Profiler/test_perf_onnx.py ================================================ # Copyright (c) 2020 LG Electronics Inc. # SPDX-License-Identifier: GPL-3.0-or-later # Compute the overall inference time for a given tflite model import onnxruntime as rt import numpy as np import time WARMUP = 10 ITER = 600 CONSTANT = 0.5 def compute(model_path): now = time.monotonic() sess = rt.InferenceSession(model_path) input_det = sess.get_inputs()[0] label_det = sess.get_outputs()[0] input_name = input_det.name input_shape = input_det.shape if 'N' in input_shape: input_shape[input_shape.index('N')] = 1 input_shape[0] = 1 print("input_shape", input_shape) t1 = time.monotonic() - now now = time.monotonic() for i in range(WARMUP): X_test = np.random.random(size=input_shape).astype(np.float32) pred_onx = sess.run(None, {input_name: X_test})[0] t2 = time.monotonic() - now now = time.monotonic() for i in range(ITER): X_test = np.random.random(size=input_shape).astype(np.float32) pred_onx = sess.run(None, {input_name: X_test})[0] t3 = time.monotonic() - now return t1, t2/float(WARMUP), t3/float(ITER) if __name__ == "__main__": import sys if len(sys.argv) != 2: print("test_perf_onnx.py ") print(compute(sys.argv[1])) ================================================ FILE: Examples/converter_examples/Convert_Profiler/test_perf_tflite.py ================================================ # Copyright (c) 2020 LG Electronics Inc. # SPDX-License-Identifier: GPL-3.0-or-later # Compute the overall inference time for a given tflite model import tensorflow as tf from tflite_runtime.interpreter import Interpreter import tensorflow.random import numpy as np import time import os WARMUP = 10 ITER = 300 CONSTANT = 0.5 def compute(model_path): now = time.monotonic() intp = Interpreter(model_path) x = intp.tensor(intp.get_input_details()[0]['index']) iy = intp.get_output_details()[0]['index'] intp.allocate_tensors() t1 = time.monotonic() - now now = time.monotonic() for i in range(WARMUP): #x().fill(CONSTANT) x =np.random.rand() intp.invoke() y = intp.get_tensor(iy) t2 = time.monotonic() - now now = time.monotonic() for i in range(ITER): #x().fill(CONSTANT) x =np.random.rand() intp.invoke() y = intp.get_tensor(iy) t3 = time.monotonic() - now return t1, t2/float(WARMUP), t3/float(ITER) if __name__ == "__main__": import sys if len(sys.argv) != 2: print("test_perf_tflite.py ") print(compute(sys.argv[1])) ================================================ FILE: Examples/converter_examples/Convert_Profiler/tflite_output.txt ================================================ Usage stats for Experiment ran on : 2020-10-08 10:26:18.302189 NAME AVG CPU % PEAK CPU AVG MEM USAGE / LIMIT PEAK MEM NET I/O BLOCK I/O TOTAL TIME (ms) ----------------------- ----------- ---------- ----------------------- ---------- ---------------- ------------- ----------------- densenet 256.601% 260.97 162.9 MiB / 1.9 GiB 163.0 MiB 850.0 B / 42.0 B 0.0 B / 0.0 B 27640 densenet_converted 254.545% 259.71 162.9 MiB / 1.9 GiB 163.0 MiB 843.0 B / 42.0 B 0.0 B / 0.0 B 27635 squeezenet 272.655% 274.36 127.6 MiB / 1.9 GiB 127.7 MiB 773.0 B / 42.0 B 0.0 B / 0.0 B 3132 squeezenet_converted 274.83% 276.06 129.7 MiB / 1.9 GiB 129.8 MiB 731.0 B / 0.0 B 0.0 B / 0.0 B 3067 nasnet_mobile 155.766% 159.16 135.1 MiB / 1.9 GiB 135.3 MiB 839.0 B / 42.0 B 0.0 B / 0.0 B 24549 nasnet_mobile_converted 154.046% 159.38 123.0 MiB / 1.9 GiB 134.7 MiB 854.0 B / 42.0 B 0.0 B / 0.0 B 24515 ================================================ FILE: Examples/converter_examples/README.md ================================================ # Model Conversion Examples This folder contains examples that demonstrate Converter coverage and efficacy. ### - Evaluating supported model architectures [Tested_Models](/Examples/converter_examples/Tested_Models) - This example evaluates common model architecture coverage by the individual conversion functions. It also summarizes known issues. **We strongly recommend that users review this example first before running their conversion tasks.** ### - Benchmarking quantized TensorFlow Lite models on an Android phone [Convert_Benchmark](/Examples/converter_examples/Convert_Benchmark) - This example demonstrates how to benchmark quantized TensorFlow Lite model performance (i.e. running time and memory usage) on an Android phone. Specifically, we converted models from a TensorFlow frozen protobuf file to a quantized .tflite file, and benchmarked their performance on an LG G6 mobile phone. This example shows that models converted and quantized with Converter match the performance of the official quantized models provided in the [TensorFlow repo](https://github.com/tensorflow/models/blob/master/research/slim/nets/mobilenet_v1.md). ### - Profiling performances of converted models using Auptimizer Profiler [Convert_Profiler](/Examples/converter_examples/Convert_Profiler) - This example demonstrates how to use Auptimizer-Profiler to profile TensorFlow or ONNX model performance on CPU. Performance benchmarking scripts are provided for TensorFlow and ONNX. ### How to run the examples If you have not done so, please install the packages in `dlconvert_requirements.txt` before running the examples included in this directory. ```bash pip install -r dlconvert_requirements.txt ``` We provide specific instructions for each example in the respective folder. ================================================ FILE: Examples/converter_examples/Tested_Models/.gitignore ================================================ test_models/ converted_models/ *.tgz *.gz *.pb *.h5 *_internal* ================================================ FILE: Examples/converter_examples/Tested_Models/README.md ================================================ # Model Coverage In this example, we have evaluated the capabilities and limitations of Converter conversion functions by applying the tool to select models in various supported formats. We tested the official models hosted/released by TensorFlow or PyTorch. Our goal was to cover as many models as possible. However, due to the limited availability of officially released models and the large number of model architectures, this evaluation does not aim to test all models exhaustively. Rather, its purpose is to identify and address common model conversion issues. **We strongly recommended reviewing model coverage and known issues for the specific conversions, before you start using Converter.** ## How to run the evaluation tests - *Step 0*: Make sure you have installed required packages listed in [dlconvert_requirement.txt](../dlconvert_requirements.txt). - *Step 1*: Prepare test models. There are two ways to get the test models: 1) Direct download via URLs and 2) Create the models using Python scripts. To download models, run `python download_models.py`. This will automatically download models from the URLs list in `download_urls.json` and save them into a `test_models` folder. The downloaded models are in Protobuf, Checkpoint or Savedmodel formats. To create models, run `python create_test_models.py`. This will create Keras and PyTorch models and save them into the `test_models` folder. - *Step 2*: Convert test models to TensorFlow Lite/ONNX. The configuration json files for each type of conversion (from one source format to either TensorFlow Lite or ONNX) are located in [conversion_jsons](/conversion_jsons). You can run model conversion with each json file individually to test a certain conversion; e.g., ```bash python3 -m aup.dlconvert -f conversion_jsons/convert_keras_to_onnx.json ``` In the json files, we set `skip:True` for the models that were tested but failed the conversion. ## Model support and known issues Here we share the findings from the evaluation test for each individual conversion function. The model names corresponds to their names in `download_models.py` or `create_test_models.py`. For the failed models, some failures were caused by non-supported operators in the conversion tool, while others by more model-specific issues that Converter cannot handle. Any model that is not listed below has not been tested. If not specified, the (un)supported models apply to both TensorFlow v2.3 and TensorFlow v1.15. Please make sure you are using the TensorFlow version no lower than v1.15 to run the tests. ### Savedmodel to TensorFlow Lite - Supported: resnet_50_TF2, efficientnet_b1_TF2, lstm, gru - Not supported: Non-supported operators: object detection models from [TensorFlow 2 Detection Model Zoo](https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/tf2_detection_zoo.md), transformer models Model-specific issues: ssd_mobilenet_v1_coco, ssd_mobilenet_v2_coco - Known issues: - This conversion is only supported by Tensorflow v2.x. - For some models downloaded from [TensorFlow Hub](https://tfhub.dev/) in Savedmodel format, the signature is empty. Conversion from Savedmodel format requires non-empty signature and tag. ### Savedmodel to ONNX - Supported: resnet_50_TF2, efficientnet_b1_TF2, lstm, gru, ssd_mobilenet_v1_coco, ssd_mobilenet_v2_coco - Not supported: Non-supported operators: object detection models from [TensorFlow 2 Detection Model Zoo](https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/tf2_detection_zoo.md), transformer models - Known issues: - This conversion is only supported by Tensorflow v2.x. - Conversion from Savedmodel format requires non-empty signature and tag. ### Protobuf to TensorFlow Lite - Supported: densenet, squeezenet, nasnet_mobile, inception_v3, mobilenet_v1_0.25_224 - Not supported: Non-supported input type uint 8: ssd_mobilenet_v1, ssd_mobilenet_v2 - Known issues: - Conversion requires correct input_nodes name and output_nodes name. When using the [summarize graph tool](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/tools/graph_transforms#inspecting-graphs), you can get the names correctly. But you need to make them into format `input_name:0` or `output_name:0`; i.e., adding `:0` after the name you found from the summarize graph tool. - The model to be converted and the input should be in float32 format. - Issue with Tensorflow v1.15: None dimension is only allowed for the 1st dimension of the input. When saving model to protobuf, please specify input dimension. ### Protobuf to ONNX - Supported: densenet, squeezenet, nasnet_mobile, inception_v3, mobilenet_v1_0.25_224, ssd_mobilenet_v1, ssd_mobilenet_v2 - Known issues: - Conversion requires correct input_nodes name and output_nodes name. When using the [summarize graph tool](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/tools/graph_transforms#inspecting-graphs), you can get the names correctly. But you need to make them into format `input_name:0` or `output_name:0`; i.e., adding `:0` after the name you found from the summarize graph tool. ### Keras to TensorFlow Lite - Supported: VGG16, ResNet50, InceptionV3, MobileNet, MobileNetV2, DenseNet121, NASNetMobile, gru (supported by TF v2.3 only) - Not supported: Model-specific conversion error: lstm - Known issues: - Need to set parameter `quantization: opsset` to `tf` to enable successful conversion. ### Keras to ONNX - Supported: VGG16, ResNet50, MobileNet, MobileNetV2, DenseNet121, NASNetMobile, lstm, gru (supported by TF v2.3 only), InceptionV3 (supported by TF v1.15 only) ### Checkpoint to TensorFlow Lite - Known issues: - This conversion is experimental. There is no direct conversion tool available. Therefore, the approach taken is to convert a checkpoint file to frozen protobuf first, then to TensorFlow Lite. Hence, this conversion can be fragile. ### Checkpoint to ONNX - Supported: mobilenet_v1_0.25_224, ssd_mobilenet_v1, ssd_mobilenet_v2, lstm ### PyTorch to TensorFlow Lite - Supported: all **image classification** models in [torchvision.models](https://pytorch.org/docs/stable/torchvision/models.html#) - Not supported: Non-supported operators: fcn_resnet50, deeplabv3_resnet50, rnn models, resnet_3d, resnet_MC, resnet(2+1)d (the last three models all have 3D convolution layers) - Known issues: - To use the converter properly, please make changes in your `~/.keras/keras.json`: ```bash "backend": "tensorflow", "image_data_format": "channels_first" ``` - Models with `BatchNorm2d`/`BatchNorm3d` layers are not supported in TF v1.15. ### PyTorch to ONNX - Supported: all **image classification**, **semantic segmentation**, and **video classification** models in [torchvision.models](https://pytorch.org/docs/stable/torchvision/models.html#) - Not supported: Non-supported operators: rnn models - Known issues: - For supported models, all models can be converted using `torch==1.5.1` and `torchvision==0.6.1`, while some models fail when using `torch==1.6.0` and `torchvision==0.7.0`. - Models with `BatchNorm2d`/`BatchNorm3d` layers are not supported in TF v1.15. ## More resources Auptimizer model conversion tools integrates [TFLite converter](https://www.tensorflow.org/lite/convert), [tf2onnx](https://github.com/onnx/tensorflow-onnx), [keras2onnx](https://github.com/onnx/keras-onnx), and [pytorch2keras](https://github.com/nerox8664/pytorch2keras) packages. Please check those resources for more info on model support. ================================================ FILE: Examples/converter_examples/Tested_Models/conversion_jsons/convert_checkpoint_to_onnx.json ================================================ [ { "convert_from":"test_models/mobilenet_v1_0.25_224/mobilenet_v1_0.25_224.ckpt.meta", "convert_to":"converted_models/mobilenet_v1_0.25_224_ckpt_converted.onnx", "input_nodes":"batch:0", "output_nodes":"MobilenetV1/Predictions/Reshape_1:0", "input_shape":"1,224,224,3", "skip": "False" }, { "convert_from":"test_models/ssd_mobilenet_v1_coco_2018_01_28/model.ckpt.meta", "convert_to":"converted_models/ssd_mobilenet_v1_ckpt_converted.onnx", "input_nodes":"image_tensor:0", "output_nodes":"detection_boxes:0,detection_scores:0,num_detections:0,detection_classes:0", "input_shape":"1,224,224,3", "skip": "False" }, { "convert_from":"test_models/ssd_mobilenet_v2_coco_2018_03_29/model.ckpt.meta", "convert_to":"converted_models/ssd_mobilenet_v2_ckpt_converted.onnx", "input_nodes":"image_tensor:0", "output_nodes":"num_detections:0,detection_classes:0,detection_scores:0,detection_boxes:0", "skip": "False" }, { "convert_from":"test_models/lstm_ckpt/ckpt.meta", "convert_to":"converted_models/lstm_ckpt_converted.onnx", "input_nodes":"embedding_input:0", "output_nodes":"dense/BiasAdd:0", "skip": "False" } ] ================================================ FILE: Examples/converter_examples/Tested_Models/conversion_jsons/convert_checkpoint_to_tflite.json ================================================ [ { "convert_from":"test_models/mobilenet_v1_0.25_224/mobilenet_v1_0.25_224.ckpt.meta", "convert_to":"converted_models/mobilenet_v1_0.25_224_ckpt_converted.tflite", "input_nodes":"batch:0", "output_nodes":"MobilenetV1/Predictions/Reshape_1:0", "skip": "True" }, { "convert_from":"test_models/ssd_mobilenet_v1_coco_2018_01_28/model.ckpt.meta", "convert_to":"converted_models/ssd_mobilenet_v1_ckpt_converted.tflite", "input_nodes":"image_tensor:0", "output_nodes":"detection_boxes:0,detection_scores:0,num_detections:0,detection_classes:0", "input_shape": "1,224,224,3", "skip": "True" }, { "convert_from":"test_models/ssd_mobilenet_v2_coco_2018_03_29/model.ckpt.meta", "convert_to":"converted_models/ssd_mobilenet_v2_ckpt_converted.tflite", "input_nodes":"image_tensor:0", "output_nodes":"num_detections:0,detection_classes:0,detection_scores:0,detection_boxes:0", "skip": "True" }, { "convert_from":"test_models/lstm_ckpt/ckpt.meta", "convert_to":"converted_models/lstm_ckpt_converted.tflite", "input_nodes":"embedding_input:0", "output_nodes":"dense/BiasAdd:0", "input_shape":"1,53", "skip": "True" } ] ================================================ FILE: Examples/converter_examples/Tested_Models/conversion_jsons/convert_keras_to_onnx.json ================================================ [ { "convert_from":"test_models/VGG16.h5", "convert_to":"converted_models/VGG16_keras.onnx", "skip":"False" }, { "convert_from":"test_models/ResNet50.h5", "convert_to":"converted_models/ResNet50_keras.onnx", "skip":"False" }, { "convert_from":"test_models/InceptionV3.h5", "convert_to":"converted_models/InceptionV3_keras.onnx", "skip":"True" }, { "convert_from":"test_models/MobileNet.h5", "convert_to":"converted_models/MobileNet_keras.onnx", "skip":"False" }, { "convert_from":"test_models/MobileNetV2.h5", "convert_to":"converted_models/MobileNetV2_keras.onnx", "skip":"False" }, { "convert_from":"test_models/DenseNet121.h5", "convert_to":"converted_models/DenseNet121_keras.onnx", "skip":"False" }, { "convert_from":"test_models/NASNetMobile.h5", "convert_to":"converted_models/NASNetMobile_keras.onnx", "skip":"False" }, { "convert_from":"test_models/lstm.h5", "convert_to":"converted_models/lstm_keras.onnx", "skip":"False" }, { "convert_from":"test_models/gru.h5", "convert_to":"converted_models/gru_keras.onnx", "skip":"False" } ] ================================================ FILE: Examples/converter_examples/Tested_Models/conversion_jsons/convert_keras_to_tflite.json ================================================ [ { "convert_from":"test_models/VGG16.h5", "convert_to":"converted_models/VGG16_keras.tflite", "quantization": { "opsset":"tf" }, "skip":"False" }, { "convert_from":"test_models/ResNet50.h5", "convert_to":"converted_models/ResNet50_keras.tflite", "quantization": { "opsset":"tf" }, "skip":"False" }, { "convert_from":"test_models/InceptionV3.h5", "convert_to":"converted_models/InceptionV3_keras.tflite", "quantization": { "opsset":"tf" }, "skip":"False" }, { "convert_from":"test_models/MobileNet.h5", "convert_to":"converted_models/MobileNet_keras.tflite", "quantization": { "opsset":"tf" }, "skip":"False" }, { "convert_from":"test_models/MobileNetV2.h5", "convert_to":"converted_models/MobileNetV2_keras.tflite", "quantization": { "opsset":"tf" }, "skip":"False" }, { "convert_from":"test_models/DenseNet121.h5", "convert_to":"converted_models/DenseNet121_keras.tflite", "quantization": { "opsset":"tf" }, "skip":"False" }, { "convert_from":"test_models/NASNetMobile.h5", "convert_to":"converted_models/NASNetMobile_keras.tflite", "quantization": { "opsset":"tf" }, "skip":"False" }, { "convert_from":"test_models/lstm.h5", "convert_to":"converted_models/lstm_keras.tflite", "skip":"True" }, { "convert_from":"test_models/gru.h5", "convert_to":"converted_models/gru_keras.tflite", "skip":"False" } ] ================================================ FILE: Examples/converter_examples/Tested_Models/conversion_jsons/convert_protobuf_to_onnx.json ================================================ [ { "convert_from":"test_models/densenet/densenet.pb", "convert_to":"converted_models/densenet_converted.onnx", "input_nodes":"Placeholder:0", "output_nodes":"softmax_tensor:0,ArgMax:0", "skip": "False" }, { "convert_from":"test_models/squeezenet.pb", "convert_to":"converted_models/squeezenet_converted.onnx", "input_nodes":"Placeholder:0", "output_nodes":"softmax_tensor:0", "skip": "False" }, { "convert_from":"test_models/nasnet_mobile.pb", "convert_to":"converted_models/nasnet_mobile_converted.onnx", "input_nodes":"input:0", "output_nodes":"final_layer/predictions:0", "skip": "False" }, { "convert_from":"test_models/inception_v3.pb", "convert_to":"converted_models/inception_v3_converted.onnx", "input_nodes":"input:0", "output_nodes":"InceptionV3/Predictions/Reshape_1:0", "skip": "False" }, { "convert_from":"test_models/mobilenet_v1_0.25_224/mobilenet_v1_0.25_224_frozen.pb", "convert_to":"converted_models/mobilenet_v1_0.25_224_converted.onnx", "input_nodes":"input:0", "output_nodes":"MobilenetV1/Predictions/Reshape_1:0", "skip": "False" }, { "convert_from":"test_models/ssd_mobilenet_v1_coco_2018_01_28/frozen_inference_graph.pb", "convert_to":"converted_models/ssd_mobilenet_v1_converted.onnx", "input_nodes":"image_tensor:0", "output_nodes":"detection_boxes:0,detection_scores:0,num_detections:0,detection_classes:0", "input_shape":"1,224,224,3", "skip": "False" }, { "convert_from":"test_models/ssd_mobilenet_v2_coco_2018_03_29/frozen_inference_graph.pb", "convert_to":"converted_models/ssd_mobilenet_v2_converted.onnx", "input_nodes":"image_tensor:0", "output_nodes":"num_detections:0,detection_classes:0,detection_scores:0,detection_boxes:0", "skip": "False" } ] ================================================ FILE: Examples/converter_examples/Tested_Models/conversion_jsons/convert_protobuf_to_tflite.json ================================================ [ { "convert_from":"test_models/densenet/densenet.pb", "convert_to":"converted_models/densenet_converted.tflite", "input_nodes":"Placeholder", "output_nodes":"softmax_tensor:0,ArgMax:0", "skip": "False" }, { "convert_from":"test_models/squeezenet.pb", "convert_to":"converted_models/squeezenet_converted.tflite", "input_nodes":"Placeholder", "output_nodes":"softmax_tensor:0", "skip": "False" }, { "convert_from":"test_models/nasnet_mobile.pb", "convert_to":"converted_models/nasnet_mobile_converted.tflite", "input_nodes":"input:0", "output_nodes":"final_layer/predictions:0", "skip": "False" }, { "convert_from":"test_models/inception_v3.pb", "convert_to":"converted_models/inception_v3_converted.tflite", "input_nodes":"input:0", "output_nodes":"InceptionV3/Predictions/Reshape_1:0", "skip": "False" }, { "convert_from":"test_models/mobilenet_v1_0.25_224/mobilenet_v1_0.25_224_frozen.pb", "convert_to":"converted_models/mobilenet_v1_0.25_224_converted.tflite", "input_nodes":"input:0", "output_nodes":"MobilenetV1/Predictions/Reshape_1:0", "input_shape": "1,224,224,3", "skip": "False" }, { "convert_from":"test_models/ssd_mobilenet_v1_coco_2018_01_28/frozen_inference_graph.pb", "convert_to":"converted_models/ssd_mobilenet_v1_converted.tflite", "input_nodes":"image_tensor:0", "output_nodes":"detection_boxes:0,detection_scores:0,num_detections:0,detection_classes:0", "input_shape": "1,224,224,3", "skip": "True" }, { "convert_from":"test_models/ssd_mobilenet_v2_coco_2018_03_29/frozen_inference_graph.pb", "convert_to":"converted_models/ssd_mobilenet_v2_converted.tflite", "input_nodes":"image_tensor:0", "output_nodes":"num_detections:0,detection_classes:0,detection_scores:0,detection_boxes:0", "input_shape": "1,224,224,3", "skip": "True" } ] ================================================ FILE: Examples/converter_examples/Tested_Models/conversion_jsons/convert_pytorch_to_onnx.json ================================================ [ { "convert_from":"test_models/resnet18.pt", "convert_to":"converted_models/resnet_torch.onnx", "network_script":"create_test_models.py", "input_shape":"1,3,224,224", "network_name":"Test_Model_Classification", "skip":"False" }, { "convert_from":"test_models/alexnet.pt", "convert_to":"converted_models/alexnet_torch.onnx", "network_script":"create_test_models.py", "input_shape":"1,3,224,224", "network_name":"Test_Model_Classification", "skip":"False" }, { "convert_from":"test_models/squeezenet1_0.pt", "convert_to":"converted_models/squeezenet1_0_torch.onnx", "network_script":"create_test_models.py", "input_shape":"1,3,224,224", "network_name":"Test_Model_Classification", "skip":"False" }, { "convert_from":"test_models/densenet161.pt", "convert_to":"converted_models/densenet161_torch.onnx", "network_script":"create_test_models.py", "input_shape":"1,3,224,224", "network_name":"Test_Model_Classification", "skip":"False" }, { "convert_from":"test_models/googlenet.pt", "convert_to":"converted_models/googlenet_torch.onnx", "network_script":"create_test_models.py", "input_shape":"1,3,224,224", "network_name":"Test_Model_Classification", "skip":"False" }, { "convert_from":"test_models/shufflenet_v2_x1_0.pt", "convert_to":"converted_models/shufflenet_v2_x1_0_torch.onnx", "network_script":"create_test_models.py", "input_shape":"1,3,224,224", "network_name":"Test_Model_Classification", "skip":"False" }, { "convert_from":"test_models/mobilenet_v2.pt", "convert_to":"converted_models/mobilenet_v2_x1_0_torch.onnx", "network_script":"create_test_models.py", "input_shape":"1,3,224,224", "network_name":"Test_Model_Classification", "skip":"False" }, { "convert_from":"test_models/resnext50_32x4d.pt", "convert_to":"converted_models/resnext50_32x4d_torch.onnx", "network_script":"create_test_models.py", "input_shape":"1,3,224,224", "network_name":"Test_Model_Classification", "skip":"False" }, { "convert_from":"test_models/wide_resnet50_2.pt", "convert_to":"converted_models/wide_resnet50_2_torch.onnx", "network_script":"create_test_models.py", "input_shape":"1,3,224,224", "network_name":"Test_Model_Classification", "skip":"False" }, { "convert_from":"test_models/mnasnet1_0.pt", "convert_to":"converted_models/mnasnet1_0_torch.onnx", "network_script":"create_test_models.py", "input_shape":"1,3,224,224", "network_name":"Test_Model_Classification", "skip":"False" }, { "convert_from":"test_models/inception_v3.pt", "convert_to":"converted_models/inception_v3_torch.onnx", "network_script":"create_test_models.py", "input_shape":"1,3,299,299", "network_name":"Test_Model_Classification", "skip":"False" }, { "convert_from":"test_models/fcn_resnet50.pt", "convert_to":"converted_models/fcn_resnet50_torch.onnx", "network_script":"create_test_models.py", "input_shape":"1,3,224,224", "network_name":"Test_Model_Segmentation", "skip":"False" }, { "convert_from":"test_models/deeplabv3_resnet50.pt", "convert_to":"converted_models/deeplabv3_resnet50_torch.onnx", "network_script":"create_test_models.py", "input_shape":"1,3,224,224", "network_name":"Test_Model_Segmentation", "skip":"False" }, { "convert_from":"test_models/r3d_18.pt", "convert_to":"converted_models/r3d_18_torch.onnx", "network_script":"create_test_models.py", "input_shape":"1,3,16,112,112", "network_name":"Test_Model_Video", "skip":"False" }, { "convert_from":"test_models/mc3_18.pt", "convert_to":"converted_models/mc3_18_torch.onnx", "network_script":"create_test_models.py", "input_shape":"1,3,16,112,112", "network_name":"Test_Model_Video", "skip":"False" }, { "convert_from":"test_models/r2plus1d_18.pt", "convert_to":"converted_models/r2plus1d_18_torch.onnx", "network_script":"create_test_models.py", "input_shape":"1,3,16,112,112", "network_name":"Test_Model_Video", "skip":"False" } ] ================================================ FILE: Examples/converter_examples/Tested_Models/conversion_jsons/convert_pytorch_to_tflite.json ================================================ [ { "convert_from":"test_models/resnet18.pt", "convert_to":"converted_models/resnet_torch.tflite", "network_script":"create_test_models.py", "input_shape":"1,3,224,224", "network_name":"Test_Model_Classification", "skip":"False" }, { "convert_from":"test_models/alexnet.pt", "convert_to":"converted_models/alexnet_torch.tflite", "network_script":"create_test_models.py", "input_shape":"1,3,224,224", "network_name":"Test_Model_Classification", "skip":"False" }, { "convert_from":"test_models/squeezenet1_0.pt", "convert_to":"converted_models/squeezenet1_0_torch.tflite", "network_script":"create_test_models.py", "input_shape":"1,3,224,224", "network_name":"Test_Model_Classification", "skip":"False" }, { "convert_from":"test_models/densenet161.pt", "convert_to":"converted_models/densenet161_torch.tflite", "network_script":"create_test_models.py", "input_shape":"1,3,224,224", "network_name":"Test_Model_Classification", "skip":"False" }, { "convert_from":"test_models/googlenet.pt", "convert_to":"converted_models/googlenet_torch.tflite", "network_script":"create_test_models.py", "input_shape":"1,3,224,224", "network_name":"Test_Model_Classification", "skip":"False" }, { "convert_from":"test_models/shufflenet_v2_x1_0.pt", "convert_to":"converted_models/shufflenet_v2_x1_0_torch.tflite", "network_script":"create_test_models.py", "input_shape":"1,3,224,224", "network_name":"Test_Model_Classification", "skip":"False" }, { "convert_from":"test_models/mobilenet_v2.pt", "convert_to":"converted_models/mobilenet_v2_x1_0_torch.tflite", "network_script":"create_test_models.py", "input_shape":"1,3,224,224", "network_name":"Test_Model_Classification", "skip":"False" }, { "convert_from":"test_models/resnext50_32x4d.pt", "convert_to":"converted_models/resnext50_32x4d_torch.tflite", "network_script":"create_test_models.py", "input_shape":"1,3,224,224", "network_name":"Test_Model_Classification", "skip":"False" }, { "convert_from":"test_models/wide_resnet50_2.pt", "convert_to":"converted_models/wide_resnet50_2_torch.tflite", "network_script":"create_test_models.py", "input_shape":"1,3,224,224", "network_name":"Test_Model_Classification", "skip":"False" }, { "convert_from":"test_models/mnasnet1_0.pt", "convert_to":"converted_models/mnasnet1_0_torch.tflite", "network_script":"create_test_models.py", "input_shape":"1,3,224,224", "network_name":"Test_Model_Classification", "skip":"False" }, { "convert_from":"test_models/inception_v3.pt", "convert_to":"converted_models/inception_v3_torch.tflite", "network_script":"create_test_models.py", "input_shape":"1,3,299,299", "network_name":"Test_Model_Classification", "skip":"False" }, { "convert_from":"test_models/fcn_resnet50.pt", "convert_to":"converted_models/fcn_resnet50_torch.tflite", "network_script":"create_test_models.py", "input_shape":"1,3,224,224", "network_name":"Test_Model_Segmentation", "skip":"True" }, { "convert_from":"test_models/deeplabv3_resnet50.pt", "convert_to":"converted_models/deeplabv3_resnet50_torch.tflite", "network_script":"create_test_models.py", "input_shape":"1,3,224,224", "network_name":"Test_Model_Segmentation", "skip":"True" }, { "convert_from":"test_models/r3d_18.pt", "convert_to":"converted_models/r3d_18_torch.tflite", "network_script":"create_test_models.py", "input_shape":"1,3,16,112,112", "network_name":"Test_Model_Video", "skip":"True" }, { "convert_from":"test_models/mc3_18.pt", "convert_to":"converted_models/mc3_18_torch.tflite", "network_script":"create_test_models.py", "input_shape":"1,3,16,112,112", "network_name":"Test_Model_Video", "skip":"True" }, { "convert_from":"test_models/r2plus1d_18.pt", "convert_to":"converted_models/r2plus1d_18_torch.tflite", "network_script":"create_test_models.py", "input_shape":"1,3,16,112,112", "network_name":"Test_Model_Video", "skip":"True" } ] ================================================ FILE: Examples/converter_examples/Tested_Models/conversion_jsons/convert_savedmodel_to_onnx.json ================================================ [ { "convert_from":"test_models/resnet_50_TF2", "convert_to":"converted_models/resnet_50_TF2_converted.onnx", "skip": "False" }, { "convert_from":"test_models/efficientnet_b1_TF2", "convert_to":"converted_models/efficientnet_b1_TF2_converted.onnx", "skip": "False" }, { "convert_from":"test_models/ssd_mobilenet_v1_coco_2018_01_28/saved_model", "convert_to":"converted_models/ssd_mobilenet_v1_converted.onnx", "skip": "False" }, { "convert_from":"test_models/ssd_mobilenet_v2_coco_2018_03_29/saved_model", "convert_to":"converted_models/ssd_mobilenet_v2_converted.onnx", "skip": "False" }, { "convert_from":"test_models/lstm_savedmodel", "convert_to":"converted_models/lstm_savedmodel_converted.onnx", "skip": "False" }, { "convert_from":"test_models/gru_savedmodel", "convert_to":"converted_models/gru_savedmodel_converted.onnx", "skip": "False" } ] ================================================ FILE: Examples/converter_examples/Tested_Models/conversion_jsons/convert_savedmodel_to_tflite.json ================================================ [ { "convert_from":"test_models/resnet_50_TF2", "convert_to":"converted_models/resnet_50_TF2_converted.tflite", "skip": "False" }, { "convert_from":"test_models/efficientnet_b1_TF2", "convert_to":"converted_models/efficientnet_b1_TF2_converted.tflite", "skip": "False" }, { "convert_from":"test_models/lstm_savedmodel", "convert_to":"converted_models/lstm_savedmodel_converted.tflite", "skip": "False" }, { "convert_from":"test_models/gru_savedmodel", "convert_to":"converted_models/gru_savedmodel_converted.tflite", "skip": "False" }, { "convert_from":"test_models/ssd_mobilenet_v1_coco_2018_01_28/saved_model", "convert_to":"converted_models/ssd_mobilenet_v1_converted.tflite", "skip": "True" }, { "convert_from":"test_models/ssd_mobilenet_v1_coco_2018_01_28/saved_model", "convert_to":"converted_models/ssd_mobilenet_v1_converted.tflite", "skip": "True" } ] ================================================ FILE: Examples/converter_examples/Tested_Models/convert_pb_to_tflite.json ================================================ [ { "convert_from":"test_models/densenet/densenet.pb", "convert_to":"converted_models/densenet_converted.tflite", "input_nodes":"Placeholder", "output_nodes":"softmax_tensor:0,ArgMax:0" } ] ================================================ FILE: Examples/converter_examples/Tested_Models/create_test_models.py ================================================ # Copyright (c) 2020 LG Electronics Inc. # SPDX-License-Identifier: GPL-3.0-or-later import torchvision.models as models import torch import torch.nn as nn import tensorflow.keras.applications as applications import tensorflow as tf from tensorflow import keras from tensorflow.keras import layers from tensorflow.python.util import deprecation import string deprecation._PRINT_DEPRECATION_WARNINGS = False keras_model_list = [ "VGG16", "ResNet50", "InceptionV3", "MobileNet", "MobileNetV2", "DenseNet121", "NASNetMobile" ] classification_model_list = [ "resnet18", "alexnet", "squeezenet1_0", "densenet161", "inception_v3", "googlenet", "shufflenet_v2_x1_0", "mobilenet_v2", "resnext50_32x4d", "wide_resnet50_2", "mnasnet1_0" ] segmentation_model_list = [ "fcn_resnet50", "deeplabv3_resnet50" ] video_model_list = [ "r3d_18", "mc3_18", "r2plus1d_18" ] class Test_Model_Classification(object): def __init__(self, model_name): self.func = getattr(models, model_name) def create_model(self): model = self.func() return model class Test_Model_Segmentation(object): def __init__(self, model_name): self.func = getattr(models.segmentation, model_name) def create_model(self): model = self.func() return model class Test_Model_Video(object): def __init__(self, model_name): self.func = getattr(models.video, model_name) def create_model(self): model = self.func() return model def create_torch_cnn_models(): for model_name in classification_model_list: if model_name == "inception_v3": x = torch.randn(1, 3, 299, 299) else: x = torch.randn(1, 3, 224, 224) print("Creating model", model_name) model = Test_Model_Classification(model_name).create_model() model.eval() y = model(x) save_path = "test_models/" + model_name + ".pt" torch.save(model, save_path) print("Created Pytorch model saved to", save_path) for model_name in segmentation_model_list: x = torch.randn(1, 3, 224, 224) print("Creating model", model_name) model = Test_Model_Segmentation(model_name).create_model() model.eval() y = model(x) save_path = "test_models/" + model_name + ".pt" torch.save(model, save_path) print("Created Pytorch model saved to", save_path) for model_name in video_model_list: x = torch.randn(1, 3, 16, 112, 112) print("Creating model", model_name) model = Test_Model_Video(model_name).create_model() model.eval() y = model(x) save_path = "test_models/" + model_name + ".pt" torch.save(model, save_path) print("Created Pytorch model saved to", save_path) def create_keras_cnn_models(): for cls_name in keras_model_list: model_func = getattr(applications, cls_name) model = model_func(weights = None) save_path = "test_models/" + cls_name + ".h5" model.save(save_path) print("Created Keras model saved to", save_path) def create_tf_lstm_model(): tf.compat.v1.disable_eager_execution() # Create a test lstm network based on Pytorch doc model = keras.Sequential() # Add an Embedding layer expecting input vocab of size 1000, and # output embedding dimension of size 64. model.add(layers.Embedding(input_dim=1000, output_dim=64)) model.add(layers.LSTM(128)) model.add(layers.Dense(10)) # save checkpoint model.save_weights("test_models/lstm_ckpt/ckpt") ckpt_meta = "test_models/lstm_ckpt/ckpt.meta" tf.compat.v1.train.export_meta_graph(filename=ckpt_meta) # save keras model model.save("test_models/lstm.h5") # save TF savedmodel model.save("test_models/lstm_savedmodel", save_format='tf') # print model input/output names print("lstm model input name:", model.input) print("lstm model output name:",model.output) def create_tf_gru_model(): tf.compat.v1.disable_eager_execution() # Create a test rnn network based on Pytorch doc model = keras.Sequential() model.add(layers.Embedding(input_dim=1000, output_dim=64)) # The output of GRU will be a 3D tensor of shape (batch_size, timesteps, 256) model.add(layers.GRU(256, return_sequences=True)) # The output of SimpleRNN will be a 2D tensor of shape (batch_size, 128) model.add(layers.SimpleRNN(128)) model.add(layers.Dense(10)) # save keras model model.save("test_models/gru_TF1.h5") # save TF savedmodel model.save("test_models/gru_savedmodel",save_format='tf') # print model input/output names print("gru model input name:", model.input) print("gru model output name:", model.output) if __name__ == "__main__": create_torch_cnn_models() create_keras_cnn_models() create_tf_lstm_model() create_tf_gru_model() ================================================ FILE: Examples/converter_examples/Tested_Models/download_models.py ================================================ # Copyright (c) 2020 LG Electronics Inc. # SPDX-License-Identifier: GPL-3.0-or-later import os import json import argparse import logging import requests import shutil def download_all_url(url_file, model_folder): try: with open(url_file) as f: all_urls = json.load(f) except Exception as e: logging.fatal("The url json file could not be opened") raise e for model_type in all_urls: url_list = all_urls[model_type] for model_name in url_list: url = url_list[model_name] # print(url) tarFilename = url.split('/')[-1] # check if the tar file already exists on disk # if not tarFilename[0].isdigit() and os.path.isfile(tarFilename): if os.path.isfile(tarFilename): print ("File already exists, skipping ", url) continue print("Downloading ", url) response = requests.get(url, stream=True) if response.status_code == 200: with open(tarFilename, 'wb') as f: f.write(response.raw.read()) if tarFilename[0].isdigit(): save_folder = model_folder + "/" + model_name else: save_folder = model_folder shutil.unpack_archive(tarFilename, save_folder) if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument("--url_file", required=True, help="Json file with urls for downloading models") parser.add_argument("--model_folder", default="test_models", help="folder path for saving downloaded models") args, unknownargs = parser.parse_known_args() download_all_url(args.url_file, "test_models") ================================================ FILE: Examples/converter_examples/Tested_Models/download_urls.json ================================================ { "protobuf_checkpoint":{ "densenet": "https://storage.googleapis.com/download.tensorflow.org/models/tflite/model_zoo/upload_20180427/densenet_2018_04_27.tgz", "squeezenet": "https://storage.googleapis.com/download.tensorflow.org/models/tflite/model_zoo/upload_20180427/squeezenet_2018_04_27.tgz", "nasnet_mobile": "https://storage.googleapis.com/download.tensorflow.org/models/tflite/model_zoo/upload_20180427/nasnet_mobile_2018_04_27.tgz", "inception_v3": "https://storage.googleapis.com/download.tensorflow.org/models/tflite/model_zoo/upload_20180427/inception_v3_2018_04_27.tgz", "mobilenet_v1_0.25_224": "https://storage.googleapis.com/download.tensorflow.org/models/mobilenet_v1_2018_02_22/mobilenet_v1_0.25_224.tgz", "ssd_mobilenet_v1": "http://download.tensorflow.org/models/object_detection/ssd_mobilenet_v1_coco_2018_01_28.tar.gz", "ssd_mobilenet_v2": "http://download.tensorflow.org/models/object_detection/ssd_mobilenet_v2_coco_2018_03_29.tar.gz" }, "savedmodel":{ "resnet_50_TF2": "https://storage.googleapis.com/tfhub-modules/tensorflow/resnet_50/classification/1.tar.gz", "efficientnet_b1_TF2": "https://storage.googleapis.com/tfhub-modules/tensorflow/efficientnet/b1/feature-vector/1.tar.gz" } } ================================================ FILE: Examples/converter_examples/dlconvert_requirements.txt ================================================ keras2onnx==1.7.0 tf2onnx pytest pytest-cov torch pytorch2keras ================================================ FILE: Examples/decorator_example/origin.py ================================================ #---------------------------------- def func(hyperparameter): return 'training results' #---------------------------------- import tensorflow as tf FLAGS = tf.app.flags.FLAGS # some arguments defined in flags def main(unused): return "training results" if __name__ == "__main__": tf.app.run() #---------------------------------- ================================================ FILE: Examples/decorator_example/use_decorator.py ================================================ #---------------------------------- #!/usr/bin/env python import sys from aup import aup_args @aup_args def func(hyperparameter): return 'training results' if __name__ == "__main__": func(sys.argv[1]) #---------------------------------- #!/usr/bin/env python import tensorflow as tf from aup import aup_flags FLAGS = tf.app.flags.FLAGS # some arguments defined in flags @aup_flags(FLAGS) def main(): return "training results" if __name__ == "__main__": tf.app.run() #---------------------------------- ================================================ FILE: Examples/demo/.gitignore ================================================ env_template.ini hpo.py .aup/ experiment.json ================================================ FILE: Examples/demo/demo.yml ================================================ # The configurations that used for the recording, feel free to edit them config: # Specify a command to be executed # like `/bin/bash -l`, `ls`, or any other commands # the default is bash for Linux # or powershell.exe for Windows command: bash -l # Specify the current working directory path # the default is the current working directory path cwd: ./Examples/demo # Export additional ENV variables env: recording: true # Explicitly set the number of columns # or use `auto` to take the current # number of columns of your shell cols: 105 # Explicitly set the number of rows # or use `auto` to take the current # number of rows of your shell rows: 24 # Amount of times to repeat GIF # If value is -1, play once # If value is 0, loop indefinitely # If value is a positive number, loop n times repeat: 0 # Quality # 1 - 100 quality: 80 # Delay between frames in ms # If the value is `auto` use the actual recording delays frameDelay: auto # Maximum delay between frames in ms # Ignored if the `frameDelay` isn't set to `auto` # Set to `auto` to prevent limiting the max idle time maxIdleTime: 2000 # The surrounding frame box # The `type` can be null, window, floating, or solid` # To hide the title use the value null # Don't forget to add a backgroundColor style with a null as type frameBox: type: solid title: LGE-ARC-AdvancedAI/auptimizer style: border: 0px black solid # boxShadow: none # margin: 0px # Add a watermark image to the rendered gif # You need to specify an absolute path for # the image on your machine or a URL, and you can also # add your own CSS styles watermark: imagePath: /Users/jason.liu/.terminalizer/SVL-aai.png style: position: absolute right: 15px bottom: 15px width: 100px opacity: 0.9 # Cursor style can be one of # `block`, `underline`, or `bar` cursorStyle: block # Font family # You can use any font that is installed on your machine # in CSS-like syntax fontFamily: "Monaco, Lucida Console, Ubuntu Mono, Monospace" # The size of the font fontSize: 24 # The height of lines lineHeight: 1 # The spacing between letters letterSpacing: 0 # Theme theme: background: "transparent" foreground: "#afafaf" cursor: "#c7c7c7" black: "#232628" red: "#fc4384" green: "#b3e33b" yellow: "#ffa727" blue: "#75dff2" magenta: "#ae89fe" cyan: "#708387" white: "#d5d5d0" brightBlack: "#626566" brightRed: "#ff7fac" brightGreen: "#c8ed71" brightYellow: "#ebdf86" brightBlue: "#75dff2" brightMagenta: "#ae89fe" brightCyan: "#b1c6ca" brightWhite: "#f9f9f4" # Records, feel free to edit them records: - delay: 476 content: "\e[H\e[2J" - delay: 10 content: "\e]1337;RemoteHost=local\a\e]1337;CurrentDir=./Examples/demo\a\e]1337;ShellIntegrationVersion=13;shell=bash\a" - delay: 12 content: "\e]133;C;\a\e]1337;RemoteHost=local\a\e]1337;CurrentDir=./Examples/demo\a\e]133;D;0\a\e]133;A\a\e[0;35m>demo$> \e[0m\e]133;B\a" - delay: 1093 content: l - delay: 96 content: s - delay: 232 content: "\r\n" - delay: 13 content: "\e]133;C;\a\e[34m.\e[m\e[m \e[34m..\e[m\e[m origin.py\r\n" - delay: 5 content: "\e]1337;RemoteHost=local\a\e]1337;CurrentDir=./Examples/demo\a\e]133;D;0\a\e]133;A\a\e[0;35m>demo$> \e[0m\e]133;B\a" - delay: 1112 content: p - delay: 152 content: 'y' - delay: 48 content: t - delay: 144 content: h - delay: 57 content: o - delay: 128 content: 'n' - delay: 135 content: ' ' - delay: 112 content: '-' - delay: 200 content: m - delay: 103 content: ' ' - delay: 162 content: a - delay: 87 content: u - delay: 89 content: p - delay: 304 content: . - delay: 191 content: s - delay: 65 content: e - delay: 111 content: t - delay: 137 content: u - delay: 64 content: p - delay: 439 content: "\r\n" - delay: 15 content: "\e]133;C;\a" - delay: 130 content: "\e[1;30mINFO\e[0m - Using default user jason.liu\r\nEnvironment file, or hit ENTER to fill in details:" - delay: 703 content: "\r\nAuptimizer Environment path - Auptimizer_PATH (.aup):" - delay: 296 content: "\r\nAuptimizer Temp folder - TMP_FOLDER (/tmp/auptmp):" - delay: 233 content: "\r\nNumber of CPUs (4):" - delay: 207 content: "\r\nGPU template file or comma-separated IDs (none):" - delay: 200 content: "\r\nNode template file (none) or comma-separated nodes (user@ip:[port] [keyfile]):" - delay: 216 content: "\r\nAWS template file (none) or comma-separated nodes (user@ip):[port] [keyfile])" - delay: 416 content: "\r\nUsername (jason.liu):" - delay: 431 content: "\r\nOverwrite (y/N)" - delay: 423 content: "\r\n\e[1;30mINFO\e[0m - Write env.ini to .aup/env.ini\r\n" - delay: 138 content: "\e[32m2019-07-25 14:33:46\e[0m - \e[34maup.setupdb.sqlite\e[0m - \e[1;30mINFO\e[0m - SQLite3 Database is created at .aup/sqlite3.db\r\n" - delay: 11 content: "\e[1;30mINFO\e[0m - Following commands have finished automatically\r\n/usr/local/opt/python/bin/python3.7 -m aup.setupdb.sqlite .aup/env.ini --user jason.liu --cpu 4 --log info\r\n" - delay: 20 content: "\e]1337;RemoteHost=local\a\e]1337;CurrentDir=./Examples/demo\a\e]133;D;0\a\e]133;A\a\e[0;35m>demo$> \e[0m\e]133;B\a" - delay: 1316 content: l - delay: 120 content: s - delay: 144 content: ' ' - delay: 472 content: . - delay: 207 content: a - delay: 104 content: u - delay: 104 content: p - delay: 256 content: "\r\n" - delay: 14 content: "\e]133;C;\a\e[34m.\e[m\e[m \e[34m..\e[m\e[m env.ini sqlite3.db\r\n" - delay: 5 content: "\e]1337;RemoteHost=local\a\e]1337;CurrentDir=./Examples/demo\a\e]133;D;0\a\e]133;A\a\e[0;35m>demo$> \e[0m\e]133;B\a" - delay: 248 content: m - delay: 88 content: o - delay: 79 content: r - delay: 65 content: e - delay: 81 content: ' ' - delay: 191 content: . - delay: 201 content: a - delay: 103 content: u - delay: 88 content: p - delay: 264 content: / - delay: 198 content: e - delay: 74 content: 'n' - delay: 217 content: 'v.ini ' - delay: 184 content: "\r\n" - delay: 17 content: "\e]133;C;\a\e[?1h\e=\r[Auptimizer]\r\nAuptimizer_PATH = .aup\r\nTMP_FOLDER = /tmp/auptmp\r\nSQL_ENGINE = sqlite\r\nSQLITE_FILE = .aup/sqlite3.db\r\n\r\n\e[7m.aup/env.ini (END)\e[m\e[K" - delay: 826 content: "\r\e[K\e[?1l\e>" - delay: 5 content: "\e]1337;RemoteHost=local\a\e]1337;CurrentDir=./Examples/demo\a\e]133;D;0\a\e]133;A\a\e[0;35m>demo$> \e[0m\e]133;B\a" - delay: 977 content: p - delay: 185 content: 'y' - delay: 71 content: t - delay: 136 content: h - delay: 48 content: o - delay: 144 content: 'n' - delay: 136 content: ' ' - delay: 200 content: '-' - delay: 457 content: m - delay: 126 content: ' ' - delay: 1089 content: a - delay: 120 content: u - delay: 89 content: p - delay: 304 content: . - delay: 350 content: i - delay: 177 content: 'n' - delay: 130 content: i - delay: 230 content: t - delay: 433 content: "\r\n" - delay: 13 content: "\e]133;C;\a" - delay: 122 content: "\e[34maup.utils\e[0m - \e[1;30mINFO\e[0m - Auptimizer environment at .aup\r\n" - delay: 6 content: "\e[34maup.utils\e[0m - \e[1;30mINFO\e[0m - Use default connector at .aup/sqlite3.db\r\nscript name []:" - delay: 626 content: h - delay: 96 content: p - delay: 88 content: o - delay: 264 content: . - delay: 192 content: p - delay: 144 content: 'y' - delay: 296 content: "\r\ncomputing resource for experiment [cpu]:" - delay: 1128 content: "\r\nNumber of parallel execution on cpu, up to 4 [1]:" - delay: 1159 content: '2' - delay: 191 content: "\r\nmax/min the score [max]:" - delay: 1361 content: m - delay: 120 content: i - delay: 193 content: 'n' - delay: 591 content: "\r\nworking path, [default:./Examples/demo]:" - delay: 823 content: "\r\nproposer [random]:" - delay: 1385 content: "\r\n" - delay: 113 content: 'number of jobs [1]:' - delay: 1862 content: '1' - delay: 224 content: '0' - delay: 208 content: "\r\nrandom seed [0]" - delay: 927 content: "\r\nstart adding hyperparameters, use 'stop' for variable name or ctrl+c to exit\r\nname:" - delay: 1022 content: x - delay: 273 content: "\r\nrange (separated by ,):" - delay: 1512 content: '0' - delay: 280 content: ',' - delay: 752 content: '5' - delay: 225 content: "\r\ntype: [choice]:" - delay: 1263 content: f - delay: 144 content: l - delay: 168 content: o - delay: 64 content: a - delay: 104 content: t - delay: 80 content: "\r\nname:" - delay: 358 content: s - delay: 113 content: t - delay: 112 content: o - delay: 584 content: p - delay: 288 content: "\r\n\e[34maup.init\e[0m - \e[1;30mINFO\e[0m - Write experiment config to experiment.json\r\n" - delay: 28 content: "\e]1337;RemoteHost=local\a\e]1337;CurrentDir=./Examples/demo\a\e]133;D;0\a\e]133;A\a\e[0;35m>demo$> \e[0m\e]133;B\a" - delay: 602 content: m - delay: 64 content: o - delay: 49 content: r - delay: 71 content: e - delay: 113 content: ' ' - delay: 2554 content: "\r\n.aup/ experiment.json origin.py \r\n\e]133;D;0\a\e]133;A\a\e[0;35m>demo$> \e[0m\e]133;B\amore " - delay: 168 content: "\r\n.aup/ experiment.json origin.py \r\n\e]133;D;0\a\e]133;A\a\e[0;35m>demo$> \e[0m\e]133;B\amore " - delay: 864 content: o - delay: 303 content: r - delay: 105 content: i - delay: 136 content: 'gin.py ' - delay: 199 content: "\r\n" - delay: 13 content: "\e]133;C;\a\e[?1h\e=\r# Demonstration code for 1D function, centered around a=1\r\nfrom time import sleep\r\n\r\n\r\ndef demo_func(x, a=1, b=0):\r\n sleep(1)\r\n return (x-a)*(x-a)+b\r\n\r\n\e[7morigin.py (END)\e[m\e[K" - delay: 1609 content: "\r\e[K\e[?1l\e>" - delay: 5 content: "\e]1337;RemoteHost=local\a\e]1337;CurrentDir=./Examples/demo\a\e]133;D;0\a\e]133;A\a\e[0;35m>demo$> \e[0m\e]133;B\a" - delay: 2168 content: p - delay: 241 content: 'y' - delay: 183 content: t - delay: 56 content: h - delay: 103 content: o - delay: 184 content: 'n' - delay: 688 content: ' ' - delay: 136 content: '-' - delay: 257 content: m - delay: 151 content: ' ' - delay: 760 content: a - delay: 128 content: u - delay: 104 content: p - delay: 329 content: . - delay: 193 content: c - delay: 55 content: o - delay: 113 content: 'n' - delay: 55 content: v - delay: 217 content: e - delay: 79 content: r - delay: 168 content: t - delay: 129 content: ' ' - delay: 656 content: o - delay: 208 content: r - delay: 111 content: i - delay: 136 content: g - delay: 88 content: i - delay: 47 content: 'n' - delay: 273 content: . - delay: 208 content: 'py ' - delay: 568 content: e - delay: 247 content: x - delay: 120 content: p - delay: 128 content: e - delay: 97 content: r - delay: 176 content: 'iment.json ' - delay: 663 content: d - delay: 329 content: e - delay: 415 content: m - delay: 96 content: o - delay: 255 content: _ - delay: 219 content: f - delay: 87 content: u - delay: 199 content: 'n' - delay: 112 content: c - delay: 457 content: "\r\n" - delay: 14 content: "\e]133;C;\a" - delay: 106 content: "\e]1337;RemoteHost=local\a\e]1337;CurrentDir=./Examples/demo\a\e]133;D;0\a\e]133;A\a\e[0;35m>demo$> \e[0m\e]133;B\a" - delay: 669 content: l - delay: 80 content: s - delay: 120 content: "\r\n" - delay: 14 content: "\e]133;C;\a\e[34m.\e[m\e[m \e[34m..\e[m\e[m \e[34m.aup\e[m\e[m experiment.json \e[31mhpo.py\e[m\e[m origin.py\r\n\e]1337;RemoteHost=local\a\e]1337;CurrentDir=./Examples/demo\a\e]133;D;0\a\e]133;A\a\e[0;35m>demo$> \e[0m\e]133;B\a" - delay: 497 content: m - delay: 79 content: o - delay: 32 content: r - delay: 89 content: e - delay: 95 content: ' ' - delay: 280 content: h - delay: 96 content: p - delay: 64 content: o - delay: 281 content: . - delay: 184 content: p - delay: 111 content: 'y' - delay: 248 content: "\r\n" - delay: 13 content: "\e]133;C;\a\e[?1h\e=\r#!/usr/bin/env python\r\n# Demonstration code for 1D function, centered around a=1\r\nfrom time import sleep\r\n\r\n\r\ndef demo_func(x, a=1, b=0):\r\n sleep(1)\r\n return (x-a)*(x-a)+b\r\n\r\n\r\ndef aup_wrapper(config):\r\n res = demo_func(x=config['x']) \r\n print_result(res)\r\n\r\nif __name__ == \"__main__\":\r\n import sys\r\n from aup import BasicConfig, print_result\r\n if len(sys.argv) != 2:\r\n print(\"config file required\")\r\n exit(1)\r\n config = BasicConfig().load(sys.argv[1])\r\n aup_wrapper(config)\r\n\e[7mhpo.py (END)\e[m\e[K" - delay: 2905 content: "\r\e[K\e[?1l\e>" - delay: 5 content: "\e]1337;RemoteHost=local\a\e]1337;CurrentDir=./Examples/demo\a\e]133;D;0\a\e]133;A\a\e[0;35m>demo$> \e[0m\e]133;B\a" - delay: 808 content: p - delay: 160 content: 'y' - delay: 96 content: t - delay: 120 content: h - delay: 72 content: o - delay: 136 content: 'n' - delay: 127 content: ' ' - delay: 129 content: '-' - delay: 215 content: m - delay: 129 content: ' ' - delay: 327 content: a - delay: 113 content: u - delay: 103 content: p - delay: 265 content: . - delay: 1072 content: "\b\e[K" - delay: 96 content: ' ' - delay: 1023 content: e - delay: 216 content: x - delay: 105 content: p - delay: 127 content: e - delay: 120 content: r - delay: 152 content: i - delay: 129 content: 'ment.json ' - delay: 816 content: "\r\n" - delay: 21 content: "\e]133;C;\a" - delay: 120 content: "\e[32m2019-07-25 14:34:52\e[0m - \e[34mroot\e[0m - \e[1;30mINFO\e[0m - Using default user jason.liu\r\n\e[32m2019-07-25 14:34:52\e[0m - \e[34maup.utils\e[0m - \e[1;30mINFO\e[0m - Auptimizer environment at .aup\r\n" - delay: 5 content: "\e[32m2019-07-25 14:34:52\e[0m - \e[34maup.utils\e[0m - \e[1;30mINFO\e[0m - Use default connector at .aup/sqlite3.db\r\n" - delay: 75 content: "\e[32m2019-07-25 14:34:52\e[0m - \e[34maup.EE.Experiment\e[0m - \e[1;30mINFO\e[0m - Experiment 1 is created\r\n\e[32m2019-07-25 14:34:52\e[0m - \e[34maup\e[0m - \e[1;30mINFO\e[0m - # Running Experiment\r\n\e[32m2019-07-25 14:34:52\e[0m - \e[34maup.EE.Job\e[0m - \e[1;30mWARNING\e[0m - \e[33mUsing default local path for script as ./hpo.py\e[0m\r\n\e[32m2019-07-25 14:34:52\e[0m - \e[34maup.EE.Experiment\e[0m - \e[1;30mINFO\e[0m - Submitting job 1 with resource 2 in experiment 1\r\n\e[32m2019-07-25 14:34:52\e[0m - \e[34maup.EE.Job\e[0m - \e[1;30mWARNING\e[0m - \e[33mCreate missing directory ./Examples/demo/jobs\e[0m\r\n" - delay: 5 content: "\e[32m2019-07-25 14:34:52\e[0m - \e[34maup.EE.Experiment\e[0m - \e[1;30mINFO\e[0m - Submitting job 2 with resource 1 in experiment 1\r\n" - delay: 1090 content: "\e[32m2019-07-25 14:34:54\e[0m - \e[34maup.EE.Experiment\e[0m - \e[1;30mINFO\e[0m - Job 1 is finished with result 3.041771513051445\r\n\e[32m2019-07-25 14:34:54\e[0m - \e[34maup.EE.Experiment\e[0m - \e[1;30mINFO\e[0m - Submitting job 3 with resource 3 in experiment 1\r\n\e[32m2019-07-25 14:34:54\e[0m - \e[34maup.EE.Experiment\e[0m - \e[1;30mINFO\e[0m - Job 2 is finished with result 6.635502080580377\r\n\e[32m2019-07-25 14:34:54\e[0m - \e[34maup.EE.Experiment\e[0m - \e[1;30mINFO\e[0m - Submitting job 4 with resource 4 in experiment 1\r\n" - delay: 1100 content: "\e[32m2019-07-25 14:34:55\e[0m - \e[34maup.EE.Experiment\e[0m - \e[1;30mINFO\e[0m - Job 3 is finished with result 4.0554584276157115\r\n\e[32m2019-07-25 14:34:55\e[0m - \e[34maup.EE.Experiment\e[0m - \e[1;30mINFO\e[0m - Submitting job 5 with resource 2 in experiment 1\r\n" - delay: 5 content: "\e[32m2019-07-25 14:34:55\e[0m - \e[34maup.EE.Experiment\e[0m - \e[1;30mINFO\e[0m - Job 4 is finished with result 2.973610247851776\r\n\e[32m2019-07-25 14:34:55\e[0m - \e[34maup.EE.Experiment\e[0m - \e[1;30mINFO\e[0m - Submitting job 6 with resource 1 in experiment 1\r\n" - delay: 1100 content: "\e[32m2019-07-25 14:34:56\e[0m - \e[34maup.EE.Experiment\e[0m - \e[1;30mINFO\e[0m - Job 5 is finished with result 1.2505367316831435\r\n\e[32m2019-07-25 14:34:56\e[0m - \e[34maup.EE.Experiment\e[0m - \e[1;30mINFO\e[0m - Submitting job 7 with resource 4 in experiment 1\r\n\e[32m2019-07-25 14:34:56\e[0m - \e[34maup.EE.Experiment\e[0m - \e[1;30mINFO\e[0m - Job 6 is finished with result 4.970539001687499\r\n\e[32m2019-07-25 14:34:56\e[0m - \e[34maup.EE.Experiment\e[0m - \e[1;30mINFO\e[0m - Submitting job 8 with resource 3 in experiment 1\r\n" - delay: 1103 content: "\e[32m2019-07-25 14:34:57\e[0m - \e[34maup.EE.Experiment\e[0m - \e[1;30mINFO\e[0m - Job 7 is finished with result 1.4111920738895818\r\n\e[32m2019-07-25 14:34:57\e[0m - \e[34maup.EE.Experiment\e[0m - \e[1;30mINFO\e[0m - Submitting job 9 with resource 1 in experiment 1\r\n\e[32m2019-07-25 14:34:57\e[0m - \e[34maup.EE.Experiment\e[0m - \e[1;30mINFO\e[0m - Job 8 is finished with result 11.963747115276082\r\n\e[32m2019-07-25 14:34:57\e[0m - \e[34maup.EE.Experiment\e[0m - \e[1;30mINFO\e[0m - Submitting job 10 with resource 4 in experiment 1\r\n" - delay: 1101 content: "\e[32m2019-07-25 14:34:58\e[0m - \e[34maup.EE.Experiment\e[0m - \e[1;30mINFO\e[0m - Job 9 is finished with result 14.579520294401313\r\n\e[32m2019-07-25 14:34:58\e[0m - \e[34maup.EE.Experiment\e[0m - \e[1;30mINFO\e[0m - Job 10 is finished with result 0.8412697707277041\r\n" - delay: 488 content: "\e[32m2019-07-25 14:34:58\e[0m - \e[34maup.EE.Experiment\e[0m - \e[1;30mINFO\e[0m - Finished\r\n\e[32m2019-07-25 14:34:58\e[0m - \e[34maup.EE.Experiment\e[0m - \e[1;30mCRITICAL\e[0m - \e[1;31mBest job (10) with score 0.841270 in experiment 1\e[0m\r\n" - delay: 37 content: "\e]1337;RemoteHost=local\a\e]1337;CurrentDir=./Examples/demo\a\e]133;D;0\a\e]133;A\a\e[0;35m>demo$> \e[0m\e]133;B\a" - delay: 2077 content: l - delay: 88 content: s - delay: 145 content: ' ' - delay: 167 content: j - delay: 72 content: o - delay: 96 content: b - delay: 169 content: s - delay: 135 content: "\r\n" - delay: 13 content: "\e]133;C;\a\e[34m.\e[m\e[m 1.json 10.json 2.json 3.json 4.json 5.json 6.json 7.json 8.json 9.json\r\n\e[34m..\e[m\e[m 1.out 10.out 2.out 3.out 4.out 5.out 6.out 7.out 8.out 9.out\r\n" - delay: 5 content: "\e]1337;RemoteHost=local\a\e]1337;CurrentDir=./Examples/demo\a\e]133;D;0\a\e]133;A\a\e[0;35m>demo$> \e[0m\e]133;B\a" ================================================ FILE: Examples/demo/experiment_wrapper.json ================================================ { "name": "./demo/experiment_wrapper.json", "script": "hpo_wrapper.py", "resource": "cpu", "n_parallel": 2, "target": "min", "workingdir": "./", "proposer": "random", "n_samples": 10, "random_seed": 0, "parameter_config": [ { "name": "x", "range": [ 0, 5 ], "type": "float" } ] } ================================================ FILE: Examples/demo/hpo_wrapper.py ================================================ #!/usr/bin/env python # Demonstration code for 1D function, centered around a=1 from time import sleep from aup import aup_args import sys @aup_args def demo_func(x, a=1, b=0): sleep(1) return (x-a)*(x-a)+b if __name__ == "__main__": demo_func(sys.argv[1]) ================================================ FILE: Examples/demo/origin.py ================================================ # Demonstration code for 1D function, centered around a=1 from time import sleep def demo_func(x, a=1, b=0): sleep(1) return (x-a)*(x-a)+b ================================================ FILE: Examples/early_stopping/README.md ================================================ # Early stopping of jobs ## Usage In order to use early stopping to accelerate the HPO experiment, we need to add the following lines in the JSON configuration file: "resource_args": { "early_stop": { "aup_policy": "X", "aup_policy_steps": Y ... } } X can be bandit, median, truncation or curve_fitting. Y refers to the interval of epochs/iterations by which the ES policy is applied. In order to report intermediate results, "aup.print_result" should be called from the user script; e.g. at the end of an epoch, at the end of N iterations, etc. Examples can be found at Examples/early_stopping/quad_equation_min and Examples/early_stopping/mnist_keras. An additional parameter of "warmup" can also be used for all ES strategies (default is 0). "warmup" defines the number of initial iterations that should finish without an early stopping criterion. ## Strategies We provide 4 strategies for early stopping: bandit, truncation, median and curve fitting. Please checkout [early stopping document](https://lge-arc-advancedai.github.io/auptimizer/early_stop.html) for detailed usages. ================================================ FILE: Examples/early_stopping/mnist_keras/cpu.ini ================================================ [Auptimizer] # Auptimizer environment folder to be created, this file will be copied over Auptimizer_PATH=./.aup # Temp folder TMP_FOLDER=./aup_tmp # SQL engine SQL_ENGINE=sqlite ================================================ FILE: Examples/early_stopping/mnist_keras/exp_BOHB_bandit.json ================================================ { "name": "./early_stopping/mnist_keras/exp_BOHB_bandit.json", "proposer": "bohb", "script": "mnist.py", "resource": "cpu", "n_parallel": 4, "target":"max", "n_iterations": 50, "num_samples": 64, "random_fraction": 0.3333333333333333, "bandwidth_factor": 3, "min_bandwidth": 0.001, "eta": 3, "min_budget": 1, "max_budget": 5, "resource_args": { "early_stop": { "aup_policy": "bandit", "aup_policy_steps": 10, "bandit_factor": 0.5 } }, "parameter_config": [ { "name": "dropout", "range": [0.0, 0.5], "type": "float" }, { "name": "learning_rate", "range": [ 0.001, 0.01 ], "type": "float" }, { "name": "conv1", "range": [ 20, 50 ], "type": "int" }, { "name": "conv2", "range": [ 40, 80 ], "type": "int" } ] } ================================================ FILE: Examples/early_stopping/mnist_keras/exp_BOHB_curve_fitting.json ================================================ { "name": "./early_stopping/mnist_keras/exp_BOHB_curve_fitting.json", "proposer": "bohb", "script": "mnist.py", "resource": "cpu", "n_parallel": 4, "target":"max", "n_iterations": 50, "num_samples": 64, "random_fraction": 0.3333333333333333, "bandwidth_factor": 3, "min_bandwidth": 0.001, "eta": 3, "min_budget": 1, "max_budget": 5, "resource_args": { "early_stop": { "aup_policy": "curve_fitting", "aup_policy_steps": 10, "curve_fitting_max_iters": 235, "curve_fitting_threshold": 0.95, "curve_fitting_timeout": 60 } }, "parameter_config": [ { "name": "dropout", "range": [0.0, 0.5], "type": "float" }, { "name": "learning_rate", "range": [ 0.001, 0.01 ], "type": "float" }, { "name": "conv1", "range": [ 20, 50 ], "type": "int" }, { "name": "conv2", "range": [ 40, 80 ], "type": "int" } ] } ================================================ FILE: Examples/early_stopping/mnist_keras/exp_BOHB_median.json ================================================ { "name": "./early_stopping/mnist_keras/exp_BOHB_median.json", "proposer": "bohb", "script": "mnist.py", "resource": "cpu", "n_parallel": 4, "target":"max", "n_iterations": 50, "num_samples": 64, "random_fraction": 0.3333333333333333, "bandwidth_factor": 3, "min_bandwidth": 0.001, "eta": 3, "min_budget": 1, "max_budget": 5, "resource_args": { "early_stop": { "aup_policy": "median", "aup_policy_steps": 10 } }, "parameter_config": [ { "name": "dropout", "range": [0.0, 0.5], "type": "float" }, { "name": "learning_rate", "range": [ 0.001, 0.01 ], "type": "float" }, { "name": "conv1", "range": [ 20, 50 ], "type": "int" }, { "name": "conv2", "range": [ 40, 80 ], "type": "int" } ] } ================================================ FILE: Examples/early_stopping/mnist_keras/exp_BOHB_trunc.json ================================================ { "name": "./early_stopping/mnist_keras/exp_BOHB_trunc.json", "proposer": "bohb", "script": "mnist.py", "resource": "cpu", "n_parallel": 4, "target":"max", "n_iterations": 50, "num_samples": 64, "random_fraction": 0.3333333333333333, "bandwidth_factor": 3, "min_bandwidth": 0.001, "eta": 3, "min_budget": 1, "max_budget": 5, "resource_args": { "early_stop": { "aup_policy": "truncation", "aup_policy_steps": 10, "truncation_percentage": 0.3 } }, "parameter_config": [ { "name": "dropout", "range": [0.0, 0.5], "type": "float" }, { "name": "learning_rate", "range": [ 0.001, 0.01 ], "type": "float" }, { "name": "conv1", "range": [ 20, 50 ], "type": "int" }, { "name": "conv2", "range": [ 40, 80 ], "type": "int" } ] } ================================================ FILE: Examples/early_stopping/mnist_keras/exp_random_bandit.json ================================================ { "name": "./early_stopping/mnist_keras/exp_random_bandit.json", "proposer": "random", "script": "mnist.py", "resource": "cpu", "n_parallel": 4, "target":"max", "n_samples": 50, "resource_args": { "early_stop": { "aup_policy": "bandit", "aup_policy_steps": 10, "bandit_factor": 0.5 } }, "parameter_config": [ { "name": "dropout", "range": [0.0, 0.5], "type": "float" }, { "name": "learning_rate", "range": [ 0.001, 0.01 ], "type": "float" }, { "name": "conv1", "range": [ 20, 50 ], "type": "int" }, { "name": "conv2", "range": [ 40, 80 ], "type": "int" } ] } ================================================ FILE: Examples/early_stopping/mnist_keras/exp_random_curve_fitting.json ================================================ { "name": "./early_stopping/mnist_keras/exp_random_curve_fitting.json", "proposer": "random", "script": "mnist.py", "resource": "cpu", "n_parallel": 4, "target":"max", "n_samples": 50, "resource_args": { "early_stop": { "aup_policy": "curve_fitting", "aup_policy_steps": 10, "curve_fitting_max_iters": 235, "curve_fitting_threshold": 0.95, "curve_fitting_timeout": 60 } }, "parameter_config": [ { "name": "dropout", "range": [0.0, 0.5], "type": "float" }, { "name": "learning_rate", "range": [ 0.001, 0.01 ], "type": "float" }, { "name": "conv1", "range": [ 20, 50 ], "type": "int" }, { "name": "conv2", "range": [ 40, 80 ], "type": "int" } ] } ================================================ FILE: Examples/early_stopping/mnist_keras/exp_random_median.json ================================================ { "name": "./early_stopping/mnist_keras/exp_random_median.json", "proposer": "random", "script": "mnist.py", "resource": "cpu", "n_parallel": 4, "target":"max", "n_samples": 50, "resource_args": { "early_stop": { "aup_policy": "median", "aup_policy_steps": 10 } }, "parameter_config": [ { "name": "dropout", "range": [0.0, 0.5], "type": "float" }, { "name": "learning_rate", "range": [ 0.001, 0.01 ], "type": "float" }, { "name": "conv1", "range": [ 20, 50 ], "type": "int" }, { "name": "conv2", "range": [ 40, 80 ], "type": "int" } ] } ================================================ FILE: Examples/early_stopping/mnist_keras/exp_random_trunc.json ================================================ { "name": "./early_stopping/mnist_keras/exp_random_trunc.json", "proposer": "random", "script": "mnist.py", "resource": "cpu", "n_parallel": 4, "target":"max", "n_samples": 50, "resource_args": { "early_stop": { "aup_policy": "truncation", "aup_policy_steps": 10, "truncation_percentage": 0.3 } }, "parameter_config": [ { "name": "dropout", "range": [0.0, 0.5], "type": "float" }, { "name": "learning_rate", "range": [ 0.001, 0.01 ], "type": "float" }, { "name": "conv1", "range": [ 20, 50 ], "type": "int" }, { "name": "conv2", "range": [ 40, 80 ], "type": "int" } ] } ================================================ FILE: Examples/early_stopping/mnist_keras/exp_spearmint_bandit.json ================================================ { "name": "./early_stopping/mnist_keras/exp_spearmint_bandit.json", "proposer": "spearmint", "script": "mnist.py", "resource": "cpu", "n_parallel": 4, "target":"max", "engine":"GPEIChooser", "n_samples": 50, "resource_args": { "early_stop": { "aup_policy": "bandit", "aup_policy_steps": 10, "bandit_factor": 0.5 } }, "parameter_config": [ { "name": "dropout", "range": [0.0, 0.5], "type": "float" }, { "name": "learning_rate", "range": [ 0.001, 0.01 ], "type": "float" }, { "name": "conv1", "range": [ 20, 50 ], "type": "int" }, { "name": "conv2", "range": [ 40, 80 ], "type": "int" } ] } ================================================ FILE: Examples/early_stopping/mnist_keras/exp_spearmint_curve_fitting.json ================================================ { "name": "./early_stopping/mnist_keras/exp_spearmint_curve_fitting.json", "proposer": "spearmint", "script": "mnist.py", "resource": "cpu", "n_parallel": 4, "target":"max", "engine":"GPEIChooser", "n_samples": 50, "resource_args": { "early_stop": { "aup_policy": "curve_fitting", "aup_policy_steps": 10, "curve_fitting_max_iters": 235, "curve_fitting_threshold": 0.95, "curve_fitting_timeout": 60 } }, "parameter_config": [ { "name": "dropout", "range": [0.0, 0.5], "type": "float" }, { "name": "learning_rate", "range": [ 0.001, 0.01 ], "type": "float" }, { "name": "conv1", "range": [ 20, 50 ], "type": "int" }, { "name": "conv2", "range": [ 40, 80 ], "type": "int" } ] } ================================================ FILE: Examples/early_stopping/mnist_keras/exp_spearmint_median.json ================================================ { "name": "./early_stopping/mnist_keras/exp_spearmint_median.json", "proposer": "spearmint", "script": "mnist.py", "resource": "cpu", "n_parallel": 4, "target":"max", "engine":"GPEIChooser", "n_samples": 50, "resource_args": { "early_stop": { "aup_policy": "median", "aup_policy_steps": 10 } }, "parameter_config": [ { "name": "dropout", "range": [0.0, 0.5], "type": "float" }, { "name": "learning_rate", "range": [ 0.001, 0.01 ], "type": "float" }, { "name": "conv1", "range": [ 20, 50 ], "type": "int" }, { "name": "conv2", "range": [ 40, 80 ], "type": "int" } ] } ================================================ FILE: Examples/early_stopping/mnist_keras/exp_spearmint_trunc.json ================================================ { "name": "./early_stopping/mnist_keras/exp_spearmint_trunc.json", "proposer": "spearmint", "script": "mnist.py", "resource": "cpu", "n_parallel": 4, "target":"max", "engine":"GPEIChooser", "n_samples": 50, "resource_args": { "early_stop": { "aup_policy": "truncation", "aup_policy_steps": 10, "truncation_percentage": 0.3 } }, "parameter_config": [ { "name": "dropout", "range": [0.0, 0.5], "type": "float" }, { "name": "learning_rate", "range": [ 0.001, 0.01 ], "type": "float" }, { "name": "conv1", "range": [ 20, 50 ], "type": "int" }, { "name": "conv2", "range": [ 40, 80 ], "type": "int" } ] } ================================================ FILE: Examples/early_stopping/mnist_keras/mnist.py ================================================ #!/usr/bin/env python3 """ MNIST convolutional network using Keras ============================================ .. Copyright (c) 2018 LG Electronics Inc. SPDX-License-Identifier: GPL-3.0-or-later """ import aup import tensorflow as tf import numpy as np from tensorflow import keras from tensorflow.keras import layers from math import log import sys num_epochs = 5 batch_size = 64 num_classes = 10 input_shape = (28, 28, 1) # Load example MNIST data and pre-process it # the data, split between train and test sets (x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data() # Scale images to the [0, 1] range x_train = x_train.astype("float32") / 255 x_test = x_test.astype("float32") / 255 # Make sure images have shape (28, 28, 1) x_train = np.expand_dims(x_train, -1) x_test = np.expand_dims(x_test, -1) # convert class vectors to binary class matrices y_train = keras.utils.to_categorical(y_train, num_classes) y_test = keras.utils.to_categorical(y_test, num_classes) def get_flops(): run_meta = tf.RunMetadata() opts = tf.profiler.ProfileOptionBuilder.float_operation() # We use the Keras session graph in the call to the profiler. flops = tf.profiler.profile(graph=keras.backend.get_session().graph, run_meta=run_meta, cmd='op', options=opts) return flops.total_float_ops # Prints the "flops" of the model. def get_model(**kwargs): model = keras.Sequential( [ keras.Input(shape=input_shape), layers.Conv2D(kwargs['conv1'], kernel_size=(3, 3), activation="relu"), layers.MaxPooling2D(pool_size=(2, 2)), layers.Conv2D(kwargs['conv2'], kernel_size=(3, 3), activation="relu"), layers.MaxPooling2D(pool_size=(2, 2)), layers.Flatten(), layers.Dropout(kwargs['dropout']), layers.Dense(num_classes, activation="softmax"), ] ) model.compile(loss="categorical_crossentropy", optimizer=keras.optimizers.Adam(learning_rate=kwargs['learning_rate']), metrics=["accuracy"]) return model class CustomCallback(keras.callbacks.Callback): flops = None def on_train_batch_end(self, batch, logs=None): if batch % 10 == 0: val_acc = logs["acc"] aup.print_result((val_acc-1.0) / (log(self.flops))) def on_train_begin(self, logs=None): self.flops = get_flops() def init(**kwargs): global model model = get_model(**kwargs) @aup.aup_args def do_train(learning_rate=0.001, dropout=0.1, conv1=32, conv2=64): global model model.fit( x_train, y_train, batch_size=batch_size, epochs=num_epochs, verbose=1, validation_split=0.5, callbacks=[CustomCallback()], ) res = model.evaluate( x_test, y_test, batch_size=batch_size, verbose=1, ) flops = get_flops() return (res[1]-1.0) / log(flops) if __name__ == '__main__': if len(sys.argv) < 2: print("config file required") exit(1) do_train(sys.argv[1]) ================================================ FILE: Examples/early_stopping/quad_equation_min/cpu.ini ================================================ [Auptimizer] # Auptimizer environment folder to be created, this file will be copied over Auptimizer_PATH=./.aup # Temp folder TMP_FOLDER=./aup_tmp # SQL engine SQL_ENGINE=sqlite ================================================ FILE: Examples/early_stopping/quad_equation_min/quad_min.py ================================================ #!/usr/bin/env python """ Modified Rosenbrock function for HPO and aup ============================================ .. Copyright (c) 2018 LG Electronics Inc. SPDX-License-Identifier: GPL-3.0-or-later """ import sys import aup from time import sleep def rosenbrock(x, a=2, b=4, c=5): sleep(1) it = 1.0 for _ in range(10): res = x*x*a + x*b + c res += it it -= 1.0 / 10 aup.print_result(res) if __name__ == "__main__": if len(sys.argv) != 2: print("config file required") exit(1) config = aup.BasicConfig().load(sys.argv[1]) rosenbrock(config['x']) ================================================ FILE: Examples/early_stopping/quad_equation_min/quad_min_BOHB_bandit.json ================================================ { "name": "./early_stopping/quad_equation_min/quad_min_BOHB_bandit.json", "proposer": "bohb", "script": "quad_min.py", "resource": "cpu", "n_parallel": 4, "target":"min", "n_iterations": 100, "num_samples": 64, "random_fraction": 0.3333333333333333, "bandwidth_factor": 3, "min_bandwidth": 0.001, "eta": 3, "min_budget": 1, "max_budget": 5, "resource_args": { "early_stop": { "aup_policy": "bandit", "aup_policy_steps": 1, "bandit_factor": 0.5 } }, "parameter_config": [ { "name": "x", "range": [-1.0, 100.0], "type": "float" } ] } ================================================ FILE: Examples/early_stopping/quad_equation_min/quad_min_BOHB_median.json ================================================ { "name": "./early_stopping/quad_equation_min/quad_min_BOHB_median.json", "proposer": "bohb", "script": "quad_min.py", "resource": "cpu", "n_parallel": 4, "target":"min", "n_iterations": 100, "num_samples": 64, "random_fraction": 0.3333333333333333, "bandwidth_factor": 3, "min_bandwidth": 0.001, "eta": 3, "min_budget": 1, "max_budget": 5, "resource_args": { "early_stop": { "aup_policy": "median", "aup_policy_steps": 1 } }, "parameter_config": [ { "name": "x", "range": [-1.0, 100.0], "type": "float" } ] } ================================================ FILE: Examples/early_stopping/quad_equation_min/quad_min_BOHB_trunc.json ================================================ { "name": "./early_stopping/quad_equation_min/quad_min_BOHB_trunc.json", "proposer": "bohb", "script": "quad_min.py", "resource": "cpu", "n_parallel": 4, "target":"min", "n_iterations": 100, "num_samples": 64, "random_fraction": 0.3333333333333333, "bandwidth_factor": 3, "min_bandwidth": 0.001, "eta": 3, "min_budget": 1, "max_budget": 5, "resource_args": { "early_stop": { "aup_policy": "truncation", "aup_policy_steps": 1, "truncation_percentage": 0.7 } }, "parameter_config": [ { "name": "x", "range": [-1.0, 100.0], "type": "float" } ] } ================================================ FILE: Examples/early_stopping/quad_equation_min/quad_min_random_bandit.json ================================================ { "name": "./early_stopping/quad_equation_min/quad_min_random_bandit.json", "proposer": "random", "script": "quad_min.py", "resource": "cpu", "n_parallel": 4, "target":"min", "n_samples": 200, "resource_args": { "early_stop": { "aup_policy": "bandit", "aup_policy_steps": 1, "bandit_factor": 0.5 } }, "parameter_config": [ { "name": "x", "range": [-1.0, 100.0], "type": "float" } ] } ================================================ FILE: Examples/early_stopping/quad_equation_min/quad_min_random_median.json ================================================ { "name": "./early_stopping/quad_equation_min/quad_min_random_median.json", "proposer": "random", "script": "quad_min.py", "resource": "cpu", "n_parallel": 4, "target":"min", "n_samples": 200, "resource_args": { "early_stop": { "aup_policy": "median", "aup_policy_steps": 1 } }, "parameter_config": [ { "name": "x", "range": [-1.0, 100.0], "type": "float" } ] } ================================================ FILE: Examples/early_stopping/quad_equation_min/quad_min_random_trunc.json ================================================ { "name": "./early_stopping/quad_equation_min/quad_min_random_trunc.json", "proposer": "random", "script": "quad_min.py", "resource": "cpu", "n_parallel": 4, "target":"min", "n_samples": 200, "resource_args": { "early_stop": { "aup_policy": "truncation", "aup_policy_steps": 1, "truncation_percentage": 0.7 } }, "parameter_config": [ { "name": "x", "range": [-1.0, 100.0], "type": "float" } ] } ================================================ FILE: Examples/early_stopping/quad_equation_min/quad_min_spearmint_bandit.json ================================================ { "name": "./early_stopping/quad_equation_min/quad_min_spearmint_bandit.json", "proposer": "spearmint", "script": "quad_min.py", "resource": "cpu", "n_parallel": 4, "target":"min", "n_samples": 50, "engine":"GPEIChooser", "resource_args": { "early_stop": { "aup_policy": "bandit", "aup_policy_steps": 1, "bandit_factor": 0.5 } }, "parameter_config": [ { "name": "x", "range": [-1.0, 100.0], "type": "float" } ] } ================================================ FILE: Examples/early_stopping/quad_equation_min/quad_min_spearmint_median.json ================================================ { "name": "./early_stopping/quad_equation_min/quad_min_spearmint_median.json", "proposer": "spearmint", "script": "quad_min.py", "resource": "cpu", "n_parallel": 4, "target":"min", "n_samples": 50, "engine":"GPEIChooser", "resource_args": { "early_stop": { "aup_policy": "median", "aup_policy_steps": 1 } }, "parameter_config": [ { "name": "x", "range": [-1.0, 100.0], "type": "float" } ] } ================================================ FILE: Examples/early_stopping/quad_equation_min/quad_min_spearmint_trunc.json ================================================ { "name": "./early_stopping/quad_equation_min/quad_min_spearmint_trunc.json", "proposer": "spearmint", "script": "quad_min.py", "resource": "cpu", "n_parallel": 4, "target":"min", "n_samples": 50, "engine":"GPEIChooser", "resource_args": { "early_stop": { "aup_policy": "truncation", "aup_policy_steps": 1, "truncation_percentage": 0.7 } }, "parameter_config": [ { "name": "x", "range": [-1.0, 100.0], "type": "float" } ] } ================================================ FILE: Examples/hpo_mnist/.gitignore ================================================ input_data/ .aup/ __pycache__/ logs/ ================================================ FILE: Examples/hpo_mnist/MNIST Hyperparameter Optimization Demo.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# MNIST Hyperparameter Optimization Demo" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The MNIST database of handwritten digits, available publicly, has a training set of 60,000 examples, and a test set of 10,000 examples. The digits have been size-normalized and centered in a fixed-size image.\n", "It is a good database for people who want to experiment on learning techniques and pattern recognition methods on real-world data while spending minimal efforts on preprocessing and formatting. For these reasons, MNIST is a very popular baseline dataset for AI researchers exploring effectiveness of their Neural Network architectures, hyperparameter tuning or optimization techniques.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this tutorial we will show how to perform Hyperparameter Optimization on MNIST using LeNet (http://yann.lecun.com/exdb/lenet/), a basic and popular neural network. \n", "We modify a public implementation (https://github.com/aymericdamien/TensorFlow-Examples/blob/master/examples/3_NeuralNetworks/convolutional_network.py\n", "), to find the best hyperparameter configuration for LeNet. We also demonstrate how to effectively switch between various HPO proposers such as Spearmint and Hyperband." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Running the Experiments " ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "We use the ‘mnist_hpo_demo.py’ file to accept hyperparameters from Auptimizer and run an Experiment. Since the values of the hyperparameters can widely swing the performance of the classification algorithm, finding an optimal configuration is very important. We define the range of hyperparameters for Auptimizer to consider in ‘exp_hpo_demo.json’. We choose the following hyperparameter ranges to optimize –\n", "\n", "1) Learning Rate: [ 0.001, 0.01 ]\n", "\n", "2) Dropout Probability: [ 0.0, 0.5 ]\n", "\n", "3) 1st layer Convolution filters: [ 20, 50 ]\n", "\n", "4) 2nd Layer Convolution filters: [ 40, 80 ]\n", "\n", "5) Fully Connected layer size: [ 700, 2000 ]\n", "\n", "\n", "While we iterate over different Proposer algorithms.\n" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "Each instance of 'mnist_hpo_demo.py' would accept an experiment configuration of hyperparameters, train the defined neural network, evaluate the network, and return the final performance statistics. The ‘exp_hpo_demo.json’ file contains code to perform HPO using AWS resources and consider 100 samples for each proposer. We can easily switch between proposers and see how they choose different configurations to optimize the final performance." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To run the experiment use command- \n", "\n", "'python3 -m aup exp_hpo_demo.json' \n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Analysis " ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "We next analyze the experiment results using the sqlite database for our experiments. The details for the experiment can be found inn the jobs profile, but here we aim to compare the proposers. Experiment 1 is performed using Grid Search, and Random, Spearmint, Hyperband, Hyperopt Proposers for Experiments 2,3,4 and 5 respectively." ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "'''\n", "Connect to the Auptimizer database\n", "''' \n", "\n", "import sqlite3\n", "import time\n", "import datetime\n", "import random\n", "\n", "conn = sqlite3.connect('sqlite3.db')\n", "c = conn.cursor()\n" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "'''\n", "Function to compile and return details from a Auptimizer experiment. \n", "Takes experiment id as input, returns score, jobs ran for the experiments, and end time for each job.\n", "''' \n", "\n", "def graph_data(ex):\n", " c.execute('SELECT score, jid, end_time FROM job WHERE eid = '+ str(ex))\n", " data = c.fetchall()\n", "\n", " jobs = []\n", " score = []\n", " times =[]\n", " \n", " for row in data:\n", " times.append(row[2])\n", " jobs.append(row[1])\n", " score.append(row[0])\n", "\n", " times = [a-min(times) for a in times] \n", " jobs = [a-min(jobs) for a in jobs]\n", " \n", " print(score)\n", " print(jobs)\n", " \n", " return (score, times, jobs)\n", " " ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0.9895, 0.9893, 0.9677, 0.9602, 0.9852, 0.9886, 0.9685, 0.9698, 0.9899, 0.9908, 0.9738, 0.9701, 0.9911, 0.9899, 0.9699, 0.9699, 0.9875, 0.9907, 0.9672, 0.9697, 0.9892, 0.9901, 0.9597, 0.9636, 0.9898, 0.9914, 0.9755, 0.9628, 0.9914, 0.9892, 0.9693, 0.9737, 0.9904, 0.992, 0.9691, 0.9591, 0.9898, 0.9873, 0.9662, 0.9525, 0.9815, 0.9892, 0.9613, 0.951, 0.9905, 0.9892, 0.9722, 0.9591, 0.9876, 0.9922, 0.9446, 0.9528, 0.9883, 0.9898, 0.9641, 0.9619, 0.9905, 0.9893, 0.9697, 0.9629, 0.9891, 0.9908, 0.976, 0.954, 0.9911, 0.9892, 0.9598, 0.9606, 0.9878, 0.9883, 0.9621, 0.9584, 0.9871, 0.9901, 0.9663, 0.956, 0.9896, 0.9869, 0.9628, 0.9437, 0.9908, 0.9885, 0.9543, 0.9586, 0.9874, 0.9905, 0.9665, 0.9712, 0.9912, 0.9902, 0.9665, 0.9494, 0.9897, 0.9903, 0.9603, 0.9562, 0.9853, 0.9894, 0.9614, 0.9498, 0.9889, 0.9907, 0.9595, 0.9494, 0.9899, 0.9891, 0.9627, 0.9544]\n", "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107]\n", "[0.9619, 0.9742, 0.9828, 0.9662, 0.983, 0.9693, 0.9753, 0.9749, 0.9682, 0.9758, 0.9672, 0.9834, 0.9834, 0.9764, 0.9711, 0.9835, 0.9712, 0.9721, 0.973, 0.9769, 0.9898, 0.9687, 0.9678, 0.977, 0.9603, 0.9868, 0.9759, 0.9739, 0.9611, 0.9891, 0.9752, 0.9729, 0.978, 0.9828, 0.9913, 0.9774, 0.9657, 0.9671, 0.9667, 0.9791, 0.9742, 0.9649, 0.9812, 0.9289, 0.9847, 0.9828, 0.9875, 0.9572, 0.9715, 0.9867, 0.9771, 0.9885, 0.9789, 0.981, 0.9705, 0.9863, 0.9877, 0.9851, 0.9746, 0.9549, 0.9886, 0.9867, 0.9781, 0.964, 0.9679, 0.9641, 0.9631, 0.9904, 0.9864, 0.9709, 0.9701, 0.9602, 0.9897, 0.9878, 0.9747, 0.9912, 0.9648, 0.9821, 0.9842, 0.9841, 0.9709, 0.9722, 0.9774, 0.9819, 0.9698, 0.9647, 0.9802, 0.9668, 0.9766, 0.9811, 0.9837, 0.9871, 0.9708, 0.9727, 0.9826, 0.9768, 0.9554, 0.9612, 0.9824, 0.9801]\n", "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]\n", "[0.9886, 0.9869, 0.9802, 0.9821, 0.9686, 0.977, 0.9865, 0.9705, 0.9627, 0.9614, 0.9912, 0.986, 0.9685, 0.9595, 0.9877, 0.9904, 0.9897, 0.9575, 0.9849, 0.983, 0.9874, 0.9662, 0.9892, 0.9903, 0.9914, 0.9731, 0.9896, 0.9892, 0.9586, 0.9882, 0.9686, 0.9742, 0.9623, 0.9891, 0.9878, 0.9906, 0.9899, 0.9869, 0.9874, 0.9825, 0.9699, 0.9891, 0.9879, 0.9863, 0.9911, 0.9906, 0.9844, 0.9834, 0.9919, 0.9727, 0.9884, 0.9832, 0.9643, 0.9889, 0.964, 0.9888, 0.988, 0.9882, 0.9838, 0.9851, 0.9893, 0.9909, 0.9821, 0.9907, 0.9757, 0.9867, 0.9874, 0.97, 0.9908, 0.9892, 0.985, 0.9891, 0.9901, 0.988, 0.9886, 0.9837, 0.988, 0.9662, 0.9735, 0.9882, 0.9891, 0.9899, 0.9897, 0.9903, 0.9933, 0.9891, 0.9875, 0.9884, 0.9912, 0.9908, 0.9913, 0.9901, 0.9813, 0.9877, 0.9887, 0.9874, 0.9907, 0.9895, 0.9884, 0.987]\n", "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]\n", "[0.9865, 0.9888, 0.9604, 0.9827, 0.9897, 0.9713, 0.9831, 0.9824, 0.9876, 0.9786, 0.9817, 0.9782, 0.9631, 0.9725, 0.9708, 0.987, 0.9544, 0.9729, 0.9849, 0.9894, 0.9905, 0.9871, 0.9675, 0.952, 0.985, 0.9791, 0.9754, 0.9677, 0.969, 0.9712, 0.9767, 0.9719, 0.9631, 0.9851, 0.9787, 0.9724, 0.9738, 0.9822, 0.9435, 0.9738, 0.9748, 0.9775, 0.9859, 0.9863, 0.9764, 0.9736, 0.9759, 0.9724, 0.9857, 0.9821, 0.98, 0.9832, 0.9766, 0.9617, 0.9837, 0.9778, 0.9794, 0.9891, 0.9774, 0.9742, 0.9705, 0.9852, 0.9625, 0.9809, 0.9838, 0.9518, 0.9797, 0.9771, 0.973, 0.9747, 0.9849, 0.989, 0.9758, 0.9666, 0.9658, 0.9799, 0.9489, 0.9776, 0.9831, 0.9736, 0.9851, 0.9844, 0.9885, 0.9896, 0.9846, 0.9896, 0.9883, 0.9891, 0.9881, 0.9888, 0.9866, 0.9875, 0.9854, 0.9851, 0.9885, 0.9885, 0.9861, 0.9753, 0.9742, 0.9859, 0.9887, 0.9823, 0.9811, 0.9839, 0.9774, 0.9837, 0.9868, 0.9752, 0.9899, 0.9882, 0.9881, 0.9882, 0.9886, 0.987, 0.9887, 0.9871, 0.9884, 0.9911, 0.9901, 0.9852, 0.9878, 0.9788, 0.9701, 0.9858, 0.9871, 0.9871, 0.9834, 0.9845, 0.9725, 0.9873, 0.9851, 0.972, 0.9701, 0.986, 0.9645, 0.9909, 0.9878, 0.9883, 0.984, 0.9719, 0.9644, 0.9727, 0.9645]\n", "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142]\n", "[0.9682, 0.9748, 0.987, 0.9662, 0.9826, 0.9829, 0.9693, 0.9435, 0.9792, 0.9882, 0.9818, 0.9792, 0.9751, 0.9765, 0.9747, 0.9896, 0.9624, 0.9741, 0.9804, 0.975, 0.9903, 0.9875, 0.9865, 0.9876, 0.9858, 0.9898, 0.9875, 0.9865, 0.9814, 0.9873, 0.9876, 0.9867, 0.9857, 0.9557, 0.9832, 0.9846, 0.9835, 0.9823, 0.9764, 0.9761, 0.9642, 0.9882, 0.9911, 0.9677, 0.9826, 0.9866, 0.9754, 0.9852, 0.9815, 0.9902, 0.9678, 0.9712, 0.9862, 0.985, 0.9896, 0.9891, 0.9836, 0.9747, 0.9769, 0.9672, 0.9764, 0.9837, 0.988, 0.9845, 0.9831, 0.9907, 0.9913, 0.9883, 0.9905, 0.9845, 0.986, 0.9825, 0.9848, 0.9847, 0.9897, 0.9867, 0.9886, 0.9897, 0.9768, 0.9862, 0.9827, 0.9846, 0.9881, 0.9841, 0.9793, 0.9769, 0.9852, 0.9856, 0.9825, 0.9881, 0.9859, 0.9676, 0.9856, 0.9918, 0.9835, 0.9662, 0.9874, 0.9758, 0.9889, 0.9735]\n", "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]\n" ] } ], "source": [ "'''\n", "Compile results for grid search, random, spearmint, hyperband, hyperopt Proposers\n", "''' \n", "\n", "s_gri, t_gri, j_gri = graph_data(1)\n", "s_ran, t_ran, j_ran = graph_data(2)\n", "s_spe, t_spe, j_spe = graph_data(3)\n", "s_hpb, t_hpb, j_hpb = graph_data(4)\n", "s_opt, t_opt, j_opt = graph_data(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Visualization" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can easily visualize the performance of the hyperparameter optimization algorithms for our current experiment and how configurations can affect the final performance. In the plots below we compare job performance and time with accuracy achieved. " ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "'''\n", "Plots for the experiment results\n", "'''\n", "\n", "import matplotlib.pyplot as plt\n", "\n", "plt.figure(figsize=(20,15))\n", "\n", "\n", "plt.plot(j_gri[:100], s_gri[:100])\n", "plt.plot(j_ran, s_ran)\n", "plt.plot(j_spe, s_spe)\n", "plt.plot(j_hpb[:100], s_hpb[:100])\n", "plt.plot(j_opt, s_opt)\n", "\n", "plt.legend(['y = grid','y = random', 'y = spearmint', 'y = hyperband', 'y = hyperopt'], loc='upper left')\n", "\n", "plt.title('Hyperparameter Optimization using various proposers on MNIST')\n", "plt.xlabel('Jobs')\n", "plt.ylabel('Accuracy')\n", "\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "image/png": "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/lzu/TNmzCAiIoK5c+ditVqJjIwkKiqqVLvhw4eTlZVVavmCBQsYNWpUsWV///vf+emnn2jTpg3p6en25VFRURw4cAB/f38GDhzI2LFjCQgIYMWKFWzbtg0vLy/mzJnDsmXLmDp1Ki+//DJNmzalsLCQkSNHsn//fsLCwgAICgrit99+A+D999/H29ub3bt3s2jRIsaPH090dDRNmzalc+fOPPHEEwQFBRUb4549ezh48CCtW7fmuuuuY9u2bTz22GP861//YuPGjQQHBzu/k4UQQgghhBCiDDnmHKLOR3Fvj3sJ8AqgS+MukvEkRB1UbwJP7hASEkJQUBB79uwhMTGRfv36lQrSAGzZssXpPq+77jqmT5/O3XffTUREhH356NGj7X1HRESwdetWPD09iY6OZuDAgQDk5eXRvHlzAL744gs+/PBDLBYL58+f59ChQ/bA06RJk4qtc9y4cQD07t2bXr160apVKwA6depEbGxsqW0aNGgQbdu2BaBv377ExMRw/fXXO72NQgghhBBCCFGZree2YraaCW9vzKjo06wPP57+Eau24qFkco8QdUW9CTxVlJnkSjNnzmTJkiUkJCQwY8aMMttUJePp/fff59dff+W7777j2muvJTrauGSoUqpYO6UUWmumTZvGK6+8Uuy+06dPs2DBAnbt2kWTJk2YPn06+fn59vsDAgKKtffx8QHAw8PDfrvob4vFUmrcjm1MJlOZbYQQQgghhBCiJjbGbqSJTxP6NusLQFizMFYeW8npjNN0btzZzaMTQhSpN4End5kwYQLz58/HbDazfPnyMttUJePp5MmTDB48mMGDB/PDDz8QGxsLwLp160hNTcXPz4/Vq1fzySef4O/vz/jx43niiSdo3rw5qampZGVlkZmZSUBAAIGBgSQmJvLDDz8wYsSI2tjcCjVs2JCsrCyZaieEEEIIIYSoEbPVzOa4zdzU7iZMHibAyHgCo8C4BJ6EqDsk8ORi3t7ehIeH07hxY0wmU437e/rppzl+/Dhaa0aOHEmfPn3Yu3cvgwYNYuLEicTFxXHfffcxYMAAAF566SXGjBmD1WrFy8uLd999lyFDhtCvXz969OhBu3btuO6662o8LmfMmjWLW265hdatW7Nx48bLsk4hhBBCCCHE1ee3xN/IKsiyT7MD6NCoA428G7Hvwj4mdJ3gxtEJIRwprbW7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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "'''\n", "Plots for the experiment results\n", "'''\n", "\n", "\n", "import matplotlib.pyplot as plt\n", "\n", "plt.figure(figsize=(20,15))\n", "\n", "\n", "plt.plot(t_gri[:100], s_gri[:100])\n", "plt.plot(t_ran, s_ran)\n", "plt.plot(t_spe, s_spe)\n", "plt.plot(t_hpb[:100], s_hpb[:100])\n", "plt.plot(t_opt, s_opt)\n", "\n", "plt.legend(['y = grid','y = random', 'y = spearmint', 'y = hyperband', 'y = hyperopt'], loc='upper left')\n", "\n", "plt.title('Hyperparameter Optimization using various proposers on MNIST')\n", "plt.xlabel('Time')\n", "plt.ylabel('Accuracy')\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "image/png": "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f//9LFy4kPj4+AJHG5Vk5FNhQkJCrjiniIiIiIiIiMiVUvHJRWPGjGHGjBlkZmayePHifNuUZORT3759efvttxk/fjxLliwp1j4DBw7kn//8J5MmTeLEiROsXr2au+++u9jPKSIiIiIiIiJSGBWfXFSjRg2GDBlCWFgYvr6+V93frFmzmDBhAs899xw33XQToaGhRe4zZswYVq1aRVRUFC1atKBfv35XnUNERERERERE5CIVn1zk8XjYsGEDy5YtK5X+mjZtyoYNGzDGsGTJEvbs2QPA4MGDGTx48CVtz549C4Axhrlz55bK84uIiIiIiIiI5KXik0t27tzJrbfeypgxY4iMjCyVPjdt2sQjjzyCtZawsDDmz59fKv2KiIiIiIiIiFwpFZ9cEhUVxYEDB0q1zwEDBvDdd9+Vap8iIiIiIiIiIlfDx+0AIiIiIiIiIiJSdan4JCIiIiIiIiIiZUbFJxERERERERERKTMqPomIiIiIiIiISJlR8UkKtHDhQh555BG3Y4iIiIiIiIhIJabiUxWVlZXldgQRERERERERERWf3DJjxgxmzZqV8/NTTz3F7Nmzr6rPyZMn89BDD9GnTx+efPJJNm7cSL9+/ejevTv9+/dnz549gDOiKTo6mptuuonIyEiefPLJnD4WLFhAu3bt6N27N1999VXO9tjYWIYOHUqXLl0YNmwYhw8fznnOhx9+mL59+9K6dWvWrFnDlClT6NixI5MnT76q4xERERERERGRys/P7QAVwse/gvjvS7fPRp3h5v8r8OEpU6YQHR3NtGnT8Hg8LFmyhI0bN17WbsCAAaSmpl62febMmQwfPvyy7XFxcaxfvx5fX1/OnDnD2rVr8fPz47PPPuM3v/kNb7/9NgBbt25ly5YtBAQE0L59ex599FH8/Px4+umn2bRpE6GhoQwZMoTu3bsD8OijjzJp0iQmTZrE/Pnz+dnPfsaKFSsASEpK4uuvv+a9995j5MiRfPXVV7zyyiv06tWLrVu30q1btys6hSIiIiIiIiJS+an45JKIiAjCw8PZsmULCQkJdO/enfDw8MvarV27tkT93n777fj6+gKQkpLCpEmT2Lt3L8YYMjMzc9oNGzaM0NBQAKKiojh06BCnTp1i8ODB1K9fH4Dx48fzww8/APD111/zn//8B4B77733ktFSt912G8YYOnfuTMOGDencuTMAnTp1IjY2VsUnERERERERkWpMxScodIRSWbr//vtZuHAh8fHxTJkyJd82JR35FBISkvP97373O4YMGcI777xDbGwsgwcPznksICAg53tfX9+rWiPqYl8+Pj6X9Ovj46O1p0RERERERESqORWfXDRmzBhmzJhBZmYmixcvzrdNSUc+5ZaSkkLTpk0BZ52novTp04fHHnuM06dPU7t2bZYtW0bXrl0B6N+/P0uWLOHee+/ljTfeYMCAAVecS0RERERERESqDxWfXFSjRg2GDBlCWFhYzlS50vTkk08yadIknn32WUaMGFFk+8aNG/PMM8/Qr18/wsLCLpku9/e//50f//jH/L//9/+oX78+CxYsKPW8IiIiIiIiIlL1GGut2xnKXM+ePW1MTMwl23bt2kXHjh1dSuTweDz06NGDZcuWERkZ6WqWyqIivG4iIiIiIiIiAsaYTdbankW18ymPMHK5nTt30rZtW4YNG6bCk4iIiIiIiIhUWZp255KoqCgOHDjgdgwRERERERERkTKl4pOIiIiIiIhUe5meTGLiY8jy6I7dUraC/ILo2ajImWpViopPIiIiIiIiUu29s/cd/rjhj27HkGogonYE74953+0Y5UrFJxEREREREan2Vh5aScvaLfnT9X9yO4pUcQG+AW5HKHcqPomIiIiIiEi1dibjDDHxMUzsNJEu9bu4HUekytHd7qTM9e/fv8g2s2bN4vz58+WQRkRERERE5FLr4taRZbMY2mKo21FEqiQVn+SKZGdnF7vt+vXri2yj4pOIiIiIiLhl1ZFV1AuqR+d6nd2OIlIlqfjkkhkzZjBr1qycn5966ilmz559VX0uW7aMa665hq5duzJw4EAAFi5cyKhRoxg8eDCRkZH8/ve/z2m/aNEievfuTbdu3XjwwQdzCkoPP/wwPXv2pFOnTjz99NM57SMiIvjlL39Jjx49WLZsGYMHD2b69On07NmTjh078u233xIdHU1kZCS//e1vc/arWbMmAGvWrGHw4MGMGzeODh06cM8992CtZc6cORw7dowhQ4YwZMiQqzoHIiIiIiIiJZGRncG6o+sY1GwQPkYfkUXKgtZ8Av688c/sTtxdqn12qNuBX/b+ZYGPT5kyhejoaKZNm4bH42HJkiVs3LjxsnYDBgwgNTX1su0zZ85k+PDhl2z7wx/+wH//+1+aNm1KcnJy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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "'''\n", "Plots for the experiment results\n", "'''\n", "\n", "def max_so_far(arr):\n", " mmax=-1\n", " new_arr=[]\n", " for _,x in enumerate(arr):\n", " if x>mmax:\n", " mmax=x\n", " new_arr.append(mmax)\n", " return new_arr\n", "\n", "plt.figure(figsize=(20,15))\n", "\n", "\n", "plt.plot(j_gri[:100], max_so_far(s_gri[:100]))\n", "plt.plot(j_ran, max_so_far(s_ran))\n", "plt.plot(j_spe, max_so_far(s_spe))\n", "plt.plot(j_hpb[:100], max_so_far(s_hpb[:100]))\n", "plt.plot(j_opt, max_so_far(s_opt))\n", "\n", "plt.legend(['y = grid','y = random', 'y = spearmint', 'y = hyperband', 'y = hyperopt'], loc='upper left')\n", "\n", "plt.title('Hyperparameter Optimization using various proposers on MNIST')\n", "plt.xlabel('Jobs')\n", "plt.ylabel('Max Accuracy')\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: Examples/hpo_mnist/README.md ================================================ # HPO on MNIST data using Auptimizer This folder contains demonstrating how to use Auptimizer for Hyperparameter Optimization on the MNIST dataset. The original source code is from [Tensorflow Tutorial](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/tutorials/mnist). We modified `mnist_with_summaries.py` to use **Auptimizer** for model tuning. **Tensorflow** package is needed for this demo. Using the CPU version will slow down the demonstration to more than 1 minute per job, but it should not be a limiting factor. ## Changes We need to parse the input for hyperparameter values. So we add the following lines to parse the values original stored in `FLAGS`, which is commonly used in `Tensorflow` for parameter sharing. config = BasicConfig(**FLAGS.__dict__).load(sys.argv[1]) FLAGS.__dict__.update(config) # for hyperband only if "n_iterations" in FLAGS: FLAGS.max_steps = int(FLAGS.n_iterations) ## Runtime First, we could test the script with a testing configuration `demo.json`: python mnist_hpo.py demo.json Once the script runs smoothly, it will print #Auptimizer:0.9592 At the end of the run. Now it is the time to run **Auptimizer** for a large scale experiment. Set up the **Auptimizer**, if you haven't done that by `python -m aup.setup `. Then run as `python -m aup ` The following table lists the minor differences in the configuration of HPO algorithms. | Name | Comments | | ---- | -------- | | Random | `n_samples` specifies the total jobs to run | | Sequence | `n` or `interval` specifies the grid for each parameter | | Hyperband | `max_iter` specify the total iterations for training and `engine` specify the underneath proposer | | BOHB | Uses many extra parameters. Refer to the documentation for details. | | Spearmint | None | | Hyperopt | None | ## Analysis `MNIST Hyperparameter Optimization Demo.ipynb` presents detailed analysis of different HPO proposers under similar experimental settings for mnist.py. ## Additional Examples - Running with AWS and Job failure capabilities. We provide further examples to show the full array of Auptimizers capabilities to handle large scale HPO in an asynchronous cloud based distributed setting with job retry and experiment persistence capabilities. - `exp_aws_demo.json` : Demo experiment to run MNIST HPO using AWS instances. Ensure AWS instances are registered as resources and have the correct working directory. - `exp_aws_async.json` : Builds on the demo experiment, with a larger search space using asynchornous connections to AWS instances. Refer to the documentation for more details on async parameters. - `exp_aws_retry_job.json` : Builds on the demo experiment, with a larger search space on AWS instances using job failure and experiment persistence capabilities. Refer to the documentation for more details on job failure parameters. ================================================ FILE: Examples/hpo_mnist/demo.json ================================================ { "name": "./hpo_mnist/demo.json", "drop_out":0.9, "learning_rate":0.01 } ================================================ FILE: Examples/hpo_mnist/exp_aws_async.json ================================================ { "name": "./hpo_mnist/exp_hpo_demo.json", "workingdir": "/home/ubuntu/aup/mnist_try/", "proposer": "random", "script": "mnist_hpo_demo.py", "runtime_args": { "prescript": "source /home/ubuntu/.bashrc; source /home/ubuntu/.profile; source activate tensorflow_p36", "postscript": "source deactivate", "overwrite" : true }, "resource_args":{ "shutdown":false, "connection_retry": 5, "async_run":true, "async_reconnect": 60, "async_timeout":1000 }, "resource": "aws", "n_parallel": 5, "target":"max", "n_samples":100, "parameter_config": [ { "name": "dropout", "range": [0.0, 0.5], "type": "float" }, { "name": "learning_rate", "range": [ 0.001, 0.01 ], "type": "float" }, { "name": "conv1", "range": [ 20, 50 ], "type": "int" }, { "name": "conv2", "range": [ 40, 80 ], "type": "int" }, { "name": "fc1", "range": [ 700, 2000 ], "type": "int" } ] } ================================================ FILE: Examples/hpo_mnist/exp_aws_demo.json ================================================ { "name": "./hpo_mnist/exp_aws.json", "workingdir": "/home/ubuntu/aup/mnist_try/", "proposer": "random", "script": "mnist_hpo_demo.py", "runtime_args": { "prescript": "source /home/ubuntu/.bashrc; source /home/ubuntu/.profile; source activate tensorflow_p36", "postscript": "source deactivate" }, "resource_args":{ "shutdown":false, "connection_retry": 5 }, "resource": "aws", "n_parallel": 1, "target":"max", "n_samples":6, "parameter_config": [ { "name": "drop_out", "range": [0.5, 0.9], "type": "float" }, { "name": "learning_rate", "range": [ 0.01, 0.05, 0.001 ], "type": "choice" } ] } ================================================ FILE: Examples/hpo_mnist/exp_aws_retry_job.json ================================================ { "proposer": "random", "script": "mnist_hpo_fail.py", "workingdir": "/home/ubuntu/aup/mnist_try/", "resource": "aws", "n_parallel": 4, "target":"max", "n_samples": 100, "runtime_args": { "prescript": "source /home/ubuntu/.bashrc; source /home/ubuntu/.profile; source activate tensorflow_p36", "postscript": "source deactivate", "overwrite" : true }, "job_failure": { "ignore_fail": true, "job_retries": 3 }, "resource_args":{ "shutdown":false, "connection_retry": 5 }, "parameter_config": [ { "name": "dropout", "range": [0.0, 0.5], "type": "float" }, { "name": "learning_rate", "range": [ 0.001, 0.01 ], "type": "float" }, { "name": "conv1", "range": [ 20, 50 ], "type": "int" }, { "name": "conv2", "range": [ 40, 80 ], "type": "int" }, { "name": "fc1", "range": [ 700, 2000 ], "type": "int" } ] } ================================================ FILE: Examples/hpo_mnist/exp_bohb.json ================================================ { "name": "./hpo_mnist/exp_bohb.json", "script": "mnist_hpo_demo.py", "resource": "cpu", "n_parallel": 4, "target": "max", "proposer": "bohb", "n_iterations": 16, "min_points_in_model": "", "top_n_percent": 15, "num_samples": 64, "random_fraction": 0.3333333333333333, "bandwidth_factor": 3, "min_bandwidth": 0.001, "eta": 3, "min_budget": 10, "max_budget": 100, "parameter_config": [ { "name": "dropout", "range": [0.0, 0.5], "type": "float" }, { "name": "learning_rate", "range": [ 0.001, 0.01 ], "type": "float" }, { "name": "conv1", "range": [ 20, 50 ], "type": "int" }, { "name": "conv2", "range": [ 40, 80 ], "type": "int" }, { "name": "fc1", "range": [ 700, 2000 ], "type": "int" } ] } ================================================ FILE: Examples/hpo_mnist/exp_hyperband.json ================================================ { "name": "./hpo_mnist/exp_hyperband.json", "proposer": "hyperband", "script": "mnist_hpo_demo.py", "resource": "cpu", "n_parallel": 4, "target":"max", "max_iter": 243, "engine": "random", "parameter_config": [ { "name": "dropout", "range": [0.0, 0.5], "type": "float" }, { "name": "learning_rate", "range": [ 0.001, 0.01 ], "type": "float" }, { "name": "conv1", "range": [ 20, 50 ], "type": "int" }, { "name": "conv2", "range": [ 40, 80 ], "type": "int" }, { "name": "fc1", "range": [ 700, 2000 ], "type": "int" } ] } ================================================ FILE: Examples/hpo_mnist/exp_hyperopt.json ================================================ { "name": "./hpo_mnist/exp_hyperopt.json", "proposer": "hyperopt", "script": "mnist_hpo_demo.py", "resource": "cpu", "n_parallel": 4, "target":"max", "n_samples": 100, "parameter_config": [ { "name": "dropout", "range": [0.0, 0.5], "type": "float" }, { "name": "learning_rate", "range": [ 0.001, 0.01 ], "type": "float" }, { "name": "conv1", "range": [ 20, 50 ], "type": "int" }, { "name": "conv2", "range": [ 40, 80 ], "type": "int" }, { "name": "fc1", "range": [ 700, 2000 ], "type": "int" } ] } ================================================ FILE: Examples/hpo_mnist/exp_random.json ================================================ { "name": "./hpo_mnist/exp_random.json", "proposer": "random", "script": "mnist_hpo_demo.py", "resource": "cpu", "n_parallel": 4, "target":"max", "n_samples": 100, "parameter_config": [ { "name": "dropout", "range": [0.0, 0.5], "type": "float" }, { "name": "learning_rate", "range": [ 0.001, 0.01 ], "type": "float" }, { "name": "conv1", "range": [ 20, 50 ], "type": "int" }, { "name": "conv2", "range": [ 40, 80 ], "type": "int" }, { "name": "fc1", "range": [ 700, 2000 ], "type": "int" } ] } ================================================ FILE: Examples/hpo_mnist/exp_random_async.json ================================================ { "name": "./hpo_mnist/exp_random_async.json", "proposer": "random", "script": "mnist_hpo_demo.py", "workingdir": "/home/ubuntu/", "resource": "aws", "resource_args": { "async_run": true, "async_reconnect": 60 }, "n_parallel": 4, "target":"max", "n_samples": 100, "parameter_config": [ { "name": "dropout", "range": [0.0, 0.5], "type": "float" }, { "name": "learning_rate", "range": [ 0.001, 0.01 ], "type": "float" }, { "name": "conv1", "range": [ 20, 50 ], "type": "int" }, { "name": "conv2", "range": [ 40, 80 ], "type": "int" }, { "name": "fc1", "range": [ 700, 2000 ], "type": "int" } ] } ================================================ FILE: Examples/hpo_mnist/exp_sequence.json ================================================ { "name": "./hpo_mnist/exp_sequence.json", "proposer": "sequence", "script": "mnist_hpo_demo.py", "resource": "cpu", "n_parallel": 4, "target":"max", "parameter_config": [ { "name": "dropout", "range": [0.0, 0.5], "type": "float", "n":3 }, { "name": "learning_rate", "range": [ 0.001, 0.01 ], "type": "float", "n":3 }, { "name": "conv1", "range": [ 20, 50 ], "type": "int", "n":3 }, { "name": "conv2", "range": [ 40, 80 ], "type": "int", "n":3 }, { "name": "fc1", "range": [ 700, 2000 ], "type": "int", "n":3 } ] } ================================================ FILE: Examples/hpo_mnist/exp_spearmint.json ================================================ { "name": "./hpo_mnist/exp_spearmint.json", "proposer": "spearmint", "script": "mnist_hpo_demo.py", "resource": "cpu", "n_parallel": 4, "target":"max", "n_samples": 100, "parameter_config": [ { "name": "dropout", "range": [0.0, 0.5], "type": "float" }, { "name": "learning_rate", "range": [ 0.001, 0.01 ], "type": "float" }, { "name": "conv1", "range": [ 20, 50 ], "type": "int" }, { "name": "conv2", "range": [ 40, 80 ], "type": "int" }, { "name": "fc1", "range": [ 700, 2000 ], "type": "int" } ] } ================================================ FILE: Examples/hpo_mnist/job_retries_random.json ================================================ { "name": "./hpo_mnist/job_retries_random.json", "proposer": "random", "script": "mnist_hpo_demo.py", "workingdir": "/home/ubuntu/", "resource": "aws", "n_parallel": 4, "target":"max", "n_samples": 100, "job_failure": { "ignore_fail": true, "job_retries": 3 }, "parameter_config": [ { "name": "dropout", "range": [0.0, 0.5], "type": "float" }, { "name": "learning_rate", "range": [ 0.001, 0.01 ], "type": "float" }, { "name": "conv1", "range": [ 20, 50 ], "type": "int" }, { "name": "conv2", "range": [ 40, 80 ], "type": "int" }, { "name": "fc1", "range": [ 700, 2000 ], "type": "int" } ] } ================================================ FILE: Examples/hpo_mnist/mnist_hpo_demo.py ================================================ #!/usr/bin/env python3 # Modified from https://github.com/aymericdamien/TensorFlow-Examples/blob/master/examples/3_NeuralNetworks/convolutional_network.py # The trained model is evaluated by a combination of accuracy and FLOP. # # Original License """ The MIT License (MIT) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. All contributions by Aymeric Damien: Copyright (c) 2015, Aymeric Damien. All rights reserved. All other contributions: Copyright (c) 2015, the respective contributors. All rights reserved. Each contributor holds copyright over their respective contributions. The project versioning (Git) records all such contribution source information. """ from __future__ import division, print_function, absolute_import import argparse import os import sys from datetime import datetime from math import log import tensorflow as tf # Import MNIST data from tensorflow.examples.tutorials.mnist import input_data from aup import BasicConfig, print_result # Training Parameters num_steps = 2000 batch_size = 128 # Network Parameters num_input = 784 # MNIST data input (img shape: 28*28) num_classes = 10 # MNIST total classes (0-9 digits) # Create the neural network def conv_net(x_dict, n_classes, reuse, is_training): # Define a scope for reusing the variables with tf.variable_scope('ConvNet', reuse=reuse): # TF Estimator input is a dict, in case of multiple inputs x = x_dict['images'] # MNIST data input is a 1-D vector of 784 features (28*28 pixels) # Reshape to match picture format [Height x Width x Channel] # Tensor input become 4-D: [Batch Size, Height, Width, Channel] x = tf.reshape(x, shape=[-1, 28, 28, 1]) # Convolution Layer with 32 filters and a kernel size of 5 conv1 = tf.layers.conv2d(x, FLAGS.conv1, 5, activation=tf.nn.relu) # Max Pooling (down-sampling) with strides of 2 and kernel size of 2 conv1 = tf.layers.max_pooling2d(conv1, 2, 2) # Convolution Layer with 64 filters and a kernel size of 3 conv2 = tf.layers.conv2d(conv1, FLAGS.conv2, 3, activation=tf.nn.relu) # Max Pooling (down-sampling) with strides of 2 and kernel size of 2 conv2 = tf.layers.max_pooling2d(conv2, 2, 2) # Flatten the data to a 1-D vector for the fully connected layer fc1 = tf.contrib.layers.flatten(conv2) # Fully connected layer (in tf contrib folder for now) fc1 = tf.layers.dense(fc1, FLAGS.fc1) # Apply Dropout (if is_training is False, dropout is not applied) fc1 = tf.layers.dropout(fc1, rate=FLAGS.dropout, training=is_training) # Output layer, class prediction out = tf.layers.dense(fc1, n_classes) return out # Define the model function (following TF Estimator Template) def model_fn(features, labels, mode): # Build the neural network # Because Dropout have different behavior at training and prediction time, we # need to create 2 distinct computation graphs that still share the same weights. logits_train = conv_net(features, num_classes, reuse=False, is_training=True) logits_test = conv_net(features, num_classes, reuse=True, is_training=False) # Predictions pred_classes = tf.argmax(logits_test, axis=1) pred_probas = tf.nn.softmax(logits_test) # If prediction mode, early return if mode == tf.estimator.ModeKeys.PREDICT: return tf.estimator.EstimatorSpec(mode, predictions=pred_classes) # Define loss and optimizer loss_op = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits( logits=logits_train, labels=tf.cast(labels, dtype=tf.int32))) optimizer = tf.train.AdamOptimizer(learning_rate=FLAGS.learning_rate) train_op = optimizer.minimize(loss_op, global_step=tf.train.get_global_step()) # Evaluate the accuracy of the model acc_op = tf.metrics.accuracy(labels=labels, predictions=pred_classes) # TF Estimators requires to return a EstimatorSpec, that specify # the different ops for training, evaluating, ... estim_specs = tf.estimator.EstimatorSpec( mode=mode, predictions=pred_classes, loss=loss_op, train_op=train_op, eval_metric_ops={'accuracy': acc_op}) return estim_specs def train(): # Build the Estimator mnist = input_data.read_data_sets("./input_data/", one_hot=False) model = tf.estimator.Estimator(model_fn) # Define the input function for training input_fn = tf.estimator.inputs.numpy_input_fn( x={'images': mnist.train.images}, y=mnist.train.labels, batch_size=batch_size, num_epochs=None, shuffle=True) # Train the Model model.train(input_fn, steps=num_steps) # Evaluate the Model # Define the input function for evaluating input_fn = tf.estimator.inputs.numpy_input_fn( x={'images': mnist.test.images}, y=mnist.test.labels, batch_size=batch_size, shuffle=False) # Use the Estimator 'evaluate' method e = model.evaluate(input_fn) print("Testing Accuracy:", e['accuracy']) return e['accuracy'] def get_flop(): run_meta = tf.RunMetadata() with tf.Session(graph=tf.Graph()) as sess: x = tf.zeros([1,784]) out = conv_net({'images':x}, 10, False, False) opts = tf.profiler.ProfileOptionBuilder.float_operation() flops = tf.profiler.profile(sess.graph, run_meta=run_meta, cmd='op', options=opts) print("Model FLOPs is %d"%flops.total_float_ops) return flops.total_float_ops def main(_): log_dir = FLAGS.log_dir + "%s" % datetime.now() if tf.gfile.Exists(log_dir): tf.gfile.DeleteRecursively(log_dir) tf.gfile.MakeDirs(log_dir) acc = train() flop = get_flop() return (acc-1)/log(flop) # metric used in AMC if __name__ == '__main__': if len(sys.argv) < 2: print("config file required") exit(1) parser = argparse.ArgumentParser() parser.add_argument('--learning_rate', type=float, default=0.001, help='Initial learning rate') parser.add_argument('--dropout', type=float, default=0.1, help='drop probability for training dropout.') parser.add_argument('--conv1', type=int, default=32, help='Conv1 layer size.') parser.add_argument('--conv2', type=int, default=64, help='Conv2 layer size.') parser.add_argument('--fc1', type=int, default=1024, help='FC1 layer size.') parser.add_argument( '--data_dir', type=str, default=os.path.join(os.getenv('TEST_TMPDIR', './'), 'input_data/'), help='Directory for storing input data') parser.add_argument( '--log_dir', type=str, default=os.path.join(os.getenv('TEST_TMPDIR', './'), 'logs/'), help='Summaries log directory') FLAGS, unparsed = parser.parse_known_args() config = BasicConfig(**FLAGS.__dict__).load(sys.argv[1]) FLAGS.__dict__.update(config) # for hyperband if "n_iterations" in FLAGS: FLAGS.max_steps = int(FLAGS.n_iterations * 100) # 100 times n_iteration units print("FLAGS => " + str(FLAGS)) val = main(config) print(str(val)) print_result(val) ================================================ FILE: Examples/hpo_mnist/mnist_hpo_fail.py ================================================ #!/usr/bin/env python3 # Modified from https://github.com/aymericdamien/TensorFlow-Examples/blob/master/examples/3_NeuralNetworks/convolutional_network.py # The trained model is evaluated by a combination of accuracy and FLOP. # # Original License """ The MIT License (MIT) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. All contributions by Aymeric Damien: Copyright (c) 2015, Aymeric Damien. All rights reserved. All other contributions: Copyright (c) 2015, the respective contributors. All rights reserved. Each contributor holds copyright over their respective contributions. The project versioning (Git) records all such contribution source information. """ from __future__ import division, print_function, absolute_import import argparse import os import sys from datetime import datetime from math import log import tensorflow as tf # Import MNIST data from tensorflow.examples.tutorials.mnist import input_data from aup import BasicConfig, print_result # Training Parameters num_steps = 2000 batch_size = 128 # Network Parameters num_input = 784 # MNIST data input (img shape: 28*28) num_classes = 10 # MNIST total classes (0-9 digits) # Create the neural network def conv_net(x_dict, n_classes, reuse, is_training): # Define a scope for reusing the variables with tf.variable_scope('ConvNet', reuse=reuse): # TF Estimator input is a dict, in case of multiple inputs x = x_dict['images'] # MNIST data input is a 1-D vector of 784 features (28*28 pixels) # Reshape to match picture format [Height x Width x Channel] # Tensor input become 4-D: [Batch Size, Height, Width, Channel] x = tf.reshape(x, shape=[-1, 28, 28, 1]) # Convolution Layer with 32 filters and a kernel size of 5 conv1 = tf.layers.conv2d(x, FLAGS.conv1, 5, activation=tf.nn.relu) # Max Pooling (down-sampling) with strides of 2 and kernel size of 2 conv1 = tf.layers.max_pooling2d(conv1, 2, 2) # Convolution Layer with 64 filters and a kernel size of 3 conv2 = tf.layers.conv2d(conv1, FLAGS.conv2, 3, activation=tf.nn.relu) # Max Pooling (down-sampling) with strides of 2 and kernel size of 2 conv2 = tf.layers.max_pooling2d(conv2, 2, 2) # Flatten the data to a 1-D vector for the fully connected layer fc1 = tf.contrib.layers.flatten(conv2) # Fully connected layer (in tf contrib folder for now) fc1 = tf.layers.dense(fc1, FLAGS.fc1) # Apply Dropout (if is_training is False, dropout is not applied) fc1 = tf.layers.dropout(fc1, rate=FLAGS.dropout, training=is_training) # Output layer, class prediction out = tf.layers.dense(fc1, n_classes) return out # Define the model function (following TF Estimator Template) def model_fn(features, labels, mode): # Build the neural network # Because Dropout have different behavior at training and prediction time, we # need to create 2 distinct computation graphs that still share the same weights. logits_train = conv_net(features, num_classes, reuse=False, is_training=True) logits_test = conv_net(features, num_classes, reuse=True, is_training=False) # Predictions pred_classes = tf.argmax(logits_test, axis=1) pred_probas = tf.nn.softmax(logits_test) # If prediction mode, early return if mode == tf.estimator.ModeKeys.PREDICT: return tf.estimator.EstimatorSpec(mode, predictions=pred_classes) # Define loss and optimizer loss_op = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits( logits=logits_train, labels=tf.cast(labels, dtype=tf.int32))) optimizer = tf.train.AdamOptimizer(learning_rate=FLAGS.learning_rate) train_op = optimizer.minimize(loss_op, global_step=tf.train.get_global_step()) # Evaluate the accuracy of the model acc_op = tf.metrics.accuracy(labels=labels, predictions=pred_classes) # TF Estimators requires to return a EstimatorSpec, that specify # the different ops for training, evaluating, ... estim_specs = tf.estimator.EstimatorSpec( mode=mode, predictions=pred_classes, loss=loss_op, train_op=train_op, eval_metric_ops={'accuracy': acc_op}) return estim_specs def train(): # Build the Estimator mnist = input_data.read_data_sets("./input_data/", one_hot=False) model = tf.estimator.Estimator(model_fn) # Define the input function for training input_fn = tf.estimator.inputs.numpy_input_fn( x={'images': mnist.train.images}, y=mnist.train.labels, batch_size=batch_size, num_epochs=None, shuffle=True) # Train the Model model.train(input_fn, steps=num_steps) # Evaluate the Model # Define the input function for evaluating input_fn = tf.estimator.inputs.numpy_input_fn( x={'images': mnist.test.images}, y=mnist.test.labels, batch_size=batch_size, shuffle=False) # Use the Estimator 'evaluate' method e = model.evaluate(input_fn) print("Testing Accuracy:", e['accuracy']) return e['accuracy'] def get_flop(): run_meta = tf.RunMetadata() with tf.Session(graph=tf.Graph()) as sess: x = tf.zeros([1,784]) out = conv_net({'images':x}, 10, False, False) opts = tf.profiler.ProfileOptionBuilder.float_operation() flops = tf.profiler.profile(sess.graph, run_meta=run_meta, cmd='op', options=opts) print("Model FLOPs is %d"%flops.total_float_ops) return flops.total_float_ops def main(_): log_dir = FLAGS.log_dir + "%s" % datetime.now() if tf.gfile.Exists(log_dir): tf.gfile.DeleteRecursively(log_dir) tf.gfile.MakeDirs(log_dir) acc = train() flop = get_flop() return (acc-1)/log(flop) # metric used in AMC if __name__ == '__main__': if len(sys.argv) < 2: print("config file required") exit(1) import random if random.random()>0.75: raise Exception('failed', 'test123') parser = argparse.ArgumentParser() parser.add_argument('--learning_rate', type=float, default=0.001, help='Initial learning rate') parser.add_argument('--dropout', type=float, default=0.1, help='drop probability for training dropout.') parser.add_argument('--conv1', type=int, default=32, help='Conv1 layer size.') parser.add_argument('--conv2', type=int, default=64, help='Conv2 layer size.') parser.add_argument('--fc1', type=int, default=1024, help='FC1 layer size.') parser.add_argument( '--data_dir', type=str, default=os.path.join(os.getenv('TEST_TMPDIR', './'), 'input_data/'), help='Directory for storing input data') parser.add_argument( '--log_dir', type=str, default=os.path.join(os.getenv('TEST_TMPDIR', './'), 'logs/'), help='Summaries log directory') FLAGS, unparsed = parser.parse_known_args() config = BasicConfig(**FLAGS.__dict__).load(sys.argv[1]) FLAGS.__dict__.update(config) # for hyperband if "n_iterations" in FLAGS: FLAGS.max_steps = int(FLAGS.n_iterations * 100) # 100 times n_iteration units print("FLAGS => " + str(FLAGS)) val = main(config) print(str(val)) print_result(val) ================================================ FILE: Examples/intermediate_results/README.md ================================================ # Intermediate Results ## Usage Intermediate results are non-final results for each job of an experiment used in order to better tell the evolution of a job through time. Each intermediate "result" can be one or multiple values. In order to let auptimizer know that intermediate results are to be tracked, the flag "track_intermediate_results" should be passed in the experiment config under "resource_args": "resource_args": { "track_intermediate_results": true } The script used in the experiment then has to call `aup.print_result` each time an intermediate result is to be saved. The last reported result will always be taken as the final result of a job. Please refer to `quad_euation_min/quad_min.py` for training script modification. The intermediate results will be shown on the dashboard if tracked. ## Examples Take the following main function in a user script: def main(x, a=2, b=4, c=5, n=10): it = 1.0 for _ in range(n): res = x*x*a + x*b + c res += it it -= 1.0 / 10 aup.print_result(res) 1. If "track_intermediate_results" is `false` or missing, all results except the last one will be discarded: ```json { "proposer": ..., "script": ..., "resource": ..., "n_parallel": ..., "target": "min", "n_samples": ..., "parameter_config": [ { "name": "x", "range": [-1.0, 100.0], "type": "float" } ] } ``` ``` sqlite> SELECT COUNT(*) FROM intermediate_result; COUNT(*) 0 ``` 2. If "track_intermediate_results" is present in the config and is set to `true`, then the values will be found in the database (200 jobs with 10 intermediate results each): ```json { "proposer": ..., "script": ..., "resource": ..., "n_parallel": ..., "target": "min", "n_samples": ..., "resource_args": { "track_intermediate_results": true }, "parameter_config": [ { "name": "x", "range": [-1.0, 100.0], "type": "float" } ] } ``` ``` sqlite> SELECT COUNT(*) FROM intermediate_result; 2000 ``` ================================================ FILE: Examples/intermediate_results/quad_equation_min/quad_min.py ================================================ #!/usr/bin/env python """ Modified Rosenbrock function for HPO and aup ============================================ .. Copyright (c) 2018 LG Electronics Inc. SPDX-License-Identifier: GPL-3.0-or-later """ import sys import aup from time import sleep def rosenbrock(x, a=2, b=4, c=5): sleep(1) it = 1.0 for _ in range(10): res = x*x*a + x*b + c res += it it -= 1.0 / 10 aup.print_result(res) if __name__ == "__main__": if len(sys.argv) != 2: print("config file required") exit(1) config = aup.BasicConfig().load(sys.argv[1]) rosenbrock(config['x']) ================================================ FILE: Examples/intermediate_results/quad_equation_min/quad_min_BOHB.json ================================================ { "name": "./intermediate_results/quad_equation_min/quad_min_BOHB_bandit.json", "proposer": "bohb", "script": "quad_min.py", "resource": "cpu", "n_parallel": 4, "target":"min", "n_iterations": 100, "num_samples": 64, "random_fraction": 0.3333333333333333, "bandwidth_factor": 3, "min_bandwidth": 0.001, "eta": 3, "min_budget": 1, "max_budget": 5, "resource_args": { "track_intermediate_results": true }, "parameter_config": [ { "name": "x", "range": [-1.0, 100.0], "type": "float" } ] } ================================================ FILE: Examples/intermediate_results/quad_equation_min/quad_min_random.json ================================================ { "name": "./intermediate_results/quad_equation_min/quad_min_random_bandit.json", "proposer": "random", "script": "quad_min.py", "resource": "cpu", "n_parallel": 4, "target":"min", "n_samples": 200, "resource_args": { "track_intermediate_results": true }, "parameter_config": [ { "name": "x", "range": [-1.0, 100.0], "type": "float" } ] } ================================================ FILE: Examples/intermediate_results/quad_equation_min/quad_min_spearmint.json ================================================ { "name": "./intermediate_results/quad_equation_min/quad_min_spearmint_bandit.json", "proposer": "spearmint", "script": "quad_min.py", "resource": "cpu", "n_parallel": 4, "target":"min", "n_samples": 50, "engine":"GPEIChooser", "resource_args": { "track_intermediate_results": true }, "parameter_config": [ { "name": "x", "range": [-1.0, 100.0], "type": "float" } ] } ================================================ FILE: Examples/job_failure_control/README.md ================================================ # Job Failure control Examples This folder contains examples that demonstrate the different scenarios under job failure conditions and how Auptimizer handles them gracefully. The examples can be broadly divided into two categories - ## 1. Job failures based on incorrect or incomplete experiment configuration (For debugging purposes only) `experiment_no_*.json` files demonstrate an ill-configured experiment setup. They will result in standard error conditions and Auptimizer will report them, providing users with detailed description of the failure. - `experiment_no_nsample.json` : Auptimizer Error ( KeyError: "Specify number of samples to randomly draw") - `experiment_no_param_config.json` : Auptimizer Error (KeyError: "Specify the parameter configuration 'parameter_config' to be searched") - `experiment_no_proposer.json` : Auptimizer Error (KeyError: "Specify the optimization 'proposer'") - `experiment_no_resource.json` : Auptimizer Error (KeyError: "Missing required value for 'resource'") - `experiment_no_script.json` : Auptimizer Error (KeyError: "Missing required value for 'script'") - `experiment_extra_argument.json` : No Auptimizer Error (for extra variable c) ## 2. Experiment persistence and job retries upon job failure The following examples show how Auptimizer provides control for allowing job retries and experiment continuation upon job failures. - `experiment_job_retries.json` : Auptimizer retries failed job 3 times. - `experiment_job_ignore_fail.json` : Auptimizer ignores failed job, and continues the experiment - `experiment_job_retries_ignore_fail.json` : Auptimizer retries failed job 3 times. If all retries fail, Auptimizer ignores the failed job and continues the experiment. Auptimizer uses the `job_failure` variable to control this behavior, with the following parameters: - `job_retries` : number of times to retry a failed job, default is 0. Preference is given to a different resource, if multiple resources are available. - `ignore_fail` : whether to continue the experiment if a job fails, default is False. Currently [BOHB, EAS, Hyperband] proposers do not support experiment continuation upon job failure. The examples use `test.py` file, which will fail to return any result when `time=3`. When we run the base case `experiment_test.json` as: python3 -m aup experiment_test.json It will print something like: 2018-10-17 12:02:02 - aup.EE.Resource.CPUResourceManager - CRITICAL - Failed to run job: ******/Examples/job_failure_control/test.py ******/Examples/job_failure_control/jobs/79.json 2018-10-17 12:02:02 - aup.EE.Experiment - CRITICAL - Stop Experiment due to job failure Best job (80) with score 4.000000 in experiment 14 ## experiment ill-configuration Other `experiment_no_*.json` files demonstrate ill-configured experiment setup. ================================================ FILE: Examples/job_failure_control/experiment_extra_argument.json ================================================ { "name": "./job_failure_control/experiment_extra_argument.json", "script": "rosenbrock_hpo.py", "resource": "cpu", "n_parallel": 2, "target": "min", "proposer": "random", "n_samples": 20, "random_seed": 0, "parameter_config": [ { "name": "x", "range": [ 0, 10 ], "type": "float" }, { "name": "y", "range": [ 0, 10 ], "type": "float" }, { "name": "c", "range": [ 0, 1 ], "type": "float" } ] } ================================================ FILE: Examples/job_failure_control/experiment_job_ignore_fail.json ================================================ { "name": "./job_failure_control/experiment_job_ignore_fail.json", "proposer": "sequence", "n_samples": 10, "random_seed": 1, "script": "test.py", "job_failure": { "ignore_fail": true }, "parameter_config": [ { "name": "time", "range": [ 1, 10 ], "type": "int" } ], "resource": "cpu", "n_parallel": 2, "target":"max" } ================================================ FILE: Examples/job_failure_control/experiment_job_retries.json ================================================ { "name": "./job_failure_control/experiment_job_retries.json", "proposer": "sequence", "n_samples": 10, "random_seed": 1, "script": "test.py", "job_failure": { "job_retries": 3 }, "parameter_config": [ { "name": "time", "range": [ 1, 10 ], "type": "int" } ], "resource": "cpu", "n_parallel": 2, "target":"max" } ================================================ FILE: Examples/job_failure_control/experiment_job_retries_ignore_fail.json ================================================ { "name": "./job_failure_control/experiment_job_retries_ignore_fail.json", "proposer": "sequence", "n_samples": 10, "random_seed": 1, "script": "test.py", "job_failure": { "job_retries": 3, "ignore_fail": true }, "parameter_config": [ { "name": "time", "range": [ 1, 10 ], "type": "int" } ], "resource": "cpu", "n_parallel": 2, "target":"max" } ================================================ FILE: Examples/job_failure_control/experiment_no_nsample.json ================================================ { "name": "./job_failure_control/experiment_no_nsample.json", "proposer": "random", "random_seed": 1, "script": "rosenbrock_hpo.py", "parameter_config": [ { "name": "x", "range": [ -5, 5 ], "type": "float" }, { "name": "y", "range": [ -5, 5 ], "type": "float" } ], "resource": "cpu", "n_parallel": 4, "target":"min" } ================================================ FILE: Examples/job_failure_control/experiment_no_param_config.json ================================================ { "name": "./job_failure_control/experiment_no_param_config.json", "proposer": "random", "n_samples": 30, "random_seed": 1, "script": "rosenbrock_hpo.py", "resource": "cpu", "n_parallel": 4, "target":"min" } ================================================ FILE: Examples/job_failure_control/experiment_no_proposer.json ================================================ { "name": "./job_failure_control/experiment_no_proposer.json", "n_samples": 30, "random_seed": 1, "script": "rosenbrock_hpo.py", "parameter_config": [ { "name": "x", "range": [ -5, 5 ], "type": "float" }, { "name": "y", "range": [ -5, 5 ], "type": "float" } ], "resource": "cpu", "n_parallel": 4, "target":"min" } ================================================ FILE: Examples/job_failure_control/experiment_no_resource.json ================================================ { "name": "./job_failure_control/experiment_no_resource.json", "proposer": "random", "n_samples": 30, "random_seed": 1, "script": "rosenbrock_hpo.py", "parameter_config": [ { "name": "x", "range": [ -5, 5 ], "type": "float" }, { "name": "y", "range": [ -5, 5 ], "type": "float" } ], "n_parallel": 4, "target":"min" } ================================================ FILE: Examples/job_failure_control/experiment_no_script.json ================================================ { "name": "./job_failure_control/experiment_no_script.json", "proposer": "random", "n_samples": 30, "random_seed": 1, "parameter_config": [ { "name": "x", "range": [ -5, 5 ], "type": "float" }, { "name": "y", "range": [ -5, 5 ], "type": "float" } ], "resource": "cpu", "n_parallel": 4, "target":"min" } ================================================ FILE: Examples/job_failure_control/experiment_test.json ================================================ { "name": "./job_failure_control/experiment_test.json", "proposer": "sequence", "n_samples": 10, "random_seed": 1, "script": "test.py", "parameter_config": [ { "name": "time", "range": [ 1, 10 ], "type": "int" } ], "resource": "cpu", "n_parallel": 2, "target":"max" } ================================================ FILE: Examples/job_failure_control/rosenbrock_hpo.py ================================================ #!/usr/bin/env python """ Modified Rosenbrock function for HPO and aup ============================================ .. Copyright (c) 2018 LG Electronics Inc. SPDX-License-Identifier: GPL-3.0-or-later """ import sys """ from aup import BasicConfig, print_result def rosenbrock(conf, a=1, b=100): x = conf.x y = conf.y return (a-x)*(a-x) + b*(y-x*x)*(y-x*x) if __name__ == "__main__": if len(sys.argv) != 2: print("config file required") exit(1) config = BasicConfig().load(sys.argv[1]) val = rosenbrock(config) print_result(val) """ from aup import aup_args @aup_args def rosenbrock(x, y, a=1, b=100): return (a-x)*(a-x) + b*(y-x*x)*(y-x*x) if __name__ == "__main__": if len(sys.argv) != 2: print("config file required") exit(1) rosenbrock(sys.argv[1]) ================================================ FILE: Examples/job_failure_control/test.py ================================================ #!/usr/bin/env python3 """ Job will fail when sleep time is 1 ============================================ .. Copyright (c) 2018 LG Electronics Inc. SPDX-License-Identifier: GPL-3.0-or-later """ import sys from time import sleep from aup import BasicConfig, print_result if __name__ == "__main__": if len(sys.argv) != 2: print("config file required") exit(1) config = BasicConfig().load(sys.argv[1]) sleep(1+config.time/10.) if config.time == 3: exit(1) print_result(config.time) ================================================ FILE: Examples/mnist_keras_save_model/README.md ================================================ # Save best model feature This example showcases how to use saving the best model feature. This feature allows the user to save the best performing model after running the HPO experiment. This is achieved by running the training script again using the best hyperparamters obtained during HPO the experiment. The model, by default, will be saved to path ``aup_models/models_/``. ## Usage In order to use this feature, please add to the configuration file: "resource_args": { "save_model": true } Depending on whether ``@aup_args`` is used, the training script needs to be changed differently. Please check ``mnist.py`` and ``mnist_wo_decorator.py`` for examples of adapting the training script with and without using the decorator, respectively. ## Run experiment To run the experiment on the remote machine, make sure to change the ``node.txt`` file and "workingdir" in ``exp_random_node.json`` to the your own settings. Then run ```sh python -m aup.setup python -m aup exp_random_node.json ``` To run the experiment using the local cpu, please run ```sh python -m aup.setup cpu.ini python -m aup exp_random_cpu.json ``` ================================================ FILE: Examples/mnist_keras_save_model/cpu.ini ================================================ [Auptimizer] # Auptimizer environment folder to be created, this file will be copied over Auptimizer_PATH=./.aup # Temp folder TMP_FOLDER=./aup_tmp # SQL engine SQL_ENGINE=sqlite ================================================ FILE: Examples/mnist_keras_save_model/exp_random_cpu.json ================================================ { "name": "random_wo_decorator", "proposer": "random", "script": "mnist_wo_decorator.py", "resource": "cpu", "n_parallel": 4, "target":"max", "n_samples": 10, "resource_args": { "save_model": true }, "parameter_config": [ { "name": "dropout", "range": [0.0, 0.5], "type": "float" }, { "name": "learning_rate", "range": [ 0.001, 0.01 ], "type": "float" }, { "name": "conv1", "range": [ 20, 50 ], "type": "int" }, { "name": "conv2", "range": [ 40, 80 ], "type": "int" } ] } ================================================ FILE: Examples/mnist_keras_save_model/exp_random_node.json ================================================ { "name": "random_w_decorator_remote", "workingdir": "/home/usr/aup_demo", "proposer": "random", "script": "mnist.py", "resource": "node", "n_parallel": 4, "target":"max", "n_samples": 10, "resource_args": { "save_model": true }, "runtime_args": { "overwrite": true }, "parameter_config": [ { "name": "dropout", "range": [0.0, 0.5], "type": "float" }, { "name": "learning_rate", "range": [ 0.001, 0.01 ], "type": "float" }, { "name": "conv1", "range": [ 20, 50 ], "type": "int" }, { "name": "conv2", "range": [ 40, 80 ], "type": "int" } ] } ================================================ FILE: Examples/mnist_keras_save_model/mnist.py ================================================ #!/usr/bin/env python3 """ MNIST convolutional network using Keras ============================================ .. Copyright (c) 2018 LG Electronics Inc. SPDX-License-Identifier: GPL-3.0-or-later """ from aup import print_result, aup_args, aup_save_model import tensorflow as tf import numpy as np from tensorflow import keras from tensorflow.keras import layers from math import log import sys num_epochs = 5 batch_size = 64 num_classes = 10 input_shape = (28, 28, 1) # Load example MNIST data and pre-process it # the data, split between train and test sets (x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data() # Scale images to the [0, 1] range x_train = x_train.astype("float32") / 255 x_test = x_test.astype("float32") / 255 # Make sure images have shape (28, 28, 1) x_train = np.expand_dims(x_train, -1) x_test = np.expand_dims(x_test, -1) # convert class vectors to binary class matrices y_train = keras.utils.to_categorical(y_train, num_classes) y_test = keras.utils.to_categorical(y_test, num_classes) def get_flops(): run_meta = tf.RunMetadata() opts = tf.profiler.ProfileOptionBuilder.float_operation() # We use the Keras session graph in the call to the profiler. flops = tf.profiler.profile(graph=keras.backend.get_session().graph, run_meta=run_meta, cmd='op', options=opts) return flops.total_float_ops # Prints the "flops" of the model. def get_model(**kwargs): model = keras.Sequential( [ keras.Input(shape=input_shape), layers.Conv2D(kwargs['conv1'], kernel_size=(3, 3), activation="relu"), layers.MaxPooling2D(pool_size=(2, 2)), layers.Conv2D(kwargs['conv2'], kernel_size=(3, 3), activation="relu"), layers.MaxPooling2D(pool_size=(2, 2)), layers.Flatten(), layers.Dropout(kwargs['dropout']), layers.Dense(num_classes, activation="softmax"), ] ) model.compile(loss="categorical_crossentropy", optimizer=keras.optimizers.Adam(learning_rate=kwargs['learning_rate']), metrics=["accuracy"]) return model @aup_args def do_train(learning_rate=0.001, dropout=0.1, conv1=32, conv2=64): model = get_model(**locals()) model.fit( x_train, y_train, batch_size=batch_size, epochs=num_epochs, verbose=1, validation_split=0.5, ) res = model.evaluate( x_test, y_test, batch_size=batch_size, verbose=1, ) # register the saving model function # add model as argument aup_save_model(save_model, model) flops = get_flops() return (res[1]-1.0) / log(flops) def save_model(model): import os # dummy folders as example os.makedirs('f1/f2') os.makedirs('f1/f3') # actual model model.save('./f1/f2/mnist.h5') if __name__ == '__main__': if len(sys.argv) < 2: print("config file required") exit(1) do_train(sys.argv[1]) ================================================ FILE: Examples/mnist_keras_save_model/mnist_wo_decorator.py ================================================ #!/usr/bin/env python3 """ MNIST convolutional network using Keras ============================================ .. Copyright (c) 2018 LG Electronics Inc. SPDX-License-Identifier: GPL-3.0-or-later """ from aup import BasicConfig, print_result import tensorflow as tf import numpy as np from tensorflow import keras from tensorflow.keras import layers from math import log import sys num_epochs = 5 batch_size = 64 num_classes = 10 input_shape = (28, 28, 1) # Load example MNIST data and pre-process it # the data, split between train and test sets (x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data() # Scale images to the [0, 1] range x_train = x_train.astype("float32") / 255 x_test = x_test.astype("float32") / 255 # Make sure images have shape (28, 28, 1) x_train = np.expand_dims(x_train, -1) x_test = np.expand_dims(x_test, -1) # convert class vectors to binary class matrices y_train = keras.utils.to_categorical(y_train, num_classes) y_test = keras.utils.to_categorical(y_test, num_classes) def get_flops(): run_meta = tf.RunMetadata() opts = tf.profiler.ProfileOptionBuilder.float_operation() # We use the Keras session graph in the call to the profiler. flops = tf.profiler.profile(graph=keras.backend.get_session().graph, run_meta=run_meta, cmd='op', options=opts) return flops.total_float_ops # Prints the "flops" of the model. def get_model(**kwargs): model = keras.Sequential( [ keras.Input(shape=input_shape), layers.Conv2D(kwargs['conv1'], kernel_size=(3, 3), activation="relu"), layers.MaxPooling2D(pool_size=(2, 2)), layers.Conv2D(kwargs['conv2'], kernel_size=(3, 3), activation="relu"), layers.MaxPooling2D(pool_size=(2, 2)), layers.Flatten(), layers.Dropout(kwargs['dropout']), layers.Dense(num_classes, activation="softmax"), ] ) model.compile(loss="categorical_crossentropy", optimizer=keras.optimizers.Adam(learning_rate=kwargs['learning_rate']), metrics=["accuracy"]) return model def do_train(learning_rate=0.001, dropout=0.1, conv1=32, conv2=64, save_model=False, folder_name=None): model = get_model(**locals()) model.fit( x_train, y_train, batch_size=batch_size, epochs=num_epochs, verbose=1, validation_split=0.5, ) res = model.evaluate( x_test, y_test, batch_size=batch_size, verbose=1, ) # this means we are in best job context # config also contains save_model flag and # folder_name path if save_model is True: import shutil import os path = os.path.join('aup_models', folder_name) if os.path.exists('aup_models') is False: os.makedirs('aup_models') if os.path.exists(path) is True: shutil.rmtree(path) os.makedirs(path) os.chdir(path) save_model_fun(model) flops = get_flops() return (res[1]-1.0) / log(flops) def save_model_fun(model): import os # dummy folders as example os.makedirs('f1/f2') os.makedirs('f1/f3') # actual model model.save('./f1/f2/mnist.h5') if __name__ == '__main__': if len(sys.argv) < 2: print("config file required") exit(1) config = BasicConfig() config.load(sys.argv[1]) val = do_train(**config) print(str(val)) print_result(val) ================================================ FILE: Examples/mnist_keras_save_model/node.txt ================================================ user@192.168.XX.XX user@192.168.XX.XX ================================================ FILE: Examples/profiler_examples/README.md ================================================ For more details about how to use Profiler and run the examples in this folder refer to [Profiler](https://github.com/LGE-ARC-AdvancedAI/auptimizer/tree/master/src/aup/profiler). We have also provided detailed experiments we performed using Profiler to estimate the performance of various edge-devices under [Experiments]( https://github.com/LGE-ARC-AdvancedAI/auptimizer/tree/master/Examples/profiler_examples/experiments). ================================================ FILE: Examples/profiler_examples/bench/download.sh ================================================ # Copyright (c) 2020 LG Electronics Inc. # SPDX-License-Identifier: GPL-3.0-or-later wget https://storage.googleapis.com/download.tensorflow.org/models/mobilenet_v1_2018_02_22/mobilenet_v1_1.0_224.tgz wget https://storage.googleapis.com/download.tensorflow.org/models/mobilenet_v1_2018_02_22/mobilenet_v1_0.75_224.tgz tar -xvzf mobilenet_v1_1.0_224.tgz tar -xvzf mobilenet_v1_0.75_224.tgz ================================================ FILE: Examples/profiler_examples/bench/test_perf.py ================================================ # Copyright (c) 2020 LG Electronics Inc. # SPDX-License-Identifier: GPL-3.0-or-later # Compute the overall inference time for a given tflite model import tensorflow as tf from tflite_runtime.interpreter import Interpreter import tensorflow.random import numpy as np import time import os WARMUP = 1 ITER = 500 CONSTANT = 0.5 def compute(model_path): now = time.monotonic() intp = Interpreter(model_path) x = intp.tensor(intp.get_input_details()[0]['index']) iy = intp.get_output_details()[0]['index'] intp.allocate_tensors() t1 = time.monotonic() - now now = time.monotonic() for i in range(WARMUP): #x().fill(CONSTANT) x =np.random.rand() intp.invoke() y = intp.get_tensor(iy) t2 = time.monotonic() - now now = time.monotonic() for i in range(ITER): #x().fill(CONSTANT) x =np.random.rand() intp.invoke() y = intp.get_tensor(iy) t3 = time.monotonic() - now return t1, t2/float(WARMUP), t3/float(ITER) if __name__ == "__main__": import sys if len(sys.argv) != 2: print("test_acc.py ") print(compute(sys.argv[1])) ================================================ FILE: Examples/profiler_examples/env_benchmark.template ================================================ # Copyright (c) 2020 LG Electronics Inc. # SPDX-License-Identifier: GPL-3.0-or-later #User data Variables IMAGEREPO=tensorflow/tensorflow:1.15.0-py3 APTREQUIREMENTS="wget" # PIPREQUIREMENTS="ipython numpy" PRERUN="wget https://dl.google.com/coral/python/tflite_runtime-1.14.0-cp36-cp36m-linux_x86_64.whl; pip install tflite_runtime-1.14.0-cp36-cp36m-linux_x86_64.whl" DIR=bench SCRIPT=test_perf.py COMMAND=python SAMPLETIME=3 OUTPUTFILE=out.txt DOCFILE=Dockerfile DOCKCPUS="4.0" DOCKMEMORY="2.0g" # Additional docker arguments could be passed as following: # To run Docker container with privilege capability change to 'true' # To use Volume instead of copying data with the current folder # use the format "-v /path/in/source:/path/in/destination" as string # DOCKER_ARGS="--privileged -v /data:/mnist_data" DOCKER_ARGS= ================================================ FILE: Examples/profiler_examples/env_mnist.template ================================================ # Copyright (c) 2020 LG Electronics Inc. # SPDX-License-Identifier: GPL-3.0-or-later #User data Variables IMAGEREPO=tensorflow/tensorflow:1.3.0 # APTREQUIREMENTS="curl vim" # PIPREQUIREMENTS="ipython numpy" DIR=mnist SCRIPT=mnist.py COMMAND=python SAMPLETIME=3 OUTPUTFILE=out.txt DOCFILE=Dockerfile DOCKCPUS="4.0" DOCKMEMORY="2.0g" # Additional docker arguments could be passed as following: # To run Docker container with privilege capability change to 'true' # To use Volume instead of copying data with the current folder # use the format "-v /path/in/source:/path/in/destination" as string # DOCKER_ARGS="--privileged -v /data:~/Documents/Data/mnist1" DOCKER_ARGS= ================================================ FILE: Examples/profiler_examples/experiments/Readme.md ================================================ # Use Profiler for On-Device Resource Footprint Estimation Profiler can be used to estimate model script performance and resource requirements for a target device on the development machine. Given a set of models and the resource constraints (i.e. memory and CPU) to reflect *target device specs* or *the desired resource budget*, Profiler can help with the following **two scenarios**: 1. The ranking of the runtimes and memory usages of the model scripts measured using Profiler on the development machine is indicative of their ranking on the target device. For instance, if `Model1` is faster than `Model2` when measured using Profiler on the development machine, `Model1` will be faster than `Model2` on the device. This ranking is valid only when the CPUs are running at **full utilization**. 2. The runtimes and memory usages of the model scripts measured using Profiler on the development machine is related by a simple **linear relationship** to the usage measured with a native profiling tool on the actual device. In other words, if a model runs in time `x` when measured using Profiler, it will run approximately in time `(a*x+b)` on the target device (where `a` and `b` can be discovered by profiling a few models on the device with a native profiling tool). The strength of this relationship depends on the architectural similarity between the models. In general, the models designed for the same task are architecturally similar as they are composed of the same set of layers, making Profiler a useful tool for model selection. To support these claims and showcase Profiler's capabilities, we have conducted extensive experiments on three devices: LG G6, Samsung S8, and NVIDIA Jetson Nano. For anyone interested in conducting similar experiments on their own devices, we have put together the following Experiment Guidelines. ## Guidelines for Experiment Setup The goal of the experiment is to explore the relationship of model runtime and resource footprint measured using Profiler on the development machine and model runtime and resource footprint measured with a native profiling tool on a target device. **For the first scenario**, to get a performance ordering of models, the user can acquire the CPU and memory constraints of the target device, and run Profiler on a desktop CPU with those constraints. Please make sure that the models used in Profiler match those to be deployed on-device (e.g., both are TFLite models). Our experiments show that the output from Profiler should provide the relative goodness of models for CPU-based devices. In some cases, when two models are very close in performance (e.g., with peak memory usage difference of ~10MB), a flipped ordering might be observed on-device compared to Profiler output. However, the performances should still be close to each other. **For the second scenario**, to acquire a linear relationship between Profiler estimates and on-device performance, the user needs to profile a set of models both using Profiler on the development machine and with a native profiling tool on the target device. Below, are the general steps to conduct this experiment. - ***Step 1***: Prepare the models and profiling scripts for both Profiler and the target device. The models running on Profiler and on-device should be in the same format / generated using the same framework. The scripts running on Profiler and on-device may be written in different programming languages, but should implement the same functionality (e.g., both running inference using batch size 1 for 500 iterations). - ***Step 2***: Acquire device resource constraints (i.e. number of CPU cores/threads and memory limit), and input these constraints in the Profiler user variables in `env.template`. - ***Step 3***: Run experiments. - Run the profiling script using Profiler for all models on a desktop CPU. - Run the profiling script using a native profiling tool on the target device. - ***Step 4***: Due to possible variances across experiments, we recommend running Step 3 multiple times and taking the averages of the measured metrics for further analysis. - ***Step 5 (optional)***: Use any regression analysis tool to establish the relationship between Profiler outputs and the on-device measurements for the profiled models. ## Experiment I - Profiler and TFLite Model Benchmark for LG G6 and Samsung S8 Deployments ### Experiment Configurations: - ***Models:*** InceptionV3, SqueezeNet, MobileNetV2-0.25x, -0.5x, -0.75x, -1.0x - ***Profiling script:*** Profile inference performance. Run inference using a selected model for 500 iterations with batchsize 1 on randomly generated input - ***Framework:*** TFLite - ***CPU:*** CPU = 1, 2, 4 for Profiler, use Thread = 1, 2, 4 on the phone - ***Memory:*** Max memory is 4 GB for both phones, but the memory variable is set to 2 GB in Profiler, which simulates a lower memory limit. - ***On-device profiling tool:*** [TFLite Model Benchmark Tool](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/tools/benchmark) ### Results: The experiment was conducted 5 times. We measured the average inference time on one input sample across 500 iterations, and the peak memory usage. The averages of 5 experiments are shown in Figures 1 and 2. The formula and R-squared value for the best fitting line are also shown in the plots. Even though Profiler only outputs the script's total execution time, users can utilize the Profiler environment and measure the execution time of different functions in their profiling script like we did in this experiment. An example script for measuring the inference time is provided in [script](https://github.com/LGE-ARC-AdvancedAI/auptimizer/blob/master/Examples/profiler_examples/bench/test_perf.py). |![image](figures/G6_S8_time.png)| |:--:| | *Figure 1: Model inference time measured with Profiler on the desktop vs TFLite Model Benchmark on LG G6, and Profiler on the desktop vs TFLite Model Benchmark on Samsung S8.* | For both phones, a linear relationship can be established between the inference time measured in the Profiler environment and the inference time measured on the phones, for various numbers of CPUs/threads. |![image](figures/G6_S8_peakmemory.png)| |:--:| | *Figure 2: Peak memory usage measured on Profiler vs LG G6, and Profiler vs Samsung S8.* | The peak memory usage does not vary much across the number of CPUs/threads. So we only present one representative plot with `CPU/thread = 1` for both phones. Again, a linear relationship can be observed. The dot on the right-upper corner represents the InceptionV3 model, in both Figures 1 and 2, which has a significantly larger resource footprint than the rest of the models. ## Experiment II - Profiler and Jetson Stats for Nvidia Jetson Nano Deployment ### Experiment Configurations: - ***Models:*** *Image classification models*: ShuffleNetV2-0.5x, SqueezeNet, MobileNetV2-1.0x, ResNet18, InceptionV3 *Video classification models*: 3D-SqueezeNet, 3D-ShuffleNetV2-0.25x, -0.5x, -1.0x, -1.5x, -2.0x, 3D-MobileNetV2-0.25x, -0.5x, -0.75x, -1.0x, -2.0x (model credit to [Efficient-3DCNNs](https://github.com/okankop/Efficient-3DCNNs)) - ***Profiling script:*** Profile inference performance. Run inference using a selected model for 500 iterations with batchsize 1 on randomly generated input - ***Framework:*** Pytorch - ***CPU:*** CPU = 1 for Profiler, use 1 CPU core on NVIDIA Jetson Nano - ***Memory Limit:*** Max memory on NVIDIA Jetson Nano is 4 GB. The memory variable is set to 4 GB in Profiler. - ***On-device profiling tool:*** [jetson-stats](https://github.com/rbonghi/jetson_stats) ### Results: We ran the experiment 5 times. For this experiment, we measured the script's total execution time (direct output from Profiler, denoted as `Runtime` in figures), average memory usage, and peak memory usage. The averages of these measures across five experiments are shown in Figures 3 and 4. The formula and R-squared value for the best fitting line are also shown in the plots. |![image](figures/nano_image_models.png)| |:--:| | *Figure 3: Image model performances measured using Profiler on the desktop and Jetson Stats on NVIDIA Jetson Nano.* | |![image](figures/nano_video_models.png)| |:--:| | *Figure 4: Video model performances measured using Profiler on the desktop and Jetson Stats on NVIDIA Jetson Nano.* | Note that separate plots are made for image models and video models, respectively. This is due to the fact that video models profiled here are architecturally different from the image models. As we have discussed, Profiler estimation is only valid for models with similar architectures or layers. ## Conclusion From the experimental results shared above, we have shown that Profiler can help users build a good estimate of model runtime and memory usage on LG G6, Samsung S8, and NVIDIA Jetson Nano, for some popular image/video recognition models. We hope that Profiler's estimation capability can enable leaner and faster model development for resource-constrained devices. Profiler might have limitations for certain models/devices, resulting in inconsistencies between Profiler outputs and on-device measurements. Therefore, we welcome the community to run experiments on their device of choice and **report any inconsistencies or limitations via GitHub Issues**. ================================================ FILE: Examples/profiler_examples/internal/ImageNet Experiments.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Copyright (c) 2020 LG Electronics Inc.\n", "# SPDX-License-Identifier: GPL-3.0-or-later\n", "# ImageNet Experiments with MobileNet Inference using Profiler" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "output_type": "error", "ename": "SyntaxError", "evalue": "invalid syntax (, line 1)", "traceback": [ "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m1\u001b[0m\n\u001b[0;31m We performed many ImageNet Experiments in the inference mode under different Compute constraints using Profiler. We used different MobileNet versions for the experiments detailed in https://www.tensorflow.org/lite/guide/hosted_models.\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" ] } ], "source": [ "We performed many ImageNet Experiments in the inference mode under different Compute constraints using Profiler. We used different MobileNet versions for the experiments detailed in https://www.tensorflow.org/lite/guide/hosted_models.\n", "\n", "The source code used for Inference is available at 'https://gitlab.lgsvl.net/jason.liu/compression/tree/compression_profiler/src/mobilenet' \n", "and specifically 'test_perf.py'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The experimental settings used 'Mobilenet_V1_0.25_224', 'Mobilenet_V1_0.50_224', 'Mobilenet_V1_0.75_224', 'Mobilenet_V1_1.0_224'. The CPU contraints were 4, 2, 1, 0.5 and Inference was performed with 500 and 5000 iterations over a single validation TFrecord." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We recorded the time taken for the inference process to finish per each iteration under these conditions and observed the following results" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Iter = 5000\t\t\t\t\t\t\t\t\t\t\t\t" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "| Exp | Mob 1.0 | Mob 0.75 |Mob 0.5 |Mob 0.25 |\n", "|----------|:-------------:|:-------------:|:-------------:|:-------------:|\n", "| CPU = 4 | 0.02016684028 | 0.01380343905 | 0.008244011551 | 0.004547368029 |\n", "| CPU = 2 | 0.02899219721 | 0.01863248097 | 0.01087483355 |0.005579292277 |\n", "| CPU = 1 | 0.05820066958 | 0.03714312666 | 0.02166576314 | 0.0111540261 |\n", "| CPU = 0.5 | 0.1165416765 | 0.07581892986 | 0.04407729727 | 0.02251805596 |" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlgAAAFzCAYAAADi5Xe0AAAhZUlEQVR42u3dDZBVdf34cfjxg0CmoRqIgQgqEWigLOiBCGqCYWooevAX/eo/UJAmBdG4gk9AKURqSuv4zzKd0X85SslDDyz2QzBDYFQMRbCEkhB8AORpQZZddGE//9/3zNw7u7AsLOyF5e7rNXMG793D7nI+3nvee+65Z1sFAABNqpVNAAAgsAAABBYAgMACAEBgAQAILAAAgQUAgMACABBYAAACCwAAgQUAILAAAAQWAIDAAgBAYAEACCwAAIEFAIDAAgAQWAAAAgsAAIEFACCwAAAEVm179uyJq666Kn7xi18c97F9+/bFK6+8ct5urMWLF2f/tvqW+++/v866R44ciUcffTRuueWWuO666+Lmm2+ORx55JI4ePXrc5y3UugBAkQfWli1bYvr06bFmzZrzdmPdfffdpxxY8+bNO6X1CrkuAFDkgfX0009n95/PgTVr1qy49dZbT7reP//5z+zf+uMf/zj+9a9/xZtvvhkvvPBCdjvdnz5e6HUBAIHV7FVUVJzykaLf/OY32bopgmpLMZTuv++++wq+LgBQ5IFV38tar732Wv7jVVVVsWTJkrjpppvi2muvjTlz5sTvf//7LGpqu/fee+PGG2+MnTt3ZkeSZsyYEb/73e/OyobavHlz9n2n859OZvbs2XH99ddHTU1NnfvT7RtuuCFbCr0uANCCA6uysjLmzp1b73lFKbgOHjxYJ7BSfNVe/6GHHmrw+0nrn+i8qdzypz/96aT/rtWrV2frrly5Mn79619ncfejH/0oO2q0a9euOrGY1vvlL39Z7+e58847s4+nf3eh1gUAWkBgJSd6iXDhwoXZ/SnC0pGp6urq2Lt3bxY96f4HHnigTmCl+372s59l66R3zp3s3XNNFVi57/Oaa6457u//8Ic/jFdffTVbr7y8vMGX63Iv86V3VBZqXQCgBQdWuuRAemdhaWnpcS97Jeldeylo3njjjTqBtX79+rO+oe64447se0mXREixk04wf/nll+Ouu+7Kvqf0b0jSkbljw7C2dH/uCF6h1gUAWnBgbd++/aRHl9Kybdu2OoGVjl41Fym00nlh6ftKR+DS93YqR5pSpBVqXQCgBQfWv//971MKrE2bNtUJrMacZ9RULxE25MEHH8w+z/PPP599b+m/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\n", "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import Image\n", "Image(filename='exp_img/5000_1.png') " ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlgAAAFzCAYAAADi5Xe0AAAnSElEQVR42u3dC7hVZZ0/cBwGHpQpakb//kGSLngLmxp5vGTS/wmGmaIsu9A0jT5p/4rS6B9BZUQXSFNL0czUtHGyKS0u3sBEMEWkvHQ08QYFIXjhoNzlcoAD5/33W8w67bPP3vvsc9iHy+HzeZ73Oey9Fnutvda79vru933X2t0SAAA11c0mAAAQsAAABCwAAAELAAABCwBAwAIAELAAABCwAAAELAAAAQsAAAELAEDAAgAQsAAABCwAAAQsAAABCwBAwAIAQMACABCwAAAELAAABCwAAAELAEDAKrR69er05S9/Of3oRz9qNW3t2rXphRde2Gfe/B133JGta6ny85//vMW8O3bsSPfee2/63ve+l772ta+liy++ON1zzz1p586drV63s+Zty/PPP5+mTp2avdb48ePTN77xjXTNNdekRx99NDU1NbWYd+7cuSXf91e/+tX0rW99K/t/f/jDH1r8n9/+9rfZPLG+5WzZsiWb59JLL21zfX/2s59l877yyiuOxP1AqePXPgTYywFr6dKl2Un/4Ycf3mfe/HXXXVd1wLrpppuqmq8z5y0nwtNdd92VvvKVr5R9P7/4xS9ahKxyAau4RNgTsCh3/NqHAHs5YEUrSjy/LwWsiRMnpu9///ttzvfHP/4xW/fvfOc76U9/+lPavn17Wrx4cfY4no/pnT1vJbNnz87m//rXv57uvvvu9NJLL2WvtWHDhvTQQw9lLVIxfdasWa0C1rx581q8VrScbdq0KQtREdjOP//85pNnrQMW+4998fgFELD2wQ/oCBHVthTdeOON2bwRggpFGIrn41t8Z89bToSp6NaL7sVly5aVnCe6dSIoRQBraGioGLAK/dd//Vc2T+w7AUvAErAA9rGAVaobLIJBLk76M2fOTBdddFEWBC644IJ0yy23ZCGo0A033JC++93vppUrV2YtTxEYfvnLX3ZoPZcsWdJmWMhNmjQpawUqHscUj7/97W9npbPnLefXv/519j5iPFlb88W2evnll6sOWPlr5/N0dhfhT3/606xVMdYxwuc3v/nNLDheddVVaeHChSWXNWPGjKzexHxRN6I1r3D8Wlt1ptq6FyLAxjpHC2PMO2HChGzdHn/88Vb777777kuTJ0/OutXiffz4xz8u+R7a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q6MBK8T2j9sDXH755c13W48TYlzJVngz0M4MWPmJOO6NFS1+EexiG8aJvDBItlVnqq17sY7RqhnLivcb2zi6cKMe57f2yG9QGy0u0boVV1LGPoiWxQhojzzySKv9UO3y2xLvOb/XVKn62551KqXc8dsZAauW2wWgywQsAAABCwAAAQsAQMACABCwAAAQsAAABCwAAAELAAABCwBAwAIAELAAABCwAAAELAAAAQsAQMACAEDAAgAQsAAABCwAAAQsAAABC/aYm2++Of3zP/9zeuMb35hOPvnk9IMf/CA1NTVl09asWZP69evXXPr3759OOumkdN1112XTN2zYkD0f8xWK6WeddVZN1u+3v/1tOu6441o9/9nPfjY99dRT2foOHjw4velNb0ojR45My5Yts707oK3tmG/v3KRJk9IPf/hD9Xs3lduO+fb+3e9+l975zndm6/+FL3whbdu2reTrTJgwocV7efe73+3DDQEL9pbLL788nXbaaenBBx9MDQ0N2Qf6u971rnTxxRe3OAHFiSbs3LkzPfnkk+nYY49N8+bN6/QT0JYtW9Kpp56ajjnmmBbPx3rEet57771pyJAhWRjYvHlz+ta3vpXe//73297tdN9991Xcjvn2jmCydevWbHqsx74esPbl+l1pO+bbO/bFW97yljRz5sy0du3a9IlPfCJdcsklJV/vox/9aLr//vt9qCFgwd62fv36NGDAgLRw4cIWz//hD3/IvimXOgHlPvaxj2Unmc4OWHEC+spXvtIqYBWuY6GXXnopHXnkkc0tFLZ3xxRvx8J1HD16dPrMZz6T/d2XA9a+vr0rbcd8HefMmZPe9773NT8f7+XEE08s+Xpve9vbsv0GAha009ALN7WrtGXWrFnp7W9/e8V5ik9A27dvz7osjj766FRXV9fuE1B8Ey/sxsjLbbfd1mreRx99NL3nPe9Jzz77bKuAdcUVV6Rp06a1+j933nln+td//deabO+Xh53YrrK/b+9K27Fwe+cn8fHjx9c0YDXe87ftKvv79q60HfPtHcv54he/2Px8dA/G60XLVqFYzwjEEQwHDhyYPvjBD6YlS5b40ETAgr0RsH75y1+m9773vVWdgPLyute9LhvH0tljVOJEMmzYsPT000+n5557rlXA+tCHPpRefvnlFs+98MIL2Rii6NrZFwPWvry929qOpbb3vh6w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6NoBa9y4cemiiy6yZwAAAWt3NTQ0pDFjxqRu3boJWACAgFULZ555Zho5cmT2V8ACAASsGqivr8/+nnfeeQIWACBg1VI1AWvFihWprq5OURRFURSlZiXyxQEdsAAAtGAJWACAgCVgAQAIWAAAAhYAgIAFAICABQAgYAEACFgAAAhYAAACFgCAgAUAIGABACBgAQAIWAAAAhYAAAIWAICABQAgYAEAIGABAAhYAAACFgAAAhYAgIAFACBgAQAIWAAACFgAAAIWAICABQCAgAUAIGABAAhYAAAIWAAAAhYAgIAFAICABQAgYAEACFhp7ty56dhjj00HH3xwOuuss9LWrVtLzjd69OjUrVu35jJ48GB7BwAQsIpt3rw5HXbYYWnatGlp9erV6fTTT08TJkwoOe+wYcPS7Nmz7REAQMCqZMaMGemUU05pfvzEE0+kI488suS8ffv2TfX19fYIACBgVTJ58uR09tlnNz+O7sHo/tu0aVOL+datW5d69OiRhg8fnnr37p2GDBmSFi1aZO8AAAJWsUmTJqVzzz23xXMHHXRQWrVqVYvn5s+fn/r06ZP93bBhQxo7dmwaNGhQampqsocAAAGr0KWXXprOOeec5sd5C9aWLVsq/r/GxsbUs2fPtGzZspLTV6xYkerq6hRFURRFUWpWIl/sFwHrjjvuSKeddlrz4wULFqT+/fu3+f8igHXv3j2tXLlSBAYAtGAVirFWhx56aJoyZUrzVYTjxo1rNd/UqVPTwIEDswC2fv36NGrUqDR06FB7BwAQsEp54IEH0vHHH58NXh85cmR264bc4Ycfnl1pGCZOnJj69euXevXqlUaMGFHTZjoAgC4VsAAABCwAAAQsAAABCwBAwAIAQMACABCwAAAELAAABCwAAAELAEDAAgAQsAAAELAAAAQsAAABCwAAAQsAQMACABCwAAAQsAAABCwAAAELAAABCwBAwAIAELAAAAQsAAAELAAAAQsAQMACAEDAAgAQsAAABCwAAAQsAAABCwBAwKqBuXPnpmOPPTYdfPDB6ayzzkpbt261dwAAAaujNm/enA477LA0bdq0tHr16nT66aenCRMm2DsAgIDVUTNmzEinnHJK8+MnnngiHXnkkfYOACBgddTkyZPT2Wef3fw4uge7deuWNm3aZA8BAAJWR0yaNCmde+65LZ476KCD0qpVq+whAEDA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\n", "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Image(filename='exp_img/5000_2.png') " ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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CwBAD5aABQAIWAIWAMC+ELAAAAQsAAAELAAAAQsAQMACABCwAAAQsAAABCwAAAELAAABCwBAwAIAELAAABCwAAAELAAAAQsAAAELAEDAAgAQsAAABCwAAAQsAAABCwBAwAIAQMACABCwAAAELAAABCwAAAELAEDAAgBAwAIAELAAAAQsAAABCwAAAQsAQMACABCwAAAQsAAABCwAAAELAAABCwBAwAIAELAAAAQsAAAELAAAAQsAQMBqPzNmzEh9+vRJhxxySDr77LPTtm3bKi43bNiw1KNHj0Lp16+f2gEABKxymzdvTkcccUSaOHFiWr16dTr99NPTyJEjKy47cODANG3aNDUCAAhY1UyZMiX179+/8POzzz6bjjnmmIrLHnXUUWn58uVqBAAQsKoZN25cOueccwo/x/BgDP9t2rSpZLl169alnj17pkGDBqVDDz00nXbaaWnBggVqBwAQsMqNHj06nX/++SWPHXDAAWnVqlUlj82ePTsddthh2b8bNmxIF154YTrhhBNSY2OjGgIABKxiY8eOTUOHDi38nPdgbdmypervNTQ0pIMOOigtWbKk4vPLli1Lc+fOVRRFURRFabcS+aJbBKzJkyenU089tfDzvHnz0tFHH93i70UAO/DAA9OKFStEYABAD1axmGt1+OGHp/HjxxeuIhwxYkST5SZMmJB69+6dBbD169en8847Lw0YMEDtAAACViWzZs1Kffv2zSavDxkyJLt1Q+7II4/MrjQMo0aNSr169UoHH3xwGjx4cLt20wEA7FMBCwBAwAIAQMACABCwAAAELAAABCwAAAELAEDAAgBAwAIAELAAAAQsAAABCwAAAQsAQMACABCwAAAQsAAABCwAAAELAAABCwBAwAIAELAAABCwAAAELAAAAQsAQMACAEDAAgAQsAAABCwAAAQsAAABCwBAwAIAQMACABCwAAAELAAABCwAAAELAEDAAgAQsAAAELAAAAQsAAABCwAAAQsAQMACABCwAADo+gFrxowZqU+fPumQQw5JZ599dtq2bZvaAQAErNbavHlzOuKII9LEiRPT6tWr0+mnn55GjhypdgAAAau1pkyZkvr371/4+dlnn03HHHOM2gEABKzWGjduXDrnnHMKP8fwYI8ePdKmTZvUEAAgYLXG6NGj0/nnn1/y2AEHHJBWrVqlhgAAAas1xo4dm4YOHVr4Oe/B2rJlS8Xlr7/++tSvXz9FURRFUZR2K5Ev9qmANXny5HTqqacWfp43b146+uijxV8AQA9Wa8Vcq8MPPzyNHz++cBXhiBEj1A4AIGC1xaxZs1Lfvn3ToYcemoYMGZLdugEAQMACAEDAAgAQsAAABCwAAAGLDnTTTTelE088Mfuj1u985zvT5ZdfnhobG7Pn4saqcf+vvLzlLW9Jxx57bLr66quz59etW5c9Xn4D1nj+Ix/5SLu8vwcffDD94R/+oYqyX2Quu+yy7JYpb33rW9OAAQPSwoULVZZjRSau9B4zZoyK2g/3gRkzZqQ+ffpk7+vss8/O7l1ZybBhw0reY9xnSsCiQ8Qd64877rj08MMPZzdRffrpp9MJJ5yQLrnkkpIvTHwxwq5du9JTTz2V3v72t6fp06d3+EEzrtzs3bt3Ouyww1SW/SLdd9996fjjj89CVdxKZfjw4emUU05RYfv5sWLr1q3ZvhDrF7D2v30g2okjjjgiTZw4sXBbpZEjR1ZcduDAgWnatGl6sOhYa9euTQcddFD2h6yLPfbYY9kZQKUvTG7QoEHZ32vs6ID1pS99KZ177rkClv2iouXLl6eePXsWzqDZP/eJs846K7uVTvwrYO1/+8CUKVNS//79Cz/HezzmmGMqLnvUUUdlxw0Biw515513pne9611Vlyn/wmzfvj3rin3b296WHnnkkbq/MBMmTCjpns3L7bff3mTZOXPmpL/9279NL7/8soBlv6ho0qRJ6aSTTlJp+/k+kTeYF1xwgYC1H+4DEd7OOeecws/5n7aLXu5i8fpxQhaBL+5vedppp6UFCxYIWLS/m2++Ob3//e+v6QuTlwMPPDAbd48dOt9hO+KMJL4gf/VXf5WeeeaZtHjxYgHLftHE0qVLs7lYMfSAfULA2n/3gRi6PP/880seO+CAA5q8zuzZs7O2JP7dsGFDuvDCC7Mhzv2pB1zA6iRTp07Ndv5KVq5cWfGMpFyMw8fz5V2u3/nOd9IZZ5zR6vd26aWXFsbQBSz7RblFixal97znPem2225TYfYJAWs/3wfGjh2bhg4dWnKCHq8Tr1dNQ0NDNuy5ZMkSAYv2tX79+vT7v//7TcbUn3jiiaz7dOPGjS1+YUJMYHz88cebHOjiao1ytXb5xkTmSsvtz2Pn9os95s+fn020jQM+9gkByz4wefLkdOqppxZ+njdvXta73ZIIYNHLtmLFCgGL9he9RHFpa3SZxs4WExbj57z3qJYvzGc/+9nscvnoaYqrOeJKrz/6oz/KrjRpD3qw7Be5NWvWZJd9z5w5UyXZJwQs+0Am5lodfvjhafz48YWrCOOWHZUCW1yVHgEsAuN5552XvZf9iYDViWLsObpnY7glzk5iEuNVV13V5L4m1b4wceYSV/r9yZ/8SbaOGNO+9dZb2+09Clj2i1xcDl7pjDZeC8cKAWv/3QdmzZqV+vbtm/WmxRWlEd5yRx55ZHalYRg1alTq1atXOvjgg9PgwYPTsmXLBCwAAAQsAAABCwBAwAIAQMACABCwAAAELAAABCwAAAELAEDAAgAQsAAAELAAAAQsAAABCwAAAQsAQMACABCwAAAQsAAABCwAAAELAAABCwBAwAIAELAAarFjx47U2NhoQwACFkBbHHvssemhhx5Ku3btSn/5l3+Ztm7d2imvO2zYsNSjR49C6devX+G5GTNmpD59+qRDDjkknX322Wnbtm1tfg4QsAA6PWA1NDRkQaezAtbAgQPTtGnTmjy+efPmdMQRR6SJEyem1atXp9NPPz2NHDmyTc8BAhbAXglY73//+wu9ScuXL0/Tp09P733ve9Mf/MEfpDPPPDOtXbs2W37OnDnpfe97X+rfv396xzvekbZs2dKq1z3qqKOy1yk3ZcqUbN25Z599Nh1zzDFteg4QsAD2SsAq7sF6/fXX09ve9rZ0xx13pPXr12fDeZ/85CcLASuWmzp1alq5cmXJuiZMmFAy7JeX22+/vWS5devWpZ49e6ZBgwalQw89NJ122mlpwYIF2XPjxo1L55xzTmHZGOaLdWzatKnVzwECFsBeD1jXXnttNsSWi+G3CETbt2/PAtYf//Eft+k1Z8+enQ477LDs3w0bNqQLL7wwnXDCCdkE+9GjR6fzzz+/ZPkDDjggrVq1qtXPAQIWwF4PWBdffHHFnqiXX345C1gxGb49xWsfdNBBacmSJWns2LFp6NChhefynqgYimztc4CABbDXA9Y111yTXYVXSQSs6G2qpNYhwnIRgg488MC0YsWKNHny5HTqqacWnps3b146+uijs/+39jlAwALYKwErvOUtb0lLly5NixYtyobw7r333mwI78Ybb8zCStwnq1rAqlUEsd69e2chKOZ4nXfeeWnAgAHZczFn6vDDD0/jx48vXA04YsSINj0HCFgAey1gxUT2GKp74YUX0j333JP69u2b3VPq5JNPTnPnzs2WaY+AFUaNGpV69eqVDj744DR48OC0bNmywnOzZs3KXjsmwA8ZMiSbA9bW5wABCwAAAQsAQMACABCwAAAQsAAABCwAAAELAAABCwBAwAIAELAAABCwAAAELAAAAQsAQMACAEDAAgAQsAAABCwAAAQsAAABCwBAwAIAQMACABCwAAC6p/8PUna0/E1hinMAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Image(filename='exp_img/5000_3.png') " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Iter = 500" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "| Exp | Mob 1.0 | Mob 0.75 |Mob 0.5 |Mob 0.25 |\n", "|----------|:-------------:|:-------------:|:-------------:|:-------------:|\n", "| CPU = 4 | 0.02051069524 | 0.01426426142 | 0.008495391378 | 0.004515069188 |\n", "| CPU = 2 | 0.02922545242 | 0.01855015136 | 0.01072093597 | 0.005292796298 |\n", "| CPU = 1 | 0.05900840658 | 0.03781192797 | 0.02081295101 | 0.01101532969 |\n", "| CPU = 0.5 | 0.1174173313 | 0.07161711947 | 0.04177759899 | 0.02059194843 |" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlgAAAFzCAYAAADi5Xe0AAAhcElEQVR42u3dDZBVdf34cYgfBDIN1UAMRFCJQANlQQ9EUBMMU0PRg7/oZzNQkCYF0biCT0ApRGK6reMvy3RG/+UoJQ89sNgPwQyBUTEUwRJKQvABkKcFWXbRhf38+56Ze2cXlmV32YVl9/WaOYP37mF3OR/vPe8999yzbQIAgEbVxiYAABBYAAACCwBAYAEAILAAAAQWAIDAAgBAYAEACCwAAIEFAIDAAgAQWAAAAgsAQGABACCwAAAEFgCAwAIAQGABAAgsAACBBQCAwAIAEFgAAAKrqn379sXVV18dv/jFL0762IEDB+KVV145bzfW0qVLs39bTcv9999fbd1jx47Fo48+Grfccktcf/31cfPNN8cjjzwSx48fP+nz1mddAEBg5W3bti1mzpwZ69atO2831t13313nwFqwYEGd1qvvugCAwMp7+umns/vP58CaM2dO3Hrrradd75///Gf2b/3xj38c//rXv+LNN9+MF154Ibud7k8fb8i6AIDAalGBVVpaWuejSr/5zW+ydVMwVZXCKd1/3333NWhdAEBg5e+r6SWw1157Lf/x8vLyWLZsWcyfPz+uu+66mDdvXvz+97/Poqaqe++9N2666abYvXt3diRp1qxZ8bvf/e6sbKitW7dm33c6V+p05s6dGzfccENUVlZWuz/dvvHGG7OlIesCAAKrToFVVlYWhYWFNZ6DlILr8OHD1QIrxVfV9R966KFav5+0/qnOm8otf/rTn07771q7dm227urVq+PXv/51Fnc/+tGPsiNMe/bsqRaLab1f/vKXNX6eO++8M/t4+nfXZ10AQGDV+SXCxYsXZ/enCEtHpioqKmL//v1Z9KT7H3jggWqBle772c9+lq2T3mV3unfaNVZg5b7Pa6+99qS//8Mf/jBeffXVbL2SkpJaX9rLvSSY3lFZn3UBAIFVp8BKlydI7ywsKio66SWyJL1rLwXNG2+8US2wNm7ceNY31B133JF9L+nyCSmM0snoL7/8ctx1113Z95T+DUk6MndiGFaV7s8dwavPugCAwKpTYO3cufO0R5fSsmPHjmqBlY5eNRcptNJ5Yen7Skfg0vdWl6NSKdLqsy4AILDqFFj//ve/6xRYW7ZsqRZY9TknqbFeIqzNgw8+mH2e559/Pvve0n+n86dqkjuvKp1/VZ91AQCBVafASi+x1eeCms01sHIv5aVLKyTpellpOVHunYHpnYM59VkXABBYpw2s9PJauixDukzBiZdkaKzAagy5a2ClX2Fz4rliR44cyUIonZ+V/jvJvbSXC66c3LWt0sdz6rMuACCwqt2/YcOG7P70+/yqvvMvdwmH22+/PXvJMEVXCqhnn302C5d0KYTcS2TnKrCS9O/JHW1Ll2VI3+f27duz7zvdX/V6XP/4xz+y+9LRs3T9rPTOyPRn7mha7iXP+q4LAAisavdXPd8qXUMq9864dJ2rdL2rml66u+aaa2L9+vX5z3EuAyudkJ8ux1DT95kuepo7epWTrpVV07o1vWOwPusCAAIrL720tmTJkixS0rJ58+b8x9JLcOnIVno3XnrJMJ13dM8992RHcqo6l4GV+7elI27pnKn0fabvt7i4uMaT0NORqIcffjhb5/rrr49bbrkl/vKXv2SXpjiTdQGAVhhYAAACCwAAgQUAILAAAAQWAAACCwBAYAEACCwAAAQWAIDAAgAQWAAACCwAAIEFACCwAAAEFgAAAgsAQGABAAgsAAAEFmfDL1a+ESN/UlqnZclTb9pgJzj8y6LYM+pjdVrKlvzWBquH4/+8Kioe+a86Lcdf+l8b7AQ/e+b/xUd/9991Wn77z2U2GAgsGlNd4yq3nM7OnTujZ8+eMXbs2JM+dtVVV2Ufe+2112r9HE8//XSMGDGiXv+OuXPnxs9//vNTfvzxxx+PT3/60/H+978/fvCDH8Qbb7zRKNuvrnGVW5rb9qvLdrn77ruzr3vikr7XZPbs2dXu//znP98o27aucZVbzsdt25Tbr65xlVvO1+13++23x5AhQ+LCCy+McePGxfbt25t82yKw4JwE1nve854YNmxYvPrqq/n733zzzfjSl77U6E/CR48ejRtuuCH7vKcKrLKysvjgBz8Yy5YtiwMHDsS3vvWt+OlPf9psA+tsbb+Gbpfrr78+ZsyYkb/99a9/PR577LFG/3+zKQKrOW7bptp+TRFYzW37/fWvf80+X4qqI0eOZM8F6Xtp6m2LwIJzFlg33nhjduQjZ8WKFXHTTTdVexJ++OGH4zOf+Uz069cvvvnNb8auXbvyT8Kf/OQn4+qrr44BAwbE1772tXjllVdq/HrTpk2LK664IvvzVIG1cuXK+OIXv5i/vXnz5vjYxz7WKNuvqQLrbGy/hmyXdevWxYc//OE4fPhw/r50+3Q71uYUWM1t2zbV9muqwGqu/28m6ev37t07Kisrm3TbIrDgnAXWE088Ue0JcurUqfHMM8/kn4RffPHF+MAHPpD9BHro0KG47rrr4pJLLsk/Caf17rjjjnj99dezn0rTof9TPaEmM2fOPGVgpZ3BlVdemb+dXmpInz/9xNtcA+tsbL+GbJd0dOC+++7L305fO+3QLr300ujbt2989atfja1btzbrwGpO27Ypt19TBVZz/X8zeeihh+Jzn/tck29bBBacs8A6duxYdog/vZRQXl4ew4cPz36qzD0J/+pXv8rOq8hJ6/Tp0yd2796dPQmncypyP4WmlwvS50xPyKdSW2Dddttt2ctaVb373e+O/fv3N9vAOhvbr77bZcOGDTFo0KDsZdmcp556Kvr375/9mT7/nDlz4rOf/Wz+azfHwGpO27Ypt19TBVZz/H8zSUfC0udevXp1k29bBBacs8BK0k+gd911VxQXF8e1116b3Zd7Ek4/uZ54TsXgwYOznXh6Eq56HkWSduy1/fRZW2ClJ/yCgoKTfhpOT/zNNbDOxvar73aZNWtWtp1rjaKKimxn+vLLLzfbwGqO27Yptl9TBVZz3H47duyIT33qU/GHP/zhrGxbBBac08Bavnx59o6j73znO9nLBVWfhNNLBFV/yk0/yaYnv5deeil7Eh46dGj+Y+l8n/Q5a3t5oLbASueIfOUrX8nffv7557OfdBtDUwZWU2+/+m6XdO5M7vs4lbQDTF9rz549zTqwmtu2bYrt15SB1Zy23wsvvJAdRXvkkUfO2rZFYME5Daz0hJbOfbj44ouzdxpVfRLetm1bdgLsqlWrssP36TyN3LkTufM07rnnnuw8ivQT8re//e1av25tgZWevNNPyemn7dw7ktJlHZp7YDX19qvPdjl48GCN7xJL7/JK7ypLO8D0fVxzzTWnPF+uOQVWc9m2Tbn9mjKwmsv2KykpiY9//OPx5JNPntVti8CCcxpYyaRJk+J73/te/nbVnfSf//zn/HVuvvGNb2Q/4eaehMeMGROXX3559iQ+fvz42Lt3b70DKz35p3cjJendbyNHjsw+X3rXYfqpurkH1tnYfrVtl6rb77nnnsvOZ6lJUVFRfOQjH4n3ve992ddqrHdtNWVgNadt21TbrykDq7lsv5tvvrnGa7SVlpY26bZFYMFZD6zWprEDi6YLrNamsQMLBBbUg1+Vc2b8qpym41flnBm/KgcEFgCAwAIAEFgAAAgsAACBBQAgsAAAEFgAAAILAEBgAQAgsAAABBYAgMACABBYAAAILAAAgQUAILDqb9WqVTFgwIDo1KlTTJgwIY4ePVrr+jNmzIj58+dXu2/evHnRq1evuOCCC2LkyJGxdevW/MemTZsWbdq0yS9DhgwxRQCg5QbWkSNHolu3brF48eLYt29fjB07NmbPnl3juuXl5VFQUJBFUtXAWr58efTv3z+LqtLS0mydYcOG5T8+atSoWLFihckBAK0jsIqLi2Po0KH525s2bYrevXvXuO748eNj3Lhx2Z8nHsGqateuXdG+ffuorKzMbvfo0SO7DwCgVQRWUVFRTJw4MX87vTyYjlClI1E1hVMyderUWgNryZIlMXjw4Oy/S0pKstgaPXp0dO7cOUaMGBFbtmwxRQCg5QbW3LlzY8qUKdXua9u2bezdu/eUf6e2wNqxY0d2LtbKlSuz22vXro0uXbpkfx46dCimT58eAwcOzB/dAgBocYFVWFgYkyZNyt/OHcEqKyurd2Bt27YtLrrooliwYMEp/25FRUV06NAhtm/fXuPHd+7cGevXr7dYLBaLxWI57ZK6oVkG1tKlS2P48OH52xs3bsyOQNWmpsDavHlz9OvXL5YtW1br303h1q5du9i9e7dUBgBa5hGsdK5V165dY+HChfl3EabLMNQnsPbv3x99+vSJ1atXn7TuokWLom/fvlm4HTx4MCZPnpxdxgEAoMUGVrJmzZoYNGhQdhJ6epdgunRDTvfu3bN3GtYWWDNnzqx2navccvjw4ezjc+bMiZ49e0bHjh1jzJgxjXo4DwCgWQYWAIDAAgBAYAEACCwAAIEFAIDAAgAQWAAAAgsAAIEFACCwAAAEFgAAAgsA6u25l45Fwf3lMfInpQ1eZj5YHtv2HLcxBRYAkFx2d9kZxVXVyEJgAQD/0RhxlVsQWACAwEJgAYDAQmABgMBCYAGAwBJYCCwAEFgILAAQWAgsABBYAguBBQACC4EFAAILgQUAAktgCSwAQGAhsABAYCGwAEBgIbAAQGAJLAQWAAgsBBYACCwEFgAILIGFwAIAgYXAAgCBhcACAIElsBBYACCwEFgAILAQWAAgsASWwAIABBYCCwAEFgILAAQWAquJrVq1KgYMGBCdOnWKCRMmxNGjR2tdf8aMGTF//nwTBEBgIbBqcuTIkejWrVssXrw49u3bF2PHjo3Zs2fXuG55eXkUFBREmzZtBBYAAguBdSrFxcUxdOjQ/O1NmzZF7969a1x3/PjxMW7cuOxPgQWAwEJgnUJRUVFMnDgxfzu9PJiOUJWWnvw/4a5du7I/p06dKrAAEFgIrFOZO3duTJkypdp9bdu2jb17957y7wgsAAQWAqsWhYWFMWnSpPzt3BGssrKyMwqsnTt3xvr16y0Wi8ViOeOlMQPL9myeS+qGFhVYS5cujeHDh+dvb9y4MXr16lXr33EECwBHsHAEqxbpXKuuXbvGwoUL8+8iTJdhEFgACCwE1hlYs2ZNDBo0KDp37py9SzBduiGne/fu2TsNBRYAAguBBQACS2AJLABAYCGwAEBgIbAAQGAhsABAYAksBBYACCwEFgAILAQWAAgsgYXAAgCBhcACAIGFwAIAgSWwEFgAILAQWAAgsBBYACCwBJbAAgAEFgILAAQWAgsABBYCCwAElsBCYAGAwEJgAYDAQmABgMASWAgsABBYCCwAEFgILAAQWAJLYAEAAguBBQACC4EFAAJLYAksAEBgIbAAQGAhsABAYCGwAEBgCSwEFgAILAQWAAgsBBYACCyBhcACAIGFwAIAgYXAAgCBJbAEFgAgsBBYACCwEFgAILAElsBqgFWrVsWAAQOiU6dOMWHChDh69Gi91rvtttuiTZs2Jy0vv/xy9vFp06ZVu3/IkCGmCIDAouUG1pEjR6Jbt26xePHi2LdvX4wdOzZmz57d4PWSKVOmxOWXX56/PWrUqFixYoXJASCwaB2BVVxcHEOHDs3f3rRpU/Tu3bvB661ZsyZ69OgRr7/+ev6+dHvXrl0mB4DAonUEVlFRUUycODF/O73sl17GKy0tbdB6w4YNizvvvDN/u6SkJNq3bx+jR4+Ozp07x4gRI2LLli2mCIDAouUG1ty5c7OX9Kpq27Zt7N27t97rrVu3Lrp27Rrl5eX5+9auXRtdunTJ/jx06FBMnz49Bg4cGJWVlTV+Pzt37oz169dbLBaLxXLGS2MGlu3ZPJfUDc0ysAoLC2PSpEknHZkqKyur93rf//73Y+rUqbV+vYqKiujQoUNs375dKgPgCBYt8wjW0qVLY/jw4fnbGzdujF69ejVovQsvvDCWL19e69dLQdauXbvYvXu3SQIgsGiZgZXOoUov6y1cuDD/7sAZM2bUe70DBw5kR7ROPFS3aNGi6Nu3bxZkBw8ejMmTJ8fIkSNNEQCBRcsNrCS982/QoEHZSejjxo3LLsmQ07179+wdhKdb75lnnsnOtarJnDlzomfPntGxY8cYM2ZMo75eCgACi2YZWAAgsASWwAIABBYCCwAEFgILAARWtcB687kNUXLVd2PPqI81eDk4qyAqXtxqOAILAARWcuCyS88orqpGFgILAATWfzRGXOUWBBYACCyBJbAAAIGFwAIAgYXAAgCBJbAEFgAILIGFwAIAgYXAAgCBJbAEFgAILIGFwAIAgYXAAgCBJbAEFgAILIElsAAAgYXAAgCBhcACAIElsAQWAAgsgYXAAgCBhcACAIElsAQWAAgsgYXAAgCBhcACAIElsAQWAAgsgSWwbAKAM/fcS8ei4P7yM9rpznywPLbtOW5jCiyBJbAASC67u6xRdrwpshBYAktgAdAEO18ElsASWAB2vgLLjAUWAgtAYCGwEFgAAguBJbAEFoCdr8AyY4ElsAAQWAgsBBaAwEJgCSyBBWDnK7DMWGAJLAAEFgILgQUgsBBYCCwAO1+BJbAElsBqsFWrVsWAAQOiU6dOMWHChDh69Gi915s2bVq0adMmvwwZMsQUAYGFwKJ1BtaRI0eiW7dusXjx4ti3b1+MHTs2Zs+eXe/1Ro0aFStWrDA5QGAhsASWwCouLo6hQ4fmb2/atCl69+5d7/V69OgRu3btMjlAYCGwBJbAKioqiokTJ+Zvp5f90kt8paWldV6vpKQk2rdvH6NHj47OnTvHiBEjYsuWLaYICCwEFq0zsObOnRtTpkypdl/btm1j7969dV5v7dq10aVLl+zPQ4cOxfTp02PgwIFRWVlZ49fcuXNnrF+/3mKxWJp8acydr+3ZOmbcmIFlPo2zpG447wKrsLAwJk2adNKRqbKysgatl1RUVESHDh1i+/btUhlwBAtHsGh9R7CWLl0aw4cPz9/euHFj9OrVq8HrJSm62rVrF7t37zZJQGAhsGh9gZXOoeratWssXLgw/+7AGTNm1Gu9RYsWRd++fbPoOnjwYEyePDlGjhxpioDAQmDROgMrWbNmTQwaNCg7QX3cuHHZJRlyunfvnr2D8HTrzZkzJ3r27BkdO3aMMWPGNOrrpQACC4HFeRdYAHa+AsuMBZbAAkBgIbAQWAACC4GFwAKw8xVYAktgCSwABJYZCywEFoDAQmAhsAAEFgJLYAksADtfgWXGAguBBSCwEFgILACBhcASWAILwM5XYJmxwBJYAAgsBBYCC0BgIbAiKkvWxrGnR0XFI//V4OXYs1+OysN/N2yBBSCwEFjJsScvPqO4qhpZCCwAgYXA+o/GiKvcgsACEFgILIElsADsfAWWGQssgQWAwEJgIbAABBYCS2AJLAA7X4ElsASWwAKgKXe+bz63IUqu+u4Z7XQPziqIihe3Go7AElgCC8DONzlw2aWNsuNNkYXAElgCC8DON/waFTMWWAILAIFlxgILgQUgsBBYAktgAdj5CiwzFlgCC8DOV2CZscASWAAILASWwBJYAHa+AsuMBZbAArDzFVhmLLAEFgACC4GFwAKw8xVYAktgCSwAO1+BZcYCS2ABILDMWGAhsAAEFgJLYAksADtfgWXGAktgAbV57qVjUXB/+Rk9Ic98sDy27TluY9r5CiwzFlgCC0guu7usUZ6UU2Rh5yuwzFhgCSygCZ6YsfMVWGYssAQWeGIWWGYssMxYYAmsM7Fq1aoYMGBAdOrUKSZMmBBHjx6t93rz5s2LXr16xQUXXBAjR46MrVu35j82bdq0aNOmTX4ZMmSIKSKwsPMVWAJLYLXcwDpy5Eh069YtFi9eHPv27YuxY8fG7Nmz67Xe8uXLo3///llUlZaWRkFBQQwbNiz/d0eNGhUrVqwwOQQWdr4Cy4wFVusIrOLi4hg6dGj+9qZNm6J3794NXi/ZtWtXtG/fPiorK7PbPXr0yO4DgYWdr8AyY4HVKgKrqKgoJk6cmL+dXvZLL+OlI1ENWS9ZsmRJDB48OPvvkpKSLLZGjx4dnTt3jhEjRsSWLVtMEYGFna/AElgCq+UG1ty5c2PKlCnV7mvbtm3s3bu3Qevt2LEjOxdr5cqV2e21a9dGly5dsj8PHToU06dPj4EDB+aPbp1o586dsX79eovlnC+N+cRse7aOGTfmztd8WseMGzOwWuuMUzc0y8AqLCyMSZMmnXRkqqysrN7rbdu2LS666KJYsGDBKb9eRUVFdOjQIbZv3y6VcQQLRzccwXIEyxGslnkEa+nSpTF8+PD87Y0bN2ZHoOq73ubNm6Nfv36xbNmyWr9eCrJ27drF7t27TRKBhZ2vwBJYAqtlBlY6h6pr166xcOHC/LsDZ8yYUa/19u/fH3369InVq1ef9PcWLVoUffv2zYLs4MGDMXny5OwyDiCwsPMVWAJLYLXYwErWrFkTgwYNyk5CHzduXHZJhpzu3btn7yCsbb2ZM2dWu85Vbjl8+HD28Tlz5kTPnj2jY8eOMWbMmEZ9vRQEFgILgSWwmmVgAQLLjAWWGQssgQUILAQWAktgCSwQWNj5CiwzFlgCCzwxCywzFlhmLLAEFmfTcy8di4L7y8/owTrzwfLYtue4jSmwsPOtcedbWbI2jj096ox2usee/XJUHv67GbeSwNqwd3NMfvRH8dHf/XeDl4LVN8XWgzsEFufGZXeXNcoDNkUWAgs735p2vseevLhRdrwpssy4dQTW//xfwRnFVdXIEljY+WLG2Pl6+ciM/6Mx4iq3CCzsfDFj7HwFlhkLLIHlQWvn2xpn/OZzG6Lkqu+e0RPywVkFUfHiVsOx8xVYZiywBJYHrcAy4+TAZZc2ypNyiizsfAWWGQssgeVBK7DMOLyF34wFlhkLLIGFwEJgmbHAMmOBJbAQWAgs7HwFlsASWALLg1ZgeWIWWGYssMxYYAksBJYZCywzFlhmLLAEFgILgYWdr8ASWAJLYAksPDELLDMWWGYssASWB62LUJqxwDJjgWXGAktg0TwftC5C6YlZYJmxwDJjgSWwPDHb+ZqxGZuxwDJjgSWwsPPFjBFYZiywBJbA8qC18zVjM7bzFVhmLLAElgetna8Zm7EZCywzFlgCCztfzNiMW83Od8PezTH50R+d0U63YPVNsfXgDjMWWAILO19a5owrS9bGsadHndET8rFnvxyVh/9uxq1k5/s//1fQKDveFFlmLLAEFgKLFjnjY09e3ChPyimyzNjOt6XufM1YYAksT8wCy4ydn2PGdr5mbMYCy85XYJmxwDJjO18zNmOBRSt60Do/xxOzwDJjO18zFlgCyxOz83PMWGCZsZ2vGZuxwBJYdr5mbMZmbOdrxmYssPCgtfM1YzO28xVYZiywBJYHrZ2vGZuxGdv5mrEZCyxPzHa+ZmzGZmzna8ZmLLDwoLXzNWO/RsXOV2CZscASWB60AsuMm2TGfo2Kna/AMmOBhQetoxtm7InZjM3YjM1YYAksRzcc3fDEbMZmbMZmLLDwoPXEbMZmbMZmbMYCq/latWpVDBgwIDp16hQTJkyIo0ePCiwPWjM2YzM2YzM2Y4HVUEeOHIlu3brF4sWLY9++fTF27NiYPXu2wPKgNWMzNmMzNmMzFlgNVVxcHEOHDs3f3rRpU/Tu3VtgedCasRmbsRmbsRkLrIYqKiqKiRMn5m+nlwfbtGkTpaWlAsuD1ozN2IzN2IzNWGA1xNy5c2PKlCnV7mvbtm3s3btXYHnQmrEZm7EZm7EZC6yGKCwsjEmTJp10BKusrKzG9e+6664YMmSIxWKxWCwWy2mX1A2tMrCWLl0aw4cPz9/euHFj9OrVKwAAHMFqoHSuVdeuXWPhwoX5dxHOmDHDFAEAgXUm1qxZE4MGDYrOnTvHuHHjsks3AAAILAAAgQUAgMACABBYAAACi2bonnvuiYsvvjj7Zdjvfe974yc/+UlUVlZmH0sXZE3XDcstb3nLW6JPnz5x2223ZR8vKSnJ7j/xwq3p41/4whca5ft79NFH4x3veIdBtcAZz5s3L7tsygUXXBAjR46MrVu3GlYLfRynd2/Pnz/foM7zea5atSoGDBiQfV8TJkzIri1Zk2nTplX7HtP1ohBYrUq60n2/fv3iscceyy6+umHDhhg4cGDMnDmz2gM5PWCT48ePxzPPPBNvf/vbY+XKlU3+xJze8dm3b9/o0qWLYbWwGS9fvjz69++fRVW6nEpBQUEMGzbMwFrY47i8vDybbfr8Auv8nmd6Pu7WrVssXrw4f9mj2bNn17juqFGjYsWKFYYpsFqnAwcORIcOHbJfgF3VunXrsp9Manog54wePTr7PY9NHVhXXnllXHHFFQKrBc84Z9euXdG+ffv8T+m0jBmPHz8+uzxO+lNgnd/zLC4ujqFDh+Zvp++xd+/eNa7bo0eP7DGNwGqV/vjHP8b73//+Wtc58YH8xhtvZIeI3/a2t8Xjjz9e7wfyokWLqh02zi2//e1vT1r3iSeeiI9+9KPxwgsvCKwWOuOqlixZEoMHDza0Fjbj3E526tSpAus8n2eKt4kTJ+Zv5371XDoCXVX6+umHpRR86fqTI0aMiC1bthiuwGo97r333vjEJz5RpwdybmnXrl12PkB6oOUeSE3xk1J64H7oQx+KZ599Nl588UWB1QJnXNWOHTuyc7HSyxu0zBkLrPN/numlyylTplS7r23btid9nbVr12bP2enPQ4cOxfTp07OXOB2dFlitxrJly7IHZU1ee+21Gn9SOlE6PyB9/MRDwbfeemtccsklDf7eZs2alX9tX2C1zBnnbNu2LS666KJYsGCBgbXQGQusljHPwsLCmDRpUrUfhNPXSV+vNhUVFdnLntu3bzdggdU6HDx4MN761ree9Fr/3/72t+yw7uHDh0/7QE7SiZVPPfXUSU+m6V0kJ6rroeh08nNN63lNv+XMONm8eXN2Mm/aqdAyZyywWs48ly5dGsOHD8/f3rhxY3bk+XRSgKWjbLt37zZggdV6pKNE6S236VBuehCkEynT7dzRo7o8kC+77LLsLfbpSFN6l0l6d9g73/nO7B0wjcERrJY54/3792dvLV+9erUhtYLHscA6/+eZzrXq2rVrLFy4MP8uwnT5jZqCLb37OwVYCsbJkydn3wsCq1VJr4mnw8bpJZr0U1M6ufKWW2456XortT2Q009U6Z1+73rXu7LPkV5rf+CBBxrtexRYLXPG6S3nNf3UnL4WLe9xLLBaxjzXrFkTgwYNyo6mpXeHpnjL6d69e/ZOw2TOnDnRs2fP6NixY4wZMyZ27txpsAILAEBgAQAILAAABBYAgMACABBYAAACCwAAgQUAILAAAAQWAAACCwBAYAEACCwAAAQWAIDAAgAQWAAACCwAAIEFACCwAAAEFgAAAgsAQGABALR4/x91m/djAhdO2gAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Image(filename='exp_img/500_1.png') " ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlgAAAFzCAYAAADi5Xe0AAAuPElEQVR42u3dCXxU1f33cSx/eKE8lvZffHhACloRULCLvNzF/yOU1uJaW1proWKr4oaPCFqkVAtFUYuAS12wtWotKIsLQYHgwhIFMS4gCApCWEzYk0BWsvyefE9yhpvJzGQmGSAkn/frdV6QmZuZm3vPnfu955x7ppkBAAAgqZqxCQAAAAhYAAAABCwAAAACFgAAAAhYAAAABCwAAAACFgAAAAhYAAAABCwAAAACFgAAAAhYAAAABCwAAAACFgAAAAELAAAABCwAAAACFgAAAAELAAAABCwAAAACFgAAAAELAAAABCwAAAACFgAAAAEraNeuXXbnnXfa3//+9xrP7dmzx7Zu3dpg/vjZs2e7dY1UXnzxxWrLlpaW2jvvvGMPPfSQ3X333fbAAw/YW2+9ZWVlZTVeN5Fla7NlyxabMWOGe61Ro0bZn//8Z3vyySfto48+svLy8mrLLly4MOLf8sc//tHuvfde93uffPJJtd9577333DJa32gKCgrcMhMmTKh1fV944QW37N69ezm6jgCRjkn2IQAcQQFrw4YNLiB88MEHDeaPnzJlStwBa+rUqXEtl+iy0Sg8zZ071+66666o6/if//ynWsiKFrDCi8IeAQvRjkn2IQAcQQFLLS56vCEFrDFjxtjf/va3Wpf74osv3Lr/9a9/tS+//NL2799v69atcz/rcT1fl2VjSU1Ndcv/6U9/svnz59v27dvda+Xm5tqyZctci5SenzdvXo2AtXjx4mqvpZazvLw8F6IU2EaOHBk6eSY7YOHI0RCPSQAgYB3hAUuBI95Wpeeff94tq8AUpOCkx3XFX5dlo1GYUreeuhczMjIiLqNuHQUlBbDCwsKYASvoX//6l1tG+4OARcAiYAHAERywInWZKUR4Cghz5syx8ePHu9Awbtw4e+WVV1wICnr22Wft/vvvt23btrmWJ4WLl156qU7ruX79+lqDhTd27FjXYhQ+5kk//+Uvf3GlLstG8+abb7p10xix2pbT379jx464A5Z/bb/Mwe4ifO6551xLodZR4fOee+5xwfHxxx+3NWvWRHyvlJQUVxe0nPa3WvOC49dqqwfx1idRgNU6q4VRy44ePdqt26efflpj/7377rs2ceJE162mv+Ppp5+O+Dck8v7hXn31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Ovyks2pxUeuW7qTUPlDLogLa8uXLa+yHeN+/Nvqb/VxTkepkIusUSbRj8mAErGRuFwBokgELAACAgAUAAAACFgAAAAELAACAgAUAAAACFgAAAAELAACAgAUAAAACFgAAAAELAACAgAUAAAACFgAAAAELAACAgAUAAEDAAgAAAAELAACAgAUAAEDAAgAAAAELAACAgAUcMtOmTbMf//jH9r3vfc/OOusse+SRR6y8vNw9t3v3buvQoUOodOzY0c4880ybMmWKez43N9c9ruWC9PygQYOSsn7vvfeenXLKKTUev/HGG23VqlVufXv16mUnnXSSDRgwwDIyMtjedVDbdvTb2xs7dqw99thj1O96irYd/fZ+//337YILLnDrf9ttt1lxcXHE1xk9enS1v+Wiiy7iww0ELOBwmTRpkp1//vm2dOlSKywsdB/oF154oT3wwAPVTkA60UhZWZl99tln1r17d1u8ePFBPwEVFBTYueeea926dav2uNZD6/nOO+9Y7969XRjIz8+3e++91y677DK2d4LefffdmNvRb28Fk6KiIve81qOhB6yGXL9jbUe/vbUvTjvtNJszZ47t2bPHrrnmGnvwwQcjvt6vfvUrW7RoER9qIGABh1tOTo517tzZ1qxZU+3xTz75xF0pRzoBeVdddZU7yRzsgKUT0F133VUjYAXXMWj79u3WqVOnUAsF27tuwrdjcB2HDh1qN9xwg/u3IQeshr69Y21Hv44LFiywSy65JPS4/pYzzjgj4uv98Ic/dPsNIGABCepzX15CpTbz5s2zc845J+Yy4Seg/fv3uy6Lrl27Wnp6esInIF2JB7sxfHnttddqLPvRRx/Zz372M9u4cWONgDV58mSbOXNmjd9544037Kc//WlStveOvmckVI707R1rOwa3tz+Jjxo1KqkBq+St/0qoHOnbO9Z29Ntb73P77beHHlf3oF5PLVtBWk8FYgXDLl262M9//nNbv349H5ogYAGHI2C99NJLdvHFF8d1AvLlu9/9rhvHcrDHqOhE0rdvX1u9erVt3ry5RsC68sorbceOHdUe27p1qxtDpK6dhhiwGvL2rm07RtreDT1gHSnbO9J29NtbXZx33313teeOP/74GuuzfPlyd4zo371799qYMWNCXboAAQs4xAHrrbfecieTSHbu3BnxCj+cxrXo+fCuiSeffNKuu+66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\n", "text/plain": [ "" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Image(filename='exp_img/500_2.png') " ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Image(filename='exp_img/500_3.png') " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Caveat - " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "An important factor to note about these results is that the code used reaches a threshold at CPU=4 where despite availablability of further resources, The average CPU utilization is throttled at (270% , 300%) range. Hence the code cannot scale beyond more computation resources. This is reflected in the results as well, where CPU = 4 becomes an outlier/" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3-final" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: Examples/profiler_examples/issues.md ================================================ # Known issues + Remove any dangling Dockerfiles in the profiler directory before executing Profiler as they might interfere. + Once Docker has started running, if you hit Ctrl+Z, you will only exit from the Profiler script. Docker will continue to run in the background until completion unless you stop the Docker process separately. ================================================ FILE: Examples/profiler_examples/mnist/mnist.py ================================================ """ Convolutional Neural Network. Build and train a convolutional neural network with TensorFlow. This example is using the MNIST database of handwritten digits (http://yann.lecun.com/exdb/mnist/) This example is using TensorFlow layers API, see 'convolutional_network_raw' example for a raw implementation with variables. Author: Aymeric Damien Project: https://github.com/aymericdamien/TensorFlow-Examples/ """ from __future__ import division, print_function, absolute_import # Import MNIST data from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets("/mnist_data", one_hot=False) import tensorflow as tf # Training Parameters learning_rate = 0.001 num_steps = 2000 batch_size = 128 # Network Parameters num_input = 784 # MNIST data input (img shape: 28*28) num_classes = 10 # MNIST total classes (0-9 digits) dropout = 0.25 # Dropout, probability to drop a unit # Create the neural network def conv_net(x_dict, n_classes, dropout, reuse, is_training): # Define a scope for reusing the variables with tf.variable_scope('ConvNet', reuse=reuse): # TF Estimator input is a dict, in case of multiple inputs x = x_dict['images'] # MNIST data input is a 1-D vector of 784 features (28*28 pixels) # Reshape to match picture format [Height x Width x Channel] # Tensor input become 4-D: [Batch Size, Height, Width, Channel] x = tf.reshape(x, shape=[-1, 28, 28, 1]) # Convolution Layer with 32 filters and a kernel size of 5 conv1 = tf.layers.conv2d(x, 32, 5, activation=tf.nn.relu) # Max Pooling (down-sampling) with strides of 2 and kernel size of 2 conv1 = tf.layers.max_pooling2d(conv1, 2, 2) # Convolution Layer with 64 filters and a kernel size of 3 conv2 = tf.layers.conv2d(conv1, 64, 3, activation=tf.nn.relu) # Max Pooling (down-sampling) with strides of 2 and kernel size of 2 conv2 = tf.layers.max_pooling2d(conv2, 2, 2) # Flatten the data to a 1-D vector for the fully connected layer fc1 = tf.contrib.layers.flatten(conv2) # Fully connected layer (in tf contrib folder for now) fc1 = tf.layers.dense(fc1, 1024) # Apply Dropout (if is_training is False, dropout is not applied) fc1 = tf.layers.dropout(fc1, rate=dropout, training=is_training) # Output layer, class prediction out = tf.layers.dense(fc1, n_classes) return out # Define the model function (following TF Estimator Template) def model_fn(features, labels, mode): # Build the neural network # Because Dropout have different behavior at training and prediction time, we # need to create 2 distinct computation graphs that still share the same weights. logits_train = conv_net(features, num_classes, dropout, reuse=False, is_training=True) logits_test = conv_net(features, num_classes, dropout, reuse=True, is_training=False) # Predictions pred_classes = tf.argmax(logits_test, axis=1) pred_probas = tf.nn.softmax(logits_test) # If prediction mode, early return if mode == tf.estimator.ModeKeys.PREDICT: return tf.estimator.EstimatorSpec(mode, predictions=pred_classes) # Define loss and optimizer loss_op = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits( logits=logits_train, labels=tf.cast(labels, dtype=tf.int32))) optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate) train_op = optimizer.minimize(loss_op, global_step=tf.train.get_global_step()) # Evaluate the accuracy of the model acc_op = tf.metrics.accuracy(labels=labels, predictions=pred_classes) # TF Estimators requires to return a EstimatorSpec, that specify # the different ops for training, evaluating, ... estim_specs = tf.estimator.EstimatorSpec( mode=mode, predictions=pred_classes, loss=loss_op, train_op=train_op, eval_metric_ops={'accuracy': acc_op}) return estim_specs # Build the Estimator model = tf.estimator.Estimator(model_fn) # Define the input function for training input_fn = tf.estimator.inputs.numpy_input_fn( x={'images': mnist.train.images}, y=mnist.train.labels, batch_size=batch_size, num_epochs=None, shuffle=True) # Train the Model model.train(input_fn, steps=num_steps) # Evaluate the Model # Define the input function for evaluating input_fn = tf.estimator.inputs.numpy_input_fn( x={'images': mnist.test.images}, y=mnist.test.labels, batch_size=batch_size, shuffle=False) # Use the Estimator 'evaluate' method e = model.evaluate(input_fn) print("Testing Accuracy:", e['accuracy']) ================================================ FILE: Examples/profiler_examples/model_names.txt ================================================ mobilenet_v1_0.75_224.tflite mobilenet_v1_1.0_224.tflite ================================================ FILE: Examples/quad_equation_min/QUAD_MIN_Demo.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Minimum of quadratic function Demo" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this tutorial we will show how to find the minimum of a quadratic function using Auptimizer. We also demonstrate how to effectively switch between various HPO proposers such as Spearmint and BOHB." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Running the Experiments " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this experiment we try to find the best X such that f(X) is minimal.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Each instance of 'quad_min.py' would accept an X that calculates the value of the quadratic function. The ‘quad_min_[proposer].json’ file contains code to perform HPO using CPU resources and consider 50 samples for each proposer. We can easily switch between proposers and see how they choose different configurations to optimize the final performance." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To run the experiment use command- \n", "\n", "'python3 -m aup quad_min_[proposer].json' \n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Analysis " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We next analyze the experiment results using the sqlite database for our experiments. The details for the experiment can be found inn the jobs profile, but here we aim to compare the proposers. Experiment 1 is performed using BOHB, then random and finally Spearmint." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "'''\n", "Connect to the Auptimizer database\n", "''' \n", "\n", "import sqlite3\n", "import time\n", "import datetime\n", "import random\n", "\n", "conn = sqlite3.connect('sqlite3.db')\n", "c = conn.cursor()\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "'''\n", "Function to compile and return details from a Auptimizer experiment. \n", "Takes experiment id as input, returns score, jobs ran for the experiments, and end time for each job.\n", "''' \n", "\n", "def graph_data(ex, cursor):\n", " cursor.execute('SELECT score, jid, end_time FROM job WHERE typeof(score)==\\'real\\' and eid = '+ str(ex))\n", " data = cursor.fetchall()\n", "\n", " jobs = []\n", " score = []\n", " times =[]\n", " \n", " for row in data:\n", " times.append(row[2])\n", " jobs.append(row[1])\n", " score.append(row[0])\n", "\n", " times = [a-min(times) for a in times] \n", " jobs = [a-min(jobs) for a in jobs]\n", " \n", " print(score)\n", " print(jobs)\n", " \n", " return (score, times, jobs)\n", " " ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[6148.106139221136, 10438.637919012073, 7415.6298730541, 6060.406530867955, 3664.920102436913, 8514.390146411502, 3909.7273413323915, 16227.975850616904, 18949.333977751823, 3002.7529813288706, 12791.65578998259, 5710.14811693708, 6586.3076663701, 17482.08784937461, 106.05097215471763, 157.98208630594334, 11.44000290631149, 14146.904978499952, 12357.080808454182, 15445.805059455917, 19541.970126709333, 13032.9272883446, 4347.975242825175, 12432.524670292085, 288.5003098979952, 8357.696833979042, 422.36446655402744, 18209.8318006542, 5559.088337974499, 3511.112188373727, 1431.0292860232905, 12232.83011505206, 4248.207908109023, 6595.336180527122, 10.303060762137134, 7785.924535077077, 7646.9372673592525, 7768.255367710197, 18174.35420915232, 9487.559731339637, 2639.9754755905624, 3899.819338147345, 9932.534803401542, 77.10024584741284, 9073.377353360214, 9179.004614490392, 906.1092905253714, 342.22184461100574, 2032.997899250835, 2701.989279003208, 6636.2871314115855, 3927.859009848557, 19933.46377839, 215.54895165905884, 893.2290434271752, 533.9755569510351, 8705.582990730807, 1312.0236859821218, 4439.427923863416, 1221.9944362568633, 518.6856445554187, 251.65086979919593, 8791.639549216163, 392.6665611417196, 791.5276376934777, 2776.9202466736824, 13754.657682272258, 195.46347563258027, 14328.398330600858, 191.5105114029914, 19455.857917184265, 4484.071823536638, 19467.877481863343, 7466.92897242087, 11153.010073705345, 34.43100582618657, 1634.8474324227357, 297.8520463070646, 1792.335336437659, 290.69212600328666, 2066.013595105786, 3504.3653315921824, 87.0522160740486, 9786.218811810271, 6552.901115759534, 1440.0451339462006, 5588.933496367393, 183.1439686948838, 6770.736489897746, 17622.0922085697, 2073.62099265998, 9090.897825009191, 357.4965426541574, 10471.869381877272, 1711.8875991265356, 687.7722504762877, 7021.3354179159505, 11.34880226594397, 14022.162352737285, 3.5498130271587858, 9376.498124625585, 1490.493642592927, 11030.590123862217, 18891.41025923904, 1265.537535038463, 6775.692304218736, 7154.279454332183, 6684.18871558561, 1018.4139931903604, 18522.62131186837, 4081.8903679691225, 14619.248688302143, 9985.2121771267, 1808.0392280530514, 13514.669117373822, 3210.637205107219, 15842.046702461934, 6896.490066536726, 15864.782780740976, 9787.899266421542, 10734.424903633586, 5130.655824921306, 18652.484890178817, 8464.286331511501, 3668.3825908448157, 7505.175120324333, 10.615665529087309, 1858.6082438067806, 8894.885290153567, 1719.826661417118, 7795.502523945654, 3753.8567029765054, 377.5424368139047, 1818.313802637847, 6630.89370838516, 7126.0629089348, 6732.689324891997, 8708.048088287565, 8678.819442186163, 3800.3583189517426, 16402.1418816525, 2759.445461044005, 3879.035911233086, 16233.447387479662, 13263.35435616637, 10111.45733426073, 208.04684124025985, 17251.935746920182, 10410.989214492674, 20358.080378288647, 458.77450320056, 15378.921455929238, 541.7934658303482, 7733.6948016532115, 315.8909810941599, 14674.544558677915, 13300.387110585678, 6610.811025411567, 3385.7156422877497, 100.70466265645877, 9926.773443429818, 4199.811088150739, 10639.974218597716, 15317.215264171993, 19418.50430156459, 14945.51176006914, 5.8995577127201795, 2646.8769892878286, 10875.044685497587, 604.076534276305, 5541.817516386234, 63.33929155979352, 819.1516406209234, 10.099046262581181, 12855.46321611145, 1026.102509359792, 2436.4013161142993, 17576.054370302154, 10126.56525189996, 23.781863082338973, 556.4872180953723, 7883.074702833368, 6800.900393126976, 1157.7102730040097, 17809.063707527817, 7693.719488126548, 5856.484798397378, 7102.869103694476, 10878.960987263978, 1988.4120955376934, 3238.4494536360403, 901.489808070223, 710.3931786214773, 18198.403582086852, 11161.675591300796, 4910.797895877393, 1058.2386603574305, 1323.052678739327, 71.8013571039346, 3853.320648659735]\n", "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199]\n", "[3.1, 3.1, 5103.6, 11479.225, 1278.225, 20402.609597487746, 255.96139678955078, 3.1000760033726693, 14.541851735115051, 118.45974311828613, 91.58624259978532, 130.55955605059862, 19.182313656806947, 91.25851605683565, 93.73128578662872, 81.09230492860078, 67.8494772747159, 78.19406831860542, 90.44185981750488, 90.60488705188035, 92.24351976662874, 93.89735315591096, 101.00944475680589, 96.91255895644426, 94.89694951325654, 85.93881199359893, 78.11853996701538, 79.8653064802289, 83.57548712044954, 90.27898458987474, 100.83699310421943, 91.42230332493781, 96.40660450458526, 84.35946190953254, 85.147236867249, 100.7508242804557, 103.52707547731697, 92.90322904139757, 94.64653740115463, 88.01469211131334, 83.41914818286895, 87.05340145379304, 73.72963020801544, 90.11626136898994, 99.46285212635993, 61.423164105415346, 79.10337266921997, 107.31894074231386, 97.08151445388793, 57.62550358325243]\n", "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49]\n", "[18979.21737542377, 10497.40426337924, 9084.777253670089, 1626.7190672055335, 14096.376058669908, 268.50144260897343, 18979.21737542377, 9877.485035005397, 1556.5394610585156, 271.0992430993217, 9819.855781400875, 19716.036917848396, 9877.485035005397, 3207.843110329192, 19551.05251353619, 19689.349388015635, 19742.153301964954, 19677.51246064784, 19716.036917848396, 19633.343953874253, 19713.289439959462, 19712.24227687632, 19725.254604338556, 9295.909023220589, 19713.289439959462, 17317.693515832267, 19731.12717887784, 19733.216794325952, 19737.628596809598, 7446.474946617792, 19731.12717887784, 2476.1773148555417, 8345.886366596742, 19739.3868119695, 19740.456360036816, 19742.194761087318, 8345.886366596742, 19738.781705770016, 19741.95688885989, 19746.456647336945, 2713.676016023622, 1309.4209515403686, 19742.194761087318, 19744.750109136494, 19745.66982152892, 19744.34078633421, 19741.194753359396, 8832.95573481031, 19745.66982152892, 9127.999213721223, 7251.815216566596, 19741.060733514478, 1590.6745786114336, 19747.68389984932, 9127.999213721223, 19742.6247419077, 19744.476725744116, 246.40151623307847, 3669.688925237476, 19745.476732496467, 19747.68389984932, 13713.17457638431, 19744.68561151229, 19742.783368158573, 19745.921504493457, 19747.592473779277, 19745.476732496467, 19742.386375027792, 19747.328560705166, 3579.6167810146503, 19746.203188789626, 19747.82926204643, 19747.592473779277, 19746.297771278998, 19743.895074749948, 19744.35998019022, 19745.803931349496, 877.765253830673, 19747.82926204643, 19751.47664617664, 19746.031270812986, 19752.979148038638, 19746.946310211188, 19742.570869463092, 19751.47664617664, 19748.36504786568, 19748.431933352636, 17770.905960331205, 11995.819917720033, 19747.829082206645, 19748.431933352636, 19749.075901273456, 19466.617572533705, 19752.381577633278, 4969.7059505406505, 17986.83995564123, 19749.075901273456, 19746.896069134582, 19752.08201039945, 19738.11134102032, 498.84938563626804, 19749.19249969937, 19752.08201039945, 19747.896118769637, 13601.619408698383, 19743.260052504305, 5135.726070979244, 3133.919968644151, 19749.19249969937, 19753.853767755834, 19750.87022180548, 7298.115437640935, 19751.536408207703, 19752.884480408073, 19753.853767755834, 19751.542936109065, 19743.659117157807, 19760.302930084134, 19751.59945855852, 155.5773758426209, 19752.884480408073, 19755.991748653338, 19752.848989854927, 19755.563943464425, 19756.570167465317, 19755.165796254398, 19755.991748653338, 650.7690257847578, 19754.41195073914, 19754.28124965953, 19748.34824238597, 18766.323660913975, 19755.165796254398, 19755.60056741995, 19754.622690785753, 367.3642336334456, 19755.873657926197, 19756.508036857296, 19755.60056741995, 896.5164168797209, 19754.35601348591, 19752.144031455326, 19758.934314172016, 19757.074107499466, 19756.508036857296, 19754.32508982097, 832.1434461672089, 19755.20497131739, 19759.584197574448, 1538.0075030758635, 19757.074107499466, 19761.133662230972, 19753.245506417017, 13092.52239813087, 19755.795496009916, 19761.03190742165, 19761.133662230972, 2833.7605702102355, 17897.963529724206, 12634.212612740075, 2124.1020040114136, 19768.180504463475, 19761.03190742165, 7370.455989808017, 19.68243774657819, 19761.025772048826, 19756.31579370775, 19758.785769706912, 19768.180504463475, 19754.827785827918, 8326.354828157624, 15510.591799173293, 19762.62750619028, 3454.7163394186455, 19758.785769706912, 19758.84516555402, 19757.229152422216, 15161.613822921197, 19760.613475738526, 11572.67413015717, 19758.84516555402, 4596.1173031221815, 19758.406050973317, 19765.02777169259, 19766.450367628546, 19757.71886826186, 19758.406050973317, 947.87754489118, 19759.648783668217, 6099.361165615458, 19763.894327864342, 19765.454229586278, 19759.648783668217, 7173.26535664318, 6593.733650972089, 16764.745687285093, 19761.162153941772, 19761.21269354197, 19765.454229586278, 19760.80146521984, 19764.942853018514, 19769.653476055715, 19764.458245166665, 19763.86148253791, 19764.942853018514, 19780.862477780596, 17509.968569680586, 1188.7126078128838, 2948.7390915310903, 19767.273057036124, 19780.862477780596, 19770.83449841099, 19762.24796241168, 19763.014907286077, 19774.493144593405, 19767.817147789738, 19770.83449841099, 19763.606051752115, 19766.647667721933, 19769.9669115918, 19765.245253123256, 19772.13609427558, 19767.817147789738, 19766.82965303794, 2021.0541706174527, 19767.018690237168, 19768.163866661707, 343.13581503560255, 19772.13609427558, 15497.754482203469, 2259.588169542944, 19768.520159473534, 3842.342404806207, 19770.515286477763, 15497.754482203469, 19771.618744039686, 840.6255719899882, 19772.29882048401, 3934.568916780458, 19771.779838303763, 19771.618744039686, 19769.272677170917, 19769.576530850543, 19774.06668734663, 19767.990555865745, 19770.71086662648, 19771.779838303763, 19769.298004300243, 20289.809991203307, 19774.009803237353, 19768.58680843855, 19769.898960254384, 20289.809991203307, 332.94766286057086, 13180.818897143856, 19770.658513369137, 19770.759098203314, 19772.181931828116, 19769.898960254384, 4.609652930357215, 19768.017935004573, 19775.780817380066, 19769.57671490288, 4071.1011003611598, 19772.181931828116, 19773.04814379857, 19770.31847903407, 19771.740975815937, 98.7419864464947, 19768.273187442115, 19773.04814379857, 19783.255165380335, 301.34496071138784, 19770.150298601307, 19778.30606851176, 19769.072046836565, 19783.255165380335, 19769.9782000595, 19768.143609604238, 13592.892915751581, 19774.67576404146, 5043.185009066357, 19769.9782000595, 19772.504137017688, 19777.070430468226, 19782.794211123328, 19776.787553892347, 1566.1128553495048, 19777.070430468226, 3962.414046441464, 19774.87037405038, 19776.070188033074, 3759.439600325705, 19775.58958600117, 19774.87037405038, 19773.81023731156, 19777.767151405817, 377.6584150002128, 19778.81655239048]\n", "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298]\n" ] } ], "source": [ "'''\n", "Compile results for grid search, random, spearmint, hyperband, hyperopt Proposers\n", "''' \n", "\n", "s_ran, t_ran, j_ran = graph_data(2, c)\n", "s_spe, t_spe, j_spe = graph_data(3, c)\n", "s_bohb, t_bohb, j_bohb = graph_data(1, c)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Visualization" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can easily visualize the performance of the hyperparameter optimization algorithms for our current experiment and how configurations can affect the final performance. In the plots below we compare job performance and time with accuracy achieved. " ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "'''\n", "Plots for the experiment results\n", "'''\n", "\n", "import matplotlib.pyplot as plt\n", "\n", "plt.figure(figsize=(20,15))\n", "\n", "\n", "plt.plot(j_bohb, s_bohb)\n", "plt.plot(j_ran, s_ran)\n", "plt.plot(j_spe, s_spe)\n", "\n", "plt.legend(['y = bohb','y = random', 'y = spearmint'], loc='upper left')\n", "\n", "plt.title('Hyperparameter Optimization using various proposers on Quad min')\n", "plt.xlabel('Jobs')\n", "plt.ylabel('Accuracy')\n", "\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "'''\n", "Plots for the experiment results\n", "'''\n", "\n", "\n", "import matplotlib.pyplot as plt\n", "\n", "plt.figure(figsize=(20,15))\n", "\n", "\n", "plt.plot(t_bohb, s_bohb)\n", "plt.plot(t_ran, s_ran)\n", "plt.plot(t_spe, s_spe)\n", "\n", "plt.legend(['y = bohb','y = random', 'y = spearmint'], loc='upper left')\n", "\n", "plt.title('Hyperparameter Optimization using various proposers on Quad min')\n", "plt.xlabel('Time')\n", "plt.ylabel('AMC score (less is better)')\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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H/nIR+a2/9rXvpZjjjkma9asySmnnLLRvl72spfl4IMPzrp163Ldddfd5bkBAAAA259VKz2BSfPq//OFXPy1G+/WfR50/91z2tMPXvL+k046Kccdd1xe+tKXZmZmJmeddVbOO++822135JFH5qabbrrd+Omnn54nPelJtxu/4oorct555+Wyyy7L0UcfnS9/+ct585vfnKrK5z73uVxyySV58pOfnC996UtJkosuuigXXnhhdtpppxxwwAE5+eSTs+++++a73/1u1q5dmz/+4z/Oa17zmrz61a/Om970prtwRgAAAIDtkSBqAuy3335ZvXp1Lrzwwlx77bU57LDDsnr16tttd84559yh/T7rWc/KaDTKmjVr8uAHPziXXHJJPv7xj+fkk09Okjz0oQ/Nj/zIj8wFUevWrcsee+yRJDnooINy5ZVXZt99981oNMrxxx+fJHnOc56T44477q4cLgAAALCdEkQtsKnKpS3p+c9/ftavX59rrrkmJ5100qLb3NGKqKra5O8L7bTTTnO3p6amcuutty663eb2AwAAALAYa0RNiGc+85n5p3/6p3zmM5/JU57ylEW3Oeecc3LRRRfd7mexECpJzj777MzMzOSyyy7L5ZdfngMOOCBHHnlk3vnOdyZJvvSlL+WrX/1qDjjggE3ObWZmZu4KfGeeeWae8IQn3IUjBQAAALZXKqImxI477pijjz46e+65Z6ampu6WfT7wgQ/M4YcfnhtvvDFvectbsvPOO+fFL35xXvSiF+WQQw7JqlWrsn79+o0qoRaz66675rzzzstrX/va3Oc+98m73vWuu2V+AAAAwPalWmsrPYetau3ate3888/faOyLX/xiDjzwwBWa0djMzEwe+chH5uyzz86aNWtWdC6TbBJeKwAAAGBjVXVBa23t5rbTmjcBLr744uy///5Zt26dEAoAAADYZmnNmwAHHXRQLr/88pWeBgAAAMAWpSIKAAAAgK1CEAUAAADAViGIAgAAAGCrEEQBAAAAsFUIoliW9evX5yUveclKTwMAAADomCBqO3Drrbeu9BQAAAAABFGT4NRTT80b3vCGud9f+cpX5owzzrhL+zzxxBPzwhe+MEcccUROOeWUnHfeeXnsYx+bww47LI973OPyH//xH0nGlU7HHXdcjjnmmKxZsyannHLK3D7+8i//Mg95yENy+OGH59xzz50bv+KKK/LjP/7jefjDH55169blq1/96txzvuhFL8pjHvOYPPjBD85HP/rRnHTSSTnwwANz4okn3qXjAQAAAPq3aqUnMHE++BvJNZ+7e/f5Xw5Jnvr7S9590kkn5bjjjstLX/rSzMzM5Kyzzsp55513u+2OPPLI3HTTTbcbP/300/OkJz3pduMbNmzIJz7xiUxNTeXGG2/MOeeck1WrVuXDH/5wfuu3fivvfe97kyQXXXRRLrzwwuy000454IADcvLJJ2fVqlU57bTTcsEFF2SPPfbI0UcfncMOOyxJcvLJJ+eEE07ICSeckLe97W35tV/7tbzvfe9Lknzzm9/MJz/5ybz//e/PM57xjJx77rn58z//8zz60Y/ORRddlEMPPfROnUIAAACgf4KoCbDffvtl9erVufDCC3PttdfmsMMOy+rVq2+33TnnnHOH9vtzP/dzmZqaSpJ8+9vfzgknnJBLL700VZVbbrllbrt169Zljz32SJIcdNBBufLKK/ONb3wjRx11VPbee+8kyfHHH58vfelLSZJPfvKT+du//dskyS/90i9tVEX19Kc/PVWVQw45JPe9731zyCGHJEkOPvjgXHHFFYIoAAAA2I4JohbaROXSlvT85z8/69evzzXXXJOTTjpp0W3uaEXUrrvuOnf7d37nd3L00Ufn7/7u73LFFVfkqKOOmrtvp512mrs9NTV1l9aUmt3XaDTaaL+j0chaVQAAALCdE0RNiGc+85k59dRTc8stt+TMM89cdJs7WhE137e//e084AEPSDJeF2pzjjjiiPz6r/96rr/++uy+++45++yz84hHPCJJ8rjHPS5nnXVWfumXfinvfOc7c+SRR97peQEAAADbD0HUhNhxxx1z9NFHZ88995xrp7s7nXLKKTnhhBPy2te+Nk972tM2u/397ne/vOpVr8pjH/vY7Lnnnhu11P3Jn/xJnve85+UP//APs/fee+cv//Iv7/b5AgAAANueaq2t9By2qrVr17bzzz9/o7EvfvGLOfDAA1doRmMzMzN55CMfmbPPPjtr1qxZ0blMskl4rQAAAICNVdUFrbW1m9tutDUmw6ZdfPHF2X///bNu3TohFAAAALDN0po3AQ466KBcfvnlKz0NAAAAgC1KRVSHpmdmcuP3b8kt0zMrPRUAAACAZRNEdegHt87kiuu/m+//cHqlpwIAAACwbIKoDtXw7/a1zDwAAADQO0FUl0RRAAAAQH8EUR2qIYdqHeZQj3vc4za7zRve8IZ873vf2wqzAQAAALYmQRR32fT08teq+sQnPrHZbQRRAAAAsG0SRE2AU089NW94wxvmfn/lK1+ZM8444y7t8+yzz87DHvawPOIRj8gTn/jEJMn69etz7LHH5qijjsqaNWvy6le/em77d7zjHTn88MNz6KGH5ld/9VfnwqUXvehFWbt2bQ4++OCcdtppc9vvt99+ecUrXpFHPvKROfvss3PUUUflZS97WdauXZsDDzwwn/nMZ3LcccdlzZo1+e3f/u25x93znvdMknz0ox/NUUcdlZ/92Z/NQx/60PziL/5iWmt54xvfmK997Ws5+uijc/TRR9+lcwAAAABMllUrPYFJ8wfn/UEuueGSu3WfD93roXnF4a9Y8v6TTjopxx13XF760pdmZmYmZ511Vs4777zbbXfkkUfmpptuSmvJD26dzg5To0yNKqeffnqe9KQnbbTta17zmvzzP/9zHvCAB+Rb3/rW3Ph5552Xz3/+87nHPe6RRz/60Xna056WXXfdNe9617ty7rnnZocddsiLX/zivPOd78xzn/vcvO51r8tee+2V6enprFu3Lp/97Gfz8Ic/PEmyevXq/Pu//3uS5C1veUt23HHHnH/++TnjjDNy7LHH5oILLshee+2VH/3RH83LXvayrF69eqM5XnjhhfnCF76Q+9///nn84x+fc889N7/2a7+WP/qjP8pHPvKR3Pve977T5xwAAACYPIKoCbDffvtl9erVufDCC3PttdfmsMMOu11okyTnnHNOkuSHt07nkmtuyj73ukf22nXHRff5+Mc/PieeeGKe9axn5bjjjpsb/4mf+Im5fR933HH5+Mc/nlWrVuWCCy7Iox/96CTJ97///dznPvdJkrz73e/OW9/61tx66625+uqrc/HFF88FUccff/xGz/mMZzwjSXLIIYfk4IMPzv3ud78kyYMf/OBcddVVtzumww8/PPvss0+S5NBDD80VV1yRJzzhCXfgzAEAAAA9EUQtsKnKpS3p+c9/ftavX59rrrkmJ5100qLb3JGKqLe85S359Kc/nQ984AN51KMelQsuuCBJUrMrnQ+qKq21nHDCCXn961+/0X1f+cpXcvrpp+czn/lM7nWve+XEE0/MzTffPHf/rrvuutH2O+20U5JkNBrN3Z79/dZbb73d8czfZmpqatFtAAAAgG2HIGpCPPOZz8ypp56aW265JWeeeeai29xWETWTS665MQ+41y5ZvetOi2572WWX5YgjjsgRRxyRD37wg7nqqquSJB/60Idyww03ZJdddsn73ve+vO1tb8s97nGPHHvssXnZy16W+9znPrnhhhty00035cYbb8yuu+6aPfbYI9dee20++MEP5qijjtoixz/fbrvtlptuuklrHgAAAGxjBFETYscdd8zRRx+dPffcM1NTU5vcdq6oqS29zctf/vJceumlaa1l3bp1ecQjHpGLLroohx9+eH7mZ34mGzZsyHOe85ysXbs2SfLa1742T37ykzMzM5Mddtghb37zm/OYxzwmhx12WB760Idm3333zeMf//i76Wg37QUveEGOOeaY3P/+989HPvKRrfKcAAAAwJZXrW0izdgGrV27tp1//vkbjX3xi1/MgQceuEIzGpuZmZm7At2aNWs2ue0t0zP54tU35gF77pLV91y8Imox69evz/nnn583velNd3W6K2YSXisAAABgY1V1QWtt7ea2G22NybBpF198cfbff/+sW7dusyFUkiyjIAoAAABg4mjNmwAHHXRQLr/88jv+wDuYRJ144ok58cQT7/jzAAAAANwNVEQNempRnF0jqp8Z3z16eo0AAACA2xNEJdl5551z/fXXdxR0bH/Nea21XH/99dl5551XeioAAADAnaQ1L8k+++yTDRs25LrrrlvpqSxLay3Xfuvm3LzLqnxj5x1Wejpbzc4775x99tlnpacBAAAA3EmCqCQ77LBDHvSgB630NJbtB7dO5yd/+5/y8qcckP969P4rPR0AAACAZdGa16GpYZGomZntpzUPAAAA6J8gqkOjIYia7mZNKwAAAABBVJdGIxVRAAAAQH8EUZ0aVSKHAgAAAHoiiOrU1Ki05gEAAABdEUR1alSVGUEUAAAA0BFBVKdGVdaIAgAAALoiiOrU1KgyPbPSswAAAABYPkFUp8aLlauIAgAAAPohiOrUaGSNKAAAAKAvgqhOTVVl2hpRAAAAQEcEUZ0aV0St9CwAAAAAlk8Q1alRxVXzAAAAgK4Iojo1VdaIAgAAAPoiiOpUVWVaEAUAAAB0RBDVqalRac0DAAAAuiKI6tSUxcoBAACAzgiiOlUVrXkAAABAVwRRnZoqrXkAAABAXwRRnRq35gmiAAAAgH4IojpVVZmeWelZAAAAACyfIKpTU6OoiAIAAAC6Iojq1FRpzQMAAAD6Iojq1Lg1TxAFAAAA9EMQ1ampUUVBFAAAANATQVSnRhUVUQAAAEBXBFGdGlVlWkkUAAAA0BFBVKfGrXmCKAAAAKAfgqhOjSxWDgAAAHRGENWp0agyLYcCAAAAOiKI6tRURWseAAAA0BVBVKe05gEAAAC9EUR1ajQSRAEAAAB9EUR1alSJzjwAAACgJ4KoTk2NKtOSKAAAAKAjgqhOjaoyI4gCAAAAOiKI6tSoKjPWiAIAAAA6ssWCqKo8kxhSAAAgAElEQVR6W1V9vao+P2/sXVV10fBzRVVdNIzvV1Xfn3ffW+Y95lFV9bmq+nJVvbGqahjfq6o+VFWXDv/ea0sdyyTSmgcAAAD0ZktWRK1Pcsz8gdba8a21Q1trhyZ5b5K/nXf3ZbP3tdZeOG/8T5P8SpI1w8/sPn8jyb+21tYk+dfh9+3GuCJqpWcBAAAAsHxbLIhqrX0syQ2L3TdUNT0ryd9sah9Vdb8ku7fWPtVaa0n+KslPD3cfm+Ttw+23zxvfLowq1ogCAAAAurJSa0QdmeTa1tql88YeVFUXVtX/raojh7EHJNkwb5sNw1iS3Le1dvVw+5ok913qyarqBVV1flWdf911191Nh7CypkaVaWtEAQAAAB1ZqSDq2dm4GurqJA9srR2W5L8lObOqdl/uzoZqqSVTmdbaW1tra1tra/fee+87O+eJMhpV5FAAAABAT1Zt7SesqlVJjkvyqNmx1toPkvxguH1BVV2W5CFJ/jPJPvMevs8wliTXVtX9WmtXDy18X98a858UWvMAAACA3qxERdSTklzSWptruauqvatqarj94IwXJb98aL27saoeM6wr9dwkfz887P1JThhunzBvfLswVSWIAgAAALqyxYKoqvqbJJ9MckBVbaiqXx7u+vncfpHyJyb5bFVdlOQ9SV7YWptd6PzFSf48yZeTXJbkg8P47yf5iaq6NONw6/e31LFMoiprRAEAAAB92WKtea21Zy8xfuIiY+9N8t4ltj8/ycMWGb8+ybq7Nst+TY0qM4IoAAAAoCMrtVg5d9GUxcoBAACAzgiiOlWVTFsjCgAAAOiIIKpTU6U1DwAAAOiLIKpT49Y8QRQAAADQD0FUp6rGa0Q1YRQAAADQCUFUp6aqksSC5QAAAEA3BFGdGo1zKO15AAAAQDcEUZ0aDUnUtJIoAAAAoBOCqE5NDUGUgigAAACgF4KoTs225k1LogAAAIBOCKI6NSqteQAAAEBfBFGduq01TxAFAAAA9EEQ1SkVUQAAAEBvBFGdmrtqnoooAAAAoBOCqE5NlavmAQAAAH0RRHVq7qp5WvMAAACATgiiOjXbmjejJAoAAADohCCqU7OLlc/MrPBEAAAAAJZJENWpqeGVs1g5AAAA0AtBVKfmKqIEUQAAAEAnBFGduq01TxAFAAAA9EEQ1ampYbFyrXkAAABALwRRnbJYOQAAANAbQVSnhoIoa0QBAAAA3RBEdWquNc8aUQAAAEAnBFGdctU8AAAAoDeCqE6NRoIoAAAAoC+CqE5NzVVErfBEAAAAAJZJENWp2cXKrREFAAAA9EIQ1am51jxBFAAAANAJQVSnpkZa8wAAAIC+CKI6NdeaZ7FyAAAAoBOCqE6NSmseAAAA0BdBVKdua80TRAEAAAB9EER1arYiylXzAAAAgF4Iojo115onhwIAAAA6IYjq1Gh45bTmAQAAAL0QRHVqSmseAAAA0BlBVKdGFisHAAAAOiOI6tRta0QJogAAAIA+CKI6dVtr3gpPBAAAAGCZBFGdslg5AAAA0BtBVKfmWvMsVg4AAAB0QhDVqalhsfJpFVEAAABAJwRRnRoKoqIgCgAAAOiFIKpTU1rzAAAAgM4Iojo125pnsXIAAACgF4KoTtVQETWtIgoAAADohCCqUyqiAAAAgN4Iojo1t0aUHAoAAADohCCqU7NXzdOaBwAAAPRCENWpudY8QRQAAADQCUFUp7TmAQAAAL0RRHVqrjXPYuUAAABAJwRRnaqqjCppgigAAACgE4Kojo2qLFYOAAAAdEMQ1bHRqLTmAQAAAN0QRHVsqipyKAAAAKAXgqiOjSpa8wAAAIBuCKI6NhpZIwoAAADohyCqY1OjctU8AAAAoBuCqI6NymLlAAAAQD8EUR0bVWV6ZqVnAQAAALA8gqiOjSpa8wAAAIBuCKI6NmWxcgAAAKAjgqiOjaoihwIAAAB6IYjq2GiUzGjNAwAAADohiOrYVGnNAwAAAPohiOrYaFQqogAAAIBuCKI6Nl4jShAFAAAA9EEQ1TGteQAAAEBPBFEdG7fmrfQsAAAAAJZHENWxUSUzkigAAACgE4Kojk1ZrBwAAADoiCCqY1WVaTkUAAAA0AlBVMemtOYBAAAAHRFEdUxrHgAAANATQVTHqirTKqIAAACATgiiOjZVKqIAAACAfgiiOjZuzVvpWQAAAAAsjyCqY1XRmgcAAAB0QxDVMYuVAwAAAD0RRHVsZI0oAAAAoCOCqI6NqjI9s9KzAAAAAFgeQVTHpkZJUxEFAAAAdEIQ1bFxRZQgCgAAAOiDIKpjo1FlWkUUAAAA0AlBVMemqiKHAgAAAHohiOrYqKI1DwAAAOjGFguiquptVfX1qvr8vLFXVdV/VtVFw89PzrvvN6vqy1X1H1X1lHnjxwxjX66q35g3/qCq+vQw/q6q2nFLHcukGo2sEQUAAAD0Y0tWRK1Pcswi43/cWjt0+PnHJKmqg5L8fJKDh8f8r6qaqqqpJG9O8tQkByV59rBtkvzBsK/9k3wzyS9vwWOZSOPWPEEUAAAA0IctFkS11j6W5IZlbn5skrNaaz9orX0lyZeTHD78fLm1dnlr7YdJzkpybFVVkh9P8p7h8W9P8tN36wF0YFQWKwcAAAD6sRJrRL2kqj47tO7daxh7QJKr5m2zYRhbanx1km+11m5dML6oqnpBVZ1fVedfd911d9dxrLhxa95KzwIAAABgebZ2EPWnSX40yaFJrk7yP7fGk7bW3tpaW9taW7v33ntvjafcKkYVrXkAAABAN1ZtzSdrrV07e7uq/izJPwy//meSfedtus8wliXGr0+yZ1WtGqqi5m+/3Zgaac0DAAAA+rFVK6Kq6n7zfn1mktkr6r0/yc9X1U5V9aAka5Kcl+QzSdYMV8jbMeMFzd/fxmVAH0nys8PjT0jy91vjGCbJqCozrpoHAAAAdGKLVURV1d8kOSrJvatqQ5LTkhxVVYcmaUmuSPKrSdJa+0JVvTvJxUluTfJfW2vTw35ekuSfk0wleVtr7QvDU7wiyVlV9dokFyb5iy11LJNqVBU5FAAAANCLLRZEtdaevcjwkmFRa+11SV63yPg/JvnHRcYvz/iqetutqVEyLYkCAAAAOrESV83jbjIaVWasEQUAAAB0QhDVsXFrniAKAAAA6IMgqmNTVVrzAAAAgG4Iojo2qlisHAAAAOiGIKpjo1ElSWakUQAAAEAHBFEdm6ohiLJOFAAAANABQVTHZiuipgVRAAAAQAcEUR0bzVZEzazwRAAAAACWQRDVsanh1dOaBwAAAPRAENWx2YoorXkAAABADwRRHbutNU8QBQAAAEw+QVTHpkazV81b4YkAAAAALIMgqmNDDpVpSRQAAADQAUFUx0ZzFVGCKAAAAGDyCaI6NrdGlCAKAAAA6IAgqmNTs1fN05oHAAAAdEAQ1bHZ1jwFUQAAAEAPBFEds1g5AAAA0BNBVMemhiRqWkkUAAAA0AFBVMdmFytvgigAAACgA4Kojo3mFitf4YkAAAAALIMgqmNTw6tnjSgAAACgB4KojtVQETWjNQ8AAADogCCqY1OCKAAAAKAjgqiOzV41T2ceAAAA0ANBVMeGgihrRAEAAABdEER17LaKKEEUAAAAMPkEUR2bWyNKRRQAAADQAUFUx2avmjetIgoAAADogCCqY3OteTMrPBEAAACAZRBEdWxqePWsEQUAAAD0QBDVMa15AAAAQE8EUR2zWDkAAADQE0FUx0azQZQcCgAAAOiAIKpjo+HVm5ZEAQAAAB0QRHVs9qp5zRpRAAAAQAcEUR0bWawcAAAA6IggqmNzQZTWPAAAAKADgqiO3daat8ITAQAAAFgGQVTHhhxKRRQAAADQBUFUx6wRBQAAAPREENWxkavmAQAAAB0RRHVsam6x8hWeCAAAAMAyCKI6NhpevRkVUQAAAEAHBFEdm10jShAFAAAA9EAQ1bHbWvMEUQAAAMDkE0R1bHaxcjkUAAAA0ANBVMeGHCozkigAAACgA4Kojk0NSdS0NaIAAACADgiiOmaxcgAAAKAngqiOzQVRWvMAAACADgiiOjbXmjezwhMBAAAAWAZBVMfmFivXmgcAAAB0QBDVsapKlSAKAAAA6IMgqnNTVYIoAAAAoAuCqM6NqqwRBQAAAHRBENW50UhrHgAAANAHQVTnpqoyMyOIAgAAACafIKpzo6pMq4gCAAAAOiCI6txopCIKAAAA6IMgqnOjSuRQAAAAQA8EUZ2bGmnNAwAAAPogiOrcqCpNEAUAAAB0QBDVuVFVpvXmAQAAAB0QRHVualSZnlnpWQAAAABsniCqc6NRtOYBAAAAXRBEdW5UFisHAAAA+iCI6tyUNaIAAACATgiiOjcaVRREAQAAAD0QRHVuVFERBQAAAHRBENU5a0QBAAAAvRBEdW5U5ap5AAAAQBcEUZ2bGlmsHAAAAOiDIKpzo1FFDgUAAAD0QBDVuVElM1rzAAAAgA4Iojo3VVrzAAAAgD4Iojo3bs0TRAEAAACTTxDVuVElMzMrPQsAAACAzRNEdW5qVJlWEQUAAAB0QBDVuVFpzQMAAAD6IIjq3KgqMxYrBwAAADogiOrc1KgihwIAAAB6IIjq3KiSaUkUAAAA0AFBVOesEQUAAAD0QhDVuXFrniAKAAAAmHyCqM6NqrTmAQAAAF0QRHVuZLFyAAAAoBOCqM5NVbTmAQAAAF3YYkFUVb2tqr5eVZ+fN/aHVXVJVX22qv6uqvYcxverqu9X1UXDz1vmPeZRVfW5qvpyVb2xqmoY36uqPlRVlw7/3mtLHcsk05oHAAAA9GJLVkStT3LMgrEPJXlYa+3hSb6U5Dfn3XdZa+3Q4eeF88b/NMmvJFkz/Mzu8zeS/GtrbU2Sfx1+3+6MRpUZQRQAAADQgS0WRLXWPpbkhgVj/9Jau3X49VNJ9tnUPqrqfkl2b619qrXWkvxVkp8e7j42yduH22+fN75dGVWsEQUAAAB0YSXXiDopyQfn/f6gqrqwqv5vVR05jD0gyYZ522wYxpLkvq21q4fb1yS57xad7YSaGlWmrREFAAAAdGDVSjxpVb0yya1J3jkMXZ3kga2166vqUUneV1UHL3d/rbVWVUumMVX1giQvSJIHPvCBd37iE2hUlSaIAgAAADqw1SuiqurEJD+V5BeHdru01n7QWrt+uH1BksuSPCTJf2bj9r19hrEkuXZo3Ztt4fv6Us/ZWntra21ta23t3nvvfTcf0cqyWDkAAADQi60aRFXVMUlOSfKM1tr35o3vXVVTw+0HZ7wo+eVD692NVfWY4Wp5z03y98PD3p/khOH2CfPGtytTI0EUAAAA0Ict1ppXVX+T5Kgk966qDUlOy/gqeTsl+dA4V8qnhivkPTHJa6rqliQzSV7YWptd6PzFGV+Bb5eM15SaXVfq95O8u6p+OcmVSZ61pY5lko1b81Z6FgAAAACbt8WCqNbasxcZ/osltn1vkvcucd/5SR62yPj1SdbdlTluC0YVi5UDAAAAXVjJq+ZxN9CaBwAAAPRCENW50poHAAAAdEIQ1bmpkdY8AAAAoA+CqM5NldY8AAAAoA+CqM4NVx9MUxUFAAAATDhBVOemRuMgSlUUAAAAMOkEUZ2bDaLkUAAAAMCkE0R1bujMy4zWPAAAAGDCCaI6N1Va8wAAAIA+CKI6d1trniAKAAAAmGyCqM7NXjVvZmaFJwIAAACwGYKozk0Na0RNq4gCAAAAJpwgqnMjrXkAAABAJwRRnRvNteYJogAAAIDJJojq3G2Lla/wRAAAAAA2QxDVuZE1ogAAAIBOCKI6pzUPAAAA6IUgqnNTFisHAAAAOiGI6txsRdS0iigAAABgwgmiOjdSEQUAAAB0QhDVudnFyhVEAQAAAJNOENW5Ka15AAAAQCcEUZ2bbc0TRAEAAACTThDVudnFyi0RBQAAAEw6QVTnpoZXcFoSBQAAAEw4QVTnZiuiXDUPAAAAmHSCqM7NBVHWiAIAAAAmnCCqc1MWKwcAAAA6IYjq3G2teSs8EQAAAIDNEER1biiIskYUAAAAMPEEUZ3TmgcAAAD0QhDVuXLVPAAAAKATgqjOzVZECaIAAACASSeI6tzUbEXUzApPBAAAAGAzBFGdG3KoTKuIAgAAACacIKpzc615FisHAAAAJpwgqnO3rRG1whMBAAAA2AxBVOdGWvMAAACATgiiOjcqrXkAAABAHwRRnZsLolREAQAAABNOENW52TWiplVEAQAAABNOENW50UhFFAAAANAHQVTnZhcrVxAFAAAATDpBVOemSmseAAAA0AdBVOdmW/Oa1jwAAABgwgmiOjdSEQUAAAB0QhDVubnWPDkUAAAAMOEEUZ0bDa+g1jwAAABg0gmiOqc1DwAAAOiFIKpzU6PZ1jxBFAAAADDZBFGdGwqiIocCAAAAJp0gqnNTWvMAAACATgiiOjfbmjejJAoAAACYcIKoztVQETWjIgoAAACYcIKobcDUqCxWDgAAAEw8QdQ2YKoqCqIAAACASSeI2gZUac0DAAAAJp8gahswNSpXzQMAAAAmniBqGzDSmgcAAAB0QBC1DRhVMmOxcgAAAGDCCaK2AVrzAAAAgB4IorYB49Y8QRQAAAAw2QRR24DRSBAFAAAATD5B1DZgqiozMys9CwAAAIBNE0RtA0aVTKuIAgAAACacIGobMBpVZixWDgAAAEw4QdQ2YMoaUQAAAEAHBFHbgFFVpuVQAAAAwIQTRG0DRhWteQAAAMDEE0RtA0alNQ8AAACYfIKobcDUqDKtIgoAAACYcIKobcC4ImqlZwEAAACwaYKobcBolEzPzKz0NAAAAAA2SRC1DbjHjqvyvR9Or/Q0AAAAADZJELUN2H3nHXLjzbeu9DQAAAAANkkQtQ3YfZdVufH7t6z0NAAAAAA2SRC1DRhXRAmiAAAAgMkmiNoG7L7zqnznB7dmxqXzAAAAgAkmiNoG7L7LDmkt+c4PrRMFAAAATC5B1DZg9513SBLrRAEAAAATTRC1Ddh9l1VJkhu/ryIKAAAAmFyCqG3AbEXUTRYsBwAAACaYIGobsNtsa97NKqIAAACAySWI2gbc1pqnIgoAAACYXIKobcDcYuVa8wAAAIAJJojaBuy2s8XKAQAAgMkniNoGrJoaZdcdpyxWDgAAAEw0QdQ2Yredd9CaBwAAAEw0QdQ2YvddVmnNAwAAACbaFg2iquptVfX1qvr8vLG9qupDVXXp8O+9hvGqqjdW1Zer6rNV9ch5jzlh2P7Sqjph3vijqupzw2PeWFW1JY9nku2uIgoAAACYcMsKoqrqCVX1vOH23lX1oGXuf32SYxaM/UaSf22trUnyr8PvSfLUJGuGnxck+dPh+fZKclqSI5IcnuS02fBq2OZX5j1u4XNtN3bfRRAFAAAATLbNBlFVdVqSVyT5zWFohyTvWM7OW2sfS3LDguFjk7x9uP32JD89b/yv2tinkuxZVfdL8pQkH2qt3dBa+2aSDyU5Zrhv99bap1prLclfzdvXdmf3nVflppu15gEAAACTazkVUc9M8owk302S1trXkux2F57zvq21q4fb1yS573D7AUmumrfdhmFsU+MbFhm/nap6QVWdX1XnX3fddXdh6pNrt513yI3fVxEFAAAATK7lBFE/HCqOWpJU1a5315PP3++W1Fp7a2ttbWtt7d57772ln25F7L7Lqtx4860Zn1IAAACAybOcIOrdVfW/M26V+5UkH07yZ3fhOa8d2uoy/Pv1Yfw/k+w7b7t9hrFNje+zyPh2afedd8j0TMv3fji90lMBAAAAWNRmg6jW2ulJ3pPkvUkOSHJqa+3/b+/+oyy96zrBvz/3VnVXhaQ6gUTAkEAUEMEdImYYXDiKuvz0KDrrKKyrrMczOArjj+OuouOujrPsQdcfZ3SVFcasuDOCjJA1q1FERhfds0oCIr8EiQEOyURAfqQD6U6nq777x32qutJJd7o71fd56nler3Pq3LrPvXXvp049XJo3n8/n+eUH8Z7XJ9m+8t2Lk/zuruPf2V0972lJ7uhG+N6c5NlVdUm3pPzZSd7cPXa4qp7WXS3vO3e91uRsrK8miT1RAAAAwGCtnO7Bqpon+ePW2tdksST8rFTV65I8M8mlVXVrFle/e2UWXVbfneSjSb61e/oNSZ6f5OYkdyX5riRprX26qv5Nkhu75/10a217Afr3ZXFlvvUkf9B9TdLG2iKIOnz0njzi0FrP1QAAAADc12mDqNbaZlVtVdWh1todZ/virbUXneKhr7uf57YkLz3F61yb5Nr7OX5Tki8727rG6KK1xZ/SwnIAAABgqE4bRHU+l+Q9VfWWdFfOS5LW2veft6o4a9ujeYePCqIAAACAYTqTIOpN3RcDtrHTEWVHFAAAADBMDxhEtdZeW1UHkjy+O/TB1pq2m4E5sazcnwYAAAAYpgcMoqrqmUlem+QjSSrJFVX14tba285vaZyNnR1RrpoHAAAADNSZjOb9fJJnt9Y+mCRV9fgkr0vyFeezMM7OwZV5Dq7MLCsHAAAABmt2Bs9Z3Q6hkqS19rdJVs9fSZyrjfVVy8oBAACAwTqTjqibqurfJfn33f1vT3LT+SuJc7WxtmJZOQAAADBYZxJEfW+Slyb5/u7+nyX51fNWEedMRxQAAAAwZGcSRK0k+bettV9IkqqaJzl4XqvinGysreazdkQBAAAAA3UmO6LemmR91/31JH98fsrhwbhobSV3CqIAAACAgTqTIGqttfa57Tvd9xecv5I4V0bzAAAAgCE7kyDq81X1lO07VfUVSY6cv5I4Vxtrqzl81LJyAAAAYJjOZEfUDyb5j1X1n5NUkkck+bbzWhXnZGN9JceOb+XoPZtZW533XQ4AAADAvTxgENVau7GqnpDkS7pDH2ytmf8aoI211STJ4aP3CKIAAACAwXnA0byq+mdZ7Il6b5JvSvLbu0f1GI6L1ha54uEjxvMAAACA4TmTHVH/Y2vtzqp6RpKvS/LrSV51fsviXGysn+iIAgAAABiaMwmiNrvbr0/ymtba7yc5cP5K4lxtj+bdaWE5AAAAMEBnEkTdVlW/lsWC8huq6uAZ/hxLdmh9ezRPRxQAAAAwPGcSKH1rkjcneU5r7bNJHprkfzivVXFOdi8rBwAAABiaM7lq3l1J3rTr/u1Jbj+fRXFuLtoOoiwrBwAAAAbIiN2IrK3OsjovHVEAAADAIAmiRqSqsrG2mjsFUQAAAMAACaJGZmN91WgeAAAAMEgPGERV1T+tqg9V1R1Vdbiq7qyqw8sojrO3sbZiNA8AAAAYpAdcVp7kZ5N8Q2vtb853MTx4F62t5vARQRQAAAAwPGcymvdxIdT+sbG+kjuPGs0DAAAAhudMOqJuqqrfTvJ/Jbl7+2Br7U3nrSrO2cbaqtE8AAAAYJDOJIjaSHJXkmfvOtaSCKIGyLJyAAAAYKgeMIhqrX3XMgphb2ysreTIPZs5dnwrB1ZcFBEAAAAYjlMGUVX1I621n62qX86iA+peWmvff14r45xctLaaJLnz6D152IUHe64GAAAA4ITTdURtLyi/aRmFsDfWVhddUEePb/VcCQAAAMC9nTKIaq39393ta5dXDg/WrCpJsrV1nyY2AAAAgF6dbjTv+tP9YGvtG/e+HB6s+WwRRG0KogAAAICBOd1o3lcm+ViS1yX5yyS1lIp4UHaCqCaIAgAAAIbldEHUI5I8K8mLkvw3SX4/yetaa+9bRmGcG6N5AAAAwFDNTvVAa22ztfaHrbUXJ3lakpuT/GlVvWxp1XHWdEQBAAAAQ3W6jqhU1cEkX59FV9RjkvxSkuvOf1mcq+2OKDuiAAAAgKE53bLy30zyZUluSPKvW2vvXVpVnLPtjqitrZ4LAQAAADjJ6Tqi/tskn0/yA0m+v2pnV3klaa21jfNcG+dg3g1bGs0DAAAAhuaUQVRr7ZT7oxguo3kAAADAUAmbRmZnNE9HFAAAADAwgqiRmeuIAgAAAAZKEDUys51l5YIoAAAAYFgEUSOzPZpnWTkAAAAwNIKokbGsHAAAABgqQdTIWFYOAAAADJUgamROLCvvuRAAAACAkwiiRmbW/UWN5gEAAABDI4gaGaN5AAAAwFAJokZmblk5AAAAMFCCqJGZ6YgCAAAABkoQNTI6ogAAAIChEkSNzPaOKEEUAAAAMDSCqJExmgcAAAAMlSBqZE6M5vVcCAAAAMBJBFEjM+v+ojqiAAAAgKERRI3MdkeUIAoAAAAYGkHUyFhWDgAAAAyVIGpkZoIoAAAAYKAEUSNjNA8AAAAYKkHUyJwYzeu5EAAAAICTCKJGZqYjCgAAABgoQdTIWFYOAAAADJUgamS6HEoQBQAAAAyOIGpkqiqzMpoHAAAADI8gaoTms9IRBQAAAAyOIGqEZlXZ1BEFAAAADIwgaoTms8qWjigAAABgYARRIzSvyuZW31UAAAAA3JsgaoRms7KsHAAAABgcQdQIWVYOAAAADJEgaoQsKwcAAACGSBA1QvNZLCsHAAAABkcQNUKLZeWCKAAAAGBYBFEjNJsZzQMAAACGRxA1QvNZGc0DAAAABkcQNULzqmzKoQAAAICBEUSN0ExHFAAAADBAgqgRsqwcAAAAGCJB1AhZVg4AAAAMkSBqhOazGM0DAAAABkcQNUKLZeWCKAAAAGBYBFEjNJvZEQUAAAAMjyBqhOZV2dIRBQAAAAyMIGqEdEQBAAAAQySIGqF5Vba2+q4CAAAA4N4EUSM0n1lWDgAAAAyPIGqEjOYBAAAAQySIGqF5xbJyAAAAYHCWHkRV1ZdU1bt2fR2uqh+sqp+qqtt2HX/+rp/5saq6uao+WFXP2XX8ud2xm6vq5cv+XYZqriMKAAAAGKCVZb9ha+2DSa5OkqqaJ7ktyXVJvivJL7bWfm7386vqiUlemORJSb4wyR9X1eO7h38lybOS3Jrkxqq6vrX2/qX8IgM2K0EUAAAAMDxLD6JO8jXMMAUAACAASURBVHVJ/q619tGqOtVzXpDk9a21u5N8uKpuTvLU7rGbW2u3JElVvb577uSDqPmsjOYBAAAAg9P3jqgXJnndrvsvq6p3V9W1VXVJd+zyJB/b9Zxbu2OnOn4fVfWSqrqpqm765Cc/uXfVD5Rl5QAAAMAQ9RZEVdWBJN+Y5D92h16V5IuzGNu7PcnP79V7tdZe3Vq7prV2zWWXXbZXLztY86rIoQAAAICh6XM073lJ3tla+3iSbN8mSVW9JsnvdXdvS3LFrp97VHcspzk+aZaVAwAAAEPU52jei7JrLK+qHrnrsW9O8t7u++uTvLCqDlbVVUkel+TtSW5M8riquqrrrnph99zJs6wcAAAAGKJeOqKq6iFZXO3ue3Yd/tmqujpJS/KR7cdaa++rqjdksYT8eJKXttY2u9d5WZI3J5knuba19r6l/RIDNp/FsnIAAABgcHoJolprn0/ysJOOfcdpnv+KJK+4n+M3JLlhzwvc54zmAQAAAEPU91XzOA9mVTqiAAAAgMERRI2QjigAAABgiARRI2RZOQAAADBEgqgRms8qcigAAABgaARRI2Q0DwAAABgiQdQIzaqyaVk5AAAAMDCCqBGaz5ItHVEAAADAwAiiRmiuIwoAAAAYIEHUCM1mldaSJowCAAAABkQQNULzqiSxsBwAAAAYFEHUCM1mXRClIwoAAAAYEEHUCM27IGprq+dCAAAAAHYRRI3QzmiejigAAABgQARRI7QzmmdHFAAAADAggqgRmi9yqGwJogAAAIABEUSN0NyycgAAAGCABFEjNNtZVi6IAgAAAIZDEDVClpUDAAAAQySIGiHLygEAAIAhEkSN0HZH1NZWz4UAAAAA7CKIGiHLygEAAIAhEkSNkNE8AAAAYIgEUSO0M5qnIwoAAAAYEEHUCM27v6qOKAAAAGBIBFEjNCujeQAAAMDwCKJGaHtZudE8AAAAYEgEUSNkWTkAAAAwRIKoEbKsHAAAABgiQdQIzXc6onouBAAAAGAXQdQIWVYOAAAADJEgaoS6hiijeQAAAMCgCKJGaG5ZOQAAADBAgqgR2rlqno4oAAAAYEAEUSO0c9U8HVEAAADAgAiiRshoHgAAADBEgqgR2r5qnmXlAAAAwJAIokboREdUz4UAAAAA7CKIGqF591e1rBwAAAAYEkHUCM0sKwcAAAAGSBA1QpaVAwAAAEMkiBqh7Y4oo3kAAADAkAiiRmi7I8poHgAAADAkgqgR2hnN0xEFAAAADIggaoQsKwcAAACGSBA1QpaVAwAAAEO00ncBnIOtzeTY50758HxzniTZlEMBAAAAAyKI2o/+/t3Jq595yoc3DlyYp8/+Zba2vnR5NQEAAAA8AEHUfrRxefKc/+WUD7d3/vv8+t0/l7d86sokX7S8ugAAAABOQxC1H134BclXvvSUDx974j/Lh3/+a/Pc9/xg8uTLky/66iUWBwAAAHD/LCsfofmFl+bbj/2r3LH2qOS3vi257Z19lwQAAAAgiBqjeVU+nY288ct+Ndm6J3n/7/ZdEgAAAIAgaoxms0qSfH7lkmT1Icnxoz1XBAAAACCIGq35rLLZWrK6ltxzpO9yAAAAAARRYzWvyuZWktV1QRQAAAAwCIKokZrNkq3WkpX15LggCgAAAOifIGqkFh1R26N5dkQBAAAA/RNEjdRsth1EXWA0DwAAABgEQdRIzWfVjeatGc0DAAAABkEQNVInRvPWjeYBAAAAgyCIGqnZdkfU6npyz119lwMAAAAgiBqrnY6olbXkuI4oAAAAoH+CqJGazyqbW+k6ouyIAgAAAPoniBqp2SwnRvN0RAEAAAADIIgaqROjeV0QtbXVd0kAAADAxAmiRmo2q2y2lqyuLQ7oigIAAAB6JogaqXlVtrY7ohJBFAAAANA7QdRILZaVdzuikuSeu/otCAAAAJg8QdRIzapOLCtPknt0RAEAAAD9EkSN1E5H1Mr2jqgj/RYEAAAATJ4gaqQWy8qTrF6wOHCPIAoAAADolyBqpOaVxbLy7avmCaIAAACAngmiRurEaJ6r5gEAAADDIIgaqVlVNpur5gEAAADDIYgaqfmsThrN0xEFAAAA9EsQNVLzWdcRtTOaZ0cUAAAA0C9B1EjNarsjans0TxAFAAAA9EsQNVI7HVGCKAAAAGAgBFEjNavK5laS+YEk5ap5AAAAQO8EUSM1n2UxmleVrF6gIwoAAADonSBqpHZG85LFlfMEUQAAAEDPBFEjtbOsPFlcOc9oHgAAANAzQdRI3bsjal1HFAAAANA7QdRIzauyuWU0DwAAABgOQdRIzWYnj+YJogAAAIB+CaJGal4nLyu3IwoAAADolyBqpGazyuZWd2f1guSeu3qtBwAAAEAQNVLzWbK13RG1suaqeQAAAEDvBFEjde9l5etG8wAAAIDe9RZEVdVHquo9VfWuqrqpO/bQqnpLVX2ou72kO15V9UtVdXNVvbuqnrLrdV7cPf9DVfXivn6fobnXsvLVdaN5AAAAQO/67oj6mtba1a21a7r7L0/y1tba45K8tbufJM9L8rju6yVJXpUsgqskP5nknyR5apKf3A6vpu5ey8pX1o3mAQAAAL3rO4g62QuSvLb7/rVJvmnX8d9sC3+R5OKqemSS5yR5S2vt0621zyR5S5LnLrvoIZrPdo/mrSX3HEm2gykAAACAHvQZRLUkf1RV76iql3THHt5au737/u+TPLz7/vIkH9v1s7d2x051fPJmszqxrHx1PWmbyeY9/RYFAAAATNpKj+/9jNbabVX1BUneUlUf2P1ga61V1Z608HRB10uS5Morr9yLlxy8ey0rX1lf3B4/kqwc6K8oAAAAYNJ664hqrd3W3X4iyXVZ7Hj6eDdyl+72E93Tb0tyxa4ff1R37FTHT36vV7fWrmmtXXPZZZft9a8ySIuOqKS1thjNS1w5DwAAAOhVL0FUVT2kqi7a/j7Js5O8N8n1SbavfPfiJL/bfX99ku/srp73tCR3dCN8b07y7Kq6pFtS/uzu2OTNq5IkWy3J6gWLg66cBwAAAPSor9G8hye5rhZhyUqS32qt/WFV3ZjkDVX13Uk+muRbu+ffkOT5SW5OcleS70qS1tqnq+rfJLmxe95Pt9Y+vbxfY7jmXcS4udUyX+k6olw5DwAAAOhRL0FUa+2WJE++n+OfSvJ193O8JXnpKV7r2iTX7nWN+91stt0R1RbLypPFlfMAAAAAetLnVfM4j7ZH8za3BFEAAADAMAiiRmredURttnbvq+YBAAAA9EQQNVKz7WXlW66aBwAAAAyDIGqkdjqittqJq+ZZVg4AAAD0SBA1UrN7jeZtd0Td1WNFAAAAwNQJokZqvjOal13LynVEAQAAAP0RRI3UvPvL3qsjyrJyAAAAoEeCqJG697Ly7Y4oQRQAAADQH0HUSN1rWflsnswPCKIAAACAXgmiRmq+e1l5kqysu2oeAAAA0CtB1EjdazQvWYznuWoeAAAA0CNB1EjdpyNqdc1V8wAAAIBeCaJGarsjanNr92ieHVEAAABAfwRRI7XdEbW11R1YXbesHAAAAOiVIGqk5t1f9sRo3rrRPAAAAKBXgqiRuu9o3prRPAAAAKBXgqiR2hnNu1dHlCAKAAAA6I8gaqTmtb0jShAFAAAADIMgaqRmXUfUzo6olbXkuB1RAAAAQH8EUSN136vmXZDcc1d/BQEAAACTJ4gaqZ1l5Ts7otZcNQ8AAADolSBqpE50RG2P5q0nm3fvapECAAAAWC5B1EhtLyvf3L2sPLEnCgAAAOiNIGqkZt1f9sRoXhdEuXIeAAAA0BNB1EjddzRvbXF7XBAFAAAA9EMQNVLz+ywr3+6IMpoHAAAA9EMQNVKz2Sl2RN1zV08VAQAAAFMniBqp7Y6orbbrqnmJZeUAAABAbwRRIzXf6YjqDqx2O6IsKwcAAAB6IogaqdnJy8pdNQ8AAADomSBqpO6zrHxnNE8QBQAAAPRDEDVSs+4ve2JZ+fZonh1RAAAAQD8EUSM1O3lZ+eoFi1tXzQMAAAB6IogaqZ3RvO2OqJWuI8pV8wAAAICeCKJGajY7KYiyrBwAAADomSBqpOazk0bz5geSmgmiAAAAgN4IokbqxGhed6BqceU8o3kAAABATwRRI7V91bydjqhkceU8HVEAAABATwRRI3WfZeXJ4sp5gigAAACgJ4KokZqfvKw8WVw577ggCgAAAOiHIGqkqipV9zeaZ0cUAAAA0A9B1IjNq+47mqcjCgAAAOiJIGrEZrPKZjtpNM+OKAAAAKAngqgRm1dl614dUeuCKAAAAKA3gqgRm88qm1u7DqysJcftiAIAAAD6sdJ3AZw/s/ssK78gOfb55OgdZ/dCNUsOXrS3xQEAAACTI4gasUVH1K4g6uCFyeHbkldeefYv9txXJk/73r0rDgAAAJgcQdSIzU9eVv5f/svkkquStFP+zP36819Mbr1pT2sDAAAApkcQNWKzk5eVX3xl8pXfd/Yv9LdvTj7zkT2rCwAAAJgmy8pH7D6jeefqkscIogAAAIAHTRA1YrM6aTTvXF3y6OSuf0ju/tyDfy0AAABgsgRRIzafnTSad64ueczi9rMfffCvBQAAAEyWIGrEFsvK9+CFtoMo43kAAADAgyCIGrFZZY86oq5a3H5GRxQAAABw7gRRI7Zny8rXL0kOXKQjCgAAAHhQBFEjtmfLyqtcOQ8AAAB40ARRI7Zny8qTxZXzBFEAAADAgyCIGrHFsvK9CqIes7hq3l69HgAAADA5gqgRm9Ue7YhKFkHU8aPJ5z6+N68HAAAATI4gasTms8rWXnZEJcbzAAAAgHMmiBqx+V53RCXJZz66N68HAAAATI4gasRms2Rra49e7NAVi1sdUQAAAMA5EkSN2J4uK19dSy76QkEUAAAAcM4EUSO2p8vKk8V4niAKAAAAOEeCqBHb02XlSXLJo5PP2hEFAAAAnBtB1Ijt6bLyZNERdfg/J/cc3bvXBAAAACZDEDVis9l5CKLSkjs+tnevCQAAAEyGIGrE5rXXo3mPWdx+xngeAAAAcPYEUSM23+uOqIsfvbj9zIf37jUBAACAyRBEjdhsVtnLHCoXPjxZWXPlPAAAAOCcCKJGbF7Z246o2WzRFSWIAgAAAM7BSt8FcP7s+bLyJLnk0ck/fCi5/a/P8gcr+YIvTeare1sPAAAAsG8IokZsz5eVJ8mlj08+9EfJr33V2f/sV/9o8jU/vrf1AAAAAPuGIGrE9nxZeZJ89Y8kj356krN83eu+N/n8J/e2FgAAAGBfEUSN2GJZ+R4HUWuHkic8/+x/7uBFyfG797YWAAAAYF+xrHzE5nUeOqLO1coBQRQAAABMnCBqxM7LaN65WllLjh/tuwoAAACgR4KoEZtVZSg5VFYO6ogCAACAiRNEjdh8luF0RM0P6ogCAACAiRNEjdhsVtnc62Xl52rlYLJ5rO8qAAAAgB4JokZsXpWtoXRE2REFAAAAkyeIGrH5oDqiXDUPAAAApk4QNWKzqrSWtCGEUStrgigAAACYOEHUiM1nlWQgC8tdNQ8AAAAmTxA1YjtB1GA6ouyIAgAAgCkTRI3YrBZB1NZWz4UkydxV8wAAAGDqBFEjNu/+usPoiDqoIwoAAAAmThA1YtsdUcPYEbWWbB1Ptjb7rgQAAADoiSBqxLZ3RG0NIog6sLi1sBwAAAAma+lBVFVdUVV/UlXvr6r3VdUPdMd/qqpuq6p3dV/P3/UzP1ZVN1fVB6vqObuOP7c7dnNVvXzZv8vQDW5ZeWI8DwAAACZspYf3PJ7kh1tr76yqi5K8o6re0j32i621n9v95Kp6YpIXJnlSki9M8sdV9fju4V9J8qwktya5saqub629fym/xT5wYln5EIKog4tbHVEAAAAwWUsPolprtye5vfv+zqr6mySXn+ZHXpDk9a21u5N8uKpuTvLU7rGbW2u3JElVvb57riCqM6iOqPl2EKUjCgAAAKaq1x1RVfWYJF+e5C+7Qy+rqndX1bVVdUl37PIkH9v1Y7d2x051/P7e5yVVdVNV3fTJT35yD3+DYZsPall5F0RtHuu3DgAAAKA3vQVRVXVhkjcm+cHW2uEkr0ryxUmuzqJj6uf36r1aa69urV3TWrvmsssu26uXHbzZzrLyngtJ7IgCAAAAetkRlapazSKE+g+ttTclSWvt47sef02S3+vu3pbkil0//qjuWE5znCTzLmYcxGjeThBlRxQAAABMVR9Xzaskv57kb1prv7Dr+CN3Pe2bk7y3+/76JC+sqoNVdVWSxyV5e5Ibkzyuqq6qqgNZLDS/fhm/w34xG9Ro3oHFrSAKAAAAJquPjqinJ/mOJO+pqnd1x348yYuq6uokLclHknxPkrTW3ldVb8hiCfnxJC9trW0mSVW9LMmbk8yTXNtae98yf5Gh215WvqUjCgAAABiAPq6a9+dJ6n4euuE0P/OKJK+4n+M3nO7npm6Qy8rtiAIAAIDJ6vWqeZxf28vKBxFEzbevmqcjCgAAAKZKEDVi2x1RwxjN2+6IEkQBAADAVAmiRmw+pI6onR1RRvMAAABgqgRRIzYb1LLy7Y6oY/3WAQAAAPRGEDViJ5aV91xIYlk5AAAAIIgas1n31x3EaN7cjigAAACYOkHUiA1qWfl8JZmt6IgCAACACRNEjdiglpUni66oTTuiAAAAYKoEUSO2vax8cwgdUcliT5SOKAAAAJgsQdSI7YzmDaUjamVNEAUAAAATJogascGN5q0cSI4bzQMAAICpEkSN2GxIy8oTHVEAAAAwcYKoETvREdVzIdtWDibH7+67CgAAAKAngqgRm3d/3eEsK19LNgVRAAAAMFWCqBGbDW1Z+fyAjigAAACYMEHUiA1vWbkdUQAAADBlgqgR2+6IGs5onh1RAAAAMGWCqBHb7ogazGieIAoAAAAmTRA1YjujeYPpiFoTRAEAAMCECaJGbHDLylcO2hEFAAAAEyaIGrHBLSufH0w2j/VdBQAAANATQdSIzXeWlfdcyDYdUQAAADBpgqgRm3V/3eGM5q0tOqK2tvquBAAAAOiBIGrEhres/ODi1ngeAAAATJIgasS2l5UPZkfUdhBlPA8AAAAmSRA1YtsdUcMZzdsOou7utw4AAACgF4KoETuxrHwoQdTa4nZTEAUAAABTtNJ3AZw/s64j6h0f/Ux+/c8/nCR5wiMuytMfe2k/Bc11RAEAAMCUCaJG7sqHXpA/+9A/5M8+9A9JkksuWM1f/U/P7qcYO6IAAABg0gRRI/fWH/7q3HVsM0nyq396c179tluytdV2uqWWans0T0cUAAAATJIgauRW57McWl+sArvswoNpLfncsePZWFtdfjErBxa3gigAAACYJMvKJ2RjfRE+3XHXPf0UsNMRZTQPAAAApkgQNSGHuiDq8NG+gijLygEAAGDKBFETsj2Od8eRnjuiNgVRAAAAMEWCqAnZ6Yg6cryfAuZ2RAEAAMCUCaImZGN9sZv+cN8dUXZEAQAAwCQJoiZko/cdUdtB1LF+3h8AAADolSBqQi48sJJZ9dkRtT2apyMKAAAApkgQNSGzWeWitdX+l5XbEQUAAACTJIiamEPrqzl8tKdl5bOVpGaumgcAAAATJYiamI31lf46oqqS+UGjeQAAADBRgqiJObS+2t+OqCRZOWg0DwAAACZKEDUxG33uiEoWe6J0RAEAAMAkCaImZmNtNYeP9t0Rday/9wcAAAB6I4iamEMXrObwkZ6WlSddEKUjCgAAAKZIEDUxG2srOXLPZo4d3+qnADuiAAAAYLIEURNzaH01Sfobz1tZSzYFUQAAADBFgqiJ2eiCqN4Wls91RAEAAMBUCaImZjuIOtxXEGVHFAAAAEyWIGpiNtZ67ohaWXPVPAAAAJgoQdTEHFpfSZIcPtrTlfN0RAEAAMBkCaImZhijeXZEAQAAwBQJoiam/9G8g66aBwAAABMliJqYtdV5Dq7McvhonzuijOYBAADAFAmiJmhjfbW/0bz5AaN5AAAAMFGCqAk6tL6aw0f6WlbedUS11s/7AwAAAL0RRE3QxtpKvzuikmSzp/cHAAAAeiOImqCN9dUed0R1QZQ9UQAAADA5gqgJOtTnjqiVtcWtPVEAAAAwOYKoCdpYWx3AaJ4gCgAAAKZGEDVBh9ZXc/jo8bQ+FobriAIAAIDJEkRN0Mb6Sja3Wj5/bHP5bz4/sLi1IwoAAAAmRxA1QYfWV5Oknz1ROqIAAABgsgRRE7SxtgiietkTtXPVPEEUAAAATI0gaoI2eu2I2g6ijOYBAADA1AiiJmhnNO/o8eW/uY4oAAAAmCxB1AT1O5rX7YjaFEQBAADA1AiiJqjXZeVzHVEAAAAwVYKoCbpwbSVJ38vK7YgCAACAqRFETdB8VrlobSWHj/Y4mqcjCgAAACZHEDVRG2urPXdECaIAAABgagRRE7WxvprDR/q8ap7RPAAAAJgaQdREHVrvaTRvfmBxu3ls+e8NAAAA9EoQNVEba6v9XDWvarEnSkcUAAAATI4gaqIOrfcURCXJ/KAdUQAAADBBgqiJ2ljvaVl5stgTJYgCAACAyRFETdSh9dV8/thmjm9uLf/NV9YEUQAAADBBgqiJ2lhbSZIcPtrHlfMO2BEFAAAAEySImqiN9dUk6WdPlI4oAAAAmCRB1EQd2g6ijvYRRB1MNgVRAAAAMDUrfRdAP7Y7on7v3bfnA7ffudT3fuaRSo7ckT+98WNLfV/GYWN9Jdc85qG59MKDfZcCAADAWRJETdSjLlnPfFZ59dtuWfp7/+bq3bmwjuRH3vjupb834/H4h1+Yp1710J3uPuDsfOHF63nRP74ys1n1XQoAABMiiJqoRx5azzt+4r/K549tLv29H3r9b2R+5+35f7/9a5f+3ux/Hz98NH9xy6fy//3dp3LdO2/L3cd7uPIj7HMtyeZWywduvzM//YInpUoYBQDAcgiiJuziCw7k4gt6eOO1C5LDx3L5xes9vDn73eUXr+cpV16S73vmY/suBfat1lpe+QcfyK+97ZasH5jnx573BGEUAABLIYhi+VYOJseP9l0FwGRVVV7+vCfkyD2befXbbsn66jw/9KzH910WAAATIIhi+VYOJpvH+q4CYNKqKj/1DU/KkWOb+bdv/VBe9ad/l2iKYg9dvL6a13znNXnyFRf3XQoAMCCCKJZvZS2558jiK0lqnqwc6LcmgAmazSqv/K//UZ70hRv5+8N3910OI3PdX92aH33ju3P9y56RAyuzvssBAAZCEMXyrV6QHP1s8opHLO7XPHnOK5KnfW+/dQFM0HxW+e+eflXfZTBCX/HoS/LPf/OmvPptf5eXfe3j+i4HABgIQRTL99R/nlzw0KR1Vzv7yJ8nf/jyZO3i5OoX9VsbALAnnvXEh+fr/9Ej80tvvTnP/bJH5rFfcGHfJQEAA7Dv+6Sr6rlV9cGqurmqXt53PZyBQ49Knv4DyTN+aPH1wt9KvuiZye++NPngH/RdHQCwR37qG56U9QPz/Pib3pOtrdZ3OQDAAFRr+/cfBVU1T/K3SZ6V5NYkNyZ5UWvt/af6mWuuuabddNNNS6qQM3b3nclrvzH5xPsXY3rrlyzhTZe0lXcpl0Rfwnss7dLuY/ldnF9n9xZLeI/5anLBwxZf65cks9Xz/55Afuedt+ZfXfeePP2xl+aiNf+5G6vjM/s+4VQe9pAD+ZJHXJQvefhFefTDHpKVmauDcMKsKocuGMd/P1bVO1pr1zzQ8/b7aN5Tk9zcWrslSarq9UlekOSUQdRY/MzbfyYf+PQH+i5jb11+ebLy6eQdP9N3JTwITzh2LD/66c/2XQYAA/EtSb5lLYv/y5BR+tvZF+d7H/ILfZcBg9SSfPyOo/n8sc2+S2GgvujSh+Q//ffP7LuMpdrvQdTlST626/6tSf7JyU+qqpckeUmSXHnllcupjLM3X00eeXVy/GjflewvS2lqPIs32XhM8qUvPoe3WFZ35hLex+9ytm+yhPdIcvzu5K5PJ3d9Kjny6WTLPwgB9sLjL/yCvPXLn9l3GTBYW1stt332SP7243fm1s8cyX6eSmLvbayPoxvqbOz3IOqMtNZeneTVyWI0r+dy9sSPPvVH+y4BAACABzCbVa546AW54qEX9F0KDMJ+X1Z+W5Irdt1/VHcMAAAAgIHZ70HUjUkeV1VXVdWBJC9Mcn3PNQEAAABwP/b1aF5r7XhVvSzJm5PMk1zbWntfz2UBAAAAcD/2dRCVJK21G5Lc0HcdAAAAAJzefh/NAwAAAGCfEEQBAAAAsBSCKAAAAACWQhAFAAAAwFIIogAAAABYCkEUAAAAAEshiAIAAABgKQRRAAAAACyFIAoAAACApRBEAQAAALAUgigAAAAAlkIQBQAAAMBSCKIAAAAAWApBFAAAAABLIYgCAAAAYCkEUQAAAAAshSAKAAAAgKUQRAEAAACwFIIoAAAAAJZCEAUAAADAUgiiAAAAAFgKQRQAAAAASyGIAgAAAGApBFEAAAAALIUgCgAAAIClEEQBAAAAsBSCKAAAAACWQhAFAAAAwFIIogAAAABYCkEUAAAAAEshiAIAAABgKaq11ncNS1VVn0zy0b7r2COXJvmHvouAB+A8ZT9wnrIfOE/ZD5yn7BfOVfaD/XaePrq1dtkDPWlyQdSYVNVNrbVr+q4DTsd5yn7gPGU/cJ6yHzhP2S+cq+wHYz1PjeYBAAAAsBSCKAAAAACWQhC1v7267wLgDDhP2Q+cp+wHzlP2A+cp+4Vzlf1glOepHVEAAAAALIWOKAAAAACWQhAFAAAAwFIIovahqnpuVX2wqm6uqpf3XQ9sq6qPVNV7qupdVXVTd+yhVfWWqvpQd3tJ33UyPVV1bVV9oqreu+vY/Z6btfBL3Wfsu6vqKf1VzpSc4jz9qaq6rftcfVdVPX/XYz/WnacfrKrn9FM1U1NVV1TVn1TV+6vqfVX1A91xVG+V8gAABdtJREFUn6kMxmnOU5+pDEZVrVXV26vqr7vz9F93x6+qqr/szsffrqoD3fGD3f2bu8cf02f9D4Ygap+pqnmSX0nyvCRPTPKiqnpiv1XBvXxNa+3q1to13f2XJ3lra+1xSd7a3Ydl+40kzz3p2KnOzecleVz39ZIkr1pSjfAbue95miS/2H2uXt1auyFJuv/uf2GSJ3U/86vdvxHgfDue5Idba09M8rQkL+3OR5+pDMmpztPEZyrDcXeSr22tPTnJ1UmeW1VPS/IzWZynj03ymSTf3T3/u5N8pjv+i93z9iVB1P7z1CQ3t9Zuaa0dS/L6JC/ouSY4nRckeW33/WuTfFOPtTBRrbW3Jfn0SYdPdW6+IMlvtoW/SHJxVT1yOZUyZac4T0/lBUle31q7u7X24SQ3Z/FvBDivWmu3t9be2X1/Z5K/SXJ5fKYyIKc5T0/FZypL130ufq67u9p9tSRfm+R3uuMnf55uf87+TpKvq6paUrl7ShC1/1ye5GO77t+a03+owjK1JH9UVe+oqpd0xx7eWru9+/7vkzy8n9LgPk51bvqcZWhe1o00XbtrvNl5Su+6sZAvT/KX8ZnKQJ10niY+UxmQqppX1buSfCLJW5L8XZLPttaOd0/ZfS7unKfd43ckedhyK94bgihgLz2jtfaULNrwX1pVX7X7wdZayyKsgkFxbjJgr0ryxVm07N+e5Of7LQcWqurCJG9M8oOttcO7H/OZylDcz3nqM5VBaa1tttauTvKoLLrwntBzSUshiNp/bktyxa77j+qOQe9aa7d1t59Icl0WH6Yf327B724/0V+FcC+nOjd9zjIYrbWPd/9I3UrympwYFXGe0puqWs3if9z/h9bam7rDPlMZlPs7T32mMlSttc8m+ZMkX5nFCPNK99Duc3HnPO0eP5TkU0sudU8IovafG5M8rtukfyCLpXrX91wTpKoeUlUXbX+f5NlJ3pvF+fni7mkvTvK7/VQI93Gqc/P6JN/ZXenpaUnu2DVuAkt10i6db87iczVZnKcv7K6gc1UWi6Dfvuz6mJ5uH8mvJ/mb1tov7HrIZyqDcarz1GcqQ1JVl1XVxd3360melcU+sz9J8i3d007+PN3+nP2WJP+p60Ddd1Ye+CkMSWvteFW9LMmbk8yTXNtae1/PZUGy2AVxXbcvbyXJb7XW/rCqbkzyhqr67iQfTfKtPdbIRFXV65I8M8mlVXVrkp9M8src/7l5Q5LnZ7Go9K4k37X0gpmkU5ynz6yqq7MYc/pIku9Jktba+6rqDUnen8XVoV7aWtvso24m5+lJviPJe7q9Jkny4/GZyrCc6jx9kc9UBuSRSV7bXaFxluQNrbXfq6r3J3l9Vf3PSf4qi1A13e3/WVU3Z3Fxkxf2UfReqH0aoAEAAACwzxjNAwAAAGApBFEAAAAALIUgCgAAAIClEEQBAAAAsBSCKAAAAACWQhAFANCDqvrcaR57ZlX93jLrAQBYBkEUAAAAAEshiAIA6Ekt/K9V9d6qek9Vfduuhzeq6ver6oNV9b9X1ayq5lX1G7ue/0O9FQ8AcA5W+i4AAGDC/mmSq5M8OcmlSW6sqrd1jz01yROTfDTJH3bP/XCSy1trX5YkVXXx0isGAHgQdEQBAPTnGUle11rbbK19PMn/k+Qfd4+9vbV2S2ttM8nruufekuSLquqXq+q5SQ73UjUAwDkSRAEADFM7+X5r7TNZdE/9aZJ/keTfLbsoAIAHQxAFANCfP0vybd3up8uSfFWSt3ePPbWqrqqqWZJvS/LnVXVpkllr7Y1JfiLJU3qpGgDgHNkRBQCwZFW1kuTuJNcl+cokf51FB9SPtNb+vqqekOTGJP9bkscm+ZPuuf9Fkv+jC6eS5MeWXTsAwINRrZ3c9Q0AwPlUVU9O8prW2lP7rgUAYJmM5gEALFFV/Ysslo//RN+1AAAsm44oAAAAAJZCRxQAAAAASyGIAgAAAGApBFEAAAAALIUgCgAAAIClEEQBAAAAsBT/P/XQ+qyDvE5/AAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "'''\n", "Plots for the experiment results\n", "'''\n", "\n", "import sys\n", "\n", "def min_so_far(arr):\n", " mmin=float('inf')\n", " new_arr=[]\n", " for _,x in enumerate(arr):\n", " if x" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(20,15))\n", "\n", "plt.plot(t_bohb_median, min_so_far(s_bohb_median))\n", "plt.plot(t_bohb_bandit, min_so_far(s_bohb_bandit))\n", "plt.plot(t_bohb_trunc, min_so_far(s_bohb_trunc))\n", "plt.plot(t_bohb, min_so_far(s_bohb))\n", "\n", "plt.legend(['y = bohb_median','y = bohb_bandit', 'y = bohb_trunc', 'y = bohb'], loc='lower right')\n", "\n", "plt.title('Hyperparameter Optimization using ES with various policies on Quad min')\n", "plt.xlabel('Time')\n", "plt.ylabel('Min res')\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[6060.406530867955, 3664.920102436913, 3909.7273413323915, 3002.7529813288706, 106.05097215471763, 157.98208630594334, 11.44000290631149, 288.5003098979952, 422.36446655402744, 10.303060762137134, 77.10024584741284, 215.54895165905884, 251.65086979919593, 195.46347563258027, 191.5105114029914, 34.43100582618657, 87.0522160740486, 183.1439686948838, 11.34880226594397, 3.5498130271587858, 10.615665529087309, 100.70466265645877, 5.8995577127201795, 63.33929155979352, 10.099046262581181, 23.781863082338973, 71.8013571039346]\n", "[0, 1, 3, 6, 11, 12, 13, 21, 23, 31, 40, 50, 58, 64, 66, 72, 79, 84, 94, 96, 123, 156, 163, 168, 170, 176, 195]\n", "[6060.406530867955, 3664.920102436913, 3002.7529813288706, 106.05097215471763, 157.98208630594334, 11.44000290631149, 10.303060762137134, 77.10024584741284, 34.43100582618657, 11.34880226594397, 3.5498130271587858, 10.615665529087309, 5.8995577127201795, 10.099046262581181]\n", "[0, 1, 6, 11, 12, 13, 31, 40, 72, 94, 96, 123, 163, 170]\n", "[6148.106139221136, 7415.6298730541, 6060.406530867955, 3664.920102436913, 3909.7273413323915, 3002.7529813288706, 106.05097215471763, 157.98208630594334, 11.44000290631149, 10.303060762137134, 11.34880226594397, 3.5498130271587858]\n", "[0, 2, 3, 4, 6, 9, 14, 15, 16, 34, 97, 99]\n" ] } ], "source": [ "s_random_median, t_random_median, j_random_median = graph_data(2, c2)\n", "s_random_trunc, t_random_trunc, j_random_trunc = graph_data(6, c2)\n", "s_random_bandit, t_random_bandit, j_random_bandit = graph_data(1, c2)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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L7rookxMTOT666/PU5/61Pzcz/1cXvOa12TXrl2ZnJzM5Zdfni1btuSKK67IJz7xiTz44IP51re+lRe84AV5+9vfniS5/PLL8zu/8zs55phj8vjHPz6dTidJsn379lx88cX5wQ9+kI0bN+byyy/PySefnIsuuiiTk5O5/vrrc9ddd+UDH/hAPvShD+Waa67JueeemyuuuGLoedetW5dXvOIV+eQnP5njjz8+b33rW3PppZfmu9/9bn7v934vF1xwQaanp/P6178+n//857N79+688pWvzC//8i+nrutccskl+fSnP52TTjop7XZ77nPPO++8XHbZZTnnnHPyile8Itdee2127tyZF77whXnzm9+cJDnllFOydevW/MVf/EWmpqby0Y9+NKeffvqK/90PoqWOedrN3n+ku7tTgx+oOoaGAwAAsCoXX3xxPvShDyVJZmZmcuWVV+YXfuEXFjz3tKc9LWedddaCP5/5zGcGfu5tt92WL3/5y3nHO96R008/PVdffXWuv/76vOUtb8kb3vCGueduuOGGfPjDH85Xv/rVfPjDH873vve93HHHHXnTm96UL33pS/niF784ry3tkksuydatW3PjjTfm53/+5/PqV7967rX77rsv11xzTd75znfmggsuyOte97rcdNNN+epXv5obbrhh6L+DBx54IM94xjNy0003Zf369fmN3/iNfPrTn85VV12VN77xjUmS97///Tn66KNz7bXX5tprr80f/uEf5jvf+U6uuuqqfP3rX8+2bdvyoQ99KF/+8pcHfsdv//Zv57rrrsuNN96YL3zhC7nxxhvnXjvuuOPyD//wD3nFK16Ryy67bOg5V0qFE/N0+i11D+zZkxw14IHWpMAJAADgCLJYJdJaOeWUU7Jhw4Zcf/31ufPOO3P22Wdnw4YNC567+uqrl/W5L3rRi9JsNpMkO3bsyNatW3PLLbeklJKpqb2FFeeff36OPvroJMkZZ5yRW2+9NT/4wQ9y3nnnZePGjUmSF7/4xfnGN76RJLnmmmvy8Y9/PEny0pe+NJdeeuncZz33uc9NKSVnnnlmNm3alDPPPDNJ8tjHPjbbt2/PWWedNfCs7XY7z372s5MkZ555ZjqdTlqtVs4888xs3749SfJXf/VXufHGG+fmM+3YsSO33HJL/uZv/iYveclL0mw2c8IJJ+QZz3jGwO/4yEc+kve+973pdru54447sm3btjzucY9Lklx44YVJkp/6qZ+a+7uNksCJedr9wOnBqSFzmqqOLXUAAACs2ste9rJcccUV+f73v5+LL7544DNPe9rTcv/99y+4f9lll+WZz3zmgvtHHbW3cuK//Jf/kqc//em56qqrsn379px33nlzr822yiVJs9lMt9td8d9j9rMajca8z200Got+bqvVSillwXv3fV9d13nXu96VZz3rWfPe+8lPfvKA5/rOd76Tyy67LNdee22OPfbYXHTRRdm1a+//z89+32r//sNoqWOe2cBp59DAadKWOgAAAFbtBS94Qf7yL/8y11577YJAZdbVV1+dG264YcGfQWHT/nbs2JETTzwxSRadpTTr3HPPzRe+8IXcc889c3ONZj3lKU/JlVdemST54z/+4zztaU9bwt9w9Z71rGflPe95z1x11je+8Y088MAD+Zf/8l/mwx/+cKanp3PHHXfkc5/73IL3/uhHP8pRRx2Vo48+OnfeeWc+9alPHZQzz1LhxDyd/gynB6f2DH7AljoAAABGoN1u5+lPf3qOOeaYuTa4Ubr00kuzdevW/NZv/Vae85znHPD5448/Pr/5m7+ZJz/5yTnmmGPmtcK9613vyi/+4i/mv/23/zY3NPxgeNnLXpbt27fnCU94Quq6zsaNG/Nnf/ZnecELXpC//uu/zhlnnJGTTz45T37ykxe89/GPf3zOPvvsnH766TnppJPy1Kc+9aCceVap6/qgfuHBcM4559TXXXfdoT7GYeltX/hY/nj7m3PZUy7Ps049Z+EDn3tr8oXfTd70w6Rf+rcWbv/VX82um7+Wn/jUgcsEAQAAWJ6bb745j3nMYw7pGWZmZvKEJzwhH/3oR3Pqqace0rOw0KD/Rkopf1/X9YCwYCEtdcwzUfUqnIa31E30rqqcAAAAWKFt27bl0Y9+dM4//3xh0xFKSx3zzAVO3WEtdZO9a3dnr70OAAAAlumMM87It7/97UN9jIPi3HPPze7d84s2/uiP/mhum92RSuDEPLOB065hM5yq/sT9qV3J5EE6FAAAABym/u7v/u5QH+GQ0FLHPBOtfuDUnRr8QDVb4bRr8OsAAADA2BM4Mc9E1UqS7BraUjc7w0ngBAAAAAympY55HtLqtcx97rtX5/49D+Z1T/nZrO/s0zs3OzT8pquS2/++9/PEMcnpzxn91rojcIMiAAAAjAOBE/M88thNqetmvrPnM/nOdz+TJHnj039h7wMPPbF3/cLvzn/jy7+QnHDWyM5RbdqcPZ/8VL73qldl06WXpn3yySP7bAAAAGBtaaljnlOPOz6fev5n8r6nfzx13cy2H3x9/gPHPy75tW8lr/1q789Fn+zdv/OmkZ5j42tfk42ve10e+PI1+fZz/m3uesc7M/3jB0b6HQAAADDMFVdckVe96lVr9vnr1q1bk8+96KKL8rGPfSxJ8rKXvSzbtm1Lkrz1rW9dk+8bRoUTC5x0zHE56Zjj0prelNsf+M7CB446bu/PDz2x12Z317aRnqHR6eS4X355jn7+83L3O96Re9773uy46qps/E+/mqMvuCClISsFAAAYiU+9Pvn+V0f7mZvPTP7120b7mcvQ7XZTVSKP973vfXM/v/Wtb80b3vCGg/bd/q+doR7WPjk7Zr63+EONZrJxy8gDp1mtTZtywu/+bk658k9Sbd6cO17/n7P9JS/Jzn/8xzX5PgAAANbeG9/4xvze7/3e3D//+q//en7/939/VZ950UUX5Vd+5Vdy7rnn5tJLL81XvvKVPPnJT87ZZ5+dpzzlKfn613sdPFdccUUuvPDCPPvZz86pp56aSy+9dO4zLr/88px22mn56Z/+6XzpS1+au799+/Y84xnPyOMe97icf/75+e53vzv3na94xSvypCc9KY961KPy+c9/PhdffHEe85jH5KKLLjrgmV/3utflsY99bM4///zcfffdSZI//MM/zBOf+MQ8/vGPz8/+7M/mwQcfnPuuV7/61XnKU56SRz3qUXNVTHVd51WvelW2bNmSZz7zmbnrrrvmPv+8887Lddddl9e//vXZuXNnzjrrrPz8z//8qv49L5W4j6FOWf8TuWvH3+bOH/8wm9YdM/zBh5+RfPvza3qWybPOyikfvjI7/vwTuesd/2e2v/jncvTzn5+Nv/q6tB7+8DX9bgAAgCPaIahEuvjii3PhhRfmta99bWZmZnLllVfmK1/5yoLnnva0p+X+++9fcP+yyy7LM5/5zAX3b7vttnz5y19Os9nMj370o1x99dWpqiqf+cxn8oY3vCF/+qd/miS54YYbcv3116fT6WTLli255JJLUlVV3vSmN+Xv//7vc/TRR+fpT396zj777CTJJZdckq1bt2br1q35wAc+kFe/+tX5sz/7syTJfffdl2uuuSaf+MQncsEFF+RLX/pS3ve+9+WJT3xibrjhhpx11uB5xw888EDOOeecvPOd78xb3vKWvPnNb8673/3uXHjhhfkP/+E/JEl+4zd+I+9///tzySWXJEnuuOOOfPGLX8zXvva1XHDBBXnhC1+Yq666Kl//+tezbdu23HnnnTnjjDNy8cUXz/uut73tbXn3u9+dG264Yam/olUTODHUT27ckq/sSP7mO/+UF535vw1/8OGPSf7xT5IH700e8rA1O09pNHLMC56f9f/qX+We//f/yb1XfDD3/9VfZcOv/EoedtHWNNrtNftuAAAARueUU07Jhg0bcv311+fOO+/M2WefnQ0bNix47uqrr17W577oRS9Ks9lMkuzYsSNbt27NLbfcklJKpqam5p47//zzc/TRRydJzjjjjNx66635wQ9+kPPOOy8bN25Mkrz4xS/ON77xjSTJNddck49//ONJkpe+9KXzqqKe+9znppSSM888M5s2bcqZZ56ZJHnsYx+b7du3Dw2cGo1GXvziFydJ/v/27j446ure4/jnu5uQ8FBAKNAUVKRESDQh4UZDEtMhRK/0VihQH69iYsow7ZSnmd5JEctDn6y2TFsL3jvTQRJlsNGgKHaqt0Wtpkh5usktlKgIN1QsRB4DFKEJOfeP/WVJSBCQzf7y8H7N7OT3O7+zZ7+78zub3373nLMPPPCApk2bJknasWOHvve97+nYsWM6efKkbr/99vB9pkyZokAgoOTkZNXW1kqS3n77bd13330KBoP64he/qAkTJlzWa9ZemFKHC8q++kZJ0ta/V396xcHJob8H323niEKCfXpr8He+oxG/fUW9srJ08Oc/1547JunE66/LOReVGAAAAAAAV2bGjBkqLS1VSUlJqxE5TXJzc5WWltbqtn79+jbr9+7dO7y9cOFC5eXlaceOHXrllVd0+vTp8LG4uLjwdjAYVENDw2d+Hk1tBQKBFu0GAoHLatfMJIWmzi1fvlzbt2/X4sWLLxh3R//8S8IJF/QvQ0fINfbQ+0d3fXrFwUmhv+20jtOF9Lj2Wl395HJd/dQKWY9Y7fv2LH34jRk6s+si8QIAAAAAfDd16lS99tpr2rJlS4tRPM1VVFSoqqqq1a2t6XTnq6ur09ChQyWF1m26mMzMTL311ls6fPiw6uvrVV5eHj6WnZ2tsrIySdLq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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(20,15))\n", "\n", "plt.plot(t_random_median, min_so_far(s_random_median))\n", "plt.plot(t_random_bandit, min_so_far(s_random_bandit))\n", "plt.plot(t_random_trunc, min_so_far(s_random_trunc))\n", "plt.plot(t_ran, min_so_far(s_ran))\n", "\n", "plt.legend(['y = random_median','y = random_bandit', 'y = random_trunc', 'y = random'], loc='lower right')\n", "\n", "plt.title('Hyperparameter Optimization using ES with various policies on Quad min')\n", "plt.xlabel('Time')\n", "plt.ylabel('Min res')\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[3.1, 3.1]\n", "[0, 1]\n", "[6148.106139221136, 7415.6298730541, 6060.406530867955, 3664.920102436913, 3909.7273413323915, 3002.7529813288706, 106.05097215471763, 157.98208630594334, 11.44000290631149, 10.303060762137134, 11.34880226594397, 3.5498130271587858]\n", "[0, 2, 3, 4, 6, 9, 14, 15, 16, 34, 97, 99]\n", "[11588.561807897513, 10264.661252507878, 13259.660327218779, 9756.147263836081, 192.30551743308826, 54.01004445189671, 10.657509615206326, 3.542402417237454]\n", "[0, 1, 2, 3, 4, 13, 66, 81]\n" ] } ], "source": [ "s_spearmint_median, t_spearmint_median, j_spearmint_median = graph_data(9, c2)\n", "s_spearmint_trunc, t_spearmint_trunc, j_spearmint_trunc = graph_data(1, c2)\n", "s_spearmint_bandit, t_spearmint_bandit, j_spearmint_bandit = graph_data(8, c2)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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Z/d7zooVK3T06NETnlNRUZGtJXVTX1+vdevWSZKWLFmipqYmSdI999yTk8/rC3fNgzSkRlrysvTiP0ubHpA++j/SokelQdVJX4KteQAAAAAwwL1wi7Tv99m95hcmSX97X3avOYBEIhH5/f6kzn3zzTf7PWfFihVavHixysrKMl1aRn72s58lnt9zzz364Q9/mLfPZiIKMVap9PUV0mWPSi3vSKvOkf74UtJvT2zNa2ciCgAAAAAQc/vtt2vFihWJn2+99VY9+OCDGV1z7dq1OuOMMzRlyhSdd955kqTVq1drwYIFmjNnjsaOHas777wzcf4TTzyhmTNnaurUqbrhhhsUiUQkSTfeeKNqa2s1ceJE3XHHHYnza2pq9IMf/EDTp0/X2rVrNWfOHN18882qra3V+PHj1dDQoIULF2rs2LG67bbbEu+LTzK99tprmjNnjhYtWqRx48bp6quvluu6euihh/Txxx9r7ty5mjt37gm/480336yJEyeqrq5O+/fvlyT99Kc/1YwZMzRlyhRddtllicmq+vp6LV26VGeffbZOPfXUxNST67r6p3/6J51++um64IIL9MknnySuP2fOHDU2NuqWW25RW1ubpk6dqquvvjrt/yapYCIK3U1aJI2aKq2tl/7jcunspVLd7ZLfOuHbgnZQhgwddpiIAgAAAIABqQCTS9ddd50WLlyom266SdFoVE899ZQ2b97c47xzzz1Xhw/3/Pfk8uXLdcEFF3Q7tmzZMr300kuqqqrSwYMHE8c3b96sd955R2VlZZoxY4YuueQSlZeXa82aNXrjjTdkWZa+9a1v6cknn9Q111yju+++W0OHDlUkElFdXZ22b9+uyZMnS5IqKyv19ttvS5JWrVol27bV2NioBx98UAsWLNCWLVs0dOhQnXbaabr55ptVWVnZbY1bt27Vu+++q9GjR2v27Nl64403tHTpUv34xz/Whg0bNGzYsD5/Z0eOHFFtba0eeOABLVu2THfeeadWrlyphQsX6h/+4R8kSbfddpseffRRfec735Ek7d27V5s2bdJ7772n+fPna9GiRXrmmWf0hz/8QU1NTWppadGECRN03XXXdfus++67TytXrtS2bdv6XE+2EUShp2Ffjm3Ve+mfpTcfkv7839Kin0uDx/T5Fp/hU4VVoVf+/Ir2H42ltYZh6O/+r7/ThMoJWV/i0a3b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t9+WJK1atUq2bauxsVEPPvigFixYoC1btmjo0KE67bTTdPPNN6uysrLbGrdu3ap3331Xo0eP1uzZs/XGG29o6dKl+vGPf6wNGzb0ORF13333aeXKldq2bZskadeuXdq5c6d+8Ytf6Kyzzur39713715t2rRJ7733nubPn69FixbphRde0K9+9Su99dZbKisr04EDB/q9Ti4RRAEAAAAAgJyoqalRZWWltm7dqpaWFk2bNq1HaCNJGzduTPqas2fPVn19vS6//HItXLgwcfzCCy9MXHvhwoXatGmTTNPUli1bNGPGDElSW1ubRowYIUl6+umn9cgjjygcDmvv3r1qampKBFFXXHFFt8+cP3++JGnSpEmaOHGiRo0aJUk69dRTtXv37h7faebMmaqurpYkTZ06Vbt27dI555yT9Hfs6otf/GJSIZQkfeMb35DP59OECRPU0tIiSXr55Zf193//9yorK5MkDR06NK11ZAtBFAAAAAAAyJklS5Zo9erV2rdvn6677rpez0llImrVqlV666239Pzzz+vMM8/Uli1bJEmGYXQ7zzAMua6ra6+9Vvfee2+31z788EMtX75cDQ0NGjJkiOrr63Xs2LHE6+Xl5d3ODwQCkiSfz5d4Hv85HA73WHfXc/x+f6/nJOv4tXT9nl3XfPznDtROcDqiAAAAAABAzlx66aV68cUX1dDQoIsvvrjXczZu3Kht27b1+HN8CCVJ77//vmbNmqVly5Zp+PDh2r17tyRp/fr1OnDggNra2vTss89q9uzZqqur07p16/TJJ59Ikg4cOKCPPvpIhw4dUnl5uQYNGqSWlha98MILufsFdBEMBnsN3LqyLEuO4/T5+siRI7Vjxw5Fo1E988wz/X7mhRdeqH//939P3K2PrXkAAAAAAKBo2batuXPnavDgwVm5A933vvc97dy5U67rqq6uTlOmTNG2bds0c+ZMXXbZZWpubtbixYtVWxu7gdtdd92liy66SNFoVJZl6eGHH9ZZZ52ladOmady4cRozZoxmz56d8bqScf3112vevHkaPXq0NmzY0Oc5kydP1vTp03X33Xf3eP2+++7T1772NQ0fPly1tbW93mGvq3nz5mnbtm2qra2Vbdv66le/qnvuuScr3ycdxkAd1cqV2tpat7GxsdDLAAAAAAAg53bs2KHx48cXdA3RaDRxB7qxY8fm5DNWr16txsZGrVy5MifXR3e9/b0yDGOL67q1/b2XrXkAAAAAACAnmpqa9OUvf1l1dXU5C6FwcmFrHgAAAAAAyIkJEybogw8+yPnn1NfXq76+Puefk02zZs1Se3t7t2OPP/64Jk2aVKAV5QdBFPD/t3f3MVaV+QHHvz+GgRGw6Mw4u8LQ4gsNYBRGXutgAqKGrhupSGSbpTJlDak2FUir2WqCYmBpE+K7lpitYV20CrvF3dQQJS5WxBSYEQoI26joBpC3woIg+ALz9I854IzQFcV7LsP9fpKbe57nPPfe352cH5z7u+d5riRJkiRJOVu5cmWxQygKp+ZJkiRJkiQpFxaiJEmSJEmSlAsLUZIkSZIkScqFhShJkiRJkqTTdNVVV33lmIcffphDhw7lEM2Zy0KUJEmSJEnSSRw9evSUx7755ptfOcZClL+aJ0mSJElSSdjxk5/w6abffqvP2blfX757zz3/7/4ZM2ZQWVnJtGnTALj33nupqalh6tSp3/g1Fy1axMyZMykrK6N79+68/vrrzJ8/n8WLF7N//362bdvGxIkTue+++wBYsGABjz76KJ999hnDhg3jySefpKysjNtvv53Vq1dz+PBhxo8fz8yZMwHo3bs3EyZMYOnSpdx9993MmzePuro6li9fzscff8wzzzzDnDlzWL9+PRMmTGDWrFkAdOvWjYMHD/Laa69x//33U11dzYYNGxg0aBALFizgscce48MPP2TUqFFUV1ezbNmyb/w3aM8sREmSJEmSpIKYPHky48aNY9q0aTQ3N/P888+zatWqE8ZdffXVHDhw4IT+uXPncu2117bpe+CBB3j55Zfp2bMn+/btO96/atUqNmzYQJcuXRgyZAg33HADXbt25YUXXmDFihWUl5dzxx138Oyzz3Lrrbcye/ZsKisrOXr0KKNHj2bdunVcccUVAFRVVfHWW28BMG/ePDp16kRjYyOPPPIIY8eOpampicrKSi655BKmT59OVVVVmxjXrFnD22+/TY8ePaivr2fFihXceeedPPjggyxbtozq6urT/tu2VxaiJEmSJEkqAX/oyqVC6d27N1VVVaxZs4adO3dSV1d3QtEGYPny5af8nPX19TQ0NHDLLbcwbty44/3XXXfd8eceN24cb7zxBh07dqSpqYkhQ4YAcPjwYWpqagBYuHAhTz31FEeOHGH79u1s3LjxeCFq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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(20,15))\n", "\n", "plt.plot(t_spearmint_median, min_so_far(s_spearmint_median))\n", "plt.plot(t_spearmint_bandit, min_so_far(s_spearmint_bandit))\n", "plt.plot(t_spearmint_trunc, min_so_far(s_spearmint_trunc))\n", "plt.plot(t_ran, min_so_far(s_ran))\n", "\n", "plt.legend(['y = spearmint_median','y = spearmint_bandit', 'y = spearmint_trunc', 'y = spearmint'], loc='lower right')\n", "\n", "plt.title('Hyperparameter Optimization using ES with various policies on Quad min')\n", "plt.xlabel('Time')\n", "plt.ylabel('Min res')\n", "\n", "plt.show()\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: Examples/quad_equation_min/cpu.ini ================================================ [Auptimizer] # Auptimizer environment folder to be created, this file will be copied over Auptimizer_PATH=./.aup # Temp folder TMP_FOLDER=./aup_tmp # SQL engine SQL_ENGINE=sqlite ================================================ FILE: Examples/quad_equation_min/quad_min.py ================================================ #!/usr/bin/env python """ Modified Rosenbrock function for HPO and aup ============================================ .. Copyright (c) 2018 LG Electronics Inc. SPDX-License-Identifier: GPL-3.0-or-later """ import sys """ # ver 1.0 - modify existing code from aup import BasicConfig, print_result def rosenbrock(conf, a=1, b=100): x = conf.x y = conf.y return (a-x)*(a-x) + b*(y-x*x)*(y-x*x) if __name__ == "__main__": if len(sys.argv) != 2: print("config file required") exit(1) config = BasicConfig().load(sys.argv[1]) val = rosenbrock(config) print_result(val) """ from aup import aup_args from time import sleep @aup_args def rosenbrock(x, a=2, b=4, c=5): global it it = 1.0 res = None for _ in range(0, 10): sleep(1) res = x*x*a + x*b + c res += it it -= 1.0 / 10 return res if __name__ == "__main__": if len(sys.argv) != 2: print("config file required") exit(1) rosenbrock(sys.argv[1]) ================================================ FILE: Examples/quad_equation_min/quad_min_BOHB.json ================================================ { "name": "./quad_equation_min/quad_min_BOHB.json", "proposer": "bohb", "script": "quad_min.py", "resource": "cpu", "n_parallel": 4, "target":"min", "n_iterations": 100, "num_samples": 64, "random_fraction": 0.3333333333333333, "bandwidth_factor": 3, "min_bandwidth": 0.001, "eta": 3, "min_budget": 1, "max_budget": 5, "parameter_config": [ { "name": "x", "range": [-1.0, 100.0], "type": "float" } ] } ================================================ FILE: Examples/quad_equation_min/quad_min_random.json ================================================ { "name": "./quad_equation_min/quad_min_random.json", "proposer": "random", "script": "quad_min.py", "resource": "cpu", "n_parallel": 4, "target":"min", "n_samples": 200, "parameter_config": [ { "name": "x", "range": [-1.0, 100.0], "type": "float" } ] } ================================================ FILE: Examples/quad_equation_min/quad_min_spearmint.json ================================================ { "name": "./quad_equation_min/quad_min_spearmint.json", "proposer": "spearmint", "script": "quad_min.py", "resource": "cpu", "n_parallel": 4, "target":"min", "n_samples": 50, "engine":"GPEIChooser", "parameter_config": [ { "name": "x", "range": [-1.0, 100.0], "type": "float" } ] } ================================================ FILE: Examples/tf_flags/README.md ================================================ # Demo for tf.app.flags Tensorflow flags is widely used for tensorflow to parse input arguments. It is naturally supported by **Auptimizer** with minor modification on you existing code. Similar to adopting **Auptimizer** for plain python training code, there are two parts of changes. A working example is shown as `rosenbrock_hpo.py`, whereas the plain code is `rosenbrock_tf.py`. ## Modification on training code Because `tf.flags` already takes care of the input argument, we just insert `aup.BasicConfig` properly: ```python def main(unused_arguments): config = BasicConfig().load(unused[1]) config.to_flags(FLAGS) if __name__ == "__main__" tf.app.run() ``` `config = BasicConfig().load(unused[1])` parses the input file for the parameter values. And `config.to_flags(FLAGS)` assigns the value to `tensorflow.app.flags.FLAGS`, thus it can be used without changing how to access those values in the original code. Similar to other examples, you need to call `aup.print_result()` at the end of the program to return your target to optimize. ## Modification on experiment configuration The same configuration of experiment can be used. See other examples for reference. ## Run Same to other example, you now can run **Auptimizer** as ```bash python -m aup experiment.json ``` to initiate your continuous training experiment. ================================================ FILE: Examples/tf_flags/experiment.json ================================================ { "name": "./tf_flags/experiment.json", "proposer": "random", "n_samples": 10, "random_seed": 1, "script": "rosenbrock_hpo.py", "parameter_config": [ { "name": "x", "range": [ -5, 5 ], "type": "float" }, { "name": "y", "range": [ -5, 5 ], "type": "float" } ], "resource": "cpu", "n_parallel": 2, "target":"min" } ================================================ FILE: Examples/tf_flags/rosenbrock_hpo.py ================================================ #!/usr/bin/env python """ Modified Rosenbrock function with tf.app.flags ============================================== .. Copyright (c) 2018 LG Electronics Inc. SPDX-License-Identifier: GPL-3.0-or-later """ import tensorflow as tf """ from aup import print_result, BasicConfig flags = tf.app.flags FLAGS = flags.FLAGS flags.DEFINE_float("x", 0, "x value") flags.DEFINE_float("y", 0, "y value") def rosenbrock(x, y, a=1, b=100): return (a-x)*(a-x) + b*(y-x*x)*(y-x*x) def main(unused): ## change config = BasicConfig().load(unused[1]) config.to_flags(FLAGS) ## val = rosenbrock(FLAGS.x, FLAGS.y) print_result(val) if __name__ == "__main__": tf.app.run() """ from aup import aup_flags flags = tf.app.flags FLAGS = flags.FLAGS flags.DEFINE_float("x", 0, "x value") flags.DEFINE_float("y", 0, "y value") def rosenbrock(x, y, a=1, b=100): return (a-x)*(a-x) + b*(y-x*x)*(y-x*x) @aup_flags(FLAGS) def main(unused): return rosenbrock(FLAGS.x, FLAGS.y) if __name__ == "__main__": tf.app.run() ================================================ FILE: Examples/tf_flags/rosenbrock_tf.py ================================================ #!/usr/bin/env python """ Modified Rosenbrock function with tf.app.flags ============================================== .. Copyright (c) 2018 LG Electronics Inc. SPDX-License-Identifier: GPL-3.0-or-later """ import sys import tensorflow as tf flags = tf.app.flags FLAGS = flags.FLAGS flags.DEFINE_float("x", 0, "x value") flags.DEFINE_float("y", 0, "y value") def rosenbrock(x, y, a=1, b=100): return (a-x)*(a-x) + b*(y-x*x)*(y-x*x) def main(unused): val = rosenbrock(FLAGS.x, FLAGS.y) print(val) if __name__ == "__main__": tf.app.run() ================================================ FILE: Examples/tf_iris_diff_opt/History.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import os\n", "import pandas as pd\n", "import matplotlib.pylab as plt\n", "from aup.ET.Connector.SQLiteConnector import SQLiteConnector\n", "import json\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# connect to the result (The database is copied from ~/.aup/sqlite3.db)\n", "sql = SQLiteConnector(\"./sqlite3.db\")" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 2, 3, 4]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Get all experiments (this run is for iris using hyperopt, sequence, spearmint, random)\n", "eids = sql.get_all_experiment()\n", "eids" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(2,\n", " 1,\n", " 1534397382,\n", " 1534397474,\n", " '{\"script\": \"premade_estimator_hpo.py\", \"n_parallel\": 2, \"parameter_config\": [{\"type\": \"int\", \"name\": \"layer1\", \"range\": [2, 6]}, {\"type\": \"int\", \"name\": \"layer2\", \"range\": [2, 6]}], \"resource\": \"gpu\", \"proposer\": \"sequence\", \"target\": \"max\", \"workingdir\": \"Examples/tf_iris_diff_opt\"}')" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Show details in one experiment\n", "sql.cursor.execute(\"SELECT * FROM experiment where eid = ?\", (eids[1],))\n", "sql.cursor.fetchone()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
jidscoreeidridstart_timeend_timejob_config
010.9666671115343973091534397318{'layer2': 2, 'tid': 0, 'layer1': 2}
120.9333331215343973091534397318{'layer2': 5, 'tid': 1, 'layer1': 2}
230.9666671115343973181534397325{'layer2': 4, 'tid': 2, 'layer1': 3}
340.9666671215343973181534397325{'layer2': 4, 'tid': 3, 'layer1': 3}
450.9666671115343973251534397332{'layer2': 4, 'tid': 4, 'layer1': 4}
560.9666671215343973251534397332{'layer2': 3, 'tid': 5, 'layer1': 5}
671.0000001115343973321534397339{'layer2': 3, 'tid': 6, 'layer1': 5}
780.2666671215343973321534397340{'layer2': 2, 'tid': 7, 'layer1': 2}
890.9666671115343973391534397346{'layer2': 5, 'tid': 8, 'layer1': 5}
9100.9666671215343973401534397347{'layer2': 3, 'tid': 9, 'layer1': 2}
10110.9666671115343973471534397354{'layer2': 5, 'tid': 10, 'layer1': 5}
11120.9666671215343973471534397354{'layer2': 5, 'tid': 11, 'layer1': 4}
12130.2666671115343973541534397361{'layer2': 3, 'tid': 12, 'layer1': 5}
13140.9666671215343973541534397361{'layer2': 5, 'tid': 13, 'layer1': 3}
14150.9666671115343973611534397368{'layer2': 4, 'tid': 14, 'layer1': 5}
15160.9666671215343973611534397368{'layer2': 4, 'tid': 15, 'layer1': 4}
16170.9666671115343973681534397375{'layer2': 3, 'tid': 16, 'layer1': 4}
17181.0000001215343973681534397375{'layer2': 5, 'tid': 17, 'layer1': 2}
18191.0000001115343973751534397382{'layer2': 4, 'tid': 18, 'layer1': 3}
19201.0000001215343973751534397382{'layer2': 4, 'tid': 19, 'layer1': 2}
\n", "
" ], "text/plain": [ " jid score eid rid start_time end_time \\\n", "0 1 0.966667 1 1 1534397309 1534397318 \n", "1 2 0.933333 1 2 1534397309 1534397318 \n", "2 3 0.966667 1 1 1534397318 1534397325 \n", "3 4 0.966667 1 2 1534397318 1534397325 \n", "4 5 0.966667 1 1 1534397325 1534397332 \n", "5 6 0.966667 1 2 1534397325 1534397332 \n", "6 7 1.000000 1 1 1534397332 1534397339 \n", "7 8 0.266667 1 2 1534397332 1534397340 \n", "8 9 0.966667 1 1 1534397339 1534397346 \n", "9 10 0.966667 1 2 1534397340 1534397347 \n", "10 11 0.966667 1 1 1534397347 1534397354 \n", "11 12 0.966667 1 2 1534397347 1534397354 \n", "12 13 0.266667 1 1 1534397354 1534397361 \n", "13 14 0.966667 1 2 1534397354 1534397361 \n", "14 15 0.966667 1 1 1534397361 1534397368 \n", "15 16 0.966667 1 2 1534397361 1534397368 \n", "16 17 0.966667 1 1 1534397368 1534397375 \n", "17 18 1.000000 1 2 1534397368 1534397375 \n", "18 19 1.000000 1 1 1534397375 1534397382 \n", "19 20 1.000000 1 2 1534397375 1534397382 \n", "\n", " job_config \n", "0 {'layer2': 2, 'tid': 0, 'layer1': 2} \n", "1 {'layer2': 5, 'tid': 1, 'layer1': 2} \n", "2 {'layer2': 4, 'tid': 2, 'layer1': 3} \n", "3 {'layer2': 4, 'tid': 3, 'layer1': 3} \n", "4 {'layer2': 4, 'tid': 4, 'layer1': 4} \n", "5 {'layer2': 3, 'tid': 5, 'layer1': 5} \n", "6 {'layer2': 3, 'tid': 6, 'layer1': 5} \n", "7 {'layer2': 2, 'tid': 7, 'layer1': 2} \n", "8 {'layer2': 5, 'tid': 8, 'layer1': 5} \n", "9 {'layer2': 3, 'tid': 9, 'layer1': 2} \n", "10 {'layer2': 5, 'tid': 10, 'layer1': 5} \n", "11 {'layer2': 5, 'tid': 11, 'layer1': 4} \n", "12 {'layer2': 3, 'tid': 12, 'layer1': 5} \n", "13 {'layer2': 5, 'tid': 13, 'layer1': 3} \n", "14 {'layer2': 4, 'tid': 14, 'layer1': 5} \n", "15 {'layer2': 4, 'tid': 15, 'layer1': 4} \n", "16 {'layer2': 3, 'tid': 16, 'layer1': 4} \n", "17 {'layer2': 5, 'tid': 17, 'layer1': 2} \n", "18 {'layer2': 4, 'tid': 18, 'layer1': 3} \n", "19 {'layer2': 4, 'tid': 19, 'layer1': 2} " ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# show details in job history for one experiment\n", "history = sql.get_all_history(1)\n", "history = pd.DataFrame(history)\n", "history.columns = ['jid', 'score','eid','rid','start_time','end_time','job_config']\n", "history" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0,0.5,'Best Accuracy so far')" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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1/CBpg/U9HoZZOPnwc4nIH3A/2ujTXDe/4Cm/1b/don4FY7C6ZMgOWqoWyIiIgFhzrmhboMvkyZNcs3NzUPdDBEROUaY2Sbn3KShbkeQqW8WkWPdrl27OO+884a6Gcekno5tX/tmjZkVERERERE5zowePZp33nlnqJvRLwpmRUREREREAsQ5R6FQGOpmDDmNmRUREREREemjv3zjG3Tu2l3XfcbOG8tf3X33EbdpaWlh1qxZXHbZZWzatInJkyezfft2UqkUf/d3f8eyZcuAYsb1hhtu4Je//CXZbJaf//znjB07lnfffZf58+fz+uuvM2XKFKqHm95///388Ic/BGDhwoXcfvvttLS0MHv2bC6//HJefPFFLr30Um688UaWLl3K22+/zcMPP8zkyZPrehz8UmZWREREREQkAF555RU+97nP8fLLL/Otb32L5uZmtm3bxnPPPce2bdsq240aNYrNmzdz8803s3z5cgCWLVvGRz/6UV5++WWuu+46XnvtNQA2bdrEypUreemll1i/fj3f//73+f3vfw/Aq6++yp133snu3bvZvXs3q1evZt26dSxfvpxvfOMbg38ADqPMrIiIiIiISB8dLYM6kM466ywuv/xyAH72s5/xve99j1wux5tvvsnOnTsZP348AHPmFJfsmzhxIo899hgAzz//fOX+Jz7xCUaOHAnAunXruO6662hqaqq89oUXXuCaa65hzJgxjBs3DoALLriAj33sY5gZ48aNo6WlZdB+794omBUREREREQmAcsD5pz/9ieXLl7Nx40ZGjhzJggULSKfTle1isRgAoVCIXC5X8/uV9wPgeV7lsed5/dpvvajMWEREREREJEAOHjxIU1MTI0aM4K233mLt2rVHfc0VV1zB6tWrAVi7di2tra0ATJs2jTVr1tDR0UF7ezuPP/4406ZNG9D214sysyIiIiIiIgFy0UUXcfHFFzN27FjOPPNMpk6detTXLF26lPnz53PBBRfwkY98hA9+8IMAXHLJJSxYsKAymdPChQu5+OKLG6KM+GiseharINDC7CIiUk99XZhdeqe+WUSOdbt27eK8884b6mYck3o6tn3tm1VmLCIiIiIiIoGjYFZEREREREQCR8GsiIiIiIjIUQRteGYQ9PeYKpgVERERERE5gng8zrvvvquAto6cc7z77rvE4/Ga96HZjEVERERERI7gjDPOYO/evezbt2+om3JMicfjnHHGGTW/XsGsiIiIiIjIEUQiEcaMGTPUzZDDqMxYREREREREAkfBrIiIiIiIiASOglkREREREREJHAvajFxmtg/4rzrtbhTwTp32dTzQ8fJPx8w/HTP/dMz8qz5mZznnThnKxgSd+uYhpePln46Zfzpm/umY+ee7bw5cMFtPZtbsnJs01O0ICh0v/3TM/NMx80/HzD8ds8alv40/Ol7+6Zj5p2Pmn46Zf7UcM5UZi4iIiIiISOAomBUREREREZHAOd6D2e8NdQMCRsfLPx0z/3TM/NMx80/HrHHpb+OPjpd/Omb+6Zj5p2Pmn+9jdlyPmRUREREREZFgOt4zsyIiIiIiIhJACmZFREREREQkcI7LYNbMZpvZH8zsVTP70lC3JwjMrMXMtpvZFjNrHur2NCIz+6GZvW1mO6qeO8nMfmNmr5RuRw5lGxtNL8fsHjN7vfRZ22JmHx/KNjYSMzvTzJ4xs51m9rKZ3VZ6Xp+zXhzhmOlz1mDUN/unvvno1Df7p77ZH/XN/tWzbz7uxsyaWQjYA8wA9gIbgfnOuZ1D2rAGZ2YtwCTnnBZ/7oWZXQG0Af/XOXdh6bl/Bd5zzn2zdHI20jm3eCjb2Uh6OWb3AG3OueVD2bZGZGanAqc65zab2XBgE3AtsAB9znp0hGM2D33OGob65tqobz469c3+qW/2R32zf/Xsm4/HzOxk4FXn3H865zLAT4G/HeI2yTHAOfc88N5hT/8t8KPS/R9R/EeVkl6OmfTCOfemc25z6f4hYBdwOvqc9eoIx0wai/pmGRDqm/1T3+yP+mb/6tk3H4/B7OnAn6se70UnNn3hgF+b2SYz++xQNyZAPuCce7N0/y/AB4ayMQFyi5ltK5U6qSynB2Y2GrgYeAl9zvrksGMG+pw1EvXNtVHfXBt9Z9ZG35lHob7Zv/72zcdjMCu1+ahz7hLgb4DPl0pQxAdXrOk/vur6a/N/gLOBCcCbwLeGtjmNx8yGAb8AbnfOHaz+mT5nPevhmOlzJscC9c39pO/MPtN35lGob/avHn3z8RjMvg6cWfX4jNJzcgTOuddLt28Dj1MsCZOje6s0LqA8PuDtIW5Pw3POveWcyzvnCsD30WetGzOLUPzif9g591jpaX3OjqCnY6bPWcNR31wD9c0103emT/rOPDL1zf7Vq28+HoPZjcCHzWyMmUWBvweeGOI2NTQzayoNzsbMmoCZwI4jv0pKngBuKN2/Afh/Q9iWQCh/8Zdchz5rFWZmwA+AXc65+6t+pM9ZL3o7ZvqcNRz1zT6pb+4XfWf6pO/M3qlv9q+effNxN5sxQGma5weAEPBD59z/GuImNTQz++8Ur/gChIHVOmbvZ2Y/AaYDo4C3gKXAGuBnwAeB/wLmOec0qUJJL8dsOsXyEge0AP9UNebkuGZmHwVeALYDhdLTd1McZ6LPWQ+OcMzmo89ZQ1Hf7I/65r5R3+yf+mZ/1Df7V8+++bgMZkVERERERCTYjscyYxEREREREQk4BbMiIiIiIiISOApmRUREREREJHAUzIqIiIiIiEjgKJgVERERERGRwFEwK9IgzKytdDvazP6hzvu++7DHL9Zz/yIiIsci9c0ijU3BrEjjGQ346jDNLHyUTbp1mM65j/hsk4iIyPFsNOqbRRqOglmRxvNNYJqZbTGzO8wsZGb/28w2mtk2M/snADObbmYvmNkTwM7Sc2vMbJOZvWxmny09900gUdrfw6XnylearbTvHWa23cyur9r3s2b2qJntNrOHzcyG4FiIiIg0AvXNIg3oaFeMRGTwfQm4yzl3NUCp4zvgnLvUzGLA78zs16VtLwEudM79qfT4M86598wsAWw0s184575kZrc45yb08F5zgAnARcCo0mueL/3sYuAC4A3gd8BUYF39f10REZGGp75ZpAEpMyvS+GYCnzazLcBLwMnAh0s/21DVWQJ8wcy2AuuBM6u2681HgZ845/LOubeA54BLq/a91zlXALZQLLESERER9c0iDUGZWZHGZ8CtzrlfdXvSbDrQftjjvwamOOc6zOxZIN6P9+2sup9H3xciIiJl6ptFGoAysyKN5xAwvOrxr4CbzSwCYGbnmFlTD68bAbSWOsuxwOVVP8uWX3+YF4DrS2N/TgGuADbU5bcQERE5dqhvFmlAupoj0ni2AflSSdIq4EGKZUSbSxM97AOu7eF1TwE3mdku4A8Uy5nKvgdsM7PNzrlPVj3/ODAF2Ao44IvOub+UOlwREREpUt8s0oDMOTfUbRARERERERHxRWXGIiIiIiIiEjgKZkVERERERCRwFMyKiIiIiIhI4CiYFRERERERkcBRMCsiIiIiIiKBo2BWREREREREAkfBrIiIiIiIiATO/wdnazH5YYerNwAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(16,8))\n", "plt.subplot(121)\n", "for i in eids:\n", " history = sql.get_all_history(i)\n", " history = pd.DataFrame(history)\n", " history.columns = ['jid', 'score','eid','rid','start_time','end_time','job_config']\n", " sql.cursor.execute(\"SELECT * FROM experiment where eid = ?\", (i,))\n", " label = json.loads(sql.cursor.fetchone()[4])['proposer']\n", " plt.plot(history.score, label=label)\n", "plt.legend()\n", "plt.xlabel(\"Iteration\")\n", "plt.ylabel(\"Accuracy\")\n", "\n", "plt.subplot(122)\n", "for i in eids:\n", " history = sql.get_all_history(i)\n", " history = pd.DataFrame(history)\n", " history.columns = ['jid', 'score','eid','rid','start_time','end_time','job_config']\n", " sql.cursor.execute(\"SELECT * FROM experiment where eid = ?\", (i,))\n", " label = json.loads(sql.cursor.fetchone()[4])['proposer']\n", " plt.plot(history.score.cummax(), label=label)\n", "plt.legend()\n", "plt.xlabel(\"Iteration\")\n", "plt.ylabel(\"Best Accuracy so far\")" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "sql.close()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.4" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: Examples/tf_iris_diff_opt/README.md ================================================ # Tensorflow Iris Example Here we demonstrate how to adopt an existing [tensorflow code](https://raw.githubusercontent.com/tensorflow/models/master/samples/core/get_started/premade_estimator.py) for **Auptimizer** using the automatic code generation tool. ## Steps 1. The original `premade_estimator.py` use two hyperparameters, `batch_size` and `train_steps`. To make the code more relevant to our hyperparameter search, we drop them as input arguments and use fixed values instead. 2. We add two hyperparameters into the `main()` function to update the number of neurons in each layer, i.e. `layer1` and `layer2`. The model is constructed accordingly in line 51. 3. Add the return value `probability` in the `main()` function and also remove the "__main__" segments as we will create it automatically. See `premade_estimator_hyper.py` for the changed script. 4. Write an experiment configution JSON file, such as: ```JSON { "proposer": "random", "script": "premade_estimator_wrapper.py", "n_samples": 20, "random_seed": 1, "parameter_config": [ { "name": "layer1", "range": [ 2, 6 ], "type": "int" }, { "name": "layer2", "range": [ 2, 6 ], "type": "int" } ], "resource": "cpu", "n_parallel": 2, "target":"max" } ``` 4. Run code conversion as: `python -m aup.convert premade_estimator_hyper.py experiment_random.json main`. The output file is saved as `premade_estimator_wrapper.py`. Now we have the code for **Auptimizer** to tune. ## Run 1. If you haven't setup **Auptimzier** yet, run `python -m aup.setup ../../FirstTime/env_local_template.ini` to setup a local environment for testing (with CPU only). Then following instruction on the screen to run `python -m aup.setupdb.sqlite ./.aup/env.ini`. 2. Run **Auptimizer** as: `python -m aup experiment_demo.json`. ================================================ FILE: Examples/tf_iris_diff_opt/experiment_demo.json ================================================ { "name": "./tf_iris_diff_opt/experiment_demo.json", "proposer": "random", "script": "premade_estimator_wrapper.py", "n_samples": 4, "random_seed": 1, "parameter_config": [ { "name": "layer1", "range": [ 2, 6 ], "type": "int" }, { "name": "layer2", "range": [ 2, 6 ], "type": "int" } ], "resource": "cpu", "n_parallel": 2, "target":"max" } ================================================ FILE: Examples/tf_iris_diff_opt/experiment_hpo.json ================================================ { "name": "./tf_iris_diff_opt/experiment_hpo.json", "proposer": "hyperopt", "random_seed": 1, "engine":"tpe", "n_samples": 20, "script": "premade_estimator_hpo.py", "parameter_config": [ { "name": "layer1", "range": [ 2, 6 ], "type": "int" }, { "name": "layer2", "range": [ 2, 6 ], "type": "int" } ], "resource": "gpu", "n_parallel": 2, "target":"max" } ================================================ FILE: Examples/tf_iris_diff_opt/experiment_hyperband.json ================================================ { "name": "./tf_iris_diff_opt/experiment_hyperband.json", "proposer": "hyperopt", "random_seed": 1, "engine":"tpe", "n_samples": 20, "script": "premade_estimator_hpo.py", "parameter_config": [ { "name": "layer1", "range": [ 2, 6 ], "type": "int" }, { "name": "layer2", "range": [ 2, 6 ], "type": "int" } ], "resource": "gpu", "n_parallel": 2, "target":"max" } ================================================ FILE: Examples/tf_iris_diff_opt/experiment_random.json ================================================ { "name": "./tf_iris_diff_opt/experiment_random.json", "proposer": "random", "script": "premade_estimator_hpo.py", "n_samples": 20, "random_seed": 1, "parameter_config": [ { "name": "layer1", "range": [ 2, 6 ], "type": "int" }, { "name": "layer2", "range": [ 2, 6 ], "type": "int" } ], "resource": "gpu", "n_parallel": 2, "target":"max" } ================================================ FILE: Examples/tf_iris_diff_opt/experiment_sequence.json ================================================ { "name": "./tf_iris_diff_opt/experiment_sequence.json", "proposer": "sequence", "script": "premade_estimator_hpo.py", "parameter_config": [ { "name": "layer1", "range": [ 2, 6 ], "type": "int" }, { "name": "layer2", "range": [ 2, 6 ], "type": "int" } ], "resource": "gpu", "n_parallel": 2, "target":"max" } ================================================ FILE: Examples/tf_iris_diff_opt/experiment_spearmint.json ================================================ { "name": "./tf_iris_diff_opt/experiment_spearmint.json", "proposer": "spearmint", "n_samples": 20, "random_seed": 1, "script": "premade_estimator_hpo.py", "engine":"GPEIChooser", "parameter_config": [ { "name": "layer1", "range": [ 2, 6 ], "type": "int", "size": 1 }, { "name": "layer2", "range": [ 2, 6 ], "type": "int", "size": 1 } ], "resource": "gpu", "n_parallel": 2, "target":"max" } ================================================ FILE: Examples/tf_iris_diff_opt/iris_data.py ================================================ # Download from https://raw.githubusercontent.com/tensorflow/models/master/samples/core/get_started/iris_data.py # Date: Jun 11, 2018 import pandas as pd import tensorflow as tf TRAIN_URL = "http://download.tensorflow.org/data/iris_training.csv" TEST_URL = "http://download.tensorflow.org/data/iris_test.csv" CSV_COLUMN_NAMES = ['SepalLength', 'SepalWidth', 'PetalLength', 'PetalWidth', 'Species'] SPECIES = ['Setosa', 'Versicolor', 'Virginica'] def maybe_download(): train_path = tf.keras.utils.get_file(TRAIN_URL.split('/')[-1], TRAIN_URL) test_path = tf.keras.utils.get_file(TEST_URL.split('/')[-1], TEST_URL) return train_path, test_path def load_data(y_name='Species'): """Returns the iris dataset as (train_x, train_y), (test_x, test_y).""" train_path, test_path = maybe_download() train = pd.read_csv(train_path, names=CSV_COLUMN_NAMES, header=0) train_x, train_y = train, train.pop(y_name) test = pd.read_csv(test_path, names=CSV_COLUMN_NAMES, header=0) test_x, test_y = test, test.pop(y_name) return (train_x, train_y), (test_x, test_y) def train_input_fn(features, labels, batch_size): """An input function for training""" # Convert the inputs to a Dataset. dataset = tf.data.Dataset.from_tensor_slices((dict(features), labels)) # Shuffle, repeat, and batch the examples. dataset = dataset.shuffle(1000).repeat().batch(batch_size) # Return the dataset. return dataset def eval_input_fn(features, labels, batch_size): """An input function for evaluation or prediction""" features=dict(features) if labels is None: # No labels, use only features. inputs = features else: inputs = (features, labels) # Convert the inputs to a Dataset. dataset = tf.data.Dataset.from_tensor_slices(inputs) # Batch the examples assert batch_size is not None, "batch_size must not be None" dataset = dataset.batch(batch_size) # Return the dataset. return dataset # The remainder of this file contains a simple example of a csv parser, # implemented using the `Dataset` class. # `tf.parse_csv` sets the types of the outputs to match the examples given in # the `record_defaults` argument. CSV_TYPES = [[0.0], [0.0], [0.0], [0.0], [0]] def _parse_line(line): # Decode the line into its fields fields = tf.decode_csv(line, record_defaults=CSV_TYPES) # Pack the result into a dictionary features = dict(zip(CSV_COLUMN_NAMES, fields)) # Separate the label from the features label = features.pop('Species') return features, label def csv_input_fn(csv_path, batch_size): # Create a dataset containing the text lines. dataset = tf.data.TextLineDataset(csv_path).skip(1) # Parse each line. dataset = dataset.map(_parse_line) # Shuffle, repeat, and batch the examples. dataset = dataset.shuffle(1000).repeat().batch(batch_size) # Return the dataset. return dataset ================================================ FILE: Examples/tf_iris_diff_opt/premade_estimator.py ================================================ # Download from https://raw.githubusercontent.com/tensorflow/models/master/samples/core/get_started/premade_estimator.py # Date: Jun 11, 2018 # This the original code. The converted version for Auptimizer is `premade_estimator_hpo.py` # ######################################################################################################### # Copyright 2016 The TensorFlow Authors. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """An Example of a DNNClassifier for the Iris dataset.""" from __future__ import absolute_import from __future__ import division from __future__ import print_function import argparse import tensorflow as tf import iris_data parser = argparse.ArgumentParser() parser.add_argument('--batch_size', default=100, type=int, help='batch size') parser.add_argument('--train_steps', default=1000, type=int, help='number of training steps') def main(argv): args = parser.parse_args(argv[1:]) # Fetch the data (train_x, train_y), (test_x, test_y) = iris_data.load_data() # Feature columns describe how to use the input. my_feature_columns = [] for key in train_x.keys(): my_feature_columns.append(tf.feature_column.numeric_column(key=key)) # Build 2 hidden layer DNN with 10, 10 units respectively. classifier = tf.estimator.DNNClassifier( feature_columns=my_feature_columns, # Two hidden layers of 10 nodes each. hidden_units=[10, 10], # The model must choose between 3 classes. n_classes=3) # Train the Model. classifier.train( input_fn=lambda:iris_data.train_input_fn(train_x, train_y, args.batch_size), steps=args.train_steps) # Evaluate the model. eval_result = classifier.evaluate( input_fn=lambda:iris_data.eval_input_fn(test_x, test_y, args.batch_size)) print('\nTest set accuracy: {accuracy:0.3f}\n'.format(**eval_result)) # Generate predictions from the model expected = ['Setosa', 'Versicolor', 'Virginica'] predict_x = { 'SepalLength': [5.1, 5.9, 6.9], 'SepalWidth': [3.3, 3.0, 3.1], 'PetalLength': [1.7, 4.2, 5.4], 'PetalWidth': [0.5, 1.5, 2.1], } predictions = classifier.predict( input_fn=lambda:iris_data.eval_input_fn(predict_x, labels=None, batch_size=args.batch_size)) template = ('\nPrediction is "{}" ({:.1f}%), expected "{}"') for pred_dict, expec in zip(predictions, expected): class_id = pred_dict['class_ids'][0] probability = pred_dict['probabilities'][class_id] print(template.format(iris_data.SPECIES[class_id], 100 * probability, expec)) if __name__ == '__main__': tf.logging.set_verbosity(tf.logging.INFO) tf.app.run(main) ================================================ FILE: Examples/tf_iris_diff_opt/premade_estimator_hpo.py ================================================ #!/usr/bin/env python3 # Download from https://raw.githubusercontent.com/tensorflow/models/master/samples/core/get_started/premade_estimator.py # Date: Jun 11, 2018 # Modified for auptimizer ######################################################################################################################## # Copyright 2016 The TensorFlow Authors. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """An Example of a DNNClassifier for the Iris dataset.""" from __future__ import absolute_import from __future__ import division from __future__ import print_function import tensorflow as tf import sys import iris_data from aup import BasicConfig, print_result # # ChangeLog: # + remove argparse and set default batch_size, and train_step # + add aup config and change __main__ # + change main() to get conf, which contains the number of nodes per layer # + change main() to return eval_result["accuracy"]. # + add shebang line and execute permission # + change train_steps to be consistent with hyperband batch_size = 100 config = tf.ConfigProto() config.gpu_options.allow_growth=True sess = tf.Session(config=config) def main(conf): # Fetch the data (train_x, train_y), (test_x, test_y) = iris_data.load_data() if "n_iterations" in config: train_steps = 100 * config.n_iterations else: train_steps = 1000 # Feature columns describe how to use the input. my_feature_columns = [] for key in train_x.keys(): my_feature_columns.append(tf.feature_column.numeric_column(key=key)) # Build 2 hidden layer DNN with 10, 10 units respectively. classifier = tf.estimator.DNNClassifier( feature_columns=my_feature_columns, # Two hidden layers of 10 nodes each. hidden_units=[conf["layer1"], conf["layer2"]], # The model must choose between 3 classes. n_classes=3) # Train the Model. classifier.train(input_fn=lambda:iris_data.train_input_fn(train_x, train_y,batch_size), steps=train_steps) # Evaluate the model. eval_result = classifier.evaluate(input_fn=lambda:iris_data.eval_input_fn(test_x, test_y,batch_size)) print('\nTest set accuracy: {accuracy:0.3f}\n'.format(**eval_result)) # Generate predictions from the model expected = ['Setosa', 'Versicolor', 'Virginica'] predict_x = { 'SepalLength': [5.1, 5.9, 6.9], 'SepalWidth': [3.3, 3.0, 3.1], 'PetalLength': [1.7, 4.2, 5.4], 'PetalWidth': [0.5, 1.5, 2.1], } predictions = classifier.predict(input_fn=lambda:iris_data.eval_input_fn(predict_x, labels=None, batch_size=batch_size)) template = ('\nPrediction is "{}" ({:.1f}%), expected "{}"') for pred_dict, expec in zip(predictions, expected): class_id = pred_dict['class_ids'][0] probability = pred_dict['probabilities'][class_id] print(template.format(iris_data.SPECIES[class_id], 100 * probability, expec)) return eval_result["accuracy"] if __name__ == '__main__': if len(sys.argv) != 2: print("config file required") exit(1) config = BasicConfig().load(sys.argv[1]) val = main(config) print_result(val) ================================================ FILE: Examples/tf_iris_diff_opt/premade_estimator_hyper.py ================================================ # Download from https://raw.githubusercontent.com/tensorflow/models/master/samples/core/get_started/premade_estimator.py # Date: Jun 11, 2018 # Modified to work with aup.convert ######################################################################################################################## # Copyright 2016 The TensorFlow Authors. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """An Example of a DNNClassifier for the Iris dataset.""" from __future__ import absolute_import from __future__ import division from __future__ import print_function import argparse import tensorflow as tf import iris_data #parser = argparse.ArgumentParser() #parser.add_argument('--batch_size', default=100, type=int, help='batch size') #parser.add_argument('--train_steps', default=1000, type=int, # help='number of training steps') batch_size=100 train_steps=1000 def main(layer1, layer2): #args = parser.parse_args(argv[1:]) # Fetch the data (train_x, train_y), (test_x, test_y) = iris_data.load_data() # Feature columns describe how to use the input. my_feature_columns = [] for key in train_x.keys(): my_feature_columns.append(tf.feature_column.numeric_column(key=key)) # Build 2 hidden layer DNN with 10, 10 units respectively. classifier = tf.estimator.DNNClassifier( feature_columns=my_feature_columns, # Two hidden layers of 10 nodes each. hidden_units=[layer1, layer2], # The model must choose between 3 classes. n_classes=3) # Train the Model. classifier.train( input_fn=lambda:iris_data.train_input_fn(train_x, train_y, batch_size), steps=train_steps) # Evaluate the model. eval_result = classifier.evaluate( input_fn=lambda:iris_data.eval_input_fn(test_x, test_y, batch_size)) print('\nTest set accuracy: {accuracy:0.3f}\n'.format(**eval_result)) # Generate predictions from the model expected = ['Setosa', 'Versicolor', 'Virginica'] predict_x = { 'SepalLength': [5.1, 5.9, 6.9], 'SepalWidth': [3.3, 3.0, 3.1], 'PetalLength': [1.7, 4.2, 5.4], 'PetalWidth': [0.5, 1.5, 2.1], } predictions = classifier.predict( input_fn=lambda:iris_data.eval_input_fn(predict_x, labels=None, batch_size=batch_size)) template = ('\nPrediction is "{}" ({:.1f}%), expected "{}"') for pred_dict, expec in zip(predictions, expected): class_id = pred_dict['class_ids'][0] probability = pred_dict['probabilities'][class_id] print(template.format(iris_data.SPECIES[class_id], 100 * probability, expec)) return probability #if __name__ == '__main__': # tf.logging.set_verbosity(tf.logging.INFO) # tf.app.run(main) ================================================ FILE: Examples/tf_iris_diff_opt/premade_estimator_wrapper.py ================================================ #!/usr/bin/env python # Download from https://raw.githubusercontent.com/tensorflow/models/master/samples/core/get_started/premade_estimator.py # Date: Jun 11, 2018 # This is created by aup.convert ######################################################################################################################## # Copyright 2016 The TensorFlow Authors. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """An Example of a DNNClassifier for the Iris dataset.""" from __future__ import absolute_import from __future__ import division from __future__ import print_function import argparse import tensorflow as tf import iris_data #parser = argparse.ArgumentParser() #parser.add_argument('--batch_size', default=100, type=int, help='batch size') #parser.add_argument('--train_steps', default=1000, type=int, # help='number of training steps') batch_size=100 train_steps=1000 def main(layer1, layer2): #args = parser.parse_args(argv[1:]) # Fetch the data (train_x, train_y), (test_x, test_y) = iris_data.load_data() # Feature columns describe how to use the input. my_feature_columns = [] for key in train_x.keys(): my_feature_columns.append(tf.feature_column.numeric_column(key=key)) # Build 2 hidden layer DNN with 10, 10 units respectively. classifier = tf.estimator.DNNClassifier( feature_columns=my_feature_columns, # Two hidden layers of 10 nodes each. hidden_units=[layer1, layer2], # The model must choose between 3 classes. n_classes=3) # Train the Model. classifier.train( input_fn=lambda:iris_data.train_input_fn(train_x, train_y, batch_size), steps=train_steps) # Evaluate the model. eval_result = classifier.evaluate( input_fn=lambda:iris_data.eval_input_fn(test_x, test_y, batch_size)) print('\nTest set accuracy: {accuracy:0.3f}\n'.format(**eval_result)) # Generate predictions from the model expected = ['Setosa', 'Versicolor', 'Virginica'] predict_x = { 'SepalLength': [5.1, 5.9, 6.9], 'SepalWidth': [3.3, 3.0, 3.1], 'PetalLength': [1.7, 4.2, 5.4], 'PetalWidth': [0.5, 1.5, 2.1], } predictions = classifier.predict( input_fn=lambda:iris_data.eval_input_fn(predict_x, labels=None, batch_size=batch_size)) template = ('\nPrediction is "{}" ({:.1f}%), expected "{}"') for pred_dict, expec in zip(predictions, expected): class_id = pred_dict['class_ids'][0] probability = pred_dict['probabilities'][class_id] print(template.format(iris_data.SPECIES[class_id], 100 * probability, expec)) return probability #if __name__ == '__main__': # tf.logging.set_verbosity(tf.logging.INFO) # tf.app.run(main) def aup_wrapper(config): res = main(layer1=config['layer1'],layer2=config['layer2']) print_result(res) if __name__ == "__main__": import sys from aup import BasicConfig, print_result if len(sys.argv) != 2: print("config file required") exit(1) config = BasicConfig().load(sys.argv[1]) aup_wrapper(config) ================================================ FILE: LICENSE ================================================ GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . ================================================ FILE: MANIFEST.in ================================================ include LICENSE include README.md recursive-include src/aup/dashboard/frontend/febuild/auptimizer-dashboard/ * ================================================ FILE: R-src/README.md ================================================ # Copyright (c) 2018 LG Electronics Inc. # SPDX-License-Identifier: GPL-3.0-or-later # R Package for Auptimizer ## Installation *IMPORTANT:* Auptimizer is well tested on Unix or similar OS. Windows users may have to make some changes to run Aptimizer. 1. [Install Python Auptimizer](../README.md) 2. Install Auptimizer for R, (run R from `R-src` folder): ```R install.packages("devtools") devtools::install("Rpackage") ``` ## Usage The workflow for Auptimizer is the same as the Python version. The difference is in how to change existing R code to use Auptimizer. 1. Setup Python Auptimizer environment using `python -m aup.setup` 2. Change your R script: a. Make all hyperparameters global variables. b. Add `#!/usr/bin/env Rscript` as the first line. c. Add `source("auptimizer")`. d. Add `get_config()`, which will automatically update the hyperparameters (set globally in step 2a). e. Add `print_result(score)` to return the target score you want to optimize for your script. f. Change file permission using `chmod u+x `. g. Add them into an Auptimizer experiment using `python -m aup.init`. 3. Run Auptimizer using `python -m aup experiment.json`. ## Examples See examples in [example]. + `exp_ridge.R` for synthetic Ridge regression. Run as `python -m aup ridge.json`. + `exp_rosenbrock.R` for analytic Rosenbrock function. Run as `python -m aup rosenbrock.json`. ================================================ FILE: R-src/Rpackage/DESCRIPTION ================================================ Package: auptimizer Title: R Helper Functions for Auptimizer Version: 0.0.2 Authors@R: c( person(given = "Jiayi", family = "Liu", role = c("aut","cre"), email = "Jason.Liu@lge.com", comment = c(ORCID = "0000-0001-6007-5256")), person(given = "Sauptik", family = "Dhar", role = c("aut"), email = "Sauptik.Dhar@lge.com"), person(given = "", family = "LG Electronics Inc.", role = c("cph", "asn"), email = "auptimizer@lge.com") ) Description: Enable R users to use Auptimizer for hyperparameter optimization (HPO). Auptimizer helps data scientists to easily apply HPO in their work and to speed up model training jobs by executing jobs asynchronously when computing resources are available. License: GPL (>=3) Encoding: UTF-8 LazyData: true Imports: rjson URL: https://github.com/LGE-ARC-AdvancedAI/auptimizer BugReports: https://github.com/LGE-ARC-AdvancedAI/auptimizer/issues RoxygenNote: 6.1.1 Suggests: testthat, knitr, rmarkdown VignetteBuilder: knitr ================================================ FILE: R-src/Rpackage/NAMESPACE ================================================ # Generated by roxygen2: do not edit by hand export(get_config) export(print_result) ================================================ FILE: R-src/Rpackage/R/auptimizer.R ================================================ # Copyright (c) 2018 LG Electronics Inc. # SPDX-License-Identifier: GPL-3.0-or-later #' Get hyperparameter configuration #' #' This function loads a configuration file in JSON format. It assumes that the first argument of the running script is #' the configuraiton file. It will parse and inject the hyperparameter variables into the global environment and return #' them. #' #' #' Assuming the R script is used as follows: `./test.R config.json`, the script should look like below: #' #' \preformatted{ #' #!Rscript #' #' # hyperparameter definitions #' get_config() #' # use hyperparamter to train model, #' # after training, return optimization target (e.g. validation accuracy) as score #' print_result(score) #' } #' #' #' #' @param filename optional JSON filename containing hyperparameters as dict, default to first argument in command line. #' @param env optional environment containing hyperparameters, default to global env. #' @return a matrix of hyperparameters as name-value pairs #' @export get_config <- function(filename, env) { if (missing(filename)){ args <- commandArgs(TRUE) if (length(args) < 1) { warning("R script requires an input configuration file for Auptimzier experiment.") return() } else if (length(args) > 1) { warning("R script takes the first input as configuration file.") } filename = args[1] } data <- rjson::fromJSON(file=filename) if (missing(env)){ env = globalenv() } for (name in names(data)) { if (length(data[name]) > 1){ warning("Auptimizer only supports hyperparameter as a single value, not a list. Only first value is used") } # set to global variables assign(name, data[name][[1]], envir = env) } return(data) } #' Report result to Auptimizer #' #' This function reports the results to Auptimizer. A numerical score will be converted to string automatically. If #' you want to report multiple scores, use ',' to seperate them and only the first value will be used by Auptimzier for #' Optimization. #' #' #' Assume the R script is used as follows `./test.R config.json`, the script should look like below: #' #' \preformatted{ #' #!Rscript #' #' # hyperparameter definitions #' get_config() #' # use hyperparamter to train model, #' # after training, return optimization target (e.g. validation accuracy) as score #' print_result(score) #' } #' #' @param score Score to be reported back to Auptimizer #' @export print_result <- function(score) { message(paste("\n#Auptimizer:", score)) } ================================================ FILE: R-src/Rpackage/man/get_config.Rd ================================================ % Generated by roxygen2: do not edit by hand % Please edit documentation in R/auptimizer.R \name{get_config} \alias{get_config} \title{Get hyperparameter configuration} \usage{ get_config(filename, env) } \arguments{ \item{filename}{optional JSON filename contains hyperparameters as dict, default to first argument in command line.} \item{env}{optional environment contains hyperparameters, de fault to global env.} } \value{ A matrix of the infile } \description{ This function loads a configuration file in JSON format. It assumes that the first argument of the running script is the configuraiton file. It will parse and inject the hyperparameter variables into the global environment and return them. } \details{ Assume an R script is used as `./test.R config.json`, the script should look like below: \preformatted{ #!Rscript # hyperparameter definitions get_config() # use hyperparamter to train model, # after training, return optimization target (e.g. validation accuracy) as score print_result(score) } } ================================================ FILE: R-src/Rpackage/man/print_result.Rd ================================================ % Generated by roxygen2: do not edit by hand % Please edit documentation in R/auptimizer.R \name{print_result} \alias{print_result} \title{Report result to Auptimizer} \usage{ print_result(score) } \arguments{ \item{score}{Score to be reported back to Auptimizer} } \description{ This function reports the results to Auptimizer. A numerical score will be converted to string automatically. If you want to report multiple scores, use ',' to seperate them and only the first value will be used by Auptimzier for Optimization. } \details{ Assume an R script is used as `./test.R config.json`, the script should look like below: \preformatted{ #!Rscript # hyperparameter definitions get_config() # use hyperparamter to train model, # after training, return optimization target (e.g. validation accuracy) as score print_result(score) } } ================================================ FILE: R-src/Rpackage/tests/testthat/test_IO.R ================================================ # Copyright (c) 2018 LG Electronics Inc. # SPDX-License-Identifier: GPL-3.0-or-later library(auptimizer) test_that("auptimizer output format", { expect_message(print_result(1), '\n#Auptimizer: 1') }) test_that("auptimizer input format", { a <- 2 b <- TRUE expect_equal(a, 2) get_config("test_io.json", environment()) expect_equal(b, FALSE) expect_equal(a, 1) }) ================================================ FILE: R-src/Rpackage/tests/testthat/test_io.json ================================================ {"a":1,"b":false} ================================================ FILE: R-src/Rpackage/tests/testthat.R ================================================ library(testthat) library(auptimizer) test_check("auptimizer") ================================================ FILE: R-src/Rpackage/vignettes/.gitignore ================================================ *.html *.R ================================================ FILE: R-src/Rpackage/vignettes/auptimizer.Rmd ================================================ --- title: "Auptimizer" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{auptimizer} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- # R Package for Auptimizer ## Installation *IMPORTANT:* Auptimizer is well tested on Unix or similar OS. Windows users may have to make some changes to run Aptimizer. 1. [Install Python Auptimizer](https://github.com/LGE-ARC-AdvancedAI/auptimizer) 2. Install R Auptimizer ```R install.packages("auptimizer") ``` ## Usage The workflow for Auptimizer is the same as the Python version. The difference is in how to change existing R code to use Auptimizer. 1. Setup Python Auptimizer environment using `python -m aup.setup` 2. Change your R script: a. Make all hyperparameters global variables. b. Add `#!/usr/bin/env Rscript` as the first line. c. Add `library("auptimizer")`. d. Add `get_config()`, which will automatically update the hyperparameters (set globally in step 2a). e. Add `print_result(score)` to return the target score you want to optimize for your script. f. Change file permission using `chmod u+x `. g. Add them into an Auptimizer experiment using `python -m aup.init`. 3. Run Auptimizer using `python -m aup experiment.json`. ## Examples There are more examples in the `R-src/example` folder on the [Auptimizer Github repo](https://github.com/LGE-ARC-AdvancedAI/auptimizer/). + `exp_ridge.R` for synthetic Ridge regression. Run as `python -m aup ridge.json`. + `exp_rosenbrock.R` for analytic Rosenbrock function. Run as `python -m aup rosenbrock.json`. ================================================ FILE: R-src/examples/exp_ridge.R ================================================ #!/usr/bin/env Rscript # Copyright (c) 2018 LG Electronics Inc. # SPDX-License-Identifier: GPL-3.0-or-later # # Example code to use Auptimzier. library("auptimizer") source("ridgeRegression.R") # Synthetic Data Nt = 90 D = 100 w<-rnorm(D) trainX<-matrix(rnorm(Nt*D,0,1),nrow=Nt,ncol=D) trainy<-trainX%*%w + rnorm(Nt,0,1) # Add Gaussian noise Nv = 40 valX<-matrix(rnorm(Nv*D,0,1),nrow=Nv,ncol=D) valy<-valX%*%w + rnorm(Nv,0,1) # Add Gaussian noise # Hyperparameters lambda = 1.0 hp <- get_config() score <- ridgeRegression(trainX,trainy,valX,valy,lambda) print_result(score) ================================================ FILE: R-src/examples/exp_rosenbrock.R ================================================ #!/usr/bin/env Rscript # Copyright (c) 2018 LG Electronics Inc. # SPDX-License-Identifier: GPL-3.0-or-later # # Example code to use Auptimzier. library("auptimizer") source("rosenbrock.R") # Hyperparameters x <- 10 y <- 20 get_config() score <- rosen(c(x, y)) print_result(score) ================================================ FILE: R-src/examples/ridge.json ================================================ { "script": "exp_ridge.R", "resource": "cpu", "n_parallel": 1, "target": "min", "workingdir": "./", "proposer": "random", "n_samples": 10, "random_seed": 0, "parameter_config": [ { "name": "lambda", "range": [ 0.001, 10 ], "type": "float" } ] } ================================================ FILE: R-src/examples/ridgeRegression.R ================================================ # Copyright (c) 2018 LG Electronics Inc. # SPDX-License-Identifier: GPL-3.0-or-later ridgeRegression<-function(trainX,trainy,valX,valy,lambda){ ####################################################### # A Typical Ridge Regression Problem ####################################################### # N = No. of Training samples, D = Dimension of Problem N<-nrow(trainX) D <-ncol(trainX) I <- diag(D) # Closed form solution for Ridge regression: min (1/2N)*sum_i (w'*x_i - y_i)^2 + (lambda/2)*||w||^2 w <- solve((t(trainX)%*%trainX)/N + lambda*I) %*% ((t(trainX)%*%trainy)/N) # Predict on the validation samples and return the error. valErr<-MSE(valX,valy,w) return(valErr) } MSE<-function(X,y,w){ ##################################################### # This is the mean squared error ##################################################### N <- nrow(X) return((0.5*N)*norm(X%*%w-y)) } ================================================ FILE: R-src/examples/rosenbrock.R ================================================ rosen <- function(xx) { ########################################################################## # # ROSENBROCK FUNCTION # # Authors: Sonja Surjanovic, Simon Fraser University # Derek Bingham, Simon Fraser University # Questions/Comments: Please email Derek Bingham at dbingham@stat.sfu.ca. # # Copyright 2013. Derek Bingham, Simon Fraser University. # # THERE IS NO WARRANTY, EXPRESS OR IMPLIED. WE DO NOT ASSUME ANY LIABILITY # FOR THE USE OF THIS SOFTWARE. If software is modified to produce # derivative works, such modified software should be clearly marked. # Additionally, this program is free software; you can redistribute it # and/or modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; version 2.0 of the License. # Accordingly, this program is distributed in the hope that it will be # useful, but WITHOUT ANY WARRANTY; without even the implied warranty # of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # For function details and reference information, see: # http://www.sfu.ca/~ssurjano/ # ########################################################################## # # INPUT: # # xx = c(x1, x2, ..., xd) # ########################################################################## d <- length(xx) xi <- xx[1:(d-1)] xnext <- xx[2:d] sum <- sum(100*(xnext-xi^2)^2 + (xi-1)^2) y <- sum return(y) } ================================================ FILE: R-src/examples/rosenbrock.json ================================================ { "script": "exp_rosenbrock.R", "resource": "cpu", "n_parallel": 1, "target": "min", "workingdir": "./", "proposer": "random", "n_samples": 10, "random_seed": 0, "parameter_config": [ { "name": "x", "range": [ 0, 10 ], "type": "float" }, { "name": "y", "range": [ 0, 10 ], "type": "float" } ] } ================================================ FILE: README.md ================================================ # ![Auptimizer Logo](AuptimizerBlackLong.png) [![Documentation](https://img.shields.io/badge/doc-reference-blue.svg)](https://LGE-ARC-AdvancedAI.github.io/auptimizer) [![GPL 3.0 License](https://img.shields.io/badge/License-GPL%203.0-blue.svg)](https://opensource.org/licenses/GPL-3.0) [![Build Status](https://travis-ci.com/LGE-ARC-AdvancedAI/auptimizer.svg?branch=master)](https://travis-ci.com/LGE-ARC-AdvancedAI/auptimizer) [![coverage report](https://codecov.io/gh/LGE-ARC-AdvancedAI/auptimizer/branch/master/graph/badge.svg)](https://codecov.io/gh/LGE-ARC-AdvancedAI/auptimizer) **Auptimizer** is an optimization tool for Machine Learning (ML) that automates many of the tedious parts of the model building and deployment process. Currently, **Auptimizer** helps with: + **Getting the best models in minimum time** - Generate optimal models and achieve better performance by employing state-of-the-art hyperparameter optimization (HPO) and model compression techniques. Auptimizer will run and record sophisticated HPO and model compression experiments on compute resources of your choice with effortless consistency and reproducibility. + **Making your models edge-ready** - Get model-device compatibility and enhanced on-device performance by converting models into the industry-standard ONNX and TensorFlow Lite formats. Auptimizer-Converter provides validated conversion techniques to ensure worry-free format transformations. + **Selecting the most suitable model for your edge deployment effortlessly** - Compare how different models will perform under specific compute and memory constraints on a CPU-based edge device. Auptimizer-Profiler will help you identify the most efficient models without the hustle of going through multiple physical deployment cycles. Best of all, **Auptimizer** offers a consistent interface that allows users to switch between different HPO and compression algorithms, conversion frameworks, and computing resources with minimal changes to the existing code. ## What's New in Auptimizer v2.0 Auptimizer v2.0 introduces two core capabilities - Dashboard and Compressor! ### Dashboard [**Auptimizer Dashboard**](https://lge-arc-advancedai.github.io/auptimizer/dashboard.html) is a powerful analytics tool that complements Auptimizer's core hyperparameter optimization (HPO) and model compression capabilities. It provides insightful visualizations to help you track experiment progress, analyze and contrast jobs, experiments, and optimization approaches. Additionally, it can be used to control an experiment or even set up a new Auptimizer environment. ### Compressor [**Compressor**](https://lge-arc-advancedai.github.io/auptimizer/compression_main.html) is a model compression tool that helps reduce memory complexity and inference time of neural networks. It is particularly useful for adapting ML models for deployment on resource-constrained edge devices. Similar to Auptimizer-Hyperparameter Optimization (HPO), Compressor aims to provide a unified interface to the existing state-of-the-art toolkits. Currently, Compressor leverages [NNI (version 2.0)](https://nni.readthedocs.io/en/latest/model_compression.html) model compression modules. NNI is an open-source toolkit that supports two types of compression, pruning and quantization, for TensorFlow, and PyTorch models. In the future, we will be integrating other off-the-shelf toolkits to expand the selection of model compression approaches. ## Capabilities ### Hyperparameter Optimization Auptimizer automates tedious experimentation by performing and recording hyperparameter optimization experiments. Auptimizer provides a single seamless access point to top-notch HPO algorithms, including Bayesian optimization and multi-armed bandit. You can even integrate your own proprietary solution. Moreover, with Auptimizer, you can make the best use of your compute-resources. Whether you are using a couple of GPUs or AWS, Auptimizer will help you orchestrate compute resources for faster hyperparameter tuning. The table below shows a full list of currently supported techniques and resources for hyperparameter optimization. | Supported HPO Algorithms | Supported Infrastructure | | ----------- | ----------- | | Random
Grid
[Hyperband](https://github.com/zygmuntz/hyperband)
[Hyperopt](https://github.com/hyperopt/hyperopt)
[Spearmint](https://github.com/JasperSnoek/spearmint)
[BOHB](https://github.com/automl/HpBandSter)
[EAS (experimental)](https://github.com/han-cai/EAS)
Passive | Multiple CPUs
Multiple GPUs
Multiple Machines (SSH)
AWS EC2 instances | ### Profiler [**Profiler**](https://lge-arc-advancedai.github.io/auptimizer/profiler.html) is a simulator for profiling performance of machine learning model scripts. Given compute- and memory resource constraints for a CPU-based Edge device, Profiler can provide estimates of compute and memory usage for model scripts on the device. These estimations can be used to choose the best performing models or, in certain cases, to predict how much compute and memory models will use on the target device. Because Profiler mimics the target device environment on the user's development machine, the user can gain insights into the performance and resource needs of a model script without having to deploy it on the target device. Profiler helps accelerate the model selection cycle and simplifies finding model-device fit. Please see [Profiler](https://github.com/LGE-ARC-AdvancedAI/auptimizer/tree/master/src/aup/profiler) for usages. ### Converter [**Converter**](https://lge-arc-advancedai.github.io/auptimizer/dlconvert.html) is a format conversion tool for machine learning models. It encapsulates best practices of individual machine learning model conversions under a single API. Converter makes ML models suitable for edge (on-device) deployments by transforming them into the industry-standard ONNX and TensorFlow Lite formats and reducing model size through quantization. ## Install **Auptimizer** currently is well tested on Linux systems, it may require some tweaks for Windows users. ``` pip install auptimizer ``` **Note** Dependencies are not included. Using `pip install` [requirements.txt](https://github.com/LGE-ARC-AdvancedAI/auptimizer/blob/master/requirements.txt) will install necessary libraries for all functionalities. Usage for the UI dashboard: ``` dashboard --path --port ``` ## Documentation See more in [documentation](https://lge-arc-advancedai.github.io/auptimizer/) ## Example ``` cd Examples/demo # Setup environment (Interactively create the environment file based on user input) python -m aup.setup # Setup experiment python -m aup.init # Create training script - auto.py python -m aup.convert origin.py experiment.json demo_func # Run aup for this experiment python -m aup experiment.json ``` Each job's hyperparameter configuration is saved separately under `jobs/*.json` and is also recorded in the SQLite file `.aup/sqlite3.db`. ![gif demo](docs/images/demo.gif) More examples are under [Examples](https://github.com/LGE-ARC-AdvancedAI/auptimizer/tree/master/Examples). ## License [GPL 3.0 License](./LICENSE) ## Cite If you have used this software for research, please cite the following paper (accepted at IEEE Big Data 2019): ``` @misc{liu2019auptimizer, title={Auptimizer -- an Extensible, Open-Source Framework for Hyperparameter Tuning}, author={Jiayi Liu and Samarth Tripathi and Unmesh Kurup and Mohak Shah}, year={2019}, eprint={1911.02522}, archivePrefix={arXiv}, primaryClass={cs.LG} } ``` ================================================ FILE: docs/Database/schema.dot ================================================ /* * Graphviz of '<_io.TextIOWrapper name='' mode='r' encoding='UTF-8'>', created 2018-08-14 18:52:17.684968 * Generated from https://github.com/rm-hull/sql_graphviz */ digraph g { graph [ rankdir = "LR" ]; "user" [ shape=none label=<
user
uid INTEGER PRIMARY KEY NOT NULL
name TEXT UNIQUE
permission BLOB
>]; "resource" [ shape=none label=<
resource
rid INTEGER PRIMARY KEY NOT NULL
name TEXT
type TEXT
status TEXT
>]; "experiment" [ shape=none label=<
experiment
eid INTEGER PRIMARY KEY NOT NULL
uid INTEGER
start_time INTEGER
end_time INTEGER
exp_config BLOB
>]; "job" [ shape=none label=<
job
jid INTEGER PRIMARY KEY NOT NULL
score REAL
eid INTEGER
rid INTEGER
start_time INTEGER
end_time INTEGER
job_config BLOB
>]; "job_attempt" [ shape=none label=<
job_attempt
jaid INTEGER PRIMARY KEY NOT NULL
jid INTEGER
num INTEGER
rid INTEGER
start_time INTEGER
end_time INTEGER
>]; "intermediate_result" [ shape=none label=<
intermediate_result
irid INTEGER PRIMARY KEY NOT NULL
num INTEGER
score REAL
jid INTEGER
receive_time INTEGER
>]; "multiple_result" [ shape=none label=<
multiple_result
mrid INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL
label_order INTEGER
value REAL
receive_time INTEGER
jid INTEGER
irid INTEGER
eid INTEGER
is_last_result INTEGER
>]; "experiment":uid -> "user":uid; "job":eid -> "experiment":eid; "job":rid -> "resource":rid; "job":jid -> "job_attempt":jid; "job":jid -> "intermediate_result":jid; "job":jid -> "multiple_result":jid; "intermediate_result":irid -> "multiple_result":irid } ================================================ FILE: docs/Database/schema.sql ================================================ CREATE TABLE user (uid INTEGER PRIMARY KEY NOT NULL, name TEXT UNIQUE, permission BLOB); CREATE TABLE resource (rid INTEGER PRIMARY KEY NOT NULL, name TEXT, type TEXT, status TEXT); CREATE TABLE experiment (eid INTEGER PRIMARY KEY NOT NULL, uid INTEGER, start_time INTEGER, end_time INTEGER, exp_config BLOB, FOREIGN KEY(uid) REFERENCES user(uid)); CREATE TABLE job (jid INTEGER PRIMARY KEY NOT NULL, score REAL, eid INTEGER, rid INTEGER, start_time INTEGER, end_time INTEGER, job_config BLOB, FOREIGN KEY(eid) REFERENCES experiment(eid), FOREIGN KEY(rid) REFERENCES resource(rid)); CREATE TABLE job_attempt (jaid INTEGER PRIMARY KEY NOT NULL, jid INTEGER, num INTEGER, rid INTEGER, start_time INTEGER, end_time INTEGER, FOREIGN KEY(jid) REFERENCES job(jid), FOREIGN KEY(rid) REFERENCES resource(rid)); CREATE TABLE intermediate_result (irid INTEGER PRIMARY KEY NOT NULL, num INTEGER, score REAL, jid INTEGER, receive_time INTEGER, FOREIGN KEY(jid) REFERENCES job(jid)); CREATE TABLE multiple_result (mrid INTEGER PRIMARY KEY NOT NULL, label_order INTEGER, value REAL, receive_time INTEGER, jid INTEGER, irid INTEGER, eid INTEGER, is_last_result INTERGER, FOREIGN KEY(jid) REFERENCES job(jid), FOREIGN KEY(irid) REFERENCES intermediate_result(irid), FOREIGN KEY(eid) REFERENCES experiment(eid)); ================================================ FILE: docs/Database/sql_graphviz.py ================================================ #!/usr/bin/env python # https://github.com/rm-hull/sql_graphviz # run dot -Tpdf schema.dot > schema.pdf import sys from datetime import datetime from pyparsing import alphas, alphanums, Literal, Word, Forward, OneOrMore, ZeroOrMore, CharsNotIn, Suppress, QuotedString, Optional def field_act(s, loc, tok): return '{0} {1}'.format(tok[0].replace('"', ''), ' '.join(tok[1::]).replace('"', '\\"')) def field_list_act(s, loc, tok): return "\n ".join(tok) def create_table_act(s, loc, tok): return ''' "{tableName}" [ shape=none label=< {fields}
{tableName}
>];'''.format(**tok) def add_fkey_act(s, loc, tok): return ' "{tableName}":{keyName} -> "{fkTable}":{fkCol}'.format(**tok) def other_statement_act(s, loc, tok): return "" def grammar(): parenthesis = Forward() parenthesis <<= "(" + ZeroOrMore(CharsNotIn("()") | parenthesis) + ")" field_def = OneOrMore(Word(alphanums + "_\"'`:-") | parenthesis) field_def.setParseAction(field_act) tablename_def = ( Word(alphas + "`_") | QuotedString("\"") ) field_list_def = field_def + ZeroOrMore(Suppress(",") + field_def) field_list_def.setParseAction(field_list_act) create_table_def = Literal("CREATE") + "TABLE" + tablename_def.setResultsName("tableName") + "(" + field_list_def.setResultsName("fields") + ")" + ";" create_table_def.setParseAction(create_table_act) add_fkey_def = Literal("FOREIGN") + "KEY" + "(" + Word(alphanums).setResultsName("keyName") + ")" + "REFERENCES" + Word(alphanums).setResultsName("fkTable") + "(" + Word(alphanums + "_").setResultsName("fkCol") + ")" + Optional(Literal("DEFERRABLE")) + ";" add_fkey_def.setParseAction(add_fkey_act) other_statement_def = OneOrMore(CharsNotIn(";")) + ";" other_statement_def.setParseAction(other_statement_act) comment_def = "--" + ZeroOrMore(CharsNotIn("\n")) comment_def.setParseAction(other_statement_act) return OneOrMore(comment_def | create_table_def | add_fkey_def | other_statement_def) def graphviz(filename): print("/*") print(" * Graphviz of '%s', created %s" % (filename, datetime.now())) print(" * Generated from https://github.com/rm-hull/sql_graphviz") print(" */") print("digraph g { graph [ rankdir = \"LR\" ];") for i in grammar().parseFile(filename): if i != "": print(i) print("}") if __name__ == '__main__': filename = sys.stdin if len(sys.argv) == 1 else sys.argv[1] graphviz(filename) ================================================ FILE: docs/Dockerfile ================================================ FROM nginx COPY _build/html /usr/share/nginx/html # fix version urls RUN mkdir /usr/share/nginx/html/archive RUN mv /usr/share/nginx/html/_static/*.whl /usr/share/nginx/html/archive RUN mv /usr/share/nginx/html/_static/aup.py /usr/share/nginx/html/archive/ ================================================ FILE: docs/LICENSE ================================================ GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . ================================================ FILE: docs/Makefile ================================================ # Minimal makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build SPHINXPROJ = ContinuousTrainingEngine SOURCEDIR = . BUILDDIR = _build # Put it first so that "make" without argument is like "make help". help: @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) .PHONY: help Makefile # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: Makefile # pandoc ../README.md -o tmp.rst;sed 's/docs\///g' tmp.rst > README.rst;rm tmp.rst @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) ================================================ FILE: docs/README.rst ================================================ Auptimizer Quickstart ===================== |GPL 3.0 License| |pipeline status| |coverage report| |repo url| **Auptimizer** is an optimization tool for Machine Learning (ML) that automates many of the tedious parts of the model building and deployment process. Currently, **Auptimizer** helps with: - **Getting the best models in minimum time** - Generate optimal models and achieve better performance by employing state-of-the-art hyperparameter optimization (HPO) and model compression techniques techniques. Auptimizer will run and record sophisticated HPO and model compression experiments on compute resources of your choice with effortless consistency and reproducibility. - **Making your models edge-ready** - Get model-device compatibility and enhanced on-device performance by converting models into the industry-standard ONNX and TensorFlow Lite formats. Auptimizer-Converter provides validated conversion techniques to ensure worry-free format transformations. - **Selecting the most suitable model for your edge deployment effortlessly** - Compare how different models will perform under specific compute and memory constraints on a CPU-based edge device. Auptimizer-Profiler will help you identify the most efficient models without the hustle of going through multiple physical deployment cycles. Best of all, **Auptimizer** offers a consistent interface that allows users to switch between different HPO and compression algorithms, conversion frameworks, and computing resources with minimal changes to the existing code. What's New in Auptimizer v2.0 ----------------------------- Auptimizer v2.0 introduces two core capabilites - Dashboard and Compressor! Dashboard ~~~~~~~~~ `Auptimizer Dashboard `__ is a powerful analytics tool that complements Auptimizer's core hyperparameter optimization (HPO) and model compression capabilities. It provides insightful visualizations to help you track experiment progress, analyze and contrast jobs, experiments, and optimization approaches. Additionally, it can be used to control an experiment or even set up a new Auptimizer environment. Compressor ~~~~~~~~~~ `Compressor `__ is a model compression tool that helps reduce memory complexity and inference time of neural networks. It is particularly useful for adapting ML models for deployment on resource-constrained edge devices. Similar to Auptimizer-Hyperparameter Optimization (HPO), Compressor aims to provide a unified interface to the existing state-of-the-art toolkits. Currently, Compressor leverages `NNI (version 2.0) `__ model compression modules. NNI is an open-source toolkit that supports two types of compression, pruning and quantization, for TensorFlow, and PyTorch models. In the future, we will be integrating other off-the-shelf toolkits to expand the selection of model compression approaches. Capabilities ------------ Hyperparameter Optimization ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Auptimizer automates tedious experimentation by performing and recording hyperparameter experiments. Auptimizer provides a single seamless access point to top-notch HPO algorithms, including Bayesian optimization and multi-armed bandit. You can even integrate your own proprietary solution. Moreover, with Auptimizer, you can make the best use of your compute-resources. Whether you are using a couple of GPUs or AWS, Auptimizer will help you orchestrate compute resources for faster hyperparameter tuning. The table below shows a full list of currently supported techniques and resources for hyperparameter optimization. +----------------------------------------------------------------+-----------------------------------+ | Supported HPO Algorithms | Supported Infrastructure | +================================================================+===================================+ | | Random | | Multiple CPUs | | | Grid | | Multiple GPUs | | | `Hyperband `__ | | Multiple Machines (SSH) | | | `Hyperopt `__ | | EC2 instances | | | `Spearmint `__ | | | | `BOHB `__ | | | | `EAS (experimental) `__ | | | | Passive | | +----------------------------------------------------------------+-----------------------------------+ Profiler ~~~~~~~~ `Profiler `__ is a simulator for profiling performance of machine learning model scripts. Given compute- and memory resource constraints for a CPU-based Edge device, Profiler can provide estimates of compute and memory usage for model scripts on the device. These estimations can be used to choose best performing models or, in certain cases, to predict how much compute and memory models will use on the target device. Because Profiler mimics the target device environment on the user's development machine, the user can gain insights about the performance and resource needs of a model script without having to deploy it on the target device. Profiler helps accelerate the model selection cycle and simplifies finding model-device fit. Please see :doc:`prof_readme` for usages. Converter ~~~~~~~~~ `Converter `__ is a format conversion tool for machine learning models. It encapsulates best practices of individual machine learning model conversions under a single API. Converter makes ML models suitable for edge (on-device) deployments by transforming them into the industry-standard ONNX and TensorFlow Lite formats and reducing model size through quantization. Please see :doc:`dlconvert_readme` for usages. Install ------- **Auptimizer** currently is well tested on Linux systems, it may require some tweaks for Windows users. :: pip install auptimizer **Note** Dependencies are not included. Using ``pip install -r`` `requirements.txt `_ will install necessary libraries for all functionalities. Example ------- :: cd Examples/demo # Setup environment (Interactively create the environment file based on user input) python -m aup.setup # Setup experiment python -m aup.init # Create training script - auto.py python -m aup.convert origin.py experiment.json demo_func # Run aup for this experiment python -m aup experiment.json Each job’s hyperparameter configuration is saved separately under ``jobs/*.json`` and is also recorded in the SQLite file ``.aup/sqlite3.db``. .. figure:: ./images/demo.gif :alt: demo License ------- `GPL 3.0 License <./LICENSE>`__ .. |GPL 3.0 License| image:: https://img.shields.io/badge/License-GPL%203.0-blue.svg :target: https://opensource.org/licenses/GPL-3.0 .. |pipeline status| image:: https://travis-ci.org/LGE-ARC-AdvancedAI/auptimizer.svg?branch=master :target: https://travis-ci.org/LGE-ARC-AdvancedAI/auptimizer .. |coverage report| image:: https://codecov.io/gh/LGE-ARC-AdvancedAI/auptimizer/branch/master/graph/badge.svg :target: https://codecov.io/gh/LGE-ARC-AdvancedAI/auptimizer .. |repo url| image:: https://img.shields.io/badge/github-repo-information.svg :target: https://github.com/LGE-ARC-AdvancedAI/auptimizer Cite ---- If you have used this software for research, please cite the following paper (accepted at IEEE Big Data 2019): .. code-block:: none @misc{liu2019auptimizer, title={Auptimizer -- an Extensible, Open-Source Framework for Hyperparameter Tuning}, author={Jiayi Liu and Samarth Tripathi and Unmesh Kurup and Mohak Shah}, year={2019}, eprint={1911.02522}, archivePrefix={arXiv}, primaryClass={cs.LG} } ================================================ FILE: docs/_static/.gitkeep ================================================ ================================================ FILE: docs/algorithm.rst ================================================ Configure HPO Algorithm ======================= Supported algorithms -------------------- **Auptimizer** supports a number of different HPO algorithms. The names and descriptions are listed below: =========== ============================================================================================================================ Name Algorithm =========== ============================================================================================================================ passive Manually run job (for debug purpose) random Random search sequence Grid Search spearmint `Spearmint `_: Bayesian Optimization based on Gaussian Process bohb `HpBandSter `_: Bayesian Optimization and HyperBand hyperopt `Hyperopt `_: Bayesian Optimization with Tree of Parzen Estimators (TPE) hyperband `Hyperband `_: Multi-armed bandit approach eas `EAS `_: Efficient Architecture Search by Network Transformation (Illustration purpose) =========== ============================================================================================================================ Use ``python -m aup.init`` to set up the experiment configuration interactively. For finer control, advanced users can change the configuration manually by directly modifying the ``experiment.json`` file. Configuration details --------------------- Below we cover the most common pieces. For requirements related to specific algorithms, please refer to the respective documentation. The general structure of the configuration file is as follows:: { "proposer": "random", "n_samples": 10, "random_seed": 1, "script": "auto.py", "parameter_config": [ { "name": "x", "range": [ -5, 5 ], "type": "float" } ], "resource": "cpu", "resource_args": { "save_model": true }, "job_failure": { "job_retries": 3, "ignore_fail": true }, "n_parallel": 3, "target":"min", "workingdir:"./" } ================ ======== ============================================================================== Name Default Explanation ================ ======== ============================================================================== proposer random hpo method used to propose new hyperparameter values (see below for full list) n_samples 10 number of jobs to run script - script to run n_parallel 1 number of parallel jobs job_retries 0 number of retries for failed jobs. ignore_fail False whether to continue the experiment if a job fails. target max search for max or min resource - type of resource to run the experiment, [cpu, gpu, aws, node, passive] parameter_config {} hyperparameter specification (see below) workingdir "./" path to run the script, important for running jobs remotely (SSH/AWS) resource_args {} other parameters to enable features like tracking intermediate results, saving best model, etc (see below) ================ ======== ============================================================================== for ``parameter_config``: ================= ====================================================================================== Name Content ================= ====================================================================================== name name of the hyperparameter variable. Must be the same as used in the training script range [min, max] or a list of values type `float`, `int`, `choice` types are supported ================= ====================================================================================== Minor modifications or changes may be required for each algorithm. These options can be found at the corresponding API pages under :doc:`aup.Proposer` (see API links below). for ``resource_args``: ========================== ======== ============================================================================== Name Default Explanation ========================== ======== ============================================================================== save_model False whether to save the best performing model (see below) multi_res_labels None a list of additional results to be tracked, e.g. ["flops", "param"] track_intermediate_results False if true, intermediate results during training epoches will be tracked early_stop None parameters related to early stopping strategies ========================== ======== ============================================================================== For details of the ``early_stop`` parameter and how to apply early stopping strategies to HPO experiments, please refer to :doc:`Early Stopping `. ``resource_args`` can also include SSH/AWS specific parameters, please refer to :ref:`AWSRuntimeAnchor` for more details. **Note**: | If ``job_failure`` is not specified, the experiment will stop whenever a job fails. | For ``job_retries``, preferance is given to a different resource, if multiple resources are available. | For ``ignore_fail``, currently [BOHB, EAS, Hyperband] proposers do not support experiment continuation upon job failure. Additional functionalities -------------------------- Track intermediate results ~~~~~~~~~~~~~~~~~~~~~~~~~~ This feature allows the user to save and track multiple intermediate results at different points during the HPO experiment. Auptimizer still uses the final result as the main result for the HPO algorithm, but saves the intermediate records in the database under the table ``intermediate_results``. Usage @@@@@ The feature can be used by adding the following parameter to the experiment configuration file:: "resource_args": { "track_intermediate_results": true } Then in the training script, ``aup.print_result(res)`` should be placed where the user wants the results to be tracked:: def main(*args, **kwargs): # model and data preparation for epoch in range(n_epochs): # training for one epoch aup.print_result(res) In the above example, the intermediate results are returned every epoch. The result at last epoch is regarded as the main result for the user script and is then used by the HPO algorithm. The intermediate results will be shown on the dashboard if tracked. **Note**: It is possible to use multiple results feature in conjunction with intermediate results to track multiple intermediate results as well. Save the best model ~~~~~~~~~~~~~~~~~~~ This feature allows the user to save the best performing model after running the HPO experiment. This is achieved by running the training script again using the best hyperparamters obtained during HPO the experiment. The model, by default, will be saved to path ``aup_models/models_/``. Usage @@@@@ In order to use this feature, please add the following parameter to the experiment configuration file:: "resource_args": { "save_model": true } Depending on whether the ``@aup_args`` decorator is used, the training script needs the following additional modifications. If ``@aup_args`` is used, the user needs to define a funtion to save the model, and register this function with ``aup_save_model``. We suggest using this approach if running the experiment on remote machines (SSH/AWS) to be able to correctly locate and retrieve the model saved on the remote machine. Please see the example below:: # define a function "save_model(model)" to save the model to a user-defined path def save_model(model): os.makedirs('model_train') model.save('./model_train/mnist.h5') @aup_args def main(*args, **kwargs): # training code ... # register the model saving function with model as argument aup.aup_save_model(save_model, model) ... If ``@aup_args`` is not used, the user needs to manually check whether the ``save_model`` parameter is True in the job's configuration. The main function should also take ``save_model`` and ``folder_name`` as arguments. Please see the example below:: def main(*args, **kwargs, save_model=False, folder_name=None): # training code ... if save_model is True: # manually locate the path for saving the model # this is important if running on remote machines path = os.path.join('aup_models', folder_name) if os.path.exists('aup_models') is False: os.makedirs('aup_models') if os.path.exists(path) is True: shutil.rmtree(path) os.makedirs(path) os.chdir(path) model.save('./model_train/mnist.h5') ... Return multiple results ~~~~~~~~~~~~~~~~~~~~~~~ This feature allows the user to save and track multiple secondary results along with the primary result for the HPO experiment. Auptimizer still uses the main result for the HPO algorithm, but saves the secondary results in the database under the table ``multiple_results``. There is no upper limit on how many secondary results the user can track. Usage @@@@@ The feature can be used by adding the following parameter to the experiment configuration file:: "resource_args": { "multi_res_labels": ["x", "y"] } In the above configuration file, ``x`` and ``y`` are the secondary results the user wants to track and record. The user script would then return the results as a list including the primary result ``res`` along with the secondary parameters as follows:: @aup_args def HPO(): res = calculate_results() return [res, x, y] In the above example, ``res`` is the primary result which is always placed at the first index of the returned list, which will be used by the HPO algorithm. The remaining results are matched directly with the list provided in ``multi_res_labels``. Hence, the length of the returned list from user script is 1 + length of ``multi_res_labels`` parameter. **Note**: It is possible to use multiple results feature in conjunction with intermediate results to track multiple intermediate results as well. Pause and resume jobs ~~~~~~~~~~~~~~~~~~~~~ + Serial: optimize parameters by running jobs sequentially + Parallel: optimize parameters by running jobs in parallel + Pause: pause and save current HPO status + Resume: resume previously paused HPO process +-----------+-------------------------------------------------+--------+----------+--------------+--------+ | Algorithm | Documentation | Serial | Parallel | Pause (save) | Resume | +===========+=================================================+========+==========+==============+========+ | Random | :class:`aup.Proposer.RandomProposer` | |Y| | |Y| | |Y| | |Y| | +-----------+-------------------------------------------------+--------+----------+--------------+--------+ | Sequence | :class:`aup.Proposer.SequenceProposer` | |Y| | |Y| | |Y| | |Y| | +-----------+-------------------------------------------------+--------+----------+--------------+--------+ | Passive | :class:`aup.EE.Resource.PassiveResourceManager` | |Y| | |Y| | |Y| | |Y| | +-----------+-------------------------------------------------+--------+----------+--------------+--------+ | Spearmint | :class:`aup.Proposer.SpearmintProposer` | |Y| | |Y| | |N| | |N| | +-----------+-------------------------------------------------+--------+----------+--------------+--------+ | Hyperopt | :class:`aup.Proposer.HyperoptProposer` | |Y| | |Y| | |N| | |N| | +-----------+-------------------------------------------------+--------+----------+--------------+--------+ | Hyperband | :class:`aup.Proposer.HyperbandProposer` | |Y| | |Y| | |N| | |N| | +-----------+-------------------------------------------------+--------+----------+--------------+--------+ | BOHB | :class:`aup.Proposer.BOHBProposer` | |Y| | |Y| | |N| | |N| | +-----------+-------------------------------------------------+--------+----------+--------------+--------+ | EAS | :class:`aup.Proposer.EASProposer` | |Y| | |N| | |N| | |N| | +-----------+-------------------------------------------------+--------+----------+--------------+--------+ .. |Y| unicode:: U+2713 .. checked .. |N| unicode:: U+274C .. no check .. |?| unicode:: U+274C .. check pending ================================================ FILE: docs/archive/aup.py ================================================ """ .. Copyright (c) 2018 LG Electronics Inc. SPDX-License-Identifier: GPL-3.0-or-later Auptimizer client side functions ================================ This file can be copied to a remote machine instead of installing the whole Auptimizer package for job execution. APIs ---- """ from __future__ import print_function import logging import json import pickle import sys import inspect import functools import os import shutil logger = logging.getLogger("aup-minimal") # supported data loading format _SUPPORT_FORMAT = ("pkl", "json") global user_callback_fn global user_args global user_kwargs user_callback_fn = None user_args = [] user_kwargs = {} def print_result(result): """Function to print the result for :func:`parse_result`. This function should be the last line of your training code :param result: result from training code :type result: str """ if result is list: result = ','.join([str(r) for r in result]) else: result = str(result).lstrip() # avoid line break # force flush to get intermediate results in real time print("\n#Auptimizer:%s" % result, file=sys.stderr, flush=True) class BasicConfig(dict): """ User-friendly :class:`dict` supports: * load and save for json/pickle format (.json/.pkl) * easy key/value access as config.key or config["key"] * compatible with :class:`dict` :param kwargs: key-value pairs to initialize the configuration :type kwargs: dict """ def load(self, filename): """Load config parameters from JSON/pickle file :param filename: file name ends with [.json|.pkl] :type filename: string :return: configuration parsed from file :rtype: aup.BasicConfig """ name = "_load_" + BasicConfig._get_format(filename) func = getattr(self, name) data = func(filename) if type(data) is not dict: raise TypeError("Config must be dict") self.update(data) logger.debug("Load config from %s: %s" % (filename, data.__str__())) return self def save(self, filename): """ Save configuration as dict in JSON/pickle :param filename: file name ends with [.json|.pkl] :type filename: string """ name = "_save_" + BasicConfig._get_format(filename) func = getattr(self, name) func(filename) logger.debug("Config saved to %s" % filename) @staticmethod def _get_format(filename): name = filename.split(".")[-1].lower() if name not in _SUPPORT_FORMAT: raise ValueError("Un-support file format, choose from %s." % ",".join(_SUPPORT_FORMAT)) return name @staticmethod def _load_json(filename): with open(filename, 'r') as f: return json.load(f) @staticmethod def _load_pkl(filename): with open(filename, 'rb') as f: return pickle.load(f) def _save_json(self, filename): with open(filename, 'w') as f: json.dump(self, f) def _save_pkl(self, filename): with open(filename, 'wb') as f: pickle.dump(dict(self), f) @staticmethod def save_flags(filename): """ Save tf flags for reuse - not used, not tested :param filename: output file """ from absl import flags logger.info("Write flags into %s") with open(filename, 'w') as f: f.write(flags.FLAGS.flags_into_string()) def to_flags(self, FLAGS): """ Update values in FLAGS from BasicConfig :param FLAGS: tensorflow/absl FLAGS """ for i in FLAGS: if i in self: logger.debug("set %s in FLAGS", i) setattr(FLAGS, i, self[i]) else: logger.debug("Use default %s", i) def __setattr__(self, key, value): self.__setitem__(key, value) def __getattr__(self, key): return self.__getitem__(key) def __delattr__(self, key): self.__delitem__(key) def __hash__(self): return super(BasicConfig, self).__hash__() def aup_args(func): """Decorator to wrap optimization target function `func`. Arguments: func {function} -- A function computes optimization target with specified hyperparameters """ @functools.wraps(func) def wrapper(filename, **kwargs): """wrapper function Arguments: filename {str} -- configuration file kwargs {dict} -- additional arguments will overwrite existing configuration value Raises: ValueError: if a parameter is not assigned in config """ # get current frame stack frm = inspect.stack()[1] # get module from stack mod = inspect.getmodule(frm[0]) # get functions that contain "init" in name and call them functions_list = inspect.getmembers(sys.modules[mod.__name__], inspect.isfunction) functions_list = sorted(list(filter(lambda x: "init" in x[0], functions_list))) config = BasicConfig().load(filename) if kwargs: logger.critical("Overwritting config values from script, be cautious!") config.update(kwargs) for f in functions_list: f[1](**config) parameters = inspect.signature(func).parameters for p in parameters.items(): if p[0] not in config: if p[1].default is inspect.Parameter.empty: raise ValueError("`%s` is required in `%s()` but is not assigned in config file %s" % (p[0], func.__name__, filename)) logger.info("Using default value for %s", p[0]) run_config = dict() for p in config: if p in parameters: run_config[p] = config[p] else: logger.warning("%s is not used in optimization"%p) val = func(**run_config) print_result(val) save_model = config.get('save_model', False) if save_model is True: # this means this is the "best job" found # the user wants to save the model try: dir = config.get('folder_name', None) previous_dir = os.getcwd() if os.path.exists(dir) is True: logger.warning('Deleting {}'.format(dir)) shutil.rmtree(dir) os.makedirs(dir) os.chdir(dir) assert user_callback_fn is not None, \ "Please use 'aup_save_model' to register the save model callback fn" user_callback_fn(*user_args, **user_kwargs) except Exception as e: raise e finally: os.chdir(previous_dir) return wrapper def aup_flags(flags): """wrapper function for absl flags (or tf.app). It will assign values to flags parameters using the given configuration file as the first argument when executed from the command line. Arguments: args {list} -- a list of unused arguments passed by app.run() """ def decorator_wrapper(func): @functools.wraps(func) def wrapper(args): config = BasicConfig(**flags.__dict__).load(args[1]) flags.__dict__.update() parameters = inspect.signature(func).parameters if parameters: logger.warning("TF FLAG main() should not accept arguments with Auptimizer, it has %s", parameters.keys()) val = func({p:None for p in parameters}) else: val = func() print_result(val) return wrapper return decorator_wrapper def aup_save_model(callback_fn, *args, **kwargs): global user_callback_fn global user_args global user_kwargs user_callback_fn = callback_fn user_args = args user_kwargs = kwargs ================================================ FILE: docs/aup.EE.Experiment.rst ================================================ .. automodule:: aup.EE.Experiment :members: :undoc-members: :show-inheritance: ================================================ FILE: docs/aup.EE.Job.rst ================================================ .. automodule:: aup.EE.Job :members: :undoc-members: :show-inheritance: ================================================ FILE: docs/aup.EE.Resource.rst ================================================ Resource Managers ================= .. automodule:: aup.EE.Resource.AbstractResourceManager :members: :undoc-members: :show-inheritance: .. automodule:: aup.EE.Resource.CPUResourceManager :members: :show-inheritance: .. automodule:: aup.EE.Resource.GPUResourceManager :members: :show-inheritance: .. automodule:: aup.EE.Resource.SSHResourceManager :members: :show-inheritance: .. automodule:: aup.EE.Resource.AWSResourceManager :members: :show-inheritance: .. automodule:: aup.EE.Resource.PassiveResourceManager :members: :show-inheritance: ================================================ FILE: docs/aup.EE.rst ================================================ aup.EE - Experiment execution ============================= Overview -------- :mod:`aup.EE` supports all experiment execution-related code. + :mod:`aup.EE.Experiment` controls the flow of an experiment. + :mod:`aup.EE.Job` takes care of job execution. + :mod:`aup.EE.Resource` provides the backbone where :mod:`aup.EE.Job` runs on. APIs ---- .. toctree:: :maxdepth: 1 aup.EE.Experiment aup.EE.Job aup.EE.Resource ================================================ FILE: docs/aup.ET.Connector.rst ================================================ aup.ET.Connector package ======================== .. automodule:: aup.ET.Connector.AbstractConnector :members: :undoc-members: :show-inheritance: .. automodule:: aup.ET.Connector.SQLiteConnector :members: :undoc-members: :show-inheritance: ================================================ FILE: docs/aup.ET.rst ================================================ aup.ET - Experiment tracking package ==================================== .. toctree:: :caption: Modules for experiment tracking aup.ET.Connector ================================================ FILE: docs/aup.Proposer.BOHBProposer.rst ================================================ .. automodule:: aup.Proposer.BOHBProposer :members: :undoc-members: :show-inheritance: ================================================ FILE: docs/aup.Proposer.EASProposer.rst ================================================ .. automodule:: aup.Proposer.EASProposer :members: :show-inheritance: ================================================ FILE: docs/aup.Proposer.HyperbandProposer.rst ================================================ .. automodule:: aup.Proposer.HyperbandProposer :members: :undoc-members: :show-inheritance: ================================================ FILE: docs/aup.Proposer.HyperoptProposer.rst ================================================ .. automodule:: aup.Proposer.HyperoptProposer :members: :undoc-members: :show-inheritance: ================================================ FILE: docs/aup.Proposer.RandomProposer.rst ================================================ .. automodule:: aup.Proposer.RandomProposer :members: :undoc-members: :show-inheritance: ================================================ FILE: docs/aup.Proposer.SequenceProposer.rst ================================================ .. automodule:: aup.Proposer.SequenceProposer :members: :undoc-members: :show-inheritance: ================================================ FILE: docs/aup.Proposer.SpearmintProposer.rst ================================================ .. automodule:: aup.Proposer.SpearmintProposer :members: :undoc-members: :show-inheritance: ================================================ FILE: docs/aup.Proposer.rst ================================================ aup.Proposer package ==================== The proposer is the core component to optimize hyperparameters for model training. Use :func:`aup.Proposer.AbstractProposer.get_proposer` to initialize proposer. All of them adopt the same interface as described below. Proposers --------- .. toctree:: :maxdepth: 1 aup.Proposer.HyperbandProposer aup.Proposer.HyperoptProposer aup.Proposer.RandomProposer aup.Proposer.SequenceProposer aup.Proposer.SpearmintProposer aup.Proposer.BOHBProposer aup.Proposer.EASProposer .. automodule:: aup.Proposer.AbstractProposer :members: :undoc-members: :show-inheritance: ================================================ FILE: docs/aup.__main__.rst ================================================ .. automodule:: aup.__main__ :members: :undoc-members: :show-inheritance: ================================================ FILE: docs/aup.compression.rst ================================================ Compression main entry ====================== .. automodule:: aup.compression.__main__ :members: :undoc-members: :show-inheritance: ================================================ FILE: docs/aup.convert.rst ================================================ .. automodule:: aup.convert :members: :undoc-members: :show-inheritance: ================================================ FILE: docs/aup.dlconvert.rst ================================================ DLconvert - Model conversion ============================ .. automodule:: aup.dlconvert.__main__ :members: :undoc-members: :show-inheritance: ================================================ FILE: docs/aup.dlconvert_API.rst ================================================ aup.dlconvert package ======================== .. automodule:: aup.dlconvert.checkpoint_to_onnx :undoc-members: :show-inheritance: .. automodule:: aup.dlconvert.checkpoint_to_pb :members: :undoc-members: :show-inheritance: .. automodule:: aup.dlconvert.checkpoint_to_tflite :undoc-members: :show-inheritance: .. automodule:: aup.dlconvert.keras_to_onnx :members: :undoc-members: :show-inheritance: .. automodule:: aup.dlconvert.keras_to_pb :members: :undoc-members: :show-inheritance: .. automodule:: aup.dlconvert.keras_to_tflite :members: :undoc-members: :show-inheritance: .. automodule:: aup.dlconvert.pb_to_onnx :members: :undoc-members: :show-inheritance: .. automodule:: aup.dlconvert.pb_to_tflite :members: :undoc-members: :show-inheritance: .. automodule:: aup.dlconvert.pytorch_to_keras :members: :undoc-members: :show-inheritance: .. automodule:: aup.dlconvert.pytorch_to_onnx :members: :undoc-members: :show-inheritance: .. automodule:: aup.dlconvert.pytorch_to_tflite :members: :undoc-members: :show-inheritance: .. automodule:: aup.dlconvert.savedmodel_to_onnx :members: :undoc-members: :show-inheritance: .. automodule:: aup.dlconvert.savedmodel_to_tflite :members: :undoc-members: :show-inheritance: .. automodule:: aup.dlconvert.to_frozen_pb :members: :undoc-members: :show-inheritance: .. automodule:: aup.dlconvert.to_onnx :members: :undoc-members: :show-inheritance: .. automodule:: aup.dlconvert.to_tflite :members: :undoc-members: :show-inheritance: ================================================ FILE: docs/aup.init.rst ================================================ .. automodule:: aup.init :members: :undoc-members: :show-inheritance: ================================================ FILE: docs/aup.profiler.rst ================================================ Profiler - Profiling model scripts ================================== .. automodule:: aup.profiler.__main__ :members: :undoc-members: :show-inheritance: ================================================ FILE: docs/aup.rst ================================================ **Auptimizer** APIs =================== Main Entry ---------- .. toctree:: :maxdepth: 1 aup.__main__ aup.compression aup.setup aup.init aup.convert aup.setupdb aup.profiler aup.dlconvert Internal modules and packages ----------------------------- .. toctree:: :maxdepth: 2 aup.EE aup.ET aup.Proposer aup.utils aup.setupdb_API aup.dlconvert_API ================================================ FILE: docs/aup.setup.rst ================================================ .. automodule:: aup.setup :members: :undoc-members: :show-inheritance: ================================================ FILE: docs/aup.setupdb.rst ================================================ Database setup and reset ======================== .. automodule:: aup.setupdb.__main__ :members: :undoc-members: :show-inheritance: .. automodule:: aup.setupdb.reset ================================================ FILE: docs/aup.setupdb.sqlite.rst ================================================ .. automodule:: aup.setupdb.sqlite :members: :undoc-members: :show-inheritance: ================================================ FILE: docs/aup.setupdb_API.rst ================================================ aup.setupdb package =================== .. toctree:: :maxdepth: 1 aup.setupdb.sqlite ================================================ FILE: docs/aup.utils.rst ================================================ .. automodule:: aup.utils :members: :undoc-members: :show-inheritance: .. automodule:: aup.aup :members: :undoc-members: :show-inheritance: :imported-members: ================================================ FILE: docs/aup.visualize.rst ================================================ .. automodule:: aup.visualize :members: :undoc-members: :show-inheritance: ================================================ FILE: docs/compression.rst ================================================ Compressor ========== **Compressor** is a model compression tool that helps reduce memory complexity and inference time of neural networks. With Compressor, you can: 1. **Make your ML models suitable for deployment on resource-constrained devices.** Use Compressor to optimize models for Edge device's limited memory, compute, or power and enable uncompromised on-device intelligence. 2. **Slash latency and enhance the user experience of your AI-powered application.** Tap Compressor's speed-up functionality to accelerate your model's inference time. 3. **Maximize the cost-effectiveness of your neural nets.** Cut down on cloud or on-prem model storage and compute costs by reducing their footprint. Similar to Auptimizer-Hyperparameter Optimization (HPO), Compressor aims to provide a unified interface to the existing state-of-the-art toolkits. Currently, Compressor leverages `NNI (version 2.0) `__ model compression modules. NNI is an open-source toolkit that supports two types of compression, pruning and quantization, for TensorFlow, and PyTorch models. You can find more detail on supported compression algorithms (compressors) in the `NNI Compression documentation `__. In the future, we will be integrating other off-the-shelf toolkits to expand the selection of model compression approaches. How to run compression experiments ---------------------------------- Running a compression experiment is similar to running an HPO experiment and requires just a few steps: 1. Install Auptimizer and set up Auptimizer environment 2. Prepare an experiment configuration file 3. Modify a few lines in the training script 4. Run the experiment Auptimizer also includes the NNI `compression utility functions `__ that will help you design compression experiments more efficiently. These utility functions enable layer sensitivity and channel dependency analysis, which can guide the selection of layers to be pruned and the target sparsity levels. We recommend running this analysis to have a better understanding of the model architecture. For more details, please check :doc:`Utility functions `. Step #1. Installation and environment setup ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Compressor is automatically installed as a part of Auptimizer. For PyTorch compression algorithms, Pytorch version >= 1.7.0 is required. For Tensorflow compression algorithms, TensorFlow version >= 2.0 is required. Compression experiments use the same Auptimizer environment as the HPO experiments. Please refer to the :doc:`Install and setup Auptimizer ` and :doc:`Set up environment ` sections for detail on how to set up your Auptimizer environment. Step #2. Prepare an experiment configuration file ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Compressor supports two compression paradigms: 1. one-time compression 2. automatic compression. A **one-time compression** experiment runs one compression job with a fixed set of parameters. Whereas an **automatic compression** experiment leverages Auptimizer's HPO module to find the best possible parameters of a compression algorithm that generates the best compressed model. One-time approach is a good option for performing a dry-run or an experiment with a specific set of parameters. Alternatively, use automatic compression if you are not certain about the compression parameters or would like to explore the relationship between compressed model performance and different parameter settings. Below, we explain the differences between one-time and automatic compression configuration files. One-time compression configuration @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Here is an example of the configuration file for one-time compression using the `L1Filter` pruning method:: { "name": "MNIST L1 Filter Pruner", "script": "mnist.py", "resource": "cpu", "compression": { "framework": "torch", "type": "pruning", "compressor": "l1_filter", "config_list": [ { "sparsity": 0.8, "op_types": ["Conv2d"] }, { "sparsity": 0.6, "op_names": ["conv1", "conv2"] }, { "exclude": True, "op_names": ["conv3"] } ] } } One-time compression experiment configurations take the following parameters, where all parameters except for **compression** have the same meaning as in :doc:`Configure HPO Algorithm `: + **name**: name of the experiment + **script**: script to run + **resource**: type of resource to run the experiment, [cpu, gpu, passive, node] + **workingdir**: path to run the script, important for running jobs remotely (SSH/AWS) + **compression**: compression-specific parameters + **framework**: either "torch" or "tensorflow" + **type**: either "pruning" or "quantization" + **compressor**: string, one from the list of supported compression algorithms for the given framework and type (see below) + **config_list**: a list of parameters which define the specific requirements for the chosen NNI compression algorithm The ``config_list`` parameter is specific to individual NNI compression algorithms. However, there a few parameters common among all compressors: + **op_types**: list of strings, the names of the specific type of layers to be compressed. If not specified, will use ``default`` as the value which denotes the default layer types supported by the chosen compression algorithm. + **op_names**: list of strings, the names of the layers to be compressed. Will overwrite ``op_types`` if both are provided. The layer names can be found using ``model.state_dict().keys()``. + **exclude**: "True" or "False" (default is "False"). When set to "True", the layers defined in ``op_types`` or ``op_names`` will be excluded from compression. In the above example, "config_list" means pruning all layers of the type "Conv2d" to 0.8 sparsity, except for layers named "conv1" and "conv2" which should be pruned to 0.6 sparsity and layer "conv3" which should be excluded from the pruning. Please refer to the `NNI docs `__ for more description of the "config_list" parameter. Each compressor will have an example of its supported "config_list". Automatic compression configuration @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Here is an example of the configuration file for automatic compression using the `L1Filter` pruning method:: { "name": "MNIST L1 Filter Pruner (automatic)", "script": "mnist.py", "resource": "cpu", "compression": { "framework": "torch", "type": "pruning", "compressor": "l1_filter", "config_list": [ { "sparsity": { "range": [0.6, 0.8], "type": "float" } "op_types": ['Conv2d'] }, { "sparsity": { "range": [0.1, 0.9], "type": "float" }, "op_names": ["conv1", "conv2"] }, { "exclude": True, "op_names": ["conv3"] } ] }, "proposer": "random", "n_parallel": 4, "target": "max", "n_samples": 4 } An automatic compression experiment uses HPO to find the best hyperparameters of a chosen compression algorithm. The experiment is launched as an HPO experiment, therefore, its configuration recognizes all parameters in an HPO experiment (see :doc:`Configure HPO Algorithm ` for parameter definitions). Some important parameters include: + **proposer**: HPO method used to propose new hyperparameter values + **target**: "min" or "max", minimizing or maximizing user-defined HPO metric + **n_samples**: total number of jobs to run + **n_parallel**: number of parallel jobs Another notable difference in automatic compression configuration is that for the values of the parameters in ``config_list``, a search space is defined via the following parameters: + **range**: [min, max] or a list of values + **type**: `float`, `int`, `choice` types are supported Additional parameters may be needed for specific Proposers (see :doc:`Configure HPO Algorithm `). There are two potential scenarios for identifying the best hyperparameters. We will use hyperparameter "sparsity" as an example. In the first scenario, the user may set the same search range for the sparsity for a group of layers defined in ``op_names`` or ``op_types``, however, the user allows the Proposer to choose a different value in the defined range for each layer in the group. While in the second scenario, the user would like to use the same sparsity value for all layers in the group due to the dependency among those layers. To handle these two scenarios, we introduce an additional parameter ``expand_op_names`` ("true" or "false", default is "true"). If set to "true", Auptimizer will propose a different hyperparameter value for each layer defined in the group; whereas when set to "false", the same hyperparameter value will apply to all layers defined in the group. For example, if the configuration is written as follows, in one job, the hyperparameter Proposer may assign sparsity value 0.2 and 0.4 to "conv1" and "conv2" layers, respectively. However, if the ``expand_op_names`` is set to "false" in the following example, the Proposer will always assign the same value (e.g., 0.2) to both "conv1" and "conv2" layers:: [ { 'sparsity': { 'range': [0.1, 0.9], 'type': 'float' }, 'op_names': ['conv1', 'conv2'], 'expand_op_names': true, 'op_types': ['default'] } ] Step #3. Modify the training script ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Only a few modifications to the training script are needed to run a compression experiment. The modifications are the same for both one-time and automatic compression experiments. We first present an example training script and then explain the changes below:: #!/usr/bin/env python #Step 1: add shebang line to make script executable import aup #Step 2: import auptimizer package def main(config): #Step 3a: the main function should take "config" as argument ... # code to generate model and load dataset ... #Step 4: create a compressor and call the compress method to compress the model compressor = aup.compression.create_compressor(model, config, optimizer=optimizer) model = compressor.compress() #Step 5 (optional): speed-up the model by removing zero weights model = compressor.apply_speedup(dummy_input=torch.randn(1, 1, 28, 28).to(device)) ... code for model fine-tuning after compression ... #Step 6 (optional): export the compressed model and the mask compressor.export_model( model_path="model_compressed.pth", mask_path="model_mask.pth", speedup=True, folder_name=".") #Step 7: return the metric for HPO or any metric for one-time compression aup.print_result(validation_acc) # Step 3b: parse the configuration file and call the main function as follows if __name__ == '__main__': config = aup.BasicConfig().load(sys.argv[1]) main(config) 1. Add Shebang line ``#!/usr/bin/env python`` on top of the script and make the script executable (``chmod u+x script.py``). 2. Import Auptimizer package by ``import aup`` 3. Parse the configuration file using ``aup.BasicConfig.load(sys.argv[1])``. 4. Create the compressor and apply compression + this can happen before the optimizer is created: ``compressor = aup.compression.create_compressor(model, config)`` + or after the optimizer is defined: ``compressor = aup.compression.create_compressor(model, config, optimizer=optimizer)`` Note: any additional arguments specifically required by the compression algorithms must be passed here. Apply compression by ``compressor.compress()``. 5. (Optional) Speed-up can be applied for pruned models: ``model = compressor.apply_speedup(dummy_input=torch.randn(*input_shape).to(device))`` This will modify the actual architecture of the model by removing zero parameters. ``dummy_input`` should be a ``pytorch tensor`` that conforms to the model input shape. We recommend fine-tuning the model after applying model speed-up as pruning zero parameters may affect the accuracy of the model. Note: Not all pruners support speed-up, please refer to the **Model Speed-Up** section below for more detail. 6. (Optional) Export the model:: compressor.export_model( model_path="model_compressed.pth", mask_path="model_mask.pth", speedup=True, folder_name=".") This saves the model to disk. Note that the speed-up is only applied if it has not been applied yet; otherwise, the model is saved as it is. + ``model_path``: the path where the compressed model will be saved + ``mask_path``: is a pruning-only argument, the path where the pruning mask will be saved. + ``speedup``: must be present and True if speed-up has been applied; can be True if speed-up has not been applied yet, and will apply speed-up before saving the model. + ``folder_name``: (optional) the directory relative to the working directory to save the model, the model and mask files will be saved to ``working_directory/folder_name/model(mask)_path``. + ``dummy_input``: (optional) a ``pytorch tensor`` that conforms to the model input shape required only for applying speedup when speedup has not been applied yet. 7. Return the final result or any intermediate result by using ``aup.print_result``: + For one-time compression, this result can be any metric the user would like to visualize on the dashboard + For automatic compression, this result should be the metric to use in HPO A few compression algorithms require additional changes in training procedures. Please refer to :doc:`Supported Compression Algorithms ` section for specific requirements of each compressor. Step #4. Run experiment ~~~~~~~~~~~~~~~~~~~~~~~ A one-shot compression experiment is run by issuing the ``aup.compression`` command:: python -m aup.compression experiment.json Automatic compression experiments require the ``--automatic`` flag:: python -m aup.compression experiment.json --automatic Advanced usages --------------- Use decorator to modify training script ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ An alternative way to pass the configuration file to the training script is to use the decorator ``aup_args`` with the following changes:: @aup.aup_args def main(compression_type, compression_framework, compressor, config_list, folder_name = None, save_model = False): config = locals() ... if __name__ == '__main__': main(sys.argv[1]) Save the best model ~~~~~~~~~~~~~~~~~~~ Automatic compression experiments can use the "save best model" feature in HPO. If this feature is enabled, only the compressed model and mask obtained using the best hyperparameter combination will be exported, instead of all the models and masks for every hyperparameter combinations explored. To use this feature, please make sure to define the following in the configuration file:: "resource_args": { "save_model": true } There are two ways to modify the code for exporting only the best model and its mask: + In case the ``@aup_args`` decorator is used, then the compressor's export_model method can be registered as a model saving function:: aup_save_model( compressor.export_model, model_path="model_compressed.pth", mask_path="model_mask.pth", speedup=False) + Alternatively, if the decorator is not used, apply the following code:: if "save_model" in config and config["save_model"]: compressor.export_model( model_path="model_compressed.pth", mask_path="model_mask.pth", speedup=False, folder_name=config["folder_name"]) Model Speed-up -------------- NNI compression provides a `model speedup module `__ which aims to export models with their architecture modified to reflect the effect of pruning methods. Normally, users would export the model with its structure unchanged and, for pruning, a mask of the pruned weights. However, with model speed-up, the mask is applied to the model before exporting. **Important:** Note that without applying model speed-up, compression will not result in model size reduction or inference acceleration. In order to use model speed-up, the script should call ``compressor.apply_speedup`` with the appropriate parameters. Model speed-up can also be used during ``compressor.export_model``. Please see `Modify the Training Script` step above for detailed usages. Not all compression algorithms support model speed-up. Compressors that support model speed-up include: + ActivationAPoZRankFilter Pruner + ActivationMeanRankFilter Pruner + ADMM Pruner + FPGM Pruner + L1Filter Pruner + L2Filter Pruner + NetAdapt Pruner + Sensitivity Pruner + TaylorFOWeightFilter Pruner ================================================ FILE: docs/compression_main.rst ================================================ Model Compression ----------------- .. toctree:: :maxdepth: 1 compression compressors compression_utilities ================================================ FILE: docs/compression_utilities.rst ================================================ Utility Functions ================= The utility functions of the NNI compression module are also integrated into Auptimizer. They are useful for analyzing the network topology, making informed decisions on the target sparsity levels, and measuring model parameters and FLOPS. The basic usages are presented below. Please refer to `NNI compression utilities `__ for more advanced applications. Sensitivity analysis -------------------- Sensitivity analysis prunes the layers one-by-one to measure the sentivity of each layer to different levels of target sparsity:: # Example of Sensitivity Analysis usage # Define a test function to measure the model performance after pruning each layer def test(model, device, test_loader): ... return accuracy # return a metric for evaluation s_analyzer = aup.compression.sensitivity_analysis.SensitivityAnalysis(model=model, val_func=lambda model: test(model, device, test_loader)) sensitivity = s_analyzer.analysis(val_args=[model]) s_analyzer.export(os.path.join(OUT_DIR, "sensitivity_analysis.log")) The sensitivity analysis result will be saved to "sensitivity_analysis.log". Channel dependency ------------------ We recommend that users run a channel dependency analysis if they want to manually assign target sparsity levels to selected layers, as the layers with dependency on each other need to be assigned the same sparsity. Channel dependency can be done as follows:: # Assume input has dimension (1, 1, 28, 28) data = torch.ones(1, 1, 28, 28).to(device) channel_depen = aup.compression.shape_dependency.ChannelDependency(model, data) channel_depen.export(os.path.join(OUT_DIR, "channel_dependency.csv")) The channel dependency result will be saved to "channel_dependency.csv". Parameters / FLOPs counter -------------------------- The FLOPs, number of parameters, and detailed information per layer ("flops", "params", "weight_size", "input_size", "output_size", etc) can be measured using:: flops, params, results = compressor.count_flops_params(input_shape_tuple) print(results) The per layer information is saved in "results". ================================================ FILE: docs/compressors.rst ================================================ Supported Compression Algorithms ================================ For a high-level introduction of all NNI pruners and quantizers, and the full list of parameters required for each compression algorithm in ``config_list``, please refer to `compressors `__. We maintain the same parameters for each compression algorithm as in the original NNI compression module. In this section, we provide examples for all of the supported compression algorithms that include: + An example configuration (for one-time compression) to present the required "framework", "type" and "compressor" parameters. + An example of a``aup.create_compressor`` call. If the compressor supports `"dependency-aware" mode `__, it will be included in the call. Pruners ------- Level Pruner ~~~~~~~~~~~~ Supports both TensorFlow and PyTorch. **Configuration**:: "compression": { "framework": "tensorflow" | "torch" "type": "pruning", "compressor": "level", "config_list": [{ "sparsity": 0.8, "op_types": ["default"] } ] } **Example creation**:: aup.create_compressor(model, config, optimizer=None) Slim Pruner ~~~~~~~~~~~ **Configuration**:: "compression": { "framework": "torch", "type": "pruning", "compressor": "slim", "config_list": [{ "sparsity": 0.8, "op_types": ["BatchNorm2d"] } ] } **Example creation**:: aup.create_compressor(model, config, optimizer=None) FPGM Pruner ~~~~~~~~~~~ This pruner supports a dependency-aware mode to get better speed-up from the pruning. **Configuration**:: "compression": { "framework": "torch", "type": "pruning", "compressor": "fpgm", "config_list": [{ "sparsity": 0.5, "op_types": ["Conv2d"] } ] } **Example creation**:: aup.create_compressor(model, config, optimizer=None, dependency_aware=False, dummy_input=None) L1Filter Pruner ~~~~~~~~~~~~~~~ This pruner supports the dependency-aware mode. **Configuration**:: "compression": { "framework": "torch", "type": "pruning", "compressor": "l1_filter", "config_list": [{ "sparsity": 0.5, "op_types": ["Conv2d"] } ] } **Example creation**:: aup.create_compressor(model, config, optimizer=None, dependency_aware=False, dummy_input=None) L2Filter Pruner ~~~~~~~~~~~~~~~ This pruner supports the dependency-aware mode. **Configuration**:: "compression": { "framework": "torch", "type": "pruning", "compressor": "l2_filter", "config_list": [{ "sparsity": 0.5, "op_types": ["Conv2d"] } ] } **Example creation**:: aup.create_compressor(model, config, optimizer=None, dependency_aware=False, dummy_input=None) ActivationAPoZRankFilter Pruner ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This pruner supports the dependency-aware mode. **Configuration**:: "compression": { "framework": "torch", "type": "pruning", "compressor": "activation_apoz_rank_filter", "config_list": [{ "sparsity": 0.5, "op_types": ["Conv2d"] } ] } **Example creation**:: aup.create_compressor(model, config, optimizer=None, activation='relu', statistics_batch_num=1, dependency_aware=False, dummy_input=None) ActivationMeanRankFilter Pruner ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This pruner supports the dependency-aware mode. **Configuration**:: "compression": { "framework": "torch", "type": "pruning", "compressor": "activation_mean_rank_filter", "config_list": [{ "sparsity": 0.5, "op_types": ["Conv2d"] } ] } **Example creation**:: aup.create_compressor(model, config, optimizer=None, activation='relu', statistics_batch_num=1, dependency_aware=False, dummy_input=None) TaylorFOWeightFilter Pruner ~~~~~~~~~~~~~~~~~~~~~~~~~~~ This pruner supports the dependency-aware mode. **Configuration**:: "compression": { "framework": "torch", "type": "pruning", "compressor": "taylor_fo_weight_filter", "config_list": [{ "sparsity": 0.5, "op_types": ["Conv2d"] } ] } **Example creation**:: aup.create_compressor(model, config, optimizer=None, statistics_batch_num=1, dependency_aware=False, dummy_input=None) AGP Pruner ~~~~~~~~~~ **Special requirements for usage** (example):: compressor = aup.compression.create_compressor(model, config, optimizer=optimizer) model = compressor.compress() for epoch in range(1, args.epochs + 1): # ... train the model here for one epoch compressor.update_epoch(epoch) Use ``compressor.update_epoch(epoch)`` to update epoch number when you finish one epoch in your training code. **Configuration**:: "compression": { "framework": "torch", "type": "pruning", "compressor": "agp", "config_list": [{ "initial_sparsity": 0.0, "final_sparsity": 0.8, "start_epoch": 0, "end_epoch": 10, "frequency": 1, "op_types": ["default"] } ] } **Example creation**:: aup.create_compressor(model, config, optimizer, pruning_algorithm='level') NetAdapt Pruner ~~~~~~~~~~~~~~~ **Configuration**:: "compression": { "framework": "torch", "type": "pruning", "compressor": "net_adapt", "config_list": [{ "sparsity": 0.5, "op_types": ["Conv2d"] } ] } **Example creation**:: aup.create_compressor(model, config, short_term_fine_tuner, evaluator, optimize_mode='maximize', base_algo='l1', sparsity_per_iteration=0.05, experiment_data_dir='./') SimulatedAnnealing Pruner ~~~~~~~~~~~~~~~~~~~~~~~~~ **Configuration**:: "compression": { "framework": "torch", "type": "pruning", "compressor": "simulated_annealing", "config_list": [{ "sparsity": 0.5, "op_types": ["Conv2d"] } ] } **Example creation**:: aup.create_compressor(model, config, evaluator, optimize_mode='maximize', base_algo='l1', start_temperature=100, stop_temperature=20, cool_down_rate=0.9, perturbation_magnitude=0.35, experiment_data_dir='./') AutoCompress Pruner ~~~~~~~~~~~~~~~~~~~ **Configuration**:: "compression": { "framework": "torch", "type": "pruning", "compressor": "auto_compress", "config_list": [{ "sparsity": 0.5, "op_types": ["Conv2d"] } ] } **Example creation**:: aup.create_compressor(model, config, trainer, evaluator, dummy_input, num_iterations=3, optimize_mode='maximize', base_algo='l1', start_temperature=100, stop_temperature=20, cool_down_rate=0.9, perturbation_magnitude=0.35, admm_num_iterations=30, admm_training_epochs=5, row=0.0001, experiment_data_dir='./') AMC Pruner ~~~~~~~~~~ **Configuration**:: "compression": { "framework": "torch", "type": "pruning", "compressor": "amc", "config_list": [{ "op_types": ["Conv2d", "Linear"] } ] } **Example creation**:: aup.create_compressor(model, config, evaluator, val_loader, suffix=None, model_type='mobilenet', dataset='cifar10', flops_ratio=0.5, lbound=0.2, rbound=1.0, reward='acc_reward', n_calibration_batches=60, n_points_per_layer=10, channel_round=8, hidden1=300, hidden2=300, lr_c=0.001, lr_a=0.0001, warmup=100, discount=1.0, bsize=64, rmsize=100, window_length=1, tau=0.01, init_delta=0.5, delta_decay=0.99, max_episode_length=1000000000.0, output_dir='./logs', debug=False, train_episode=800, epsilon=50000, seed=None) ADMM Pruner ~~~~~~~~~~~ **Configuration**:: "compression": { "framework": "torch", "type": "pruning", "compressor": "admm", "config_list": [{ "sparsity": 0.5, "op_types": ["Conv2d"], "op_names": ["conv1"] }, { "sparsity": 0.5, "op_types": ["Conv2d"], "op_names": ["conv2"] } ] } **Example creation**:: aup.create_compressor(model, config, trainer, num_iterations=30, training_epochs=5, row=0.0001, base_algo='l1') Lottery Ticket Hypothesis Pruner ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ **Special requirements for usage** (example):: compressor = aup.compression.create_compressor(model, config, optimizer=optimizer, lr_scheduler=scheduler) model = compressor.compress() for _ in compressor.get_prune_iterations(): compressor.prune_iteration_start() for epoch in range(1, args.epochs + 1): # ... train model here for one epoch **Configuration**:: "compression": { "framework": "torch", "type": "pruning", "compressor": "lottery_ticket", "config_list": [{ "prune_iterations": 5, "sparsity": 0.8, "op_types": ["Conv2d"] } ] } **Example creation**:: aup.create_compressor(model, config, optimizer=None, lr_scheduler=None, reset_weights=True) Sensitivity Pruner ~~~~~~~~~~~~~~~~~~ **Special requirements for usage** (example):: compressor = aup.compression.create_compressor(model, config, finetuner=short_term_fine_tuner, evaluator=evaluator) model = compressor.compress(eval_args=[model], finetune_args=[model]) Notice the arguments passed to ``compressor.compress``. **Configuration**:: "compression": { "framework": "torch", "type": "pruning", "compressor": "sensitivity", "config_list": [{ "sparsity": 0.5, "op_types": ["Conv2d"] } ] } **Example creation**:: aup.create_compressor(model, config_list, evaluator, finetuner=None, base_algo='l1', sparsity_proportion_calc=None, sparsity_per_iter=0.1, acc_drop_threshold=0.05, checkpoint_dir=None) Quantizers ---------- Naive Quantizer ~~~~~~~~~~~~~~~ **Configuration**:: "compression": { "framework": "torch", "type": "quantization", "compressor": "naive", "config_list": [] } **Example creation**:: aup.create_compressor(model, config) QAT Quantizer ~~~~~~~~~~~~~ **Configuration**:: "compression": { "framework": "torch", "type": "quantization", "compressor": "qat", "config_list": [{ "quant_types": ["weight"], "quant_bits": { "weight": 8 }, "op_types": ["Conv2d", "Linear"] }, { "quant_types": ["output"], "quant_bits": 8, "quant_start_step": 7000, "op_types":["ReLU6"] }] } **Example creation**:: aup.create_compressor(model, config) DoReFa Quantizer ~~~~~~~~~~~~~~~~ **Configuration**:: "compression": { "framework": "torch", "type": "quantization", "compressor": "dorefa", "config_list": [{ "quant_types": ["weight"], "quant_bits": 8, "op_types": ["default"] }] } **Example creation**:: aup.create_compressor(model, config) BNN Quantizer ~~~~~~~~~~~~~ **Configuration**:: "compression": { "framework": "torch", "type": "quantization", "compressor": "bnn", "config_list": [{ "quant_bits": 1, "quant_types": ["weight"], "op_types": ["Conv2d", "Linear"], "op_names": ["conv1", "conv2", "fc1", "fc2"] }, { "quant_bits": 1, "quant_types": ["output"], "op_types": ["relu"], "op_names": ["relu1", "relu2", "relu3"] }] } **Example creation**:: aup.create_compressor(model, config) ================================================ FILE: docs/conf.py ================================================ # -*- coding: utf-8 -*- # # Configuration file for the Sphinx documentation builder. # # This file does only contain a selection of the most common options. For a # full list see the documentation: # http://www.sphinx-doc.org/en/stable/config # -- Path setup -------------------------------------------------------------- # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. # import os import sys sys.path.insert(0, os.path.abspath('../src')) import aup # -- Project information ----------------------------------------------------- project = 'Auptimizer' copyright = '2018, LG Electronics Inc.' author = 'LG Electronics Inc.' # The short X.Y version version = aup.__version__ # The full version, including alpha/beta/rc tags release = '' # -- General configuration --------------------------------------------------- # If your documentation needs a minimal Sphinx version, state it here. # # needs_sphinx = '1.0' # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ 'sphinx.ext.autodoc', 'sphinx.ext.coverage', 'sphinx.ext.mathjax', 'sphinx.ext.viewcode', 'sphinx.ext.intersphinx', 'sphinx.ext.autosummary', 'sphinxcontrib.programoutput', 'sphinx.ext.autosectionlabel' ] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix(es) of source filenames. # You can specify multiple suffix as a list of string: # #source_parsers = { # '.md': 'recommonmark.parser.CommonMarkParser', #} #source_suffix = ['.rst', '.md'] source_suffix = '.rst' # The master toctree document. master_doc = 'index' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. # # This is also used if you do content translation via gettext catalogs. # Usually you set "language" from the command line for these cases. language = None # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This pattern also affects html_static_path and html_extra_path . exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store', 'wiki'] # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # -- Options for HTML output ------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. # html_theme = 'sphinx_rtd_theme' html_logo = "images/AuptimizerWhiteLong.png" # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. # # html_theme_options = {} # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static', 'archive'] # Custom sidebar templates, must be a dictionary that maps document names # to template names. # # The default sidebars (for documents that don't match any pattern) are # defined by theme itself. Builtin themes are using these templates by # default: ``['localtoc.html', 'relations.html', 'sourcelink.html', # 'searchbox.html']``. # # html_sidebars = { '**': [ 'globaltoc.html','about.html','navigation.html','relations.html','searchbox.html',]} # -- Options for HTMLHelp output --------------------------------------------- # Output file base name for HTML help builder. htmlhelp_basename = 'Auptimizerdoc' # -- Options for LaTeX output ------------------------------------------------ latex_elements = { # The paper size ('letterpaper' or 'a4paper'). # # 'papersize': 'letterpaper', # The font size ('10pt', '11pt' or '12pt'). # # 'pointsize': '10pt', # Additional stuff for the LaTeX preamble. # # 'preamble': '', # Latex figure (float) alignment # # 'figure_align': 'htbp', } # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, # author, documentclass [howto, manual, or own class]). latex_documents = [ (master_doc, 'Auptimizer.tex', 'Auptimizer Documentation', 'LG Electronics Inc.', 'manual'), ] # -- Options for manual page output ------------------------------------------ # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ (master_doc, 'Auptimizer', 'Auptimizer Documentation', [author], 1) ] # -- Options for Texinfo output ---------------------------------------------- # Grouping the document tree into Texinfo files. List of tuples # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ (master_doc, 'Auptimizer', 'Auptimizer Documentation', author, 'Auptimizer', 'One line description of project.', 'Miscellaneous'), ] # Additional add_module_names = False modindex_common_prefix = [".",".aup.","aup."] # -- Extension configuration ------------------------------------------------- autodoc_inherit_docstrings = True html_theme_options = { #'canonical_url': '', #'analytics_id': 'UA-XXXXXXX-1', # Provided by Google in your dashboard 'logo_only': True, 'display_version': True, 'prev_next_buttons_location': 'bottom', 'style_external_links': False, # 'vcs_pageview_mode': '', #'style_nav_header_background': 'black', # Toc options 'collapse_navigation': True, 'sticky_navigation': True, 'navigation_depth': 4, 'includehidden': True, 'titles_only': False } ================================================ FILE: docs/dashboard.rst ================================================ Auptimizer Dashboard ==================== **Dashboard** is a powerful analytics tool that complements Auptimizer's core hyperparameter optimization (HPO) and model compression capabilities. Use the Dashboard to: - **Supercharge the analysis of your HPO or model compression experiments.** The dashboard provides insightful visualizations to help you analyze and contrast jobs, experiments, and optimization approaches. Get to the root of your experiment results by exploring the interplay of hyperparameters, the progression of intermediate results, and the efficacies of different HPO algorithms. - **Get a snapshot of the information that matters.** Use the dashboard to track experiment progress and get clutter-free insights on the ongoing and completed experiments. - **Run your experiments with ease.** Create, launch or stop an experiment or even set up a new Auptimizer environment using the dashboard. Launch the dashboard --------------------- There are two ways to launch the dashboard: 1. In terminal, use the ``dashboard`` command to visualize an exisiting Auptimizer experiment that is currently running or has been completed:: dashboard --port --path The ``port`` is the port number to show the dashboard on the local machine. The ``path`` should point to the database (default is `sqlite3.db`) for the corresponding experiment. 2. Use the ``launch_dashboard`` flag and the ``dashboard_port`` flag (optional) when starting an HPO or compression experiment:: python3 -m aup exp_config.json --launch_dashboard --dashboard_port python3 -m aup.compression exp_compression.json --launch_dashboard --dashboard_port If ``dashboard_port`` is not provided, a random port will be assigned. The local host address will be shown in the console when the experiment starts. **Important:** With this second approach, some dashboard functionalities, like starting a new experiment or restarting a past experiment, will be disabled. For full functionalities of the dashboard, please, use the first approach. Track experiment status and visualize results --------------------------------------------- Main page ~~~~~~~~~ When you open the dashboard in a web browser, you will first land on the main page with a list of completed and active experiments. This page presents the meta info of each experiment. You can check the experiment configuration via the ``CONFIG`` button, and access detailed results via the ``RESULTS`` button. Here, you can also stop or start an experiment. The page also offers a *tile view* layout that provides the same information as the *list view*. .. figure:: images/dashboard/main_page_list.png :alt: main_page_list Main Page List View .. figure:: images/dashboard/main_page_tile.png :alt: main_page_tile Main Page Tile View Experiment overview ~~~~~~~~~~~~~~~~~~~ This page provides a summary of an experiment's status and the best result and corresponding best hyperparameters so far. You can also select other experiments to view without going back to the main page. .. figure:: images/dashboard/overview.png :alt: overview Experiment Overview Job status ~~~~~~~~~~ The Job Status page shows the status, result, and hyperparameters of each job. Job details are presented in a scatter plot and a table. By default, the user-defined score used for HPO will be plotted for each job, while the best result over finished jobs is shown with a line. You can zoom in/out, check out details of each data point, and change the range of axes on the plot. Please refer to ``INTERACTION GUIDE`` for exploring the plot. If you return multiple metrics in an experiment, the other metrics can be shown on this plot as well. .. figure:: images/dashboard/job_status_plot.png :alt: job_status_plot Job Status Plot The job status table presents more detail for each job, including status, score, start/end time, all hyperparameters, etc. The table can be sorted by each column and exported as xls/xlsx/csv/txt file. .. figure:: images/dashboard/job_status_table.png :alt: job_status_table Job Status Table Hyperparameter interaction graph ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The hyperparameter interaction graph (HIG) is a parallel coordinate graph that is commonly used to show the interplay among different hyperparameters. Each vertical axis represents the range of one hyperparameter. You can interact with this graph by selecting certain hyperparameters, moving the vertical axes, highlighting certain ranges of one or multiple hyperparameters, etc. This HIG can provide more insights into the impact of each hyperparameter on the evaluation metric. .. figure:: images/dashboard/hig.png :alt: hig Hyperparameter Interaction Graph Intermediate results ~~~~~~~~~~~~~~~~~~~~ If you enable tracking intermediate results or use early stopping strategies, this page will show the intermediate results plotted over time for the selected jobs within one experiment. .. figure:: images/dashboard/intermediate_results.png :alt: intermediate_results Intermediate Results Multi-experiment comparison ~~~~~~~~~~~~~~~~~~~~~~~~~~~ You can view the HPO progress for multiple experiments on this page. The best result for each experiment can be plotted over jobs or time. This can be particularly useful if you want to compare different HPO strategies. .. figure:: images/dashboard/multi_experiment.png :alt: multi_experiment Multi-Experiment Comparison Create new experiment --------------------- In addition to visualizing the results of existing experiments, you can also use the dashboard to create and run new experiments. There are two ways to do so: 1. click on the ``CREATE NEW EXPERIMENT`` button on the main page, 2. click on the ``Create experiment from copy`` button located on each experiment entry on the main page. Both approaches will open the following page, where on the top you will need to specify your working directory for the new experiment, and in the left panel, you can input the experiment configuration in json format. If you choose ``Create experiment from copy``, the configuration json file of the selected experiment will be copied over to the left panel for further modification. The right panel is for validation purposes. You can check the argument values parsed from the json file in the right panel to make sure everything in the configuration json file is correct. .. figure:: images/dashboard/create_experiment.png :alt: create_experiment Create New Experiment Please review the ``INTERACTION GUIDE`` for a complete guide on setting up the experiment. After clicking on the ``CREATE EXPERIMENT`` button, this experiment will be shown on top of the experiment list on the main page. You can click on the ``START`` button to run the experiment. Reset Auptimizer environment ---------------------------- You can also reset the Auptimizer environment via the dashboard. After you click on the ``RESET AUPTIMIZER ENVIRONMENT`` button on the main page, a software wizard will lead you through the Auptimizer environment set-up process. **Important:** the existing Auptimizer environment in the same working directory will be overwritten, which will erase existing databases. We suggest the user back up their databases for finished experiments before resetting the Auptimizer environment in the same working directory. .. figure:: images/dashboard/setup_environment.png :alt: setup_environment Set Up Auptimizer Environment Compression experiments ----------------------- For **one-shot compression experiments**, as each experiment contains only one job and there are no hyperparameters to be tuned or visualized, the dashboard will have a few modifications: 1. The `Experiment Overview` page will only show the experiment configuration instead of hyperparameters. 2. The `Job status` page will only show one job. 3. The `Hyperparameter Interaction Graph` page will not show a graph. 4. The `Multi-Experiment Comparison` page will show one data point for the experiment. For **automatic compression experiments**, the dashboard will function in the same way as for the HPO experiments. Note that in compression experiments, the hyperparameter names may not be explicitly specified in the configuration file. For example, the target sparsity for multiple layers might be a single hyperparameter. However, on the dashboard, the hyperparameter names will be rephrased for better clarity. .. figure:: images/dashboard/overview_compression.png :alt: overview_compression Experiment Overview for Automatic Compression experiments .. figure:: images/dashboard/hig_compression.png :alt: hig_compression Hyperparameter Interaction Graph for Automatic Compression experiments Dark mode --------- All pages are also available in the *dark mode*. .. figure:: images/dashboard/dark_mode.png :alt: dark_mode Experiment Overview in Dark Mode ================================================ FILE: docs/demo.rst ================================================ Examples ======== An easy way to get started with **Auptimizer** is to modify the demo code in the ``Examples`` folder. +-----------------------------------------+-------------------------+-------------------------------------------------------------------------------+ | Example | Folder | Purpose | +=========================================+=========================+===============================================================================+ | Basic Demo | ``demo`` | Tutorial | +-----------------------------------------+-------------------------+-------------------------------------------------------------------------------+ | `2D function with different HPOs` | ``2dfunc_diff_opt`` | Show how to switch between different optimizers | +-----------------------------------------+-------------------------+-------------------------------------------------------------------------------+ | `2D function with different resources` | ``2dfunc_diff_res`` | Show how to switch between different resources | +-----------------------------------------+-------------------------+-------------------------------------------------------------------------------+ | `MNIST DNN` | ``hpo_mnist`` | Show HPO usage for DNN | +-----------------------------------------+-------------------------+-------------------------------------------------------------------------------+ | `Tensorflow flags` | ``tf_flags`` | Show how to integrate with Tensorflow Flags | +-----------------------------------------+-------------------------+-------------------------------------------------------------------------------+ | `Tensorflow Iris` | ``tf_iris_diff_opt`` | Show example on Iris data | +-----------------------------------------+-------------------------+-------------------------------------------------------------------------------+ | `NAS integration` | ``cai_nas`` | Show how to do NAS (uses a publicly available open-source NAS implementation) | +-----------------------------------------+-------------------------+-------------------------------------------------------------------------------+ | `Failure Control` | ``job_failure_control`` | Show job failure control cases | +-----------------------------------------+-------------------------+-------------------------------------------------------------------------------+ Auto convert ~~~~~~~~~~~~ In example ``2dfunc_diff_opt``, the ``experiment_auto.json`` shows how experiment configuration is managed. The user can use:: python -m aup.convert rosenbrock_origin.py experiment_auto.json rosenbrock to automatically convert the original file to the **Auptimizer** version. The output file name is defined in ``experiment_auto.json`` as ``script``. Manual modification ~~~~~~~~~~~~~~~~~~~ We also provide a modified training script in example ``2dfunc_diff_opt`` for users' reference. In ``rosenbrock_hpo.py``, we show how to manually convert the function for tuning with **Auptimizer**. For the end-user’s experiment, simply replacing the ``rosenbrock()`` function with their code is enough to use **Auptimizer** (**Need to return the score in that function**). Experiment configurations ~~~~~~~~~~~~~~~~~~~~~~~~~ Different ``experiment*.json`` files in multiple examples illustrate how to specify the configuration for different HPO algorithms. Most of them are identical. To set up a new experiment, please define the corresponding ``parameter_config`` in the ``JSON`` file. ================================================ FILE: docs/developer.rst ================================================ For Developers --------------------------- .. toctree:: :maxdepth: 1 developer_guide version errors ================================================ FILE: docs/developer_guide.rst ================================================ Developer Guide =============== For Machine Learning development -------------------------------- **Auptimizer** makes it a little easier to debug your experiment / job in the following ways. Set level of logging ~~~~~~~~~~~~~~~~~~~~ Logging can be activated using the :code:`--log` flag. (E.g. :code:`python -m aup --log `). The following logging levels are available: 1. **error** - everything stops the process 2. **warn** - using default values 3. **info** - progress update 4. **debug** - everything else Test in passive mode ~~~~~~~~~~~~~~~~~~~~ Change :code:`resource` in :code:`experiment.json` to :code:`"passive"` and then run:: python -m aup By doing so, **Auptimizer** will run in a passive mode where it interactively prints running script with its working path and asks for the returned value. You should run your script in a second terminal to see whether it finishes correctly. And then you can return that value back to **Auptimizer**\'s command line. For Auptimizer Software Development ----------------------------------- Environment ~~~~~~~~~~~ Either use :code:`virtualenv`:: virtualenv testenv source testenv/bin/activate pip install -r requirements.txt export PYTHONPATH=`pwd`:$PYTHONPATH or:: export PYTHONPATH=:$PYTHONPATH Unit testing ~~~~~~~~~~~~ If you make changes to the **Auptimizer** code, you can run the included unit tests to make sure that you didn't break anything. If it's the first time you are running these tests, do:: chmod u+x tests/EE/test_Job.py to set the correct permissions. You can then run the tests using:: python -m unittest ================================================ FILE: docs/dlconvert.rst ================================================ Converter --------- .. toctree:: :maxdepth: 1 dlconvert_readme dlconvert_example ================================================ FILE: docs/dlconvert_example.rst ================================================ Examples ======== We provide extensive examples to demonstrate Converter coverage and efficacy. Please check out `converter_examples `__ for detailed usages. We provide specific instructions for each example in the respective folder. Evaluating supported model architectures ---------------------------------------- `Tested_Models `__ - This example evaluates common model architecture coverage by the individual conversion functions. It also summarizes known issues. **We strongly recommend that users review this example first before running their conversion tasks.** Benchmarking quantized TensorFlow Lite models on an Android phone ----------------------------------------------------------------- `Convert_Benchmark `__ - This example demonstrates how to benchmark quantized TensorFlow Lite model performance (i.e. running time and memory usage) on an Android phone. Specifically, we converted models from a TensorFlow frozen protobuf file to a quantized .tflite file, and benchmarked their performance on an LG G6 mobile phone. This example shows that models converted and quantized with Converter match the performance of the official quantized models provided in the `TensorFlow repo `__. Profiling performances of converted models using Auptimizer Profiler -------------------------------------------------------------------- `Convert_Profiler `__ - This example demonstrates how to use Auptimizer-Profiler to profile TensorFlow or ONNX model performance on CPU. Performance benchmarking scripts are provided for TensorFlow and ONNX. ================================================ FILE: docs/dlconvert_readme.rst ================================================ How to use Converter ==================== **Converter** is a format conversion tool for machine learning models. It encapsulates best practices of individual Machine Learning model conversions under a single API. Converter allows you to: 1. **Make your models edge device-friendly.** Transform models in Checkpoint (.meta), Keras (.h5/.hdf5), SavedModel (directory name), Protobuf (.pb), and Pytorch (.pt) into edge-optimized ONNX (.onnx) and TensorFlow Lite (.tflite) formats. 2. **Enhance model interoperability through standardization.** Boost model compatibility with countless compilers, inference engines, and SoCs by converting it into the industry-standard ONNX format. 3. **Get a smaller and faster model.** Make your model more compact and efficient by leveraging Quantization_ built into the TensorFlow Lite converter. The following source model formats (and file extensions) can be converted to **TensorFlow Lite (.tflite)** and **ONNX (.onnx)**: - **Checkpoint (.meta)** - **Keras (.h5/.hdf5)** - **SavedModel (directory name)** - **Protobuf (.pb)** - **PyTorch (.pt)** Additionally, Converter supports conversions: - from Checkpoint to Protobuf - from Keras to Protobuf - from PyTorch to Keras TensorFlow 1.15, 2.1 - 2.3 and PyTorch 1.6.0 are tested. The conversion from SavedModel to TensorFlow Lite/ONNX requires TensorFlow version 2.x. Other conversions can be run using both TensorFlow 1.15 or 2.x. Install ------- *Note:* Converter leverages conversion libraries that have different version requirements (mainly for TensorFlow). It is highly recommended to use Docker or Python's virtualenv to isolate your environment. 1. Install Auptimizer 2. Install additional libraries for using Converter: If you would like to convert from Checkpoint/Keras/Protobuf/SavedModel model formats, please run: ``pip install keras2onnx tf2onnx``. If you would like to convert from PyTorch format, please run:``pip install pytorch2keras keras2onnx tf2onnx`` Usage ----- 1. **Recommended:** Check whether your model architecture is supported for the target conversion `here `__. 2. **Important:** Ensure that you can load and run your model, otherwise you will not be able to convert it successfully. 3. Specify conversion parameters. There are certain parameters to specify for each type of conversion. These parameters need to be written in a configuration *.json* file. You can list configurations for multiple model conversion tasks in a single .json file to execute model conversions sequentially. An example configuration for converting a VGG16 Keras model to ONNX is as follows:: { "convert_from":"test_models/VGG16.h5", "convert_to":"converted_models/VGG16_keras.onnx", } 4. After preparing the configuration .json file, run the following command to start the conversions:: python -m aup.dlconvert -f Alternatively, you can also write the configuration in a *json dictionary* format, and run :: python -m aup.dlconvert -d Parameters ---------- For **all** conversions, the two required parameters are **convert_from** and **convert_to**. For each specific conversion, there can be additional parameters needed. These parameters are usually dependent on the source- and target model formats, and are summarized in the following chart: +------------+----------------+--------------+-------------+--------------+-----------------+-------------+------------+------------+----------------------+ | | From || To || quantization|| input_nodes|| output_nodes| | network_script|| input_shape|| onnx_opset|| frozen || savedmodel_tag | | | | | | | | network_name | | | || savedmodel_signature| +============+================+==============+=============+==============+=================+=============+============+============+======================+ | Keras |TensorFlow Lite | Optional | | | | | | | | +------------+----------------+--------------+-------------+--------------+-----------------+-------------+------------+------------+----------------------+ | SavedModel |TensorFlow Lite | Optional | | | | | | | | +------------+----------------+--------------+-------------+--------------+-----------------+-------------+------------+------------+----------------------+ | Checkpoint |TensorFlow Lite | Optional | Required |Required | | Optional | | | | +------------+----------------+--------------+-------------+--------------+-----------------+-------------+------------+------------+----------------------+ | Protobuf |TensorFlow Lite | Optional |Required | Required | | Optional | | | | +------------+----------------+--------------+-------------+--------------+-----------------+-------------+------------+------------+----------------------+ | PyTorch |TensorFlow Lite | Optional | | |Required |Required | | | | +------------+----------------+--------------+-------------+--------------+-----------------+-------------+------------+------------+----------------------+ | Keras |ONNX | | | | | |Optional | | | +------------+----------------+--------------+-------------+--------------+-----------------+-------------+------------+------------+----------------------+ | SavedModel |ONNX | | | | | |Optional | | Optional | +------------+----------------+--------------+-------------+--------------+-----------------+-------------+------------+------------+----------------------+ | Checkpoint |ONNX | |Required | Required | | Optional |Optional | | | +------------+----------------+--------------+-------------+--------------+-----------------+-------------+------------+------------+----------------------+ | Protobuf |ONNX | |Required | Required | | Optional |Optional | | | +------------+----------------+--------------+-------------+--------------+-----------------+-------------+------------+------------+----------------------+ | PyTorch |ONNX | | | | Required |Required | Optional | | | +------------+----------------+--------------+-------------+--------------+-----------------+-------------+------------+------------+----------------------+ | Keras |Protobuf | | | Required | | | |Optional | | +------------+----------------+--------------+-------------+--------------+-----------------+-------------+------------+------------+----------------------+ | Checkpoint |Protobuf | | | Required | | | |Optional | | +------------+----------------+--------------+-------------+--------------+-----------------+-------------+------------+------------+----------------------+ | PyTorch |Keras | | | | Required | Required | | | | +------------+----------------+--------------+-------------+--------------+-----------------+-------------+------------+------------+----------------------+ ``convert_from`` Required for **all** conversions. Input model file with one of the supported extensions: `.meta`, `.h5/.hdf5`, `.pb`, `.pt`, or a directory path for SavedModel. ``convert_to`` Required for **all** conversions. Output model name with one of the supported extensions: `.tflite`, `.onnx`, `.pb`, or `.h5/.hdf5`. .. _Quantization: ``quantization`` Parameter *quantization* includes a group of parameters used for enabling quantization while converting to TensorFlow Lite format. Post-training quantization is a built-in functionality of the TensorFlow Lite Converter. The Converter API supports calling this functionality. To specify quantization parameters, write in the configuration .json file:: { "convert_from":"test_models/VGG16.h5", "convert_to":"converted_models/VGG16_keras.tflite", "quantization": { "optimization":"default", "type":"float16", "opsset":"tf", "load":"repdata.py" } } More detail on post-training quantization capabilities and parameter setting can be found in `Post-training quantization `__ ``optimization`` Enable/disable quantization for conversion. Choose from `none` or `default`. Default is `none`. When using `none`, no quantization will be performed and the converted TensorFlow Lite model will be in float32 format. When using `default`, best practices will be applied for quantization with the other given information via `--type`, `--opsset`, and `--load`. ``type`` Target data type for constant values of the converted TensorFlow Lite model. Choose from `float32`, `float16`, `int8`,and `uint8`. Default is `float32`. ``opsset`` Set of OpsSet options supported by the target device (experimental). Choose from 1. `tflite`, which refers to `[tensorflow.lite.OpsSet.TFLITE_BUILTINS]` 2. `tf`, which refers to `[tensorflow.lite.OpsSet.SELECT_TF_OPS, tensorflow.lite.OpsSet.TFLITE_BUILTINS]` 3. `int8`, which refers to `[tensorflow.lite.OpsSet.TFLITE_BUILTINS_INT8]` Default is `tflite`. ``load`` A python script that implements a data generation function that generates representative data for quantizing variable data, such as feature maps. The function should be named `get_dataset`, and it should be a generator function that yields large enough dataset to represent typical data values. Check `representative data `__ for example. ``input_nodes`` Model input names (separated by comma), which can be found with `summarize graph tool `__. Those names typically end with `:0`, for example `input:0`. ``output_nodes`` Model output names (separated by comma). which can be found with `summarize graph tool `__. Those names typically end with `:0`, for example `output/Softmax:0`. ``input_shape`` If the `input_nodes` in *protobuf* or *checkpoint* has unspecified shapes other than the 1st dimension, the `input_shape` needs to be specified by a comma separated string, for example `1,3,224,224`. For multiple `input_nodes`, use `;` to separate their corresponding `input_shape`. The shape of `input_nodes` can also be checked using the `summarize graph tool `__, where unspecified shape is usually represented by **-1**. ``network_script`` Path to a Python script that contains the model definition of the PyTorch model to be converted. ``network_name`` Class name of the model to be converted, defined in the script specified in `network_script` . ``onnx_opset`` Opset version to use for ONNX. Default is `10`. The ONNX opset version updates can be found in `ONNX release notes `__. ``frozen`` Flag to control whether to create a frozen Protobuf. Default is `True`. ``savedmodel_tag`` Tag to use for SavedModel. Default is `serve`. The SavedModel to be converted *cannot have an emtpy tag*. ``savedmodel_signature`` Signature to use for SavedModel within the specified `--tag` value. Default is `serving_default`. The SavedModel to be converted *cannot have an emtpy signature*. ``skip`` This parameter is for converting selected models when there are multiple conversion configurations in the json file. When set to `True`, the model will be skipped and not be converted. Default is `False`. Known Issues ------------ 1. Limited support on certain model architectures 2. Quantization for TensorFlow Lite conversion can lead to `significant accuracy loss `__ ================================================ FILE: docs/early_stop.rst ================================================ Early Stopping ============== Early stopping (ES) strategies provide increased efficiency for HPO algorithms by reducing the computational cost. This is done by detecting the poor performance of certain hyperparameter settings early in the training and stopping the corresponding jobs. As a result, better hyperparameter configurations can be found sooner with reduced compute resources. ES is especially useful in the context of deep learning where the search space grows exponentially over increasing hyperparameters. ES strategies provide users with advanced tools to aggressively explore larger search spaces over limited resources, with tradeoffs between HPO speed and final model performance. Auptimizer provides 4 popular ES strategies namely – Bandit, Median, Truncation and Curve-Fitting, which can be applied to all Proposers. The Bandit, Median and Curve-Fitting strategies are inspired by the following papers, while the Truncation strategy is provided to be used as a benchmark for other ES strategies: =============== ============================================================================================================================================================================================================== Strategy Algorithm =============== ============================================================================================================================================================================================================== Bandit `HYPERBAND: Bandit-Based Configuration Evaluation For Hyperparameter Optimization `__ Median `Google Vizier: A Service for Black-Box Optimization `__ Curve-fitting `Speeding up Automatic Hyperparameter Optimization of Deep Neural Networks by Extrapolation of Learning Curves `__ =============== ============================================================================================================================================================================================================== Usage @@@@@ The feature can be used by adding the following parameter to the experiment configuration file:: "resource_args": { "early_stop": { "aup_policy": "bandit", "aup_policy_steps": 5 ... } } + ``aup_policy``: the early stopping strategy in ["bandit", "median", "truncation" or "curve_fitting"]. + ``aup_policy_steps``: integer, the interval of epochs, by which the intermediate results are compared among jobs and the ES policy is applied. ``aup_policy`` and ``aup_policy_steps`` are the two parameters required for all ES strategies. There are also strategy-specifc parameters, which will be introduced below. In order to track the intermediate results to be used in ES, ``aup.print_result`` should be called from the user script in the training loop, e.g.:: def main(*args, **kwargs): # model and data preparation code for epoch in range(10): # training code for one epoch aup.print_result(res) Examples can be found in Auptimizer Gibhub repository at ``Examples/early_stopping/quad_equation_min`` and ``Examples/early_stopping/mnist_keras``. Additionally, when using ES, the ``track_intermediate_results`` feature will be triggerd automatically. This means that the resulting intermediate results will be stored in the database in the ``intermediate_results`` table and can be visualized via dashboard. This also means that the presence of ``track_intermediate_results`` in the experiment configuration file with any value, even false, will be ignored. An optional parameter of ``warmup`` can also be used for all ES strategies (default is 0). ``warmup`` defines the number of initial epochs that should finish before the ES strategy starts to apply. Strategies @@@@@@@@@@ Bandit ~~~~~~~ The bandit policy stops jobs that have a result lower than a specified percentage of the global best result of all jobs. This percentage is defined by the parameter ``bandit_factor``. The result to be compared among jobs is the best result obtained by the job up to the same epoch. Example:: "resource_args": { "early_stop": { "aup_policy": "bandit", "aup_policy_steps": 10, "bandit_factor": 0.5 } } In this example, we stop jobs with the best result which is worse than 0.5 of the global best result. This comparison and job cut-off is carried out every 10 epochs. Default value for ``bandit_factor`` is 0.5, with higher values indicating more aggressive ES strategy. Truncation ~~~~~~~~~~ The truncation policy cuts a fraction of the worst performing jobs, based on the jobs' best result obtained up to the same epoch. The fraction is specified by the parameter ``truncation_percentage``. Example:: "resource_args": { "early_stop": { "aup_policy": "truncation", "aup_policy_steps": 10, "truncation_percentage": 0.6 } } This example stops 60% of the jobs every 10 epochs. Default value for ``truncation_percentage`` is 0.3, with higher values indicating more aggressive ES strategy. Median ~~~~~~~ The median policy stops the jobs that yield worse results than the median of the running average of results of all jobs up to the same epoch. Example:: "resource_args": { "early_stop": { "aup_policy": "median", "aup_policy_steps": 10 } } Curve Fitting ~~~~~~~~~~~~~~ The curve fitting policy attempts to fit each job's history to a weighted combination of multiple, pre-selected functions, in order to predict its final (best) value. It then stops jobs that fail to attain at least a threshold of the best overall result across all jobs. The implementation is adapted from `NNI `__. **Caveats:** the biggest downside to curve fitting is that it is usually time-consuming. This makes curve fitting less applicable for small datasets, or tasks that train quickly. In order to address this issue, users should always provide a timeout for the maximum time allowed for each curve fitting process (default: 30s). After the specified time has run out, the curve-fitting process will be stopped and the last result obtained will be used. The longer the timeout, the better the results. Example:: "resource_args": { "early_stop": { "aup_policy": "curve_fitting", "aup_policy_steps": 10, "curve_fitting_threshold": 0.95, "curve_fitting_timeout": 60 } } Example for scripts that use ``aup.print_result`` for result reporting instead:: "resource_args": { "early_stop": { "aup_policy": "curve_fitting", "aup_policy_steps": 10, "curve_fitting_threshold": 0.95, "curve_fitting_timeout": 60, "curve_fitting_max_iters": 100 } } Default values for ``curve_fitting_threshold``, ``curve_fitting_timeout`` are 0.95 and 60. ``curve_fitting_max_iters`` defaults to None. ================================================ FILE: docs/edge.rst ================================================ Edge Deployment Tools --------------------- .. toctree:: :maxdepth: 1 profiler.rst dlconvert.rst ================================================ FILE: docs/environment.rst ================================================ Set up environment ================== **Auptimizer** needs to be initialized properly before use, either through `python -m aup.setup` for interactive setup or `python -m aup.setup ` with the specified configuration file. \ **We recommend users use the interactive setup when using auptimizer for the first time**. The configuration file is used to set up **all** environment-related information for **Auptimizer**, such as number of CPUs, GPUs, or remote servers. All your experiments and jobs will use the configuration. Configuration Options --------------------- Two templates can be found at :code:`Examples/2dfunc_diff_res/*.ini`. The detailed options are as follows. Environment Template File (\*.ini) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ For a normal workstation, an example template is at :code:`Examples/2dfunc_diff_res/env_user_template.ini` for direct use. The command below will create a user environment profile (at `~/.aup/env.ini`) for quick-start:: python -m aup.setup ./Examples/2dfunc_diff_res/env_user_template.ini or to create a local environment folder for a particular experiment (in working folder `./.aup/env.ini`), use:: python -m aup.setup ./Examples/2dfunc_diff_res/env_local_template.ini The content of the template is the following: +------------------+-----------------------------+--------------------------------------+ | Name | Purpose | Default value | +==================+=============================+======================================+ | Auptimizer_PATH | configuration folder for | ``.aup`` | | | Auptimizer, containing this | | | | ``env.ini`` file and | | | | database file | | +------------------+-----------------------------+--------------------------------------+ | SQL_ENGINE | database engine, currently | ``sqlite`` | | | only supports sqlite | | +------------------+-----------------------------+--------------------------------------+ | TMP_FOLDER | temp folder for logging / | ``/tmp/aup`` or ``./aup_tmp`` | | | scratch | | +------------------+-----------------------------+--------------------------------------+ Available resources for model training are specified by additional arguments, or via interactive questions. ========= ======== ===================================================================================================== Argument Default Details ========= ======== ===================================================================================================== --aws none a file containing ``user@instance-id``, or a comma-separated list --cpu 4 Number of processors to use on a single machine. --gpu none a file containing the GPU id number on a machine, or a comma-separated list. --node none a file containing ``user@IP`` for training, or a comma-separated list ========= ======== ===================================================================================================== AWS Mapping Configuration (--aws) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ **Auptimizer** has the capability to start and stop AWS instances and assign jobs dynamically to the instances depending on availability. To allow fragmented resource utilization within the AWS instance, edit the resources available to **Auptimizer** when installing it on the remote instance. 1. To use the Auptimizer’s AWS option, install and configure `boto3 `_ and ensure your AWS instances can be accessed with boto3. Then proceed to `install configure AWS CLI `_. 2. To run jobs on multiple AWS instances, we need to specify an AWS mapping file with `--aws `. Similar to the above-mentioned node case, `` is a text file containing the username, AWS instance id and the SSH key file (.pem file). The format of the file must be one of the following: + `@ ` + `@` + `@:port` + `@:port ` with each instance on a separate line, or if you setup the configuration interactively, you can provide them as comma-separated values. The ``username`` is the one used to log into the instance. The ``instance_id`` can be the EC2 instance ID, IP, or public DNS. Refer to ``Examples/2dfunc_diff_res/aws.txt`` for an example. 3. Either you need to install **Auptimizer** on every node, or you need to copy ``/src/aup.py`` to your remote working directory. 4. Finally, the environment of the instances might be *sourced* correspondingly for environment variables, e.g. ``PATH``. For instance, if you want to activate virtualenv on the instance before job running, use `prescript` in experiment.json (See :ref:`AWSRuntimeAnchor` for more detail). CPU Configuration (``--cpu``) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ We can specify how many parallel jobs to be run on CPUs. The current implementation does **NOT** provide real isolation of hardware. GPU Mapping Configuration (``--gpu``) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ To run jobs on multiple GPUs, we need to specify a GPU mapping file with ``--gpu ``. This file is a text file containing the IDs of GPU cards to use (in ``CUDA_VISIBLE_DEVICES``). Specifically, each line contains a GPU id as an integer. + For single GPU without parallel execution, use ``Examples/2dfunc_diff_res/plainGPU.txt``. + Assign multiple jobs to run on the same device by assigning multiple resource IDs to the same GPU id, i.e. ``0,0``). See ``Examples/2dfunc_diff_res/singleGPU.txt``. + Assign multiple jobs on different GPUs on a local machine, i.e.:: 0 1 See ``Examples/2dfunc_diff_res/twoGPUs.txt``. Node Mapping Configuration (``--node``) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Similar to GPU mapping, users can specify the computing nodes to be used with ``--node `` during setup A node configuration file contains each node per line (e.g., ``username@hostname``.) An SSH connection without password authentication is required (use ``ssh-keygen`` to create keyless access). The format of the file must be one of the followings: + `@ ` + `@` + `@:port` + `@:port ` with each instance on a separate line, or if you setup the configuration interactively, you can provide them as comma-separated values. For remote execution, **Auptimizer** will not copy all job-related files to the remote machine. User should make sure the job script can run on the remote machine first. Refer to ``Examples/2dfunc_diff_res/node.txt`` for an example. Either you need to install **Auptimizer** on every node, or you need to copy ``/src/aup.py`` to your remote working directory. Optional arguments ~~~~~~~~~~~~~~~~~~ + ``--overwrite`` - overwrite existing ``.aup`` folder. Otherwise, do nothing + ``--log`` - choose log level from ``[debug,info,warn,error]`` + ``--user`` - not used. It specifies the user ownership for experiments. Examples ~~~~~~~~ Please refer to ``Examples/2dfunc_diff_res/README.md`` for examples of how to use different resources with **Auptimizer**. Database Setup -------------- During the setup, **Auptimizer** creates a SQL database to track the jobs and experiments (currently only ``sqlite`` is supported). Typically, users do not need to manually access it. Here we provide a little more detail for users to retrieve additional records for their analyses. The database schema is described below: .. figure:: images/schema.png :alt: SQL Schema SQL Schema Refresh tables ~~~~~~~~~~~~~~ To (re)create the database, users just need to follow the command printed after ``python -m aup.setup``:: python -m aup.setupdb .aup/env.ini This will parse the ``.aup/env.ini`` file to create the new database. Refresh tables with additional modification ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The following argument can be customized by changing it in the headings or from the command line to overwrite the ``aup.setup`` configuration: +-----------------------+-----------------------+-----------------------+ | Name | Purpose | Default value | +=======================+=======================+=======================+ | --cpu | Number of CPUs to be | 4 | | | used. | | +-----------------------+-----------------------+-----------------------+ | --name | Name for resources | “localhost” , | | | | Currently not in use. | +-----------------------+-----------------------+-----------------------+ | --user | username for | Currently not in use. | | | experiment tracking | | | | and control | | +-----------------------+-----------------------+-----------------------+ For example, if user wants to set maximum 2 jobs to be run on CPU in parallel, under name ``test``:: python -m aup.setupdb --cpus 2 --user test Then you can see the allocated ``resource`` table as:: echo "select * from resource;" | sqlite3 .aup/sqlite3.db 1|test|gpu|free 2|test|cpu|free 3|test|cpu|free 4|test|passive|free Reset ----- To reset the history of **Auptimizer** experiments, there are two levels. Full reset ~~~~~~~~~~ Removing :code:`.aup` folder will completely remove all history saved by **Auptimizer** as well as any configurations. Using ``python -m aup.setup --overwrite `` will overwrite the existing folder and remove only the history. Database reset ~~~~~~~~~~~~~~ Currently, **Auptimizer** experiments and jobs history is saved in ``.aup/sqlite.db`` database. There are two levels to reset the database itself. Reset all @@@@@@@@@ We can also just refresh the database for the history by resetting the database file. Use (locally in working folder):: python -m aup.setupdb .aup/env.ini or (user account-wise):: python -m aup.setupdb ~/.aup/env.ini Reset job status @@@@@@@@@@@@@@@@ Sometimes, when **Auptimizer** accidentally exits, the resources are not marked as free in the database and will prevent you from using them within **Auptimizer**. In such scenarios, you might want to reset the status of resources by:: python -m aup.setupdb.reset env.ini ================================================ FILE: docs/errors.rst ================================================ Errors and Solutions ==================== Setup stage ----------- + ``Failed to load environment template %s using ConfigParser`` Check the input ``env.ini`` template for potential mistakes or typos. + ``SQL engine XXX is not implemented`` Currently only ``sqlite`` is supported. + ``Cant' find XXX file for resource XXX`` The resource file is not found for Auptimizer + ``Error while finding module specification for XXX`` XXX can be either ``aup.init`` or ``aup.setup``. Double check whether you put the `aup.py` file for remote execution in your PYTHONPATH instead of the `aup` package. Run Experiment -------------- + Sometimes, when **Auptimizer** accidentally exits, the resources are not marked as free in the database and will prevent you from using them within **Auptimizer**. In such scenarios, you might want to reset the status of resources by:: python -m aup.setupdb.reset env.ini ================================================ FILE: docs/experiment.rst ================================================ Create and run a new experiment =============================== **Auptimizer** only needs a modified training script and an experiment configuration file (.json) to run a new experiment. 1. Create the ``experiment.json`` file to specify the experiment configuration and hyperparameters. Using ``python -m aup.init`` will guide you interactively. This json file structure is generally the same for most algorithms with minor modifications. See :doc:`algorithm` for more details. 2. Modify your training script. We provide three approaches for modifying the training script: + `Manual conversion <#manual-modification-of-training-code>`_; + `Python decorator <#code-conversion-with-decorator>`_; + `Auto conversion for script (beta) <#auto-code-conversion>`_. 3. Your experiment is now ready to run via ``python -m aup experiment.json``. For more details, see `Run experiment`_. Terminology ----------- For data science applications, the **user** (AI scientist/engineer) solves a given data mining problem with a specified machine learning model. A script (**code**) is written and some hyperparameters are identified to be explored during model training. Typically, the user carries out an **experiment** to examine a range of hyperparameter combinations and measures the **performance** of the model on a hold-out dataset. For example, testing a deep learning model by exploring the learning rate between 0 and 1, and dropout between 0.4 and 0.6. the performance is measured by accuracy. Each individual training process for a given selection of hyperparameters (e.g., learning rate = 0.1, dropout = 0.5) is called a **job**. All jobs run on an assigned computational **resource**, e.g. CPU, GPU. And after all jobs are finished, the user retrieves the best model from the training history for further analysis or application. Manual modification of training code ------------------------------------ If you plan to change your training script manually, the general flow of the conversion process is as follows: a. parse the configuration file (first argument from command line, i.e. ``sys.argv[1]``) using ``aup.BasicConfig.load(sys.argv[1])``. And use the hyperparameters parsed from the ``BasicConfig`` in your code, such as ``config.param_name`` or ``config['param_name']``, where ``param_name`` need to be consistent with the one used in ``experiment.json``. b. to report the result by using ``aup.print_result``. c. Add Shebang line ``#!/usr/bin/env python`` and make the script executable (``chmod u+x script.py``). Code conversion with decorator ------------------------------ For better control, you can use `aup_args` or `aup_flags` to decorate your code. The examples are in below: .. figure:: images/comparison.png :alt: Code comparison Example of using decorator for code conversion. Auto code conversion -------------------- If your training function takes all hyperparameters as input, then **Auptimizer** converts code to run if the training script is well defined as follows:: python -m aup.convert ') return output # Read in the chooser from file. Returns True only on success def _read_only(self): if os.path.exists(self.state_pkl): fh = open(self.state_pkl, 'rb') state = pickle.load(fh) fh.close() self.D = state['dims'] self.ls = state['ls'] self.amp2 = state['amp2'] self.noise = state['noise'] self.mean = state['mean'] self.hyper_samples = state['hyper_samples'] self.needs_burnin = False return True return False def _real_init(self, dims, values): self.locker.lock_wait(self.state_pkl) self.randomstate = npr.get_state() if os.path.exists(self.state_pkl): fh = open(self.state_pkl, 'r') state = pickle.load(fh) fh.close() self.D = state['dims'] self.ls = state['ls'] self.amp2 = state['amp2'] self.noise = state['noise'] self.mean = state['mean'] self.hyper_samples = state['hyper_samples'] self.needs_burnin = False else: # Input dimensionality. self.D = dims # Initial length scales. self.ls = np.ones(self.D) # Initial amplitude. self.amp2 = np.std(values)+1e-4 # Initial observation noise. self.noise = 1e-3 # Initial mean. self.mean = np.mean(values) # Save hyperparameter samples self.hyper_samples.append((self.mean, self.noise, self.amp2, self.ls)) self.locker.unlock(self.state_pkl) def cov(self, x1, x2=None): if x2 is None: return self.amp2 * (self.cov_func(self.ls, x1, None) + 1e-6*np.eye(x1.shape[0])) else: return self.amp2 * self.cov_func(self.ls, x1, x2) # Given a set of completed 'experiments' in the unit hypercube with # corresponding objective 'values', pick from the next experiment to # run according to the acquisition function. def next(self, grid, values, durations, candidates, pending, complete): # Don't bother using fancy GP stuff at first. if complete.shape[0] < 2: return int(candidates[0]) # Perform the real initialization. if self.D == -1: self._real_init(grid.shape[1], values[complete]) # Grab out the relevant sets. comp = grid[complete,:] cand = grid[candidates,:] pend = grid[pending,:] vals = values[complete] numcand = cand.shape[0] # Spray a set of candidates around the min so far best_comp = np.argmin(vals) cand2 = np.vstack((np.random.randn(10,comp.shape[1])*0.001 + comp[best_comp,:], cand)) if self.mcmc_iters > 0: # Possibly burn in. if self.needs_burnin: for mcmc_iter in range(self.burnin): self.sample_hypers(comp, vals) log("BURN %d/%d] mean: %.2f amp: %.2f " "noise: %.4f min_ls: %.4f max_ls: %.4f" % (mcmc_iter+1, self.burnin, self.mean, np.sqrt(self.amp2), self.noise, np.min(self.ls), np.max(self.ls))) self.needs_burnin = False # Sample from hyperparameters. # Adjust the candidates to hit ei peaks self.hyper_samples = [] for mcmc_iter in range(self.mcmc_iters): self.sample_hypers(comp, vals) log("%d/%d] mean: %.2f amp: %.2f noise: %.4f " "min_ls: %.4f max_ls: %.4f" % (mcmc_iter+1, self.mcmc_iters, self.mean, np.sqrt(self.amp2), self.noise, np.min(self.ls), np.max(self.ls))) self.dump_hypers() b = []# optimization bounds for i in range(0, cand.shape[1]): b.append((0, 1)) overall_ei = self.ei_over_hypers(comp,pend,cand2,vals) inds = np.argsort(np.mean(overall_ei,axis=1))[-self.grid_subset:] cand2 = cand2[inds,:] # Optimize each point in parallel if self.use_multiprocessing: pool = multiprocessing.Pool(self.grid_subset) results = [pool.apply_async(optimize_pt,args=( c,b,comp,pend,vals,copy.copy(self))) for c in cand2] for res in results: cand = np.vstack((cand, res.get(1e8))) pool.close() else: # This is old code to optimize each point in parallel. for i in range(0, cand2.shape[0]): log("Optimizing candidate %d/%d" % (i+1, cand2.shape[0])) #self.check_grad_ei(cand2[i,:].flatten(), comp, pend, vals) ret = spo.fmin_l_bfgs_b(self.grad_optimize_ei_over_hypers, cand2[i,:].flatten(), args=(comp,pend,vals), bounds=b, disp=0) cand2[i,:] = ret[0] cand = np.vstack((cand, cand2)) overall_ei = self.ei_over_hypers(comp,pend,cand,vals) best_cand = np.argmax(np.mean(overall_ei, axis=1)) if (best_cand >= numcand): return (int(numcand), cand[best_cand,:]) return int(candidates[best_cand]) else: # Optimize hyperparameters self.optimize_hypers(comp, vals) log("mean: %.2f amp: %.2f noise: %.4f " "min_ls: %.4f max_ls: %.4f" % (self.mean, np.sqrt(self.amp2), self.noise, np.min(self.ls), np.max(self.ls))) # Optimize over EI b = []# optimization bounds for i in range(0, cand.shape[1]): b.append((0, 1)) for i in range(0, cand2.shape[0]): ret = spo.fmin_l_bfgs_b(self.grad_optimize_ei, cand2[i,:].flatten(), args=(comp,vals,True), bounds=b, disp=0) cand2[i,:] = ret[0] cand = np.vstack((cand, cand2)) ei = self.compute_ei(comp, pend, cand, vals) best_cand = np.argmax(ei) if (best_cand >= numcand): return (int(numcand), cand[best_cand,:]) return int(candidates[best_cand]) # Compute EI over hyperparameter samples def ei_over_hypers(self,comp,pend,cand,vals): overall_ei = np.zeros((cand.shape[0], self.mcmc_iters)) for mcmc_iter in range(self.mcmc_iters): hyper = self.hyper_samples[mcmc_iter] self.mean = hyper[0] self.noise = hyper[1] self.amp2 = hyper[2] self.ls = hyper[3] overall_ei[:,mcmc_iter] = self.compute_ei(comp, pend, cand, vals) return overall_ei def check_grad_ei(self, cand, comp, pend, vals): (ei,dx1) = self.grad_optimize_ei_over_hypers(cand, comp, pend, vals) dx2 = dx1*0 idx = np.zeros(cand.shape[0]) for i in range(0, cand.shape[0]): idx[i] = 1e-6 (ei1,tmp) = self.grad_optimize_ei_over_hypers(cand + idx, comp, pend, vals) (ei2,tmp) = self.grad_optimize_ei_over_hypers(cand - idx, comp, pend, vals) dx2[i] = (ei - ei2)/(2*1e-6) idx[i] = 0 print('computed grads', dx1) print('finite diffs', dx2) print(dx1/dx2) print(np.sum((dx1 - dx2)**2)) time.sleep(2) # Adjust points by optimizing EI over a set of hyperparameter samples def grad_optimize_ei_over_hypers(self, cand, comp, pend, vals, compute_grad=True): summed_ei = 0 summed_grad_ei = np.zeros(cand.shape).flatten() ls = self.ls.copy() amp2 = self.amp2 mean = self.mean noise = self.noise for hyper in self.hyper_samples: self.mean = hyper[0] self.noise = hyper[1] self.amp2 = hyper[2] self.ls = hyper[3] if compute_grad: (ei,g_ei) = self.grad_optimize_ei(cand,comp,pend,vals,compute_grad) summed_grad_ei = summed_grad_ei + g_ei else: ei = self.grad_optimize_ei(cand,comp,pend,vals,compute_grad) summed_ei += ei self.mean = mean self.amp2 = amp2 self.noise = noise self.ls = ls.copy() if compute_grad: return (summed_ei, summed_grad_ei) else: return summed_ei # Adjust points based on optimizing their ei def grad_optimize_ei(self, cand, comp, pend, vals, compute_grad=True): if pend.shape[0] == 0: best = np.min(vals) cand = np.reshape(cand, (-1, comp.shape[1])) # The primary covariances for prediction. comp_cov = self.cov(comp) cand_cross = self.cov(comp, cand) # Compute the required Cholesky. obsv_cov = comp_cov + self.noise*np.eye(comp.shape[0]) obsv_chol = spla.cholesky(obsv_cov, lower=True) cov_grad_func = getattr(gp, 'grad_' + self.cov_func.__name__) cand_cross_grad = cov_grad_func(self.ls, comp, cand) # Predictive things. # Solve the linear systems. alpha = spla.cho_solve((obsv_chol, True), vals - self.mean) beta = spla.solve_triangular(obsv_chol, cand_cross, lower=True) # Predict the marginal means and variances at candidates. func_m = np.dot(cand_cross.T, alpha) + self.mean func_v = self.amp2*(1+1e-6) - np.sum(beta**2, axis=0) # Expected improvement func_s = np.sqrt(func_v) u = (best - func_m) / func_s ncdf = sps.norm.cdf(u) npdf = sps.norm.pdf(u) ei = func_s*( u*ncdf + npdf) if not compute_grad: return ei # Gradients of ei w.r.t. mean and variance g_ei_m = -ncdf g_ei_s2 = 0.5*npdf / func_s # Apply covariance function grad_cross = np.squeeze(cand_cross_grad) grad_xp_m = np.dot(alpha.transpose(),grad_cross) grad_xp_v = np.dot(-2*spla.cho_solve( (obsv_chol, True),cand_cross).transpose(), grad_cross) grad_xp = 0.5*self.amp2*(grad_xp_m*g_ei_m + grad_xp_v*g_ei_s2) ei = -np.sum(ei) return ei, grad_xp.flatten() else: # If there are pending experiments, fantasize their outcomes. cand = np.reshape(cand, (-1, comp.shape[1])) # Create a composite vector of complete and pending. comp_pend = np.concatenate((comp, pend)) # Compute the covariance and Cholesky decomposition. comp_pend_cov = (self.cov(comp_pend) + self.noise*np.eye(comp_pend.shape[0])) comp_pend_chol = spla.cholesky(comp_pend_cov, lower=True) # Compute submatrices. pend_cross = self.cov(comp, pend) pend_kappa = self.cov(pend) # Use the sub-Cholesky. obsv_chol = comp_pend_chol[:comp.shape[0],:comp.shape[0]] # Solve the linear systems. alpha = spla.cho_solve((obsv_chol, True), vals - self.mean) beta = spla.cho_solve((obsv_chol, True), pend_cross) # Finding predictive means and variances. pend_m = np.dot(pend_cross.T, alpha) + self.mean pend_K = pend_kappa - np.dot(pend_cross.T, beta) # Take the Cholesky of the predictive covariance. pend_chol = spla.cholesky(pend_K, lower=True) # Make predictions. npr.set_state(self.randomstate) pend_fant = np.dot(pend_chol, npr.randn(pend.shape[0],self.pending_samples)) + pend_m[:,None] # Include the fantasies. fant_vals = np.concatenate( (np.tile(vals[:,np.newaxis], (1,self.pending_samples)), pend_fant)) # Compute bests over the fantasies. bests = np.min(fant_vals, axis=0) # Now generalize from these fantasies. cand_cross = self.cov(comp_pend, cand) cov_grad_func = getattr(gp, 'grad_' + self.cov_func.__name__) cand_cross_grad = cov_grad_func(self.ls, comp_pend, cand) # Solve the linear systems. alpha = spla.cho_solve((comp_pend_chol, True), fant_vals - self.mean) beta = spla.solve_triangular(comp_pend_chol, cand_cross, lower=True) # Predict the marginal means and variances at candidates. func_m = np.dot(cand_cross.T, alpha) + self.mean func_v = self.amp2*(1+1e-6) - np.sum(beta**2, axis=0) # Expected improvement func_s = np.sqrt(func_v[:,np.newaxis]) u = (bests[np.newaxis,:] - func_m) / func_s ncdf = sps.norm.cdf(u) npdf = sps.norm.pdf(u) ei = func_s*( u*ncdf + npdf) # Gradients of ei w.r.t. mean and variance g_ei_m = -ncdf g_ei_s2 = 0.5*npdf / func_s # Apply covariance function # Squeeze can break the 1D case be careful if pend.shape[1] == 1: grad_cross = np.squeeze(cand_cross_grad, axis=(2,)) else: grad_cross = np.squeeze(cand_cross_grad) grad_xp_m = np.dot(alpha.transpose(),grad_cross) grad_xp_v = np.dot(-2*spla.cho_solve( (comp_pend_chol, True),cand_cross).transpose(), grad_cross) grad_xp = 0.5*self.amp2*(grad_xp_m*np.tile(g_ei_m,(comp.shape[1],1)).T + (grad_xp_v.T*g_ei_s2).T) ei = -np.mean(ei, axis=1) grad_xp = np.mean(grad_xp,axis=0) return ei, grad_xp.flatten() def compute_ei(self, comp, pend, cand, vals): if pend.shape[0] == 0: # If there are no pending, don't do anything fancy. # Current best. best = np.min(vals) # The primary covariances for prediction. comp_cov = self.cov(comp) cand_cross = self.cov(comp, cand) # Compute the required Cholesky. obsv_cov = comp_cov + self.noise*np.eye(comp.shape[0]) obsv_chol = spla.cholesky( obsv_cov, lower=True ) # Solve the linear systems. alpha = spla.cho_solve((obsv_chol, True), vals - self.mean) beta = spla.solve_triangular(obsv_chol, cand_cross, lower=True) # Predict the marginal means and variances at candidates. func_m = np.dot(cand_cross.T, alpha) + self.mean func_v = self.amp2*(1+1e-6) - np.sum(beta**2, axis=0) # Expected improvement func_s = np.sqrt(func_v) u = (best - func_m) / func_s ncdf = sps.norm.cdf(u) npdf = sps.norm.pdf(u) ei = func_s*( u*ncdf + npdf) return ei else: # If there are pending experiments, fantasize their outcomes. # Create a composite vector of complete and pending. comp_pend = np.concatenate((comp, pend)) # Compute the covariance and Cholesky decomposition. comp_pend_cov = (self.cov(comp_pend) + self.noise*np.eye(comp_pend.shape[0])) comp_pend_chol = spla.cholesky(comp_pend_cov, lower=True) # Compute submatrices. pend_cross = self.cov(comp, pend) pend_kappa = self.cov(pend) # Use the sub-Cholesky. obsv_chol = comp_pend_chol[:comp.shape[0],:comp.shape[0]] # Solve the linear systems. alpha = spla.cho_solve((obsv_chol, True), vals - self.mean) beta = spla.cho_solve((obsv_chol, True), pend_cross) # Finding predictive means and variances. pend_m = np.dot(pend_cross.T, alpha) + self.mean pend_K = pend_kappa - np.dot(pend_cross.T, beta) # Take the Cholesky of the predictive covariance. pend_chol = spla.cholesky(pend_K, lower=True) # Make predictions. npr.set_state(self.randomstate) pend_fant = np.dot(pend_chol, npr.randn(pend.shape[0],self.pending_samples)) + pend_m[:,None] # Include the fantasies. fant_vals = np.concatenate( (np.tile(vals[:,np.newaxis], (1,self.pending_samples)), pend_fant)) # Compute bests over the fantasies. bests = np.min(fant_vals, axis=0) # Now generalize from these fantasies. cand_cross = self.cov(comp_pend, cand) # Solve the linear systems. alpha = spla.cho_solve((comp_pend_chol, True), fant_vals - self.mean) beta = spla.solve_triangular(comp_pend_chol, cand_cross, lower=True) # Predict the marginal means and variances at candidates. func_m = np.dot(cand_cross.T, alpha) + self.mean func_v = self.amp2*(1+1e-6) - np.sum(beta**2, axis=0) # Expected improvement func_s = np.sqrt(func_v[:,np.newaxis]) u = (bests[np.newaxis,:] - func_m) / func_s ncdf = sps.norm.cdf(u) npdf = sps.norm.pdf(u) ei = func_s*( u*ncdf + npdf) return np.mean(ei, axis=1) def sample_hypers(self, comp, vals): if self.noiseless: self.noise = 1e-3 self._sample_noiseless(comp, vals) else: self._sample_noisy(comp, vals) self._sample_ls(comp, vals) self.hyper_samples.append((self.mean, self.noise, self.amp2, self.ls)) def _sample_ls(self, comp, vals): def logprob(ls): if np.any(ls < 0) or np.any(ls > self.max_ls): return -np.inf cov = (self.amp2 * (self.cov_func(ls, comp, None) + 1e-6*np.eye(comp.shape[0])) + self.noise*np.eye(comp.shape[0])) chol = spla.cholesky(cov, lower=True) solve = spla.cho_solve((chol, True), vals - self.mean) lp = (-np.sum(np.log(np.diag(chol))) - 0.5*np.dot(vals-self.mean, solve)) return lp self.ls = util.slice_sample(self.ls, logprob, compwise=True) def _sample_noisy(self, comp, vals): def logprob(hypers): mean = hypers[0] amp2 = hypers[1] noise = hypers[2] # This is pretty hacky, but keeps things sane. if mean > np.max(vals) or mean < np.min(vals): return -np.inf if amp2 < 0 or noise < 0: return -np.inf cov = (amp2 * (self.cov_func(self.ls, comp, None) + 1e-6*np.eye(comp.shape[0])) + noise*np.eye(comp.shape[0])) chol = spla.cholesky(cov, lower=True) solve = spla.cho_solve((chol, True), vals - mean) lp = -np.sum(np.log(np.diag(chol)))-0.5*np.dot(vals-mean, solve) # Roll in noise horseshoe prior. lp += np.log(np.log(1 + (self.noise_scale/noise)**2)) # Roll in amplitude lognormal prior lp -= 0.5*(np.log(np.sqrt(amp2))/self.amp2_scale)**2 return lp hypers = util.slice_sample(np.array( [self.mean, self.amp2, self.noise]), logprob, compwise=False) self.mean = hypers[0] self.amp2 = hypers[1] self.noise = hypers[2] def _sample_noiseless(self, comp, vals): def logprob(hypers): mean = hypers[0] amp2 = hypers[1] noise = 1e-3 # This is pretty hacky, but keeps things sane. if mean > np.max(vals) or mean < np.min(vals): return -np.inf if amp2 < 0: return -np.inf cov = (amp2 * (self.cov_func(self.ls, comp, None) + 1e-6*np.eye(comp.shape[0])) + noise*np.eye(comp.shape[0])) chol = spla.cholesky(cov, lower=True) solve = spla.cho_solve((chol, True), vals - mean) lp = -np.sum(np.log(np.diag(chol)))-0.5*np.dot(vals-mean, solve) # Roll in amplitude lognormal prior lp -= 0.5*(np.log(np.sqrt(amp2))/self.amp2_scale)**2 return lp hypers = util.slice_sample(np.array( [self.mean, self.amp2, self.noise]), logprob, compwise=False) self.mean = hypers[0] self.amp2 = hypers[1] self.noise = 1e-3 def optimize_hypers(self, comp, vals): mygp = gp.GP(self.cov_func.__name__) mygp.real_init(comp.shape[1], vals) mygp.optimize_hypers(comp,vals) self.mean = mygp.mean self.ls = mygp.ls self.amp2 = mygp.amp2 self.noise = mygp.noise # Save hyperparameter samples self.hyper_samples.append((self.mean, self.noise, self.amp2, self.ls)) self.dump_hypers() return ================================================ FILE: src/aup/Proposer/spearmint/chooser/GPEIperSecChooser.py ================================================ ## # Copyright (C) 2012 Jasper Snoek, Hugo Larochelle and Ryan P. Adams # # This code is written for research and educational purposes only to # supplement the paper entitled # "Practical Bayesian Optimization of Machine Learning Algorithms" # by Snoek, Larochelle and Adams # Advances in Neural Information Processing Systems, 2012 # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . import os from .. import gp import sys from .. import util import tempfile import numpy as np import numpy.random as npr import scipy.linalg as spla import scipy.stats as sps import scipy.optimize as spo import pickle from ..helpers import * from ..Locker import * import logging logger = logging.getLogger(__name__) log = logger.debug def init(expt_dir, arg_string): args = util.unpack_args(arg_string) return GPEIperSecChooser(expt_dir, **args) """ Chooser module for the Gaussian process expected improvement per second (EI) acquisition function. Candidates are sampled densely in the unit hypercube and then a subset of the most promising points are optimized to maximize EI per second over hyperparameter samples. Slice sampling is used to sample Gaussian process hyperparameters for two GPs, one over the objective function and the other over the running time of the algorithm. """ class GPEIperSecChooser: def __init__(self, expt_dir, covar="Matern52", mcmc_iters=10, pending_samples=100, noiseless=False, burnin=100, grid_subset=20): self.cov_func = getattr(gp, covar) self.locker = Locker() self.state_pkl = os.path.join(expt_dir, self.__module__ + ".pkl") self.stats_file = os.path.join(expt_dir, self.__module__ + "_hyperparameters.txt") self.mcmc_iters = int(mcmc_iters) self.burnin = int(burnin) self.needs_burnin = True self.pending_samples = pending_samples self.D = -1 self.hyper_iters = 1 # Number of points to optimize EI over self.grid_subset = int(grid_subset) self.noiseless = bool(int(noiseless)) self.hyper_samples = [] self.time_hyper_samples = [] self.noise_scale = 0.1 # horseshoe prior self.amp2_scale = 1 # zero-mean log normal prior self.max_ls = 10 # top-hat prior on length scales self.time_noise_scale = 0.1 # horseshoe prior self.time_amp2_scale = 1 # zero-mean log normal prior self.time_max_ls = 10 # top-hat prior on length scales self.ls = None self.amp2 = None self.noise = None self.mean = None self.time_ls = None self.time_amp2 = None self.time_mean = None self.time_noise = None # A simple function to dump out hyperparameters to allow for a hot start # if the optimization is restarted. def dump_hypers(self): self.locker.lock_wait(self.state_pkl) # Write the hyperparameters out to a Pickle. fh = tempfile.NamedTemporaryFile(mode='wb', delete=False) pickle.dump({ 'dims' : self.D, 'ls' : self.ls, 'amp2' : self.amp2, 'noise' : self.noise, 'mean' : self.mean, 'time_ls' : self.time_ls, 'time_amp2' : self.time_amp2, 'time_noise' : self.time_noise, 'time_mean' : self.time_mean }, fh) fh.close() # Use an atomic move for better NFS happiness. cmd = 'mv "%s" "%s"' % (fh.name, self.state_pkl) os.system(cmd) # TODO: Should check system-dependent return status. self.locker.unlock(self.state_pkl) def _real_init(self, dims, values, durations): self.locker.lock_wait(self.state_pkl) if os.path.exists(self.state_pkl): fh = open(self.state_pkl, 'rb') state = pickle.load(fh) fh.close() self.D = state['dims'] self.ls = state['ls'] self.amp2 = state['amp2'] self.noise = state['noise'] self.mean = state['mean'] self.time_ls = state['time_ls'] self.time_amp2 = state['time_amp2'] self.time_noise = state['time_noise'] self.time_mean = state['time_mean'] else: # Input dimensionality. self.D = dims # Initial length scales. self.ls = np.ones(self.D) self.time_ls = np.ones(self.D) # Initial amplitude. self.amp2 = np.std(values)+1e-4 self.time_amp2 = np.std(durations)+1e-4 # Initial observation noise. self.noise = 1e-3 self.time_noise = 1e-3 # Initial mean. self.mean = np.mean(values) self.time_mean = np.mean(np.log(durations)) self.locker.unlock(self.state_pkl) def cov(self, amp2, ls, x1, x2=None): if x2 is None: return amp2 * (self.cov_func(ls, x1, None) + 1e-6*np.eye(x1.shape[0])) else: return amp2 * self.cov_func(ls, x1, x2) # Given a set of completed 'experiments' in the unit hypercube with # corresponding objective 'values', pick from the next experiment to # run according to the acquisition function. def next(self, grid, values, durations, candidates, pending, complete): # Don't bother using fancy GP stuff at first. if complete.shape[0] < 2: return int(candidates[0]) # Perform the real initialization. if self.D == -1: self._real_init(grid.shape[1], values[complete], durations[complete]) # Grab out the relevant sets. comp = grid[complete,:] cand = grid[candidates,:] pend = grid[pending,:] vals = values[complete] durs = durations[complete] # Bring time into the log domain before we do anything # to maintain strict positivity durs = np.log(durs) # Spray a set of candidates around the min so far numcand = cand.shape[0] best_comp = np.argmin(vals) cand2 = np.vstack((np.random.randn(10,comp.shape[1])*0.001 + comp[best_comp,:], cand)) if self.mcmc_iters > 0: # Possibly burn in. if self.needs_burnin: for mcmc_iter in range(self.burnin): self.sample_hypers(comp, vals, durs) log("BURN %d/%d] mean: %.2f amp: %.2f " "noise: %.4f min_ls: %.4f max_ls: %.4f" % (mcmc_iter+1, self.burnin, self.mean, np.sqrt(self.amp2), self.noise, np.min(self.ls), np.max(self.ls))) self.needs_burnin = False # Sample from hyperparameters. # Adjust the candidates to hit ei/sec peaks self.hyper_samples = [] for mcmc_iter in range(self.mcmc_iters): self.sample_hypers(comp, vals, durs) log("%d/%d] mean: %.2f amp: %.2f noise: %.4f " "min_ls: %.4f max_ls: %.4f" % (mcmc_iter+1, self.mcmc_iters, self.mean, np.sqrt(self.amp2), self.noise, np.min(self.ls), np.max(self.ls))) log("%d/%d] time_mean: %.2fs time_amp: %.2f time_noise: %.4f " "time_min_ls: %.4f time_max_ls: %.4f" % (mcmc_iter+1, self.mcmc_iters, np.exp(self.time_mean), np.sqrt(self.time_amp2), np.exp(self.time_noise), np.min(self.time_ls), np.max(self.time_ls))) self.dump_hypers() # Pick the top candidates to optimize over overall_ei = self.ei_over_hypers(comp,pend,cand2,vals,durs) inds = np.argsort(np.mean(overall_ei, axis=1))[-self.grid_subset:] cand2 = cand2[inds,:] # Adjust the candidates to hit ei peaks b = []# optimization bounds for i in range(0, cand.shape[1]): b.append((0, 1)) for i in range(0, cand2.shape[0]): log("Optimizing candidate %d/%d" % (i+1, cand2.shape[0])) ret = spo.fmin_l_bfgs_b(self.grad_optimize_ei_over_hypers, cand2[i,:].flatten(), args=(comp,vals,durs,True), bounds=b, disp=0) cand2[i,:] = ret[0] cand = np.vstack((cand, cand2)) overall_ei = self.ei_over_hypers(comp,pend,cand,vals,durs) best_cand = np.argmax(np.mean(overall_ei, axis=1)) self.dump_hypers() if (best_cand >= numcand): return (int(numcand), cand[best_cand,:]) return int(candidates[best_cand]) else: # Optimize hyperparameters self.optimize_hypers(comp, vals, durs) log("mean: %f amp: %f noise: %f " "min_ls: %f max_ls: %f" % (self.mean, np.sqrt(self.amp2), self.noise, np.min(self.ls), np.max(self.ls))) # Pick the top candidates to optimize over ei = self.compute_ei_per_s(comp, pend, cand2, vals, durs) inds = np.argsort(np.mean(overall_ei, axis=1))[-self.grid_subset:] cand2 = cand2[inds,:] # Adjust the candidates to hit ei peaks b = []# optimization bounds for i in range(0, cand.shape[1]): b.append((0, 1)) for i in range(0, cand2.shape[0]): log("Optimizing candidate %d/%d" % (i+1, cand2.shape[0])) ret = spo.fmin_l_bfgs_b(self.grad_optimize_ei, cand2[i,:].flatten(), args=(comp,vals,durs,True), bounds=b, disp=0) cand2[i,:] = ret[0] cand = np.vstack((cand, cand2)) ei = self.compute_ei_per_s(comp, pend, cand, vals, durs) best_cand = np.argmax(ei) self.dump_hypers() if (best_cand >= numcand): return (int(numcand), cand[best_cand,:]) return int(candidates[best_cand]) # Compute EI over hyperparameter samples def ei_over_hypers(self,comp,pend,cand,vals,durs): overall_ei = np.zeros((cand.shape[0], self.mcmc_iters)) for mcmc_iter in range(self.mcmc_iters): hyper = self.hyper_samples[mcmc_iter] time_hyper = self.time_hyper_samples[mcmc_iter] self.mean = hyper[0] self.noise = hyper[1] self.amp2 = hyper[2] self.ls = hyper[3] self.time_mean = time_hyper[0] self.time_noise = time_hyper[1] self.time_amp2 = time_hyper[2] self.time_ls = time_hyper[3] overall_ei[:,mcmc_iter] = self.compute_ei_per_s(comp, pend, cand, vals, durs.squeeze()) return overall_ei def check_grad_ei_per(self, cand, comp, vals, durs): (ei,dx1) = self.grad_optimize_ei_over_hypers(cand, comp, vals, durs) dx2 = dx1*0 idx = np.zeros(cand.shape[0]) for i in range(0, cand.shape[0]): idx[i] = 1e-6 (ei1,tmp) = self.grad_optimize_ei_over_hypers(cand + idx, comp, vals, durs) (ei2,tmp) = self.grad_optimize_ei_over_hypers(cand - idx, comp, vals, durs) dx2[i] = (ei - ei2)/(2*1e-6) idx[i] = 0 log('computed grads %s'%dx1) log('finite diffs %s'% dx2) log(dx1/dx2) log(np.sum((dx1 - dx2)**2)) time.sleep(2) # Adjust points by optimizing EI over a set of hyperparameter samples def grad_optimize_ei_over_hypers(self, cand, comp, vals, durs, compute_grad=True): summed_ei = 0 summed_grad_ei = np.zeros(cand.shape).flatten() for mcmc_iter in range(self.mcmc_iters): hyper = self.hyper_samples[mcmc_iter] time_hyper = self.time_hyper_samples[mcmc_iter] self.mean = hyper[0] self.noise = hyper[1] self.amp2 = hyper[2] self.ls = hyper[3] self.time_mean = time_hyper[0] self.time_noise = time_hyper[1] self.time_amp2 = time_hyper[2] self.time_ls = time_hyper[3] if compute_grad: (ei,g_ei) = self.grad_optimize_ei(cand,comp,vals,durs,compute_grad) summed_grad_ei = summed_grad_ei + g_ei else: ei = self.grad_optimize_ei(cand,comp,vals,durs,compute_grad) summed_ei += ei if compute_grad: return (summed_ei, summed_grad_ei) else: return summed_ei def grad_optimize_ei(self, cand, comp, vals, durs, compute_grad=True): # Here we have to compute the gradients for ei per second # This means deriving through the two kernels, the one for predicting # time and the one predicting ei best = np.min(vals) cand = np.reshape(cand, (-1, comp.shape[1])) # First we make predictions for the durations # Compute covariances comp_time_cov = self.cov(self.time_amp2, self.time_ls, comp) cand_time_cross = self.cov(self.time_amp2, self.time_ls,comp,cand) # Cholesky decompositions obsv_time_cov = comp_time_cov + self.time_noise*np.eye(comp.shape[0]) obsv_time_chol = spla.cholesky( obsv_time_cov, lower=True ) # Linear systems t_alpha = spla.cho_solve((obsv_time_chol, True), durs - self.time_mean) # Predict marginal mean times and (possibly) variances func_time_m = np.dot(cand_time_cross.T, t_alpha) + self.time_mean # We don't really need the time variances now #func_time_v = self.time_amp2*(1+1e-6) - np.sum(t_beta**2, axis=0) # Bring time out of the log domain func_time_m = np.exp(func_time_m) # Compute derivative of cross-distances. grad_cross_r = gp.grad_dist2(self.time_ls, comp, cand) # Apply covariance function cov_grad_func = getattr(gp, 'grad_' + self.cov_func.__name__) cand_cross_grad = cov_grad_func(self.time_ls, comp, cand) grad_cross_t = np.squeeze(cand_cross_grad) # Now compute the gradients w.r.t. ei # The primary covariances for prediction. comp_cov = self.cov(self.amp2, self.ls, comp) cand_cross = self.cov(self.amp2, self.ls, comp, cand) # Compute the required Cholesky. obsv_cov = comp_cov + self.noise*np.eye(comp.shape[0]) obsv_chol = spla.cholesky( obsv_cov, lower=True ) cand_cross_grad = cov_grad_func(self.ls, comp, cand) # Predictive things. # Solve the linear systems. alpha = spla.cho_solve((obsv_chol, True), vals - self.mean) beta = spla.solve_triangular(obsv_chol, cand_cross, lower=True) # Predict the marginal means and variances at candidates. func_m = np.dot(cand_cross.T, alpha) + self.mean func_v = self.amp2*(1+1e-6) - np.sum(beta**2, axis=0) # Expected improvement func_s = np.sqrt(func_v) u = (best - func_m) / func_s ncdf = sps.norm.cdf(u) npdf = sps.norm.pdf(u) ei = func_s*(u*ncdf + npdf) ei_per_s = -np.sum(ei/func_time_m) if not compute_grad: return ei grad_time_xp_m = np.dot(t_alpha.transpose(),grad_cross_t) # Gradients of ei w.r.t. mean and variance g_ei_m = -ncdf g_ei_s2 = 0.5*npdf / func_s # Apply covariance function grad_cross = np.squeeze(cand_cross_grad) grad_xp_m = np.dot(alpha.transpose(),grad_cross) grad_xp_v = np.dot(-2*spla.cho_solve((obsv_chol, True), cand_cross).transpose(),grad_cross) grad_xp = 0.5*self.amp2*(grad_xp_m*g_ei_m + grad_xp_v*g_ei_s2) grad_time_xp_m = 0.5*self.time_amp2*grad_time_xp_m*func_time_m grad_xp = (func_time_m*grad_xp - ei*grad_time_xp_m)/(func_time_m**2) return ei_per_s, grad_xp.flatten() def compute_ei_per_s(self, comp, pend, cand, vals, durs): # First we make predictions for the durations as that # doesn't depend on pending experiments # Compute covariances comp_time_cov = self.cov(self.time_amp2, self.time_ls, comp) cand_time_cross = self.cov(self.time_amp2, self.time_ls,comp,cand) # Cholesky decompositions obsv_time_cov = comp_time_cov + self.time_noise*np.eye(comp.shape[0]) obsv_time_chol = spla.cholesky( obsv_time_cov, lower=True ) # Linear systems t_alpha = spla.cho_solve((obsv_time_chol, True), durs - self.time_mean) #t_beta = spla.solve_triangular(obsv_time_chol, cand_time_cross, lower=True) # Predict marginal mean times and (possibly) variances func_time_m = np.dot(cand_time_cross.T, t_alpha) + self.time_mean # We don't really need the time variances now #func_time_v = self.time_amp2*(1+1e-6) - np.sum(t_beta**2, axis=0) # Bring time out of the log domain func_time_m = np.exp(func_time_m) if pend.shape[0] == 0: # If there are no pending, don't do anything fancy. # Current best. best = np.min(vals) # The primary covariances for prediction. comp_cov = self.cov(self.amp2, self.ls, comp) cand_cross = self.cov(self.amp2, self.ls, comp, cand) # Compute the required Cholesky. obsv_cov = comp_cov + self.noise*np.eye(comp.shape[0]) obsv_chol = spla.cholesky( obsv_cov, lower=True ) # Solve the linear systems. alpha = spla.cho_solve((obsv_chol, True), vals - self.mean) beta = spla.solve_triangular(obsv_chol, cand_cross, lower=True) # Predict the marginal means and variances at candidates. func_m = np.dot(cand_cross.T, alpha) + self.mean func_v = self.amp2*(1+1e-6) - np.sum(beta**2, axis=0) # Expected improvement func_s = np.sqrt(func_v) u = (best - func_m) / func_s ncdf = sps.norm.cdf(u) npdf = sps.norm.pdf(u) ei = func_s*( u*ncdf + npdf) ei_per_s = ei/func_time_m return ei_per_s else: # If there are pending experiments, fantasize their outcomes. # Create a composite vector of complete and pending. comp_pend = np.concatenate((comp, pend)) # Compute the covariance and Cholesky decomposition. comp_pend_cov = self.cov(self.amp2, self.ls, comp_pend) + self.noise*np.eye(comp_pend.shape[0]) comp_pend_chol = spla.cholesky(comp_pend_cov, lower=True) # Compute submatrices. pend_cross = self.cov(self.amp2, self.ls, comp, pend) pend_kappa = self.cov(self.amp2, self.ls, pend) # Use the sub-Cholesky. obsv_chol = comp_pend_chol[:comp.shape[0],:comp.shape[0]] # Solve the linear systems. alpha = spla.cho_solve((obsv_chol, True), vals - self.mean) beta = spla.cho_solve((obsv_chol, True), pend_cross) # Finding predictive means and variances. pend_m = np.dot(pend_cross.T, alpha) + self.mean pend_K = pend_kappa - np.dot(pend_cross.T, beta) # Take the Cholesky of the predictive covariance. pend_chol = spla.cholesky(pend_K, lower=True) # Make predictions. pend_fant = np.dot(pend_chol, npr.randn(pend.shape[0],self.pending_samples)) + pend_m[:,None] # Include the fantasies. fant_vals = np.concatenate((np.tile(vals[:,np.newaxis], (1,self.pending_samples)), pend_fant)) # Compute bests over the fantasies. bests = np.min(fant_vals, axis=0) # Now generalize from these fantasies. cand_cross = self.cov(self.amp2, self.ls, comp_pend, cand) # Solve the linear systems. alpha = spla.cho_solve((comp_pend_chol, True), fant_vals - self.mean) beta = spla.solve_triangular(comp_pend_chol, cand_cross, lower=True) # Predict the marginal means and variances at candidates. func_m = np.dot(cand_cross.T, alpha) + self.mean func_v = self.amp2*(1+1e-6) - np.sum(beta**2, axis=0) # Expected improvement func_s = np.sqrt(func_v[:,np.newaxis]) u = (bests[np.newaxis,:] - func_m) / func_s ncdf = sps.norm.cdf(u) npdf = sps.norm.pdf(u) ei = func_s*( u*ncdf + npdf) return np.divide(np.mean(ei, axis=1), func_time_m) def sample_hypers(self, comp, vals, durs): if self.noiseless: self.noise = 1e-3 self._sample_noiseless(comp, vals) else: self._sample_noisy(comp, vals) self._sample_ls(comp, vals) self._sample_time_noisy(comp, durs.squeeze()) self._sample_time_ls(comp, durs.squeeze()) self.hyper_samples.append((self.mean, self.noise, self.amp2, self.ls)) self.time_hyper_samples.append((self.time_mean, self.time_noise, self.time_amp2, self.time_ls)) def _sample_ls(self, comp, vals): def logprob(ls): if np.any(ls < 0) or np.any(ls > self.max_ls): return -np.inf cov = self.amp2 * (self.cov_func(ls, comp, None) + 1e-6*np.eye(comp.shape[0])) + self.noise*np.eye(comp.shape[0]) chol = spla.cholesky(cov, lower=True) solve = spla.cho_solve((chol, True), vals - self.mean) lp = -np.sum(np.log(np.diag(chol)))-0.5*np.dot(vals-self.mean, solve) return lp self.ls = util.slice_sample(self.ls, logprob, compwise=True) def _sample_time_ls(self, comp, vals): def logprob(ls): if np.any(ls < 0) or np.any(ls > self.time_max_ls): return -np.inf cov = self.time_amp2 * (self.cov_func(ls, comp, None) + 1e-6*np.eye(comp.shape[0])) + self.time_noise*np.eye(comp.shape[0]) chol = spla.cholesky(cov, lower=True) solve = spla.cho_solve((chol, True), vals - self.time_mean) lp = -np.sum(np.log(np.diag(chol)))-0.5*np.dot(vals-self.time_mean, solve) return lp self.time_ls = util.slice_sample(self.time_ls, logprob, compwise=True) def _sample_noisy(self, comp, vals): def logprob(hypers): mean = hypers[0] amp2 = hypers[1] noise = hypers[2] # This is pretty hacky, but keeps things sane. if mean > np.max(vals) or mean < np.min(vals): return -np.inf if amp2 < 0 or noise < 0: return -np.inf cov = amp2 * (self.cov_func(self.ls, comp, None) + 1e-6*np.eye(comp.shape[0])) + noise*np.eye(comp.shape[0]) chol = spla.cholesky(cov, lower=True) solve = spla.cho_solve((chol, True), vals - mean) lp = -np.sum(np.log(np.diag(chol)))-0.5*np.dot(vals-mean, solve) # Roll in noise horseshoe prior. lp += np.log(np.log(1 + (self.noise_scale/noise)**2)) #lp -= 0.5*(np.log(noise)/self.noise_scale)**2 # Roll in amplitude lognormal prior lp -= 0.5*(np.log(amp2)/self.amp2_scale)**2 return lp hypers = util.slice_sample(np.array([self.mean, self.amp2, self.noise]), logprob, compwise=False) self.mean = hypers[0] self.amp2 = hypers[1] self.noise = hypers[2] def _sample_time_noisy(self, comp, vals): def logprob(hypers): mean = hypers[0] amp2 = hypers[1] noise = hypers[2] # This is pretty hacky, but keeps things sane. if mean > np.max(vals) or mean < np.min(vals): return -np.inf if amp2 < 0 or noise < 0: return -np.inf cov = amp2 * (self.cov_func(self.time_ls, comp, None) + 1e-6*np.eye(comp.shape[0])) + noise*np.eye(comp.shape[0]) chol = spla.cholesky(cov, lower=True) solve = spla.cho_solve((chol, True), vals - mean) lp = -np.sum(np.log(np.diag(chol)))-0.5*np.dot(vals-mean, solve) # Roll in noise horseshoe prior. lp += np.log(np.log(1 + (self.time_noise_scale/noise)**2)) #lp -= 0.5*(np.log(noise)/self.time_noise_scale)**2 # Roll in amplitude lognormal prior lp -= 0.5*(np.log(np.sqrt(amp2))/self.time_amp2_scale)**2 return lp hypers = util.slice_sample(np.array([self.time_mean, self.time_amp2, self.time_noise]), logprob, compwise=False) self.time_mean = hypers[0] self.time_amp2 = hypers[1] self.time_noise = hypers[2] def _sample_noiseless(self, comp, vals): def logprob(hypers): mean = hypers[0] amp2 = hypers[1] noise = 1e-3 # This is pretty hacky, but keeps things sane. if mean > np.max(vals) or mean < np.min(vals): return -np.inf if amp2 < 0: return -np.inf cov = amp2 * (self.cov_func(self.ls, comp, None) + 1e-6*np.eye(comp.shape[0])) + noise*np.eye(comp.shape[0]) chol = spla.cholesky(cov, lower=True) solve = spla.cho_solve((chol, True), vals - mean) lp = -np.sum(np.log(np.diag(chol)))-0.5*np.dot(vals-mean, solve) # Roll in amplitude lognormal prior lp -= 0.5*(np.log(amp2)/self.amp2_scale)**2 return lp hypers = util.slice_sample(np.array([self.mean, self.amp2, self.noise]), logprob, compwise=False) self.mean = hypers[0] self.amp2 = hypers[1] self.noise = 1e-3 def optimize_hypers(self, comp, vals, durs): # First the GP to observations mygp = gp.GP(self.cov_func.__name__) mygp.real_init(comp.shape[1], vals) mygp.optimize_hypers(comp,vals) self.mean = mygp.mean self.ls = mygp.ls self.amp2 = mygp.amp2 self.noise = mygp.noise # Now the GP to times timegp = gp.GP(self.cov_func.__name__) timegp.real_init(comp.shape[1], durs) timegp.optimize_hypers(comp, durs) self.time_mean = timegp.mean self.time_amp2 = timegp.amp2 self.time_noise = timegp.noise self.time_ls = timegp.ls # Save hyperparameter samples self.hyper_samples.append((self.mean, self.noise, self.amp2, self.ls)) self.time_hyper_samples.append((self.time_mean, self.time_noise, self.time_amp2, self.time_ls)) self.dump_hypers() ================================================ FILE: src/aup/Proposer/spearmint/chooser/RandomChooser.py ================================================ ## # Copyright (C) 2012 Jasper Snoek, Hugo Larochelle and Ryan P. Adams # # This code is written for research and educational purposes only to # supplement the paper entitled # "Practical Bayesian Optimization of Machine Learning Algorithms" # by Snoek, Larochelle and Adams # Advances in Neural Information Processing Systems, 2012 # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . import numpy as np import numpy.random as npr def init(expt_dir, arg_string): return RandomChooser() class RandomChooser: def __init__(self): pass def next(self, grid, values, durations, candidates, pending, complete): return int(candidates[int(np.floor(candidates.shape[0]*npr.rand()))]) ================================================ FILE: src/aup/Proposer/spearmint/chooser/RandomForestEIChooser.py ================================================ import numpy as np import numpy.random as npr import scipy.stats as sps import sklearn.ensemble import sklearn.ensemble.forest from .. import util import logging logger = logging.getLogger(__name__) log = logger.debug from sklearn.externals.joblib import Parallel, delayed def init(expt_dir, arg_string): args = util.unpack_args(arg_string) return RandomForestEIChooser(**args) class RandomForestRegressorWithVariance(sklearn.ensemble.RandomForestRegressor): def predict(self,X): # Check data X = np.atleast_2d(X) all_y_hat = [ tree.predict(X) for tree in self.estimators_ ] # Reduce y_hat = sum(all_y_hat) / self.n_estimators y_var = np.var(all_y_hat,axis=0,ddof=1) return y_hat, y_var class RandomForestEIChooser: def __init__(self,n_trees=50, max_depth=None, min_samples_split=1, max_monkeys=7, max_features="auto", n_jobs=1, random_state=None): self.n_trees = float(n_trees) self.max_depth = max_depth self.min_samples_split = min_samples_split self.max_features = max_features self.n_jobs = float(n_jobs) self.random_state = random_state self.rf = RandomForestRegressorWithVariance(n_estimators=n_trees, max_depth=max_depth, min_samples_split=min_samples_split, max_features=max_features, n_jobs=n_jobs, random_state=random_state) def next(self, grid, values, durations, candidates, pending, complete): # Grab out the relevant sets. # Don't bother using fancy RF stuff at first. if complete.shape[0] < 2: return int(candidates[0]) # Grab out the relevant sets. comp = grid[complete,:] cand = grid[candidates,:] pend = grid[pending,:] vals = values[complete] self.rf.fit(comp,vals) if pend.shape[0] != 0: # Generate fantasies for pending func_m, func_v = self.rf.predict(pend) vals_pend = func_m + np.sqrt(func_v) + npr.randn(func_m.shape[0]) # Re-fit using fantasies self.rf.fit(np.vstack[comp,pend],np.hstack[vals,vals_pend]) # Predict the marginal means and variances at candidates. func_m, func_v = self.rf.predict(cand) # Current best. best = np.min(vals) # Expected improvement func_s = np.sqrt(func_v) + 0.0001 u = (best - func_m) / func_s ncdf = sps.norm.cdf(u) npdf = sps.norm.pdf(u) ei = func_s*( u*ncdf + npdf) best_cand = np.argmax(ei) ei.sort() return int(candidates[best_cand]) ================================================ FILE: src/aup/Proposer/spearmint/chooser/SequentialChooser.py ================================================ ## # Copyright (C) 2012 Jasper Snoek, Hugo Larochelle and Ryan P. Adams # # This code is written for research and educational purposes only to # supplement the paper entitled # "Practical Bayesian Optimization of Machine Learning Algorithms" # by Snoek, Larochelle and Adams # Advances in Neural Information Processing Systems, 2012 # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . import numpy as np def init(expt_dir, arg_string): return SequentialChooser() class SequentialChooser: def __init__(self): pass def next(self, grid, values, durations, candidates, pending, complete): return int(candidates[0]) ================================================ FILE: src/aup/Proposer/spearmint/chooser/__init__.py ================================================ ================================================ FILE: src/aup/Proposer/spearmint/chooser/cma.py ================================================ #!/usr/bin/env python """Module cma implements the CMA-ES, Covariance Matrix Adaptation Evolution Strategy, a stochastic optimizer for robust non-linear non-convex derivative-free function minimization for Python versions 2.6, 2.7, 3.x (for Python 2.5 class SolutionDict would need to be re-implemented, because it depends on collections.MutableMapping, since version 0.91.01). CMA-ES searches for a minimizer (a solution x in R**n) of an objective function f (cost function), such that f(x) is minimal. Regarding f, only function values for candidate solutions need to be available, gradients are not necessary. Even less restrictive, only a passably reliable ranking of the candidate solutions in each iteration is necessary, the function values itself do not matter. Some termination criteria however depend on actual f-values. Two interfaces are provided: - function `fmin(func, x0, sigma0,...)` runs a complete minimization of the objective function func with CMA-ES. - class `CMAEvolutionStrategy` allows for minimization such that the control of the iteration loop remains with the user. Used packages: - unavoidable: `numpy` (see `barecmaes2.py` if `numpy` is not available), - avoidable with small changes: `time`, `sys` - optional: `matplotlib.pylab` (for `plot` etc., highly recommended), `pprint` (pretty print), `pickle` (in class `Sections`), `doctest`, `inspect`, `pygsl` (never by default) Testing ------- The code can be tested on a given system. Typing:: python cma.py --test or in the Python shell ``ipython -pylab``:: run cma.py --test runs ``doctest.testmod(cma)`` showing only exceptions (and not the tests that fail due to small differences in the output) and should run without complaints in about under two minutes. On some systems, the pop up windows must be closed manually to continue and finish the test. Install ------- The code can be installed by:: python cma.py --install which solely calls the ``setup`` function from the ``distutils.core`` package for installation. Example ------- :: import cma help(cma) # "this" help message, use cma? in ipython help(cma.fmin) help(cma.CMAEvolutionStrategy) help(cma.Options) cma.Options('tol') # display 'tolerance' termination options cma.Options('verb') # display verbosity options res = cma.fmin(cma.Fcts.tablet, 15 * [1], 1) res[0] # best evaluated solution res[5] # mean solution, presumably better with noise :See: `fmin()`, `Options`, `CMAEvolutionStrategy` :Author: Nikolaus Hansen, 2008-2012 :License: GPL 2 and 3 """ from __future__ import division # future is >= 3.0, this code has mainly been used with 2.6 & 2.7 from __future__ import with_statement # only necessary for python 2.5 and not in heavy use # from __future__ import collections.MutableMapping # does not exist in future, otherwise 2.5 would work from __future__ import print_function # for cross-checking, available from python 2.6 import sys if sys.version.startswith('3'): # in python 3.x range = range raw_input = input __version__ = "0.92.04 $Revision: 3322 $ $Date: 2012-11-22 18:05:10 +0100 (Thu, 22 Nov 2012) $" # bash: svn propset svn:keywords 'Date Revision' cma.py # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, version 2 or 3. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # for testing: # pyflakes cma.py # finds bugs by static analysis # pychecker --limit 60 cma.py # also executes, gives 60 warnings (all checked) # python cma.py -t -quiet # executes implemented tests based on doctest # to create a html documentation file: # pydoc -w cma # edit the header (remove local pointers) # epydoc cma.py # comes close to javadoc but does not find the # # links of function references etc # doxygen needs @package cma as first line in the module docstring # some things like class attributes are not interpreted correctly # sphinx: doc style of doc.python.org, could not make it work # TODO: make those options that are only used in fmin an error in init of CMA, but still Options() should # work as input to CMA. # TODO: add a default logger in CMAEvolutionStrategy, see fmin() and optimize() first # tell() should probably not add data, but optimize() should handle even an after_iteration_handler. # TODO: CMAEvolutionStrategy(ones(10), 1).optimize(cma.fcts.elli) # should work like fmin # one problem: the data logger is not default and seemingly cannot be attached in one line # TODO: check combination of boundary handling and transformation: penalty must be computed # on gp.pheno(x_geno, bounds=None), but without bounds, check/remove usage of .geno everywhere # TODO: check whether all new solutions are put into self.sent_solutions # TODO: separate initialize==reset_state from __init__ # TODO: introduce Zpos == diffC which makes the code more consistent and the active update "exact" # TODO: split tell into a variable transformation part and the "pure" functionality # usecase: es.tell_geno(X, [func(es.pheno(x)) for x in X]) # genotypic repair is not part of tell_geno # TODO: read settable "options" from a (properties) file, see myproperties.py # # typical parameters in scipy.optimize: disp, xtol, ftol, maxiter, maxfun, callback=None # maxfev, diag (A sequency of N positive entries that serve as # scale factors for the variables.) # full_output -- non-zero to return all optional outputs. # If xtol < 0.0, xtol is set to sqrt(machine_precision) # 'infot -- a dictionary of optional outputs with the keys: # 'nfev': the number of function calls... # # see eg fmin_powell # typical returns # x, f, dictionary d # (xopt, {fopt, gopt, Hopt, func_calls, grad_calls, warnflag}, ) # # TODO: keep best ten solutions # TODO: implement constraints handling # TODO: option full_output -- non-zero to return all optional outputs. # TODO: extend function unitdoctest, or use unittest? # TODO: implement equal-fitness termination, covered by stagnation? # TODO: apply style guide: no capitalizations!? # TODO: check and test dispdata() # TODO: eigh(): thorough testing would not hurt # # TODO (later): implement readSignals from a file like properties file (to be called after tell()) import time # not really essential import collections, numpy as np # arange, cos, size, eye, inf, dot, floor, outer, zeros, linalg.eigh, sort, argsort, random, ones,... from numpy import inf, array, dot, exp, log, sqrt, sum # to access the built-in sum fct: __builtins__.sum or del sum removes the imported sum and recovers the shadowed try: import matplotlib.pylab as pylab # also: use ipython -pylab show = pylab.show savefig = pylab.savefig # we would like to be able to use cma.savefig() etc closefig = pylab.close except: pylab = None print(' Could not import matplotlib.pylab, therefore ``cma.plot()`` etc. is not available') def show(): pass __docformat__ = "reStructuredText" # this hides some comments entirely? sys.py3kwarning = True # TODO: out-comment from version 2.6 # why not package math? # TODO: check scitools.easyviz and how big the adaptation would be # changes: # 12/10/25: removed useless check_points from fmin interface # 12/10/17: bug fix printing number of infeasible samples, moved not-in-use methods # timesCroot and divCroot to the right class # 12/10/16 (0.92.00): various changes commit: bug bound[0] -> bounds[0], more_to_write fixed, # sigma_vec introduced, restart from elitist, trace normalization, max(mu,popsize/2) # is used for weight calculation. # 12/07/23: (bug:) BoundPenalty.update respects now genotype-phenotype transformation # 12/07/21: convert value True for noisehandling into 1 making the output compatible # 12/01/30: class Solution and more old stuff removed r3101 # 12/01/29: class Solution is depreciated, GenoPheno and SolutionDict do the job (v0.91.00, r3100) # 12/01/06: CMA_eigenmethod option now takes a function (integer still works) # 11/09/30: flat fitness termination checks also history length # 11/09/30: elitist option (using method clip_or_fit_solutions) # 11/09/xx: method clip_or_fit_solutions for check_points option for all sorts of # injected or modified solutions and even reliable adaptive encoding # 11/08/19: fixed: scaling and typical_x type clashes 1 vs array(1) vs ones(dim) vs dim * [1] # 11/07/25: fixed: fmin wrote first and last line even with verb_log==0 # fixed: method settableOptionsList, also renamed to versatileOptions # default seed depends on time now # 11/07/xx (0.9.92): added: active CMA, selective mirrored sampling, noise/uncertainty handling # fixed: output argument ordering in fmin, print now only used as function # removed: parallel option in fmin # 11/07/01: another try to get rid of the memory leak by replacing self.unrepaired = self[:] # 11/07/01: major clean-up and reworking of abstract base classes and of the documentation, # also the return value of fmin changed and attribute stop is now a method. # 11/04/22: bug-fix: option fixed_variables in combination with scaling # 11/04/21: stopdict is not a copy anymore # 11/04/15: option fixed_variables implemented # 11/03/23: bug-fix boundary update was computed even without boundaries # 11/03/12: bug-fix of variable annotation in plots # 11/02/05: work around a memory leak in numpy # 11/02/05: plotting routines improved # 10/10/17: cleaning up, now version 0.9.30 # 10/10/17: bug-fix: return values of fmin now use phenotyp (relevant # if input scaling_of_variables is given) # 08/10/01: option evalparallel introduced, # bug-fix for scaling being a vector # 08/09/26: option CMAseparable becomes CMA_diagonal # 08/10/18: some names change, test functions go into a class # 08/10/24: more refactorizing # 10/03/09: upper bound exp(min(1,...)) for step-size control # TODO: this would define the visible interface # __all__ = ['fmin', 'CMAEvolutionStrategy', 'plot', ...] # # emptysets = ('', (), [], {}) # array([]) does not work but also np.size(.) == 0 # "x in emptysets" cannot be well replaced by "not x" # which is also True for array([]) and None, but also for 0 and False, and False for NaN use_sent_solutions = True # 5-30% CPU slower, particularly for large lambda, will be mandatory soon #____________________________________________________________ #____________________________________________________________ # def unitdoctest(): """is used to describe test cases and might in future become helpful as an experimental tutorial as well. The main testing feature at the moment is by doctest with ``cma._test()`` or conveniently by ``python cma.py --test``. With the ``--verbose`` option added, the results will always slightly differ and many "failed" test cases might be reported. A simple first overall test: >>> import cma >>> res = cma.fmin(cma.fcts.elli, 3*[1], 1, CMA_diagonal=2, seed=1, verb_time=0) (3_w,7)-CMA-ES (mu_w=2.3,w_1=58%) in dimension 3 (seed=1) Covariance matrix is diagonal for 2 iterations (1/ccov=7.0) Iterat #Fevals function value axis ratio sigma minstd maxstd min:sec 1 7 1.453161670768570e+04 1.2e+00 1.08e+00 1e+00 1e+00 2 14 3.281197961927601e+04 1.3e+00 1.22e+00 1e+00 2e+00 3 21 1.082851071704020e+04 1.3e+00 1.24e+00 1e+00 2e+00 100 700 8.544042012075362e+00 1.4e+02 3.18e-01 1e-03 2e-01 200 1400 5.691152415221861e-12 1.0e+03 3.82e-05 1e-09 1e-06 220 1540 3.890107746209078e-15 9.5e+02 4.56e-06 8e-11 7e-08 termination on tolfun : 1e-11 final/bestever f-value = 3.89010774621e-15 2.52273602735e-15 mean solution: [ -4.63614606e-08 -3.42761465e-10 1.59957987e-11] std deviation: [ 6.96066282e-08 2.28704425e-09 7.63875911e-11] Test on the Rosenbrock function with 3 restarts. The first trial only finds the local optimum, which happens in about 20% of the cases. >>> import cma >>> res = cma.fmin(cma.fcts.rosen, 4*[-1],1, ftarget=1e-6, restarts=3, verb_time=0, verb_disp=500, seed=3) (4_w,8)-CMA-ES (mu_w=2.6,w_1=52%) in dimension 4 (seed=3) Iterat #Fevals function value axis ratio sigma minstd maxstd min:sec 1 8 4.875315645656848e+01 1.0e+00 8.43e-01 8e-01 8e-01 2 16 1.662319948123120e+02 1.1e+00 7.67e-01 7e-01 8e-01 3 24 6.747063604799602e+01 1.2e+00 7.08e-01 6e-01 7e-01 184 1472 3.701428610430019e+00 4.3e+01 9.41e-07 3e-08 5e-08 termination on tolfun : 1e-11 final/bestever f-value = 3.70142861043 3.70142861043 mean solution: [-0.77565922 0.61309336 0.38206284 0.14597202] std deviation: [ 2.54211502e-08 3.88803698e-08 4.74481641e-08 3.64398108e-08] (8_w,16)-CMA-ES (mu_w=4.8,w_1=32%) in dimension 4 (seed=4) Iterat #Fevals function value axis ratio sigma minstd maxstd min:sec 1 1489 2.011376859371495e+02 1.0e+00 8.90e-01 8e-01 9e-01 2 1505 4.157106647905128e+01 1.1e+00 8.02e-01 7e-01 7e-01 3 1521 3.548184889359060e+01 1.1e+00 1.02e+00 8e-01 1e+00 111 3249 6.831867555502181e-07 5.1e+01 2.62e-02 2e-04 2e-03 termination on ftarget : 1e-06 final/bestever f-value = 6.8318675555e-07 1.18576673231e-07 mean solution: [ 0.99997004 0.99993938 0.99984868 0.99969505] std deviation: [ 0.00018973 0.00038006 0.00076479 0.00151402] >>> assert res[1] <= 1e-6 Notice the different termination conditions. Termination on the target function value ftarget prevents further restarts. Test of scaling_of_variables option >>> import cma >>> opts = cma.Options() >>> opts['seed'] = 456 >>> opts['verb_disp'] = 0 >>> opts['CMA_active'] = 1 >>> # rescaling of third variable: for searching in roughly >>> # x0 plus/minus 1e3*sigma0 (instead of plus/minus sigma0) >>> opts.scaling_of_variables = [1, 1, 1e3, 1] >>> res = cma.fmin(cma.fcts.rosen, 4 * [0.1], 0.1, **opts) termination on tolfun : 1e-11 final/bestever f-value = 2.68096173031e-14 1.09714829146e-14 mean solution: [ 1.00000001 1.00000002 1.00000004 1.00000007] std deviation: [ 3.00466854e-08 5.88400826e-08 1.18482371e-07 2.34837383e-07] The printed std deviations reflect the actual true value (not the one in the internal representation which would be different). >>> import cma >>> r = cma.fmin(cma.fcts.diffpow, 15 * [1], 1, CMA_dampsvec_fac=0.5, ftarget=1e-9) >>> assert(r[1] < 1e-9) >>> assert(r[2] < 13000) # only passed with CMA_dampsvec_fac :See: cma.main(), cma._test() """ pass #____________________________________________________________ #____________________________________________________________ # class BlancClass(object): """blanc container class for having a collection of attributes""" #_____________________________________________________________________ #_____________________________________________________________________ # class DerivedDictBase(collections.MutableMapping): """for conveniently adding features to a dictionary. The actual dictionary is in ``self.data``. Copy-paste and modify setitem, getitem, and delitem, if necessary""" def __init__(self, *args, **kwargs): # collections.MutableMapping.__init__(self) super(DerivedDictBase, self).__init__() # super(SolutionDict, self).__init__() # the same self.data = dict(*args, **kwargs) def __len__(self): return len(self.data) def __contains__(self, value): return value in self.data def __iter__(self): return iter(self.data) def __setitem__(self, key, value): """defines self[key] = value""" self.data[key] = value def __getitem__(self, key): """defines self[key]""" return self.data[key] def __delitem__(self, key): del self.data[key] class SolutionDict(DerivedDictBase): """dictionary with computation of an hash key for the inserted solutions and a stack of previously inserted same solutions. Each entry is meant to store additional information related to the solution. >>> import cma, numpy as np >>> d = cma.SolutionDict() >>> x = np.array([1,2,4]) >>> d[x] = {'x': x, 'iteration': 1} >>> d.get(x) == (d[x] if d.key(x) in d.keys() else None) The last line is always true. TODO: data_with_same_key behaves like a stack (see setitem and delitem), but rather should behave like a queue?! A queue is less consistent with the operation self[key] = ..., if self.data_with_same_key[key] is not empty. """ def __init__(self, *args, **kwargs): DerivedDictBase.__init__(self, *args, **kwargs) self.data_with_same_key = {} def key(self, x): try: return tuple(x) except TypeError: return x def __setitem__(self, key, value): """defines self[key] = value""" key = self.key(key) if key in self.data_with_same_key: self.data_with_same_key[key] += [self.data[key]] elif key in self.data: self.data_with_same_key[key] = [self.data[key]] self.data[key] = value def __getitem__(self, key): """defines self[key]""" return self.data[self.key(key)] def __delitem__(self, key): """remove only most current key-entry""" key = self.key(key) if key in self.data_with_same_key: if len(self.data_with_same_key[key]) == 1: self.data[key] = self.data_with_same_key.pop(key)[0] else: self.data[key] = self.data_with_same_key[key].pop(-1) else: del self.data[key] def truncate(self, max_len, min_iter): if len(self) > max_len: for k in list(self.keys()): if self[k]['iteration'] < min_iter: del self[k] # only deletes one item with k as key, should delete all? class SolutionDictOld(dict): """depreciated, SolutionDict should do, to be removed after SolutionDict has been successfully applied. dictionary with computation of an hash key for the inserted solutions and stack of previously inserted same solutions. Each entry is meant to store additional information related to the solution. Methods ``pop`` and ``get`` are modified accordingly. d = SolutionDict() x = array([1,2,4]) d.insert(x, {'x': x, 'iteration': 1}) d.get(x) == d[d.key(x)] if d.key(x) in d.keys() else d.get(x) is None TODO: not yet tested TODO: behaves like a stack (see _pop_derived), but rather should behave like a queue?! A queue is less consistent with the operation self[key] = ..., if self.more[key] is not empty. """ def __init__(self): self.more = {} # previously inserted same solutions self._pop_base = self.pop self.pop = self._pop_derived self._get_base = self.get self.get = self._get_derived def key(self, x): """compute the hash key of ``x``""" return tuple(x) def insert(self, x, datadict): key = self.key(x) if key in self.more: self.more[key] += [self[key]] elif key in self: self.more[key] = [self[key]] self[key] = datadict def _get_derived(self, x, default=None): return self._get_base(self.key(x), default) def _pop_derived(self, x): key = self.key(x) res = self[key] if key in self.more: if len(self.more[key]) == 1: self[key] = self.more.pop(key)[0] else: self[key] = self.more[key].pop(-1) return res class BestSolution(object): """container to keep track of the best solution seen""" def __init__(self, x=None, f=np.inf, evals=None): """initialize the best solution with `x`, `f`, and `evals`. Better solutions have smaller `f`-values. """ self.x = x self.x_geno = None self.f = f if f is not None and f is not np.nan else np.inf self.evals = evals self.evalsall = evals self.last = BlancClass() self.last.x = x self.last.f = f def update(self, arx, xarchive=None, arf=None, evals=None): """checks for better solutions in list `arx`, based on the smallest corresponding value in `arf`, alternatively, `update` may be called with a `BestSolution` instance like ``update(another_best_solution)`` in which case the better solution becomes the current best. `xarchive` is used to retrieve the genotype of a solution. """ if arf is not None: # find failsave minimum minidx = np.nanargmin(arf) if minidx is np.nan: return minarf = arf[minidx] # minarf = reduce(lambda x, y: y if y and y is not np.nan and y < x else x, arf, np.inf) if type(arx) == BestSolution: if self.evalsall is None: self.evalsall = arx.evalsall elif arx.evalsall is not None: self.evalsall = max((self.evalsall, arx.evalsall)) if arx.f is not None and arx.f < np.inf: self.update([arx.x], xarchive, [arx.f], arx.evals) return self elif minarf < np.inf and (minarf < self.f or self.f is None): self.x, self.f = arx[minidx], arf[minidx] self.x_geno = xarchive[self.x]['geno'] if xarchive is not None else None self.evals = None if not evals else evals - len(arf) + minidx+1 self.evalsall = evals elif evals: self.evalsall = evals self.last.x = arx[minidx] self.last.f = minarf def get(self): """return ``(x, f, evals)`` """ return self.x, self.f, self.evals, self.x_geno #____________________________________________________________ #____________________________________________________________ # class BoundPenalty(object): """Computes the boundary penalty. Must be updated each iteration, using the `update` method. Details ------- The penalty computes like ``sum(w[i] * (x[i]-xfeas[i])**2)``, where `xfeas` is the closest feasible (in-bounds) solution from `x`. The weight `w[i]` should be updated during each iteration using the update method. This class uses `GenoPheno.into_bounds` in method `update` to access domain boundary values and repair. This inconsistency is going to be removed in future. """ def __init__(self, bounds=None): """Argument bounds can be `None` or ``bounds[0]`` and ``bounds[1]`` are lower and upper domain boundaries, each is either `None` or a scalar or a list or array of appropriate size. """ ## # bounds attribute reminds the domain boundary values self.bounds = bounds self.gamma = 1 # a very crude assumption self.weights_initialized = False # gamma becomes a vector after initialization self.hist = [] # delta-f history def has_bounds(self): """return True, if any variable is bounded""" bounds = self.bounds if bounds in (None, [None, None]): return False for i in range(bounds[0]): if bounds[0][i] is not None and bounds[0][i] > -np.inf: return True for i in range(bounds[1]): if bounds[1][i] is not None and bounds[1][i] < np.inf: return True return False def repair(self, x, bounds=None, copy=False, copy_always=False): """sets out-of-bounds components of ``x`` on the bounds. Arguments --------- `bounds` can be `None`, in which case the "default" bounds are used, or ``[lb, ub]``, where `lb` and `ub` represent lower and upper domain bounds respectively that can be `None` or a scalar or a list or array of length ``len(self)`` code is more or less copy-paste from Solution.repair, but never tested """ # TODO (old data): CPU(N,lam,iter=20,200,100): 3.3s of 8s for two bounds, 1.8s of 6.5s for one bound # TODO: test whether np.max([bounds[0], x], axis=0) etc is speed relevant if bounds is None: bounds = self.bounds if copy_always: x_out = array(x, copy=True) if bounds not in (None, [None, None], (None, None)): # solely for effiency x_out = array(x, copy=True) if copy and not copy_always else x if bounds[0] is not None: if np.isscalar(bounds[0]): for i in range(len(x)): x_out[i] = max([bounds[0], x[i]]) else: for i in range(len(x)): if bounds[0][i] is not None: x_out[i] = max([bounds[0][i], x[i]]) if bounds[1] is not None: if np.isscalar(bounds[1]): for i in range(len(x)): x_out[i] = min([bounds[1], x[i]]) else: for i in range(len(x)): if bounds[1][i] is not None: x_out[i] = min([bounds[1][i], x[i]]) return x_out # convenience return #____________________________________________________________ # def __call__(self, x, archive, gp): """returns the boundary violation penalty for `x` ,where `x` is a single solution or a list or array of solutions. If `bounds` is not `None`, the values in `bounds` are used, see `__init__`""" if x in (None, (), []): return x if gp.bounds in (None, [None, None], (None, None)): return 0.0 if np.isscalar(x[0]) else [0.0] * len(x) # no penalty x_is_single_vector = np.isscalar(x[0]) x = [x] if x_is_single_vector else x pen = [] for xi in x: # CAVE: this does not work with already repaired values!! # CPU(N,lam,iter=20,200,100)?: 3s of 10s, array(xi): 1s (check again) # remark: one deep copy can be prevented by xold = xi first xpheno = gp.pheno(archive[xi]['geno']) xinbounds = gp.into_bounds(xpheno) fac = 1 # exp(0.1 * (log(self.scal) - np.mean(self.scal))) pen.append(sum(self.gamma * ((xinbounds - xpheno) / fac)**2) / len(xi)) return pen[0] if x_is_single_vector else pen #____________________________________________________________ # def feasible_ratio(self, solutions): """counts for each coordinate the number of feasible values in ``solutions`` and returns an array of length ``len(solutions[0])`` with the ratios. `solutions` is a list or array of repaired `Solution` instances """ count = np.zeros(len(solutions[0])) for x in solutions: count += x.unrepaired == x return count / float(len(solutions)) #____________________________________________________________ # def update(self, function_values, es, bounds=None): """updates the weights for computing a boundary penalty. Arguments --------- `function_values` all function values of recent population of solutions `es` `CMAEvolutionStrategy` object instance, in particular the method `into_bounds` of the attribute `gp` of type `GenoPheno` is used. `bounds` not (yet) in use other than for ``bounds == [None, None]`` nothing is updated. Reference: Hansen et al 2009, A Method for Handling Uncertainty... IEEE TEC, with addendum at http://www.lri.fr/~hansen/TEC2009online.pdf """ if bounds is None: bounds = self.bounds if bounds is None or (bounds[0] is None and bounds[1] is None): # no bounds ==> no penalty return self # len(function_values) * [0.0] # case without voilations N = es.N ### prepare # compute varis = sigma**2 * C_ii varis = es.sigma**2 * array(N * [es.C] if np.isscalar(es.C) else ( # scalar case es.C if np.isscalar(es.C[0]) else # diagonal matrix case [es.C[i][i] for i in range(N)])) # full matrix case # dmean = (es.mean - es.gp.into_bounds(es.mean)) / varis**0.5 dmean = (es.mean - es.gp.geno(es.gp.into_bounds(es.gp.pheno(es.mean)))) / varis**0.5 ### Store/update a history of delta fitness value fvals = sorted(function_values) l = 1 + len(fvals) val = fvals[3*l // 4] - fvals[l // 4] # exact interquartile range apart interpolation val = val / np.mean(varis) # new: val is normalized with sigma of the same iteration # insert val in history if np.isfinite(val) and val > 0: self.hist.insert(0, val) elif val == inf and len(self.hist) > 1: self.hist.insert(0, max(self.hist)) else: pass # ignore 0 or nan values if len(self.hist) > 20 + (3*N) / es.popsize: self.hist.pop() ### prepare dfit = np.median(self.hist) # median interquartile range damp = min(1, es.sp.mueff/10./N) ### set/update weights # Throw initialization error if len(self.hist) == 0: raise _Error('wrongful initialization, no feasible solution sampled. ' + 'Reasons can be mistakenly set bounds (lower bound not smaller than upper bound) or a too large initial sigma0 or... ' + 'See description of argument func in help(cma.fmin) or an example handling infeasible solutions in help(cma.CMAEvolutionStrategy). ') # initialize weights if (dmean.any() and (not self.weights_initialized or es.countiter == 2)): # TODO self.gamma = array(N * [2*dfit]) self.weights_initialized = True # update weights gamma if self.weights_initialized: edist = array(abs(dmean) - 3 * max(1, N**0.5/es.sp.mueff)) if 1 < 3: # this is better, around a factor of two # increase single weights possibly with a faster rate than they can decrease # value unit of edst is std dev, 3==random walk of 9 steps self.gamma *= exp((edist>0) * np.tanh(edist/3) / 2.)**damp # decrease all weights up to the same level to avoid single extremely small weights # use a constant factor for pseudo-keeping invariance self.gamma[self.gamma > 5 * dfit] *= exp(-1./3)**damp # self.gamma[idx] *= exp(5*dfit/self.gamma[idx] - 1)**(damp/3) elif 1 < 3 and (edist>0).any(): # previous method # CAVE: min was max in TEC 2009 self.gamma[edist>0] *= 1.1**min(1, es.sp.mueff/10./N) # max fails on cigtab(N=12,bounds=[0.1,None]): # self.gamma[edist>0] *= 1.1**max(1, es.sp.mueff/10./N) # this was a bug!? # self.gamma *= exp((edist>0) * np.tanh(edist))**min(1, es.sp.mueff/10./N) else: # alternative version, but not better solutions = es.pop # this has not been checked r = self.feasible_ratio(solutions) # has to be the averaged over N iterations self.gamma *= exp(np.max([N*[0], 0.3 - r], axis=0))**min(1, es.sp.mueff/10/N) es.more_to_write += list(self.gamma) if self.weights_initialized else N * [1.0] ### return penalty # es.more_to_write = self.gamma if not np.isscalar(self.gamma) else N*[1] return self # bound penalty values #____________________________________________________________ #____________________________________________________________ # class GenoPhenoBase(object): """depreciated, abstract base class for genotyp-phenotype transformation, to be implemented. See (and rather use) option ``transformation`` of ``fmin`` or ``CMAEvolutionStrategy``. Example ------- :: import cma class Mygpt(cma.GenoPhenoBase): def pheno(self, x): return x # identity for the time being gpt = Mygpt() optim = cma.CMAEvolutionStrategy(...) while not optim.stop(): X = optim.ask() f = [func(gpt.pheno(x)) for x in X] optim.tell(X, f) In case of a repair, we might pass the repaired solution into `tell()` (with check_points being True). TODO: check usecases in `CMAEvolutionStrategy` and implement option GenoPhenoBase """ def pheno(self, x): raise NotImplementedError() return x #____________________________________________________________ #____________________________________________________________ # class GenoPheno(object): """Genotype-phenotype transformation. Method `pheno` provides the transformation from geno- to phenotype, that is from the internal representation to the representation used in the objective function. Method `geno` provides the "inverse" pheno- to genotype transformation. The geno-phenotype transformation comprises, in this order: - insert fixed variables (with the phenotypic and therefore quite possibly "wrong" values) - affine linear transformation (scaling and shift) - user-defined transformation - projection into feasible domain (boundaries) - assign fixed variables their original phenotypic value By default all transformations are the identity. The boundary transformation is only applied, if the boundaries are given as argument to the method `pheno` or `geno` respectively. ``geno`` is not really necessary and might disappear in future. """ def __init__(self, dim, scaling=None, typical_x=None, bounds=None, fixed_values=None, tf=None): """return `GenoPheno` instance with fixed dimension `dim`. Keyword Arguments ----------------- `scaling` the diagonal of a scaling transformation matrix, multipliers in the genotyp-phenotyp transformation, see `typical_x` `typical_x` ``pheno = scaling*geno + typical_x`` `bounds` (obsolete, might disappear) list with two elements, lower and upper bounds both can be a scalar or a "vector" of length dim or `None`. Without effect, as `bounds` must be given as argument to `pheno()`. `fixed_values` a dictionary of variable indices and values, like ``{0:2.0, 2:1.1}``, that are not subject to change, negative indices are ignored (they act like incommenting the index), values are phenotypic values. `tf` list of two user-defined transformation functions, or `None`. ``tf[0]`` is a function that transforms the internal representation as used by the optimizer into a solution as used by the objective function. ``tf[1]`` does the back-transformation. For example :: tf_0 = lambda x: [xi**2 for xi in x] tf_1 = lambda x: [abs(xi)**0.5 fox xi in x] or "equivalently" without the `lambda` construct :: def tf_0(x): return [xi**2 for xi in x] def tf_1(x): return [abs(xi)**0.5 fox xi in x] ``tf=[tf_0, tf_1]`` is a reasonable way to guaranty that only positive values are used in the objective function. Details ------- If ``tf_1`` is ommitted, the initial x-value must be given as genotype (as the phenotype-genotype transformation is unknown) and injection of solutions might lead to unexpected results. """ self.N = dim self.bounds = bounds self.fixed_values = fixed_values if tf is not None: self.tf_pheno = tf[0] self.tf_geno = tf[1] # TODO: should not necessarily be needed # r = np.random.randn(dim) # assert all(tf[0](tf[1](r)) - r < 1e-7) # r = np.random.randn(dim) # assert all(tf[0](tf[1](r)) - r > -1e-7) print("WARNING in class GenoPheno: user defined transformations have not been tested thoroughly") else: self.tf_geno = None self.tf_pheno = None if fixed_values: if type(fixed_values) is not dict: raise _Error("fixed_values must be a dictionary {index:value,...}") if max(fixed_values.keys()) >= dim: raise _Error("max(fixed_values.keys()) = " + str(max(fixed_values.keys())) + " >= dim=N=" + str(dim) + " is not a feasible index") # convenience commenting functionality: drop negative keys for k in list(fixed_values.keys()): if k < 0: fixed_values.pop(k) if bounds: if len(bounds) != 2: raise _Error('len(bounds) must be 2 for lower and upper bounds') for i in (0,1): if bounds[i] is not None: bounds[i] = array(dim * [bounds[i]] if np.isscalar(bounds[i]) else [b for b in bounds[i]]) def vec_is_default(vec, default_val=0): """return True if `vec` has the value `default_val`, None or [None] are also recognized as default""" try: if len(vec) == 1: vec = vec[0] # [None] becomes None and is always default else: return False except TypeError: pass # vec is a scalar if vec is None or vec == array(None) or vec == default_val: return True return False self.scales = array(scaling) if vec_is_default(self.scales, 1): self.scales = 1 # CAVE: 1 is not array(1) elif self.scales.shape is not () and len(self.scales) != self.N: raise _Error('len(scales) == ' + str(len(self.scales)) + ' does not match dimension N == ' + str(self.N)) self.typical_x = array(typical_x) if vec_is_default(self.typical_x, 0): self.typical_x = 0 elif self.typical_x.shape is not () and len(self.typical_x) != self.N: raise _Error('len(typical_x) == ' + str(len(self.typical_x)) + ' does not match dimension N == ' + str(self.N)) if (self.scales is 1 and self.typical_x is 0 and self.bounds in (None, [None, None]) and self.fixed_values is None and self.tf_pheno is None): self.isidentity = True else: self.isidentity = False def into_bounds(self, y, bounds=None, copy_never=False, copy_always=False): """Argument `y` is a phenotypic vector, return `y` put into boundaries, as a copy iff ``y != into_bounds(y)``. Note: this code is duplicated in `Solution.repair` and might disappear in future. """ bounds = bounds if bounds is not None else self.bounds if bounds in (None, [None, None]): return y if not copy_always else array(y, copy=True) if bounds[0] is not None: if len(bounds[0]) not in (1, len(y)): raise ValueError('len(bounds[0]) = ' + str(len(bounds[0])) + ' and len of initial solution (' + str(len(y)) + ') disagree') if copy_never: # is rather slower for i in range(len(y)): y[i] = max(bounds[0][i], y[i]) else: y = np.max([bounds[0], y], axis=0) if bounds[1] is not None: if len(bounds[1]) not in (1, len(y)): raise ValueError('len(bounds[1]) = ' + str(len(bounds[1])) + ' and initial solution (' + str(len(y)) + ') disagree') if copy_never: for i in range(len(y)): y[i] = min(bounds[1][i], y[i]) else: y = np.min([bounds[1], y], axis=0) return y def pheno(self, x, bounds=None, copy=True, copy_always=False): """maps the genotypic input argument into the phenotypic space, boundaries are only applied if argument ``bounds is not None``, see help for class `GenoPheno` """ if copy_always and not copy: raise ValueError('arguments copy_always=' + str(copy_always) + ' and copy=' + str(copy) + ' have inconsistent values') if self.isidentity and bounds in (None, [None, None], (None, None)): return x if not copy_always else array(x, copy=copy_always) if self.fixed_values is None: y = array(x, copy=copy) # make a copy, in case else: # expand with fixed values y = list(x) # is a copy for i in sorted(self.fixed_values.keys()): y.insert(i, self.fixed_values[i]) y = array(y, copy=False) if self.scales is not 1: # just for efficiency y *= self.scales if self.typical_x is not 0: y += self.typical_x if self.tf_pheno is not None: y = array(self.tf_pheno(y), copy=False) if bounds is not None: y = self.into_bounds(y, bounds) if self.fixed_values is not None: for i, k in list(self.fixed_values.items()): y[i] = k return y def geno(self, y, bounds=None, copy=True, copy_always=False, archive=None): """maps the phenotypic input argument into the genotypic space. If `bounds` are given, first `y` is projected into the feasible domain. In this case ``copy==False`` leads to a copy. by default a copy is made only to prevent to modify ``y`` method geno is only needed if external solutions are injected (geno(initial_solution) is depreciated and will disappear) TODO: arg copy=True should become copy_never=False """ if archive is not None and bounds is not None: try: return archive[y]['geno'] except: pass x = array(y, copy=(copy and not self.isidentity) or copy_always) # bounds = self.bounds if bounds is None else bounds if bounds is not None: # map phenotyp into bounds first x = self.into_bounds(x, bounds) if self.isidentity: return x # user-defined transformation if self.tf_geno is not None: x = array(self.tf_geno(x), copy=False) else: _Error('t1 of options transformation was not defined but is needed as being the inverse of t0') # affine-linear transformation: shift and scaling if self.typical_x is not 0: x -= self.typical_x if self.scales is not 1: # just for efficiency x /= self.scales # kick out fixed_values if self.fixed_values is not None: # keeping the transformed values does not help much # therefore it is omitted if 1 < 3: keys = sorted(self.fixed_values.keys()) x = array([x[i] for i in range(len(x)) if i not in keys], copy=False) else: # TODO: is this more efficient? x = list(x) for key in sorted(list(self.fixed_values.keys()), reverse=True): x.remove(key) x = array(x, copy=False) return x #____________________________________________________________ #____________________________________________________________ # check out built-in package abc: class ABCMeta, abstractmethod, abstractproperty... # see http://docs.python.org/whatsnew/2.6.html PEP 3119 abstract base classes # class OOOptimizer(object): """"abstract" base class for an OO optimizer interface with methods `__init__`, `ask`, `tell`, `stop`, `result`, and `optimize`. Only `optimize` is fully implemented in this base class. Examples -------- All examples minimize the function `elli`, the output is not shown. (A preferred environment to execute all examples is ``ipython -pylab``.) First we need :: from cma import CMAEvolutionStrategy, CMADataLogger # CMAEvolutionStrategy derives from the OOOptimizer class elli = lambda x: sum(1e3**((i-1.)/(len(x)-1.)*x[i])**2 for i in range(len(x))) The shortest example uses the inherited method `OOOptimizer.optimize()`:: res = CMAEvolutionStrategy(8 * [0.1], 0.5).optimize(elli) The input parameters to `CMAEvolutionStrategy` are specific to this inherited class. The remaining functionality is based on interface defined by `OOOptimizer`. We might have a look at the result:: print(res[0]) # best solution and print(res[1]) # its function value `res` is the return value from method `CMAEvolutionStrategy.result()` appended with `None` (no logger). In order to display more exciting output we rather do :: logger = CMADataLogger() # derives from the abstract BaseDataLogger class res = CMAEvolutionStrategy(9 * [0.5], 0.3).optimize(elli, logger) logger.plot() # if matplotlib is available, logger == res[-1] or even shorter :: res = CMAEvolutionStrategy(9 * [0.5], 0.3).optimize(elli, CMADataLogger()) res[-1].plot() # if matplotlib is available Virtually the same example can be written with an explicit loop instead of using `optimize()`. This gives the necessary insight into the `OOOptimizer` class interface and gives entire control over the iteration loop:: optim = CMAEvolutionStrategy(9 * [0.5], 0.3) # a new CMAEvolutionStrategy instance calling CMAEvolutionStrategy.__init__() logger = CMADataLogger(optim) # get a logger instance # this loop resembles optimize() while not optim.stop(): # iterate X = optim.ask() # get candidate solutions f = [elli(x) for x in X] # evaluate solutions # maybe do something else that needs to be done optim.tell(X, f) # do all the real work: prepare for next iteration optim.disp(20) # display info every 20th iteration logger.add() # log another "data line" # final output print('termination by', optim.stop()) print('best f-value =', optim.result()[1]) print('best solution =', optim.result()[0]) logger.plot() # if matplotlib is available raw_input('press enter to continue') # prevents exiting and closing figures Details ------- Most of the work is done in the method `tell(...)`. The method `result()` returns more useful output. """ def __init__(self, xstart, **more_args): """``xstart`` is a mandatory argument""" self.xstart = xstart self.more_args = more_args self.initialize() def initialize(self): """(re-)set to the initial state""" self.countiter = 0 self.xcurrent = self.xstart[:] raise NotImplementedError('method initialize() must be implemented in derived class') def ask(self): """abstract method, AKA "get" or "sample_distribution", deliver new candidate solution(s), a list of "vectors" """ raise NotImplementedError('method ask() must be implemented in derived class') def tell(self, solutions, function_values): """abstract method, AKA "update", prepare for next iteration""" self.countiter += 1 raise NotImplementedError('method tell() must be implemented in derived class') def stop(self): """abstract method, return satisfied termination conditions in a dictionary like ``{'termination reason': value, ...}``, for example ``{'tolfun': 1e-12}``, or the empty dictionary ``{}``. The implementation of `stop()` should prevent an infinite loop. """ raise NotImplementedError('method stop() is not implemented') def disp(self, modulo=None): """abstract method, display some iteration infos if ``self.iteration_counter % modulo == 0``""" raise NotImplementedError('method disp() is not implemented') def result(self): """abstract method, return ``(x, f(x), ...)``, that is, the minimizer, its function value, ...""" raise NotImplementedError('method result() is not implemented') def optimize(self, objectivefct, logger=None, verb_disp=20, iterations=None): """find minimizer of `objectivefct` by iterating over `OOOptimizer` `self` with verbosity `verb_disp`, using `BaseDataLogger` `logger` with at most `iterations` iterations. :: return self.result() + (self.stop(), self, logger) Example ------- >>> import cma >>> res = cma.CMAEvolutionStrategy(7 * [0.1], 0.5).optimize(cma.fcts.rosen, cma.CMADataLogger(), 100) (4_w,9)-CMA-ES (mu_w=2.8,w_1=49%) in dimension 7 (seed=630721393) Iterat #Fevals function value axis ratio sigma minstd maxstd min:sec 1 9 3.163954777181882e+01 1.0e+00 4.12e-01 4e-01 4e-01 0:0.0 2 18 3.299006223906629e+01 1.0e+00 3.60e-01 3e-01 4e-01 0:0.0 3 27 1.389129389866704e+01 1.1e+00 3.18e-01 3e-01 3e-01 0:0.0 100 900 2.494847340045985e+00 8.6e+00 5.03e-02 2e-02 5e-02 0:0.3 200 1800 3.428234862999135e-01 1.7e+01 3.77e-02 6e-03 3e-02 0:0.5 300 2700 3.216640032470860e-04 5.6e+01 6.62e-03 4e-04 9e-03 0:0.8 400 3600 6.155215286199821e-12 6.6e+01 7.44e-06 1e-07 4e-06 0:1.1 438 3942 1.187372505161762e-14 6.0e+01 3.27e-07 4e-09 9e-08 0:1.2 438 3942 1.187372505161762e-14 6.0e+01 3.27e-07 4e-09 9e-08 0:1.2 ('termination by', {'tolfun': 1e-11}) ('best f-value =', 1.1189867885201275e-14) ('solution =', array([ 1. , 1. , 1. , 0.99999999, 0.99999998, 0.99999996, 0.99999992])) >>> print(res[0]) [ 1. 1. 1. 0.99999999 0.99999998 0.99999996 0.99999992] """ if logger is None: if hasattr(self, 'logger'): logger = self.logger citer = 0 while not self.stop(): if iterations is not None and citer >= iterations: return self.result() citer += 1 X = self.ask() # deliver candidate solutions fitvals = [objectivefct(x) for x in X] self.tell(X, fitvals) # all the work is done here self.disp(verb_disp) logger.add(self) if logger else None logger.add(self, modulo=bool(logger.modulo)) if logger else None if verb_disp: self.disp(1) if verb_disp in (1, True): print('termination by', self.stop()) print('best f-value =', self.result()[1]) print('solution =', self.result()[0]) return self.result() + (self.stop(), self, logger) #____________________________________________________________ #____________________________________________________________ # class CMAEvolutionStrategy(OOOptimizer): """CMA-ES stochastic optimizer class with ask-and-tell interface. See `fmin` for the one-line-call functional interface. Calling sequence ================ ``optim = CMAEvolutionStrategy(x0, sigma0, opts)`` returns a class instance. Arguments --------- `x0` initial solution, starting point (phenotype). `sigma0` initial standard deviation. The problem variables should have been scaled, such that a single standard deviation on all variables is useful and the optimum is expected to lie within about `x0` +- ``3*sigma0``. See also options `scaling_of_variables`. Often one wants to check for solutions close to the initial point. This allows for an easier check for consistency of the objective function and its interfacing with the optimizer. In this case, a much smaller `sigma0` is advisable. `opts` options, a dictionary with optional settings, see class `Options`. Main interface / usage ====================== The ask-and-tell interface is inherited from the generic `OOOptimizer` interface for iterative optimization algorithms (see there). With :: optim = CMAEvolutionStrategy(8 * [0.5], 0.2) an object instance is generated. In each iteration :: solutions = optim.ask() is used to ask for new candidate solutions (possibly several times) and :: optim.tell(solutions, func_values) passes the respective function values to `optim`. Instead of `ask()`, the class `CMAEvolutionStrategy` also provides :: (solutions, func_values) = optim.ask_and_eval(objective_func) Therefore, after initialization, an entire optimization can be written in two lines like :: while not optim.stop(): optim.tell(*optim.ask_and_eval(objective_func)) Without the freedom of executing additional lines within the iteration, the same reads in a single line as :: optim.optimize(objective_func) Besides for termination criteria, in CMA-ES only the ranks of the `func_values` are relevant. Attributes and Properties ========================= - `inputargs` -- passed input arguments - `inopts` -- passed options - `opts` -- actually used options, some of them can be changed any time, see class `Options` - `popsize` -- population size lambda, number of candidate solutions returned by `ask()` Details ======= The following two enhancements are turned off by default. **Active CMA** is implemented with option ``CMA_active`` and conducts an update of the covariance matrix with negative weights. The exponential update is implemented, where from a mathematical viewpoint positive definiteness is guarantied. The update is applied after the default update and only before the covariance matrix is decomposed, which limits the additional computational burden to be at most a factor of three (typically smaller). A typical speed up factor (number of f-evaluations) is between 1.1 and two. References: Jastrebski and Arnold, CEC 2006, Glasmachers et al, GECCO 2010. **Selective mirroring** is implemented with option ``CMA_mirrors`` in the method ``get_mirror()``. Only the method `ask_and_eval()` will then sample selectively mirrored vectors. In selective mirroring, only the worst solutions are mirrored. With the default small number of mirrors, *pairwise selection* (where at most one of the two mirrors contribute to the update of the distribution mean) is implicitely guarantied under selective mirroring and therefore not explicitly implemented. References: Brockhoff et al, PPSN 2010, Auger et al, GECCO 2011. Examples ======== Super-short example, with output shown: >>> import cma >>> # construct an object instance in 4-D, sigma0=1 >>> es = cma.CMAEvolutionStrategy(4 * [1], 1, {'seed':234}) (4_w,8)-CMA-ES (mu_w=2.6,w_1=52%) in dimension 4 (seed=234) >>> >>> # iterate until termination >>> while not es.stop(): ... X = es.ask() ... es.tell(X, [cma.fcts.elli(x) for x in X]) ... es.disp() # by default sparse, see option verb_disp Iterat #Fevals function value axis ratio sigma minstd maxstd min:sec 1 8 2.093015112685775e+04 1.0e+00 9.27e-01 9e-01 9e-01 0:0.0 2 16 4.964814235917688e+04 1.1e+00 9.54e-01 9e-01 1e+00 0:0.0 3 24 2.876682459926845e+05 1.2e+00 1.02e+00 9e-01 1e+00 0:0.0 100 800 6.809045875281943e-01 1.3e+02 1.41e-02 1e-04 1e-02 0:0.2 200 1600 2.473662150861846e-10 8.0e+02 3.08e-05 1e-08 8e-06 0:0.5 233 1864 2.766344961865341e-14 8.6e+02 7.99e-07 8e-11 7e-08 0:0.6 >>> >>> cma.pprint(es.result()) (Solution([ -1.98546755e-09, -1.10214235e-09, 6.43822409e-11, -1.68621326e-11]), 4.5119610261406537e-16, 1666, 1672, 209, array([ -9.13545269e-09, -1.45520541e-09, -6.47755631e-11, -1.00643523e-11]), array([ 3.20258681e-08, 3.15614974e-09, 2.75282215e-10, 3.27482983e-11])) >>> >>> # help(es.result) shows result(self) method of cma.CMAEvolutionStrategy instance return ``(xbest, f(xbest), evaluations_xbest, evaluations, iterations, pheno(xmean), effective_stds)`` Using the multiprocessing module, we can evaluate the function in parallel with a simple modification of the example :: import multiprocessing # prepare es = ... pool = multiprocessing.Pool(es.popsize) while not es.stop(): X = es.ask() es.tell(X, pool.map_async(cma.felli, X).get()) # use chunksize parameter as popsize/len(pool)? Example with a data logger, lower bounds (at zero) and handling infeasible solutions: >>> import cma >>> import numpy as np >>> es = cma.CMAEvolutionStrategy(10 * [0.2], 0.5, {'bounds': [0, np.inf]}) >>> logger = cma.CMADataLogger().register(es) >>> while not es.stop(): ... fit, X = [], [] ... while len(X) < es.popsize: ... curr_fit = np.NaN ... while curr_fit is np.NaN: ... x = es.ask(1)[0] ... curr_fit = cma.fcts.somenan(x, cma.fcts.elli) # might return np.NaN ... X.append(x) ... fit.append(curr_fit) ... es.tell(X, fit) ... logger.add() ... es.disp() >>> >>> assert es.result()[1] < 1e-9 >>> assert es.result()[2] < 9000 # by internal termination >>> logger.plot() # plot data >>> cma.show() >>> print(' *** if execution stalls close the figure window to continue (and check out ipython --pylab) ***') Example implementing restarts with increasing popsize (IPOP), output is not displayed: >>> import cma, numpy as np >>> >>> # restart with increasing population size (IPOP) >>> bestever = cma.BestSolution() >>> for lam in 10 * 2**np.arange(7): # 10, 20, 40, 80, ..., 10 * 2**6 ... es = cma.CMAEvolutionStrategy('6 - 8 * np.random.rand(9)', # 9-D ... 5, # initial std sigma0 ... {'popsize': lam, ... 'verb_append': bestever.evalsall}) # pass options ... logger = cma.CMADataLogger().register(es, append=bestever.evalsall) ... while not es.stop(): ... X = es.ask() # get list of new solutions ... fit = [cma.fcts.rastrigin(x) for x in X] # evaluate each solution ... es.tell(X, fit) # besides for termination only the ranking in fit is used ... ... # display some output ... logger.add() # add a "data point" to the log, writing in files ... es.disp() # uses option verb_disp with default 100 ... ... print('termination:', es.stop()) ... cma.pprint(es.best.__dict__) ... ... bestever.update(es.best) ... ... # show a plot ... logger.plot(); ... if bestever.f < 1e-8: # global optimum was hit ... break >>> assert es.result()[1] < 1e-8 On the Rastrigin function, usually after five restarts the global optimum is located. The final example shows how to resume: >>> import cma, pickle >>> >>> es = cma.CMAEvolutionStrategy(12 * [0.1], # a new instance, 12-D ... 0.5) # initial std sigma0 >>> logger = cma.CMADataLogger().register(es) >>> es.optimize(cma.fcts.rosen, logger, iterations=100) >>> logger.plot() >>> pickle.dump(es, open('saved-cma-object.pkl', 'wb')) >>> print('saved') >>> del es, logger # let's start fresh >>> >>> es = pickle.load(open('saved-cma-object.pkl', 'rb')) >>> print('resumed') >>> logger = cma.CMADataLogger(es.opts['verb_filenameprefix'] # use same name ... ).register(es, True) # True: append to old log data >>> es.optimize(cma.fcts.rosen, logger, verb_disp=200) >>> assert es.result()[2] < 15000 >>> cma.pprint(es.result()) >>> logger.plot() Missing Features ================ Option ``randn`` to pass a random number generator. :See: `fmin()`, `Options`, `plot()`, `ask()`, `tell()`, `ask_and_eval()` """ # __all__ = () # TODO this would be the interface #____________________________________________________________ @property # read only attribute decorator for a method def popsize(self): """number of samples by default returned by` ask()` """ return self.sp.popsize # this is not compatible with python2.5: # @popsize.setter # def popsize(self, p): # """popsize cannot be set (this might change in future) # """ # raise _Error("popsize cannot be changed (this might change in future)") #____________________________________________________________ #____________________________________________________________ def stop(self, check=True): """return a dictionary with the termination status. With ``check==False``, the termination conditions are not checked and the status might not reflect the current situation. """ if (check and self.countiter > 0 and self.opts['termination_callback'] and self.opts['termination_callback'] != str(self.opts['termination_callback'])): self.callbackstop = self.opts['termination_callback'](self) return self.stopdict(self if check else None) # update the stopdict and return a Dict #____________________________________________________________ #____________________________________________________________ def __init__(self, x0, sigma0, inopts = {}): """see class `CMAEvolutionStrategy` """ self.inputargs = dict(locals()) # for the record del self.inputargs['self'] # otherwise the instance self has a cyclic reference self.inopts = inopts opts = Options(inopts).complement() # Options() == fmin([],[]) == defaultOptions() if opts['noise_handling'] and eval(opts['noise_handling']): raise ValueError('noise_handling not available with class CMAEvolutionStrategy, use function fmin') if opts['restarts'] and eval(opts['restarts']): raise ValueError('restarts not available with class CMAEvolutionStrategy, use function fmin') if x0 == str(x0): x0 = eval(x0) self.mean = array(x0) # should not have column or row, is just 1-D if self.mean.ndim == 2: print('WARNING: input x0 should be a list or 1-D array, trying to flatten ' + str(self.mean.shape) + '-array') if self.mean.shape[0] == 1: self.mean = self.mean[0] elif self.mean.shape[1] == 1: self.mean = array([x[0] for x in self.mean]) if self.mean.ndim != 1: raise _Error('x0 must be 1-D array') if len(self.mean) <= 1: raise _Error('optimization in 1-D is not supported (code was never tested)') self.N = self.mean.shape[0] N = self.N self.mean.resize(N) # 1-D array, not really necessary?! self.x0 = self.mean self.mean = self.x0.copy() # goes to initialize self.sigma0 = sigma0 if isinstance(sigma0, str): # TODO: no real need here (do rather in fmin) self.sigma0 = eval(sigma0) # like '1./N' or 'np.random.rand(1)[0]+1e-2' if np.size(self.sigma0) != 1 or np.shape(self.sigma0): raise _Error('input argument sigma0 must be (or evaluate to) a scalar') self.sigma = self.sigma0 # goes to inialize # extract/expand options opts.evalall(locals()) # using only N self.opts = opts self.randn = opts['randn'] self.gp = GenoPheno(N, opts['scaling_of_variables'], opts['typical_x'], opts['bounds'], opts['fixed_variables'], opts['transformation']) self.boundPenalty = BoundPenalty(self.gp.bounds) s = self.gp.geno(self.mean) self.mean = self.gp.geno(self.mean, bounds=self.gp.bounds) self.N = len(self.mean) N = self.N if (self.mean != s).any(): print('WARNING: initial solution is out of the domain boundaries:') print(' x0 = ' + str(self.inputargs['x0'])) print(' ldom = ' + str(self.gp.bounds[0])) print(' udom = ' + str(self.gp.bounds[1])) self.fmean = np.NaN # TODO name should change? prints nan (OK with matlab&octave) self.fmean_noise_free = 0. # for output only self.sp = CMAParameters(N, opts) self.sp0 = self.sp # looks useless, as it is not a copy # initialization of state variables self.countiter = 0 self.countevals = max((0, opts['verb_append'])) if type(opts['verb_append']) is not bool else 0 self.ps = np.zeros(N) self.pc = np.zeros(N) stds = np.ones(N) self.sigma_vec = np.ones(N) if np.isfinite(self.sp.dampsvec) else 1 if np.all(self.opts['CMA_teststds']): # also 0 would not make sense stds = self.opts['CMA_teststds'] if np.size(stds) != N: raise _Error('CMA_teststds option must have dimension = ' + str(N)) if self.opts['CMA_diagonal']: # is True or > 0 # linear time and space complexity self.B = array(1) # works fine with np.dot(self.B, anything) and self.B.T self.C = stds**2 # TODO: remove this!? self.dC = self.C else: self.B = np.eye(N) # identity(N), do not from matlib import *, as eye is a matrix there # prevent equal eigenvals, a hack for np.linalg: self.C = np.diag(stds**2 * exp(1e-6*(np.random.rand(N)-0.5))) self.dC = np.diag(self.C) self.Zneg = np.zeros((N, N)) self.D = stds self.flgtelldone = True self.itereigenupdated = self.countiter self.noiseS = 0 # noise "signal" self.hsiglist = [] if not opts['seed']: np.random.seed() six_decimals = (time.time() - 1e6 * (time.time() // 1e6)) opts['seed'] = 1e5 * np.random.rand() + six_decimals + 1e5 * (time.time() % 1) opts['seed'] = int(opts['seed']) np.random.seed(opts['seed']) self.sent_solutions = SolutionDict() self.best = BestSolution() out = {} # TODO: obsolete, replaced by method results()? out['best'] = self.best # out['hsigcount'] = 0 out['termination'] = {} self.out = out self.const = BlancClass() self.const.chiN = N**0.5*(1-1./(4.*N)+1./(21.*N**2)) # expectation of norm(randn(N,1)) # attribute for stopping criteria in function stop self.stopdict = CMAStopDict() self.callbackstop = 0 self.fit = BlancClass() self.fit.fit = [] # not really necessary self.fit.hist = [] # short history of best self.fit.histbest = [] # long history of best self.fit.histmedian = [] # long history of median self.more_to_write = [] #[1, 1, 1, 1] # N*[1] # needed when writing takes place before setting # say hello if opts['verb_disp'] > 0: sweighted = '_w' if self.sp.mu > 1 else '' smirr = 'mirr%d' % (self.sp.lam_mirr) if self.sp.lam_mirr else '' print('(%d' % (self.sp.mu) + sweighted + ',%d' % (self.sp.popsize) + smirr + ')-CMA-ES' + ' (mu_w=%2.1f,w_1=%d%%)' % (self.sp.mueff, int(100*self.sp.weights[0])) + ' in dimension %d (seed=%d, %s)' % (N, opts['seed'], time.asctime())) # + func.__name__ if opts['CMA_diagonal'] and self.sp.CMA_on: s = '' if opts['CMA_diagonal'] is not True: s = ' for ' if opts['CMA_diagonal'] < np.inf: s += str(int(opts['CMA_diagonal'])) else: s += str(np.floor(opts['CMA_diagonal'])) s += ' iterations' s += ' (1/ccov=' + str(round(1./(self.sp.c1+self.sp.cmu))) + ')' print(' Covariance matrix is diagonal' + s) #____________________________________________________________ #____________________________________________________________ def ask(self, number=None, xmean=None, sigma_fac=1): """get new candidate solutions, sampled from a multi-variate normal distribution and transformed to f-representation (phenotype) to be evaluated. Arguments --------- `number` number of returned solutions, by default the population size ``popsize`` (AKA ``lambda``). `xmean` distribution mean `sigma` multiplier for internal sample width (standard deviation) Return ------ A list of N-dimensional candidate solutions to be evaluated Example ------- >>> import cma >>> es = cma.CMAEvolutionStrategy([0,0,0,0], 0.3) >>> while not es.stop() and es.best.f > 1e-6: # my_desired_target_f_value ... X = es.ask() # get list of new solutions ... fit = [cma.fcts.rosen(x) for x in X] # call function rosen with each solution ... es.tell(X, fit) # feed values :See: `ask_and_eval`, `ask_geno`, `tell` """ pop_geno = self.ask_geno(number, xmean, sigma_fac) # N,lambda=20,200: overall CPU 7s vs 5s == 40% overhead, even without bounds! # new data: 11.5s vs 9.5s == 20% # TODO: check here, whether this is necessary? # return [self.gp.pheno(x, copy=False, bounds=self.gp.bounds) for x in pop] # probably fine # return [Solution(self.gp.pheno(x, copy=False), copy=False) for x in pop] # here comes the memory leak, now solved # pop_pheno = [Solution(self.gp.pheno(x, copy=False), copy=False).repair(self.gp.bounds) for x in pop_geno] pop_pheno = [self.gp.pheno(x, copy=True, bounds=self.gp.bounds) for x in pop_geno] if not self.gp.isidentity or use_sent_solutions: # costs 25% in CPU performance with N,lambda=20,200 # archive returned solutions, first clean up archive if self.countiter % 30/self.popsize**0.5 < 1: self.sent_solutions.truncate(0, self.countiter - 1 - 3 * self.N/self.popsize**0.5) # insert solutions for i in range(len(pop_geno)): self.sent_solutions[pop_pheno[i]] = {'geno': pop_geno[i], 'pheno': pop_pheno[i], 'iteration': self.countiter} return pop_pheno #____________________________________________________________ #____________________________________________________________ def ask_geno(self, number=None, xmean=None, sigma_fac=1): """get new candidate solutions in genotyp, sampled from a multi-variate normal distribution. Arguments are `number` number of returned solutions, by default the population size `popsize` (AKA lambda). `xmean` distribution mean `sigma_fac` multiplier for internal sample width (standard deviation) `ask_geno` returns a list of N-dimensional candidate solutions in genotyp representation and is called by `ask`. :See: `ask`, `ask_and_eval` """ if number is None or number < 1: number = self.sp.popsize if xmean is None: xmean = self.mean if self.countiter == 0: self.tic = time.clock() # backward compatible self.elapsed_time = ElapsedTime() if self.opts['CMA_AII']: if self.countiter == 0: self.aii = AII(self.x0, self.sigma0) self.flgtelldone = False pop = self.aii.ask(number) return pop sigma = sigma_fac * self.sigma # update parameters for sampling the distribution # fac 0 1 10 # 150-D cigar: # 50749 50464 50787 # 200-D elli: == 6.9 # 99900 101160 # 100995 103275 == 2% loss # 100-D elli: == 6.9 # 363052 369325 < 2% loss # 365075 365755 # update distribution if self.sp.CMA_on and ( (self.opts['updatecovwait'] is None and self.countiter >= self.itereigenupdated + 1./(self.sp.c1+self.sp.cmu)/self.N/10 ) or (self.opts['updatecovwait'] is not None and self.countiter > self.itereigenupdated + self.opts['updatecovwait'] )): self.updateBD() # sample distribution if self.flgtelldone: # could be done in tell()!? self.flgtelldone = False self.ary = [] # each row is a solution arz = self.randn((number, self.N)) if 11 < 3: # mutate along the principal axes only perm = np.random.permutation(self.N) # indices for mutated principal component for i in range(min((len(arz), self.N))): # perm = np.random.permutation(self.N) # random principal component, should be much worse l = sum(arz[i]**2)**0.5 arz[i] *= 0 if 11 < 3: # mirrored sampling arz[i][perm[int(i/2)]] = l * (2 * (i % 2) - 1) else: arz[i][perm[i % self.N]] = l * np.sign(np.random.rand(1) - 0.5) if number == self.sp.popsize: self.arz = arz # is never used else: pass if 11 < 3: # normalize the length to chiN for i in range(len(arz)): # arz[i] *= exp(self.randn(1)[0] / 8) ss = sum(arz[i]**2)**0.5 arz[i] *= self.const.chiN / ss # or to average # arz *= 1 * self.const.chiN / np.mean([sum(z**2)**0.5 for z in arz]) # fac = np.mean(sum(arz**2, 1)**0.5) # print fac # arz *= self.const.chiN / fac self.ary = self.sigma_vec * np.dot(self.B, (self.D * arz).T).T pop = xmean + sigma * self.ary self.evaluations_per_f_value = 1 return pop def get_mirror(self, x): """return ``pheno(self.mean - (geno(x) - self.mean))``. TODO: this implementation is yet experimental. Selectively mirrored sampling improves to a moderate extend but overadditively with active CMA for quite understandable reasons. Optimal number of mirrors are suprisingly small: 1,2,3 for maxlam=7,13,20 however note that 3,6,10 are the respective maximal possible mirrors that must be clearly suboptimal. """ try: # dx = x.geno - self.mean, repair or boundary handling is not taken into account dx = self.sent_solutions[x]['geno'] - self.mean except: print('WARNING: use of geno is depreciated') dx = self.gp.geno(x, copy=True) - self.mean dx *= sum(self.randn(self.N)**2)**0.5 / self.mahalanobisNorm(dx) x = self.mean - dx y = self.gp.pheno(x, bounds=self.gp.bounds) if not self.gp.isidentity or use_sent_solutions: # costs 25% in CPU performance with N,lambda=20,200 self.sent_solutions[y] = {'geno': x, 'pheno': y, 'iteration': self.countiter} return y def mirror_penalized(self, f_values, idx): """obsolete and subject to removal (TODO), return modified f-values such that for each mirror one becomes worst. This function is useless when selective mirroring is applied with no more than (lambda-mu)/2 solutions. Mirrors are leading and trailing values in ``f_values``. """ assert len(f_values) >= 2 * len(idx) m = np.max(np.abs(f_values)) for i in len(idx): if f_values[idx[i]] > f_values[-1-i]: f_values[idx[i]] += m else: f_values[-1-i] += m return f_values def mirror_idx_cov(self, f_values, idx1): # will most likely be removed """obsolete and subject to removal (TODO), return indices for negative ("active") update of the covariance matrix assuming that ``f_values[idx1[i]]`` and ``f_values[-1-i]`` are the corresponding mirrored values computes the index of the worse solution sorted by the f-value of the better solution. TODO: when the actual mirror was rejected, it is better to return idx1 instead of idx2. Remark: this function might not be necessary at all: if the worst solution is the best mirrored, the covariance matrix updates cancel (cave: weights and learning rates), which seems what is desirable. If the mirror is bad, as strong negative update is made, again what is desirable. And the fitness--step-length correlation is in part addressed by using flat weights. """ idx2 = np.arange(len(f_values) - 1, len(f_values) - 1 - len(idx1), -1) f = [] for i in range(len(idx1)): f.append(min((f_values[idx1[i]], f_values[idx2[i]]))) # idx.append(idx1[i] if f_values[idx1[i]] > f_values[idx2[i]] else idx2[i]) return idx2[np.argsort(f)][-1::-1] #____________________________________________________________ #____________________________________________________________ # def ask_and_eval(self, func, args=(), number=None, xmean=None, sigma_fac=1, evaluations=1, aggregation=np.median): """samples `number` solutions and evaluates them on `func`, where each solution `s` is resampled until ``func(s) not in (numpy.NaN, None)``. Arguments --------- `func` objective function `args` additional parameters for `func` `number` number of solutions to be sampled, by default population size ``popsize`` (AKA lambda) `xmean` mean for sampling the solutions, by default ``self.mean``. `sigma_fac` multiplier for sampling width, standard deviation, for example to get a small perturbation of solution `xmean` `evaluations` number of evaluations for each sampled solution `aggregation` function that aggregates `evaluations` values to as single value. Return ------ ``(X, fit)``, where X -- list of solutions fit -- list of respective function values Details ------- When ``func(x)`` returns `NaN` or `None` a new solution is sampled until ``func(x) not in (numpy.NaN, None)``. The argument to `func` can be freely modified within `func`. Depending on the ``CMA_mirrors`` option, some solutions are not sampled independently but as mirrors of other bad solutions. This is a simple derandomization that can save 10-30% of the evaluations in particular with small populations, for example on the cigar function. Example ------- >>> import cma >>> x0, sigma0 = 8*[10], 1 # 8-D >>> es = cma.CMAEvolutionStrategy(x0, sigma0) >>> while not es.stop(): ... X, fit = es.ask_and_eval(cma.fcts.elli) # handles NaN with resampling ... es.tell(X, fit) # pass on fitness values ... es.disp(20) # print every 20-th iteration >>> print('terminated on ' + str(es.stop())) A single iteration step can be expressed in one line, such that an entire optimization after initialization becomes :: while not es.stop(): es.tell(*es.ask_and_eval(cma.fcts.elli)) """ # initialize popsize = self.sp.popsize if number is not None: popsize = number selective_mirroring = True nmirrors = self.sp.lam_mirr if popsize != self.sp.popsize: nmirrors = Mh.sround(popsize * self.sp.lam_mirr / self.sp.popsize) # TODO: now selective mirroring might be impaired assert nmirrors <= popsize // 2 self.mirrors_idx = np.arange(nmirrors) # might never be used self.mirrors_rejected_idx = [] # might never be used if xmean is None: xmean = self.mean # do the work fit = [] # or np.NaN * np.empty(number) X_first = self.ask(popsize) X = [] for k in range(int(popsize)): nreject = -1 f = np.NaN while f in (np.NaN, None): # rejection sampling nreject += 1 if k < popsize - nmirrors or nreject: if nreject: x = self.ask(1, xmean, sigma_fac)[0] else: x = X_first.pop(0) else: # mirrored sample if k == popsize - nmirrors and selective_mirroring: self.mirrors_idx = np.argsort(fit)[-1:-1-nmirrors:-1] x = self.get_mirror(X[self.mirrors_idx[popsize - 1 - k]]) if nreject == 1 and k >= popsize - nmirrors: self.mirrors_rejected_idx.append(k) # contraints handling test hardwired ccccccccccc if 11 < 3 and self.opts['vv'] and nreject < 2: # trying out negative C-update as constraints handling if not hasattr(self, 'constraints_paths'): k = 1 self.constraints_paths = [np.zeros(self.N) for _i in range(k)] Izero = np.zeros([self.N, self.N]) for i in range(self.N): if x[i] < 0: Izero[i][i] = 1 self.C -= self.opts['vv'] * Izero Izero[i][i] = 0 if 1 < 3 and sum([ (9 + i + 1) * x[i] for i in range(self.N)]) > 50e3: self.constraints_paths[0] = 0.9 * self.constraints_paths[0] + 0.1 * (x - self.mean) / self.sigma self.C -= (self.opts['vv'] / self.N) * np.outer(self.constraints_paths[0], self.constraints_paths[0]) f = func(x, *args) if f not in (np.NaN, None) and evaluations > 1: f = aggregation([f] + [func(x, *args) for _i in range(int(evaluations-1))]) if nreject + 1 % 1000 == 0: print(' %d solutions rejected (f-value NaN or None) at iteration %d' % (nreject, self.countiter)) fit.append(f) X.append(x) self.evaluations_per_f_value = int(evaluations) return X, fit #____________________________________________________________ def tell(self, solutions, function_values, check_points=None, copy=False): """pass objective function values to prepare for next iteration. This core procedure of the CMA-ES algorithm updates all state variables, in particular the two evolution paths, the distribution mean, the covariance matrix and a step-size. Arguments --------- `solutions` list or array of candidate solution points (of type `numpy.ndarray`), most presumably before delivered by method `ask()` or `ask_and_eval()`. `function_values` list or array of objective function values corresponding to the respective points. Beside for termination decisions, only the ranking of values in `function_values` is used. `check_points` If ``check_points is None``, only solutions that are not generated by `ask()` are possibly clipped (recommended). ``False`` does not clip any solution (not recommended). If ``True``, clips solutions that realize long steps (i.e. also those that are unlikely to be generated with `ask()`). `check_points` can be a list of indices to be checked in solutions. `copy` ``solutions`` can be modified in this routine, if ``copy is False`` Details ------- `tell()` updates the parameters of the multivariate normal search distribution, namely covariance matrix and step-size and updates also the attributes `countiter` and `countevals`. To check the points for consistency is quadratic in the dimension (like sampling points). Bugs ---- The effect of changing the solutions delivered by `ask()` depends on whether boundary handling is applied. With boundary handling, modifications are disregarded. This is necessary to apply the default boundary handling that uses unrepaired solutions but might change in future. Example ------- :: import cma func = cma.fcts.elli # choose objective function es = cma.CMAEvolutionStrategy(cma.np.random.rand(10), 1) while not es.stop(): X = es.ask() es.tell(X, [func(x) for x in X]) es.result() # where the result can be found :See: class `CMAEvolutionStrategy`, `ask()`, `ask_and_eval()`, `fmin()` """ #____________________________________________________________ # TODO: consider an input argument that flags injected trust-worthy solutions (which means # that they can be treated "absolut" rather than "relative") if self.flgtelldone: raise _Error('tell should only be called once per iteration') lam = len(solutions) if lam != array(function_values).shape[0]: raise _Error('for each candidate solution ' + 'a function value must be provided') if lam + self.sp.lam_mirr < 3: raise _Error('population size ' + str(lam) + ' is too small when option CMA_mirrors * popsize < 0.5') if not np.isscalar(function_values[0]): if np.isscalar(function_values[0][0]): if self.countiter <= 1: print('WARNING: function values are not a list of scalars (further warnings are suppressed)') function_values = [val[0] for val in function_values] else: raise _Error('objective function values must be a list of scalars') ### prepare N = self.N sp = self.sp if 11 < 3 and lam != sp.popsize: # turned off, because mu should stay constant, still not desastrous print('WARNING: population size has changed, recomputing parameters') self.sp.set(self.opts, lam) # not really tested if lam < sp.mu: # rather decrease cmean instead of having mu > lambda//2 raise _Error('not enough solutions passed to function tell (mu>lambda)') self.countiter += 1 # >= 1 now self.countevals += sp.popsize * self.evaluations_per_f_value self.best.update(solutions, self.sent_solutions, function_values, self.countevals) flgseparable = self.opts['CMA_diagonal'] is True \ or self.countiter <= self.opts['CMA_diagonal'] if not flgseparable and len(self.C.shape) == 1: # C was diagonal ie 1-D # enter non-separable phase (no easy return from here) self.B = np.eye(N) # identity(N) self.C = np.diag(self.C) idx = np.argsort(self.D) self.D = self.D[idx] self.B = self.B[:,idx] self.Zneg = np.zeros((N, N)) ### manage fitness fit = self.fit # make short cut # CPU for N,lam=20,200: this takes 10s vs 7s fit.bndpen = self.boundPenalty.update(function_values, self)(solutions, self.sent_solutions, self.gp) # for testing: # fit.bndpen = self.boundPenalty.update(function_values, self)([s.unrepaired for s in solutions]) fit.idx = np.argsort(array(fit.bndpen) + array(function_values)) fit.fit = array(function_values, copy=False)[fit.idx] # update output data TODO: this is obsolete!? However: need communicate current best x-value? # old: out['recent_x'] = self.gp.pheno(pop[0]) self.out['recent_x'] = array(solutions[fit.idx[0]]) # TODO: change in a data structure(?) and use current as identify self.out['recent_f'] = fit.fit[0] # fitness histories fit.hist.insert(0, fit.fit[0]) # if len(self.fit.histbest) < 120+30*N/sp.popsize or # does not help, as tablet in the beginning is the critical counter-case if ((self.countiter % 5) == 0): # 20 percent of 1e5 gen. fit.histbest.insert(0, fit.fit[0]) fit.histmedian.insert(0, np.median(fit.fit) if len(fit.fit) < 21 else fit.fit[self.popsize // 2]) if len(fit.histbest) > 2e4: # 10 + 30*N/sp.popsize: fit.histbest.pop() fit.histmedian.pop() if len(fit.hist) > 10 + 30*N/sp.popsize: fit.hist.pop() if self.opts['CMA_AII']: self.aii.tell(solutions, function_values) self.flgtelldone = True # for output: self.mean = self.aii.mean self.dC = self.aii.sigmai**2 self.sigma = self.aii.sigma self.D = 1e-11 + (self.aii.r**2)**0.5 self.more_to_write += [self.aii.sigma_r] return # TODO: clean up inconsistency when an unrepaired solution is available and used pop = [] # create pop from input argument solutions for s in solutions: # use phenotype before Solution.repair() if use_sent_solutions: x = self.sent_solutions.pop(s, None) # 12.7s vs 11.3s with N,lambda=20,200 if x is not None: pop.append(x['geno']) # TODO: keep additional infos or don't pop s from sent_solutions in the first place else: # print 'WARNING: solution not found in ``self.sent_solutions`` (is expected for injected solutions)' pop.append(self.gp.geno(s, copy=copy)) # cannot recover the original genotype with boundary handling if check_points in (None, True, 1): self.repair_genotype(pop[-1]) # necessary if pop[-1] was changed or injected by the user. else: # TODO: to be removed? # print 'WARNING: ``geno`` mapping depreciated' pop.append(self.gp.geno(s, copy=copy)) if check_points in (None, True, 1): self.repair_genotype(pop[-1]) # necessary or not? # print 'repaired' mold = self.mean sigma_fac = 1 # check and normalize each x - m # check_points is a flag (None is default: check non-known solutions) or an index list # should also a number possible (first check_points points)? if check_points not in (None, False, 0, [], ()): # useful in case of injected solutions and/or adaptive encoding, however is automatic with use_sent_solutions try: if len(check_points): idx = check_points except: idx = range(sp.popsize) for k in idx: self.repair_genotype(pop[k]) # sort pop if type(pop) is not array: # only arrays can be multiple indexed pop = array(pop, copy=False) pop = pop[fit.idx] if self.opts['CMA_elitist'] and self.best.f < fit.fit[0]: if self.best.x_geno is not None: xp = [self.best.x_geno] # xp = [self.best.xdict['geno']] # xp = [self.gp.geno(self.best.x[:])] # TODO: remove # print self.mahalanobisNorm(xp[0]-self.mean) self.clip_or_fit_solutions(xp, [0]) pop = array([xp[0]] + list(pop)) else: print('genotype for elitist not found') # compute new mean self.mean = mold + self.sp.cmean * \ (sum(sp.weights * pop[0:sp.mu].T, 1) - mold) # check Delta m (this is not default, but could become at some point) # CAVE: upper_length=sqrt(2)+2 is too restrictive, test upper_length = sqrt(2*N) thoroughly. # simple test case injecting self.mean: # self.mean = 1e-4 * self.sigma * np.random.randn(N) if 11 < 3 and self.opts['vv'] and check_points: # TODO: check_points might be an index-list cmean = self.sp.cmean / min(1, (sqrt(self.opts['vv']*N)+2) / ( # abuse of cmean (sqrt(self.sp.mueff) / self.sp.cmean) * self.mahalanobisNorm(self.mean - mold))) else: cmean = self.sp.cmean if 11 < 3: # plot length of mean - mold self.more_to_write += [sqrt(sp.mueff) * sum(((1./self.D) * dot(self.B.T, self.mean - mold))**2)**0.5 / self.sigma / sqrt(N) / cmean] # get learning rate constants cc, c1, cmu = sp.cc, sp.c1, sp.cmu if flgseparable: cc, c1, cmu = sp.cc_sep, sp.c1_sep, sp.cmu_sep # now the real work can start # evolution paths self.ps = (1-sp.cs) * self.ps + \ (sqrt(sp.cs*(2-sp.cs)*sp.mueff) / self.sigma / cmean) * \ dot(self.B, (1./self.D) * dot(self.B.T, (self.mean - mold) / self.sigma_vec)) # "hsig", correction with self.countiter seems not necessary, also pc starts with zero hsig = sum(self.ps**2) / (1-(1-sp.cs)**(2*self.countiter)) / self.N < 2 + 4./(N+1) if 11 < 3: # hsig = 1 # sp.cc = 4 / (N + 4) # sp.cs = 4 / (N + 4) # sp.cc = 1 # sp.damps = 2 # # sp.CMA_on = False # c1 = 0 # 2 / ((N + 1.3)**2 + 0 * sp.mu) # 1 / N**2 # cmu = min([1 - c1, cmu]) if self.countiter == 1: print('parameters modified') # hsig = sum(self.ps**2) / self.N < 2 + 4./(N+1) # adjust missing variance due to hsig, in 4-D with damps=1e99 and sig0 small # hsig leads to premature convergence of C otherwise #hsiga = (1-hsig**2) * c1 * cc * (2-cc) # to be removed in future c1a = c1 - (1-hsig**2) * c1 * cc * (2-cc) # adjust for variance loss if 11 < 3: # diagnostic data self.out['hsigcount'] += 1 - hsig if not hsig: self.hsiglist.append(self.countiter) if 11 < 3: # diagnostic message if not hsig: print(str(self.countiter) + ': hsig-stall') if 11 < 3: # for testing purpose hsig = 1 # TODO: # put correction term, but how? if self.countiter == 1: print('hsig=1') self.pc = (1-cc) * self.pc + \ hsig * (sqrt(cc*(2-cc)*sp.mueff) / self.sigma / cmean) * \ (self.mean - mold) / self.sigma_vec # covariance matrix adaptation/udpate if sp.CMA_on: # assert sp.c1 + sp.cmu < sp.mueff / N # ?? assert c1 + cmu <= 1 # default full matrix case if not flgseparable: Z = (pop[0:sp.mu] - mold) / (self.sigma * self.sigma_vec) Z = dot((cmu * sp.weights) * Z.T, Z) # learning rate integrated if self.sp.neg.cmuexp: tmp = (pop[-sp.neg.mu:] - mold) / (self.sigma * self.sigma_vec) self.Zneg *= 1 - self.sp.neg.cmuexp # for some reason necessary? self.Zneg += dot(sp.neg.weights * tmp.T, tmp) - self.C # self.update_exponential(dot(sp.neg.weights * tmp.T, tmp) - 1 * self.C, -1*self.sp.neg.cmuexp) if 11 < 3: # ?3 to 5 times slower?? Z = np.zeros((N,N)) for k in range(sp.mu): z = (pop[k]-mold) Z += np.outer((cmu * sp.weights[k] / (self.sigma * self.sigma_vec)**2) * z, z) self.C *= 1 - c1a - cmu self.C += np.outer(c1 * self.pc, self.pc) + Z self.dC = np.diag(self.C) # for output and termination checking else: # separable/diagonal linear case assert(c1+cmu <= 1) Z = np.zeros(N) for k in range(sp.mu): z = (pop[k]-mold) / (self.sigma * self.sigma_vec) # TODO see above Z += sp.weights[k] * z * z # is 1-D self.C = (1-c1a-cmu) * self.C + c1 * self.pc * self.pc + cmu * Z # TODO: self.C *= exp(cmuneg * (N - dot(sp.neg.weights, **2) self.dC = self.C self.D = sqrt(self.C) # C is a 1-D array self.itereigenupdated = self.countiter # idx = self.mirror_idx_cov() # take half of mirrored vectors for negative update # qqqqqqqqqqq if 1 < 3 and np.isfinite(sp.dampsvec): if self.countiter == 1: print("WARNING: CMA_dampsvec option is experimental") sp.dampsvec *= np.exp(sp.dampsvec_fading/self.N) # TODO: rank-lambda update: *= (1 + sum(z[z>1]**2-1) * exp(sum(z[z<1]**2-1)) self.sigma_vec *= np.exp((sp.cs/sp.dampsvec/2) * (self.ps**2 - 1)) # self.sigma_vec *= np.exp((sp.cs/sp.dampsvec) * (abs(self.ps) - (2/np.pi)**0.5)) self.more_to_write += [exp(np.mean((self.ps**2 - 1)**2))] # TODO: rank-mu update # step-size adaptation, adapt sigma if 1 < 3: # self.sigma *= sigma_fac * \ np.exp((min((1, (sp.cs/sp.damps) * (sqrt(sum(self.ps**2))/self.const.chiN - 1))))) else: self.sigma *= sigma_fac * \ np.exp((min((1000, (sp.cs/sp.damps/2) * (sum(self.ps**2)/N - 1))))) if 11 < 3: # derandomized MSR = natural gradient descent using mean(z**2) instead of mu*mean(z)**2 lengths = array([sum(z**2)**0.5 for z in self.arz[fit.idx[:self.sp.mu]]]) # print lengths[0::int(self.sp.mu/5)] self.sigma *= np.exp(self.sp.mueff**0.5 * dot(self.sp.weights, lengths / self.const.chiN - 1))**(2/(N+1)) if 11 < 3 and self.opts['vv']: if self.countiter < 2: print('constant sigma applied') print(self.opts['vv']) # N=10,lam=10: 0.8 is optimal self.sigma = self.opts['vv'] * self.sp.mueff * sum(self.mean**2)**0.5 / N if self.sigma * min(self.dC)**0.5 < self.opts['minstd']: self.sigma = self.opts['minstd'] / min(self.dC)**0.5 # g = self.countiter # N = self.N mindx = eval(self.opts['mindx']) if type(self.opts['mindx']) == type('') else self.opts['mindx'] if self.sigma * min(self.D) < mindx: # TODO: sigma_vec is missing here self.sigma = mindx / min(self.D) if self.sigma > 1e9 * self.sigma0: alpha = self.sigma / max(self.D) self.multiplyC(alpha) self.sigma /= alpha**0.5 self.opts['tolupsigma'] /= alpha**0.5 # to be compared with sigma # TODO increase sigma in case of a plateau? # Uncertainty noise measurement is done on an upper level # output, has moved up, e.g. as part of fmin, TODO to be removed if 11 < 3 and self.opts['verb_log'] > 0 and (self.countiter < 4 or self.countiter % self.opts['verb_log'] == 0): # this assumes that two logger with the same name access the same data! CMADataLogger(self.opts['verb_filenameprefix']).register(self, append=True).add() # self.writeOutput(solutions[fit.idx[0]]) self.flgtelldone = True # end tell() def result(self): """return ``(xbest, f(xbest), evaluations_xbest, evaluations, iterations, pheno(xmean), effective_stds)``""" # TODO: how about xcurrent? return self.best.get() + ( self.countevals, self.countiter, self.gp.pheno(self.mean), self.gp.scales * self.sigma * self.sigma_vec * self.dC**0.5) def clip_or_fit_solutions(self, pop, idx): """make sure that solutions fit to sample distribution, this interface will probably change. In particular the frequency of long vectors appearing in pop[idx] - self.mean is limited. """ for k in idx: self.repair_genotype(pop[k]) def repair_genotype(self, x): """make sure that solutions fit to sample distribution, this interface will probably change. In particular the frequency of x - self.mean being long is limited. """ mold = self.mean if 1 < 3: # hard clip at upper_length upper_length = self.N**0.5 + 2 * self.N / (self.N+2) # should become an Option, but how? e.g. [0, 2, 2] fac = self.mahalanobisNorm(x - mold) / upper_length if fac > 1: x = (x - mold) / fac + mold # print self.countiter, k, fac, self.mahalanobisNorm(pop[k] - mold) # adapt also sigma: which are the trust-worthy/injected solutions? elif 11 < 3: return exp(np.tanh(((upper_length*fac)**2/self.N-1)/2) / 2) else: if 'checktail' not in self.__dict__: # hasattr(self, 'checktail') raise NotImplementedError # from check_tail_smooth import CheckTail # for the time being # self.checktail = CheckTail() # print('untested feature checktail is on') fac = self.checktail.addchin(self.mahalanobisNorm(x - mold)) if fac < 1: x = fac * (x - mold) + mold return 1.0 # sigma_fac, not in use #____________________________________________________________ #____________________________________________________________ # def updateBD(self): """update internal variables for sampling the distribution with the current covariance matrix C. This method is O(N^3), if C is not diagonal. """ # itereigenupdated is always up-to-date in the diagonal case # just double check here if self.itereigenupdated == self.countiter: return if self.sp.neg.cmuexp: # cave: self.update_exponential(self.Zneg, -self.sp.neg.cmuexp) # self.C += self.Zpos # pos update after Zneg would be the correct update, overall: # self.C = self.Zpos + Cs * Mh.expms(-self.sp.neg.cmuexp*Csi*self.Zneg*Csi) * Cs self.Zneg = np.zeros((self.N, self.N)) if self.sigma_vec is not 1 and not np.all(self.sigma_vec == 1): self.C = dot(dot(np.diag(self.sigma_vec), self.C), np.diag(self.sigma_vec)) self.sigma_vec[:] = 1 if self.opts['CMA_const_trace'] in (True, 1, 2): # normalize trace of C if self.opts['CMA_const_trace'] == 2: s = np.exp(np.mean(np.log(self.dC))) else: s = np.mean(self.dC) self.C /= s self.dC /= s self.C = (self.C + self.C.T) / 2 # self.C = np.triu(self.C) + np.triu(self.C,1).T # should work as well # self.D, self.B = eigh(self.C) # hermitian, ie symmetric C is assumed if type(self.opts['CMA_eigenmethod']) == type(1): print('WARNING: option CMA_eigenmethod should be a function, not an integer') if self.opts['CMA_eigenmethod'] == -1: # pygsl # easy to install (well, in Windows install gsl binaries first, # set system path to respective libgsl-0.dll (or cp the dll to # python\DLLS ?), in unzipped pygsl edit # gsl_dist/gsl_site_example.py into gsl_dist/gsl_site.py # and run "python setup.py build" and "python setup.py install" # in MINGW32) if 1 < 3: # import pygsl on the fly try: import pygsl.eigen.eigenvectors # TODO efficient enough? except ImportError: print('WARNING: could not find pygsl.eigen module, either install pygsl \n' + ' or set option CMA_eigenmethod=1 (is much slower), option set to 1') self.opts['CMA_eigenmethod'] = 0 # use 0 if 1 is too slow self.D, self.B = pygsl.eigen.eigenvectors(self.C) elif self.opts['CMA_eigenmethod'] == 0: # TODO: thoroughly test np.linalg.eigh # numpy.linalg.eig crashes in 200-D # and EVecs with same EVals are not orthogonal self.D, self.B = np.linalg.eigh(self.C) # self.B[i] is a row and not an eigenvector else: # is overall two;ten times slower in 10;20-D self.D, self.B = Misc.eig(self.C) # def eig, see below else: self.D, self.B = self.opts['CMA_eigenmethod'](self.C) # assert(sum(self.D-DD) < 1e-6) # assert(sum(sum(np.dot(BB, BB.T)-np.eye(self.N))) < 1e-6) # assert(sum(sum(np.dot(BB * DD, BB.T) - self.C)) < 1e-6) idx = np.argsort(self.D) self.D = self.D[idx] self.B = self.B[:,idx] # self.B[i] is a row, columns self.B[:,i] are eigenvectors # assert(all(self.B[self.countiter % self.N] == self.B[self.countiter % self.N,:])) # qqqqqqqqqq if 11 < 3: # limit condition number to 1e13 climit = 1e13 # cave: conditioncov termination is 1e14 if self.D[-1] / self.D[0] > climit: self.D += self.D[-1] / climit for i in range(self.N): self.C[i][i] += self.D[-1] / climit if 11 < 3 and any(abs(sum(self.B[:,0:self.N-1] * self.B[:,1:], 0)) > 1e-6): print('B is not orthogonal') print(self.D) print(sum(self.B[:,0:self.N-1] * self.B[:,1:], 0)) else: # is O(N^3) # assert(sum(abs(self.C - np.dot(self.D * self.B, self.B.T))) < N**2*1e-11) pass self.D **= 0.5 self.itereigenupdated = self.countiter def multiplyC(self, alpha): """multiply C with a scalar and update all related internal variables (dC, D,...)""" self.C *= alpha if self.dC is not self.C: self.dC *= alpha self.D *= alpha**0.5 def update_exponential(self, Z, eta, BDpair=None): """exponential update of C that guarantees positive definiteness, that is, instead of the assignment ``C = C + eta * Z``, C gets C**.5 * exp(eta * C**-.5 * Z * C**-.5) * C**.5. Parameter Z should have expectation zero, e.g. sum(w[i] * z[i] * z[i].T) - C if E z z.T = C. This function conducts two eigendecompositions, assuming that B and D are not up to date, unless `BDpair` is given. Given BDpair, B is the eigensystem and D is the vector of sqrt(eigenvalues), one eigendecomposition is omitted. Reference: Glasmachers et al 2010, Exponential Natural Evolution Strategies """ if eta == 0: return if BDpair: B, D = BDpair else: D, B = self.opts['CMA_eigenmethod'](self.C) D **= 0.5 Csi = dot(B, (B / D).T) Cs = dot(B, (B * D).T) self.C = dot(Cs, dot(Mh.expms(eta * dot(Csi, dot(Z, Csi)), self.opts['CMA_eigenmethod']), Cs)) #____________________________________________________________ #____________________________________________________________ # def _updateCholesky(self, A, Ainv, p, alpha, beta): """not yet implemented""" # BD is A, p is A*Normal(0,I) distributed # input is assumed to be numpy arrays # Ainv is needed to compute the evolution path # this is a stump and is not tested raise _Error("not yet implemented") # prepare alpha = float(alpha) beta = float(beta) y = np.dot(Ainv, p) y_sum = sum(y**2) # compute scalars tmp = sqrt(1 + beta * y_sum / alpha) fac = (sqrt(alpha) / sum(y**2)) * (tmp - 1) facinv = (1. / (sqrt(alpha) * sum(y**2))) * (1 - 1. / tmp) # update matrices A *= sqrt(alpha) A += np.outer(fac * p, y) Ainv /= sqrt(alpha) Ainv -= np.outer(facinv * y, np.dot(y.T, Ainv)) #____________________________________________________________ #____________________________________________________________ def feedForResume(self, X, function_values): """Given all "previous" candidate solutions and their respective function values, the state of a `CMAEvolutionStrategy` object can be reconstructed from this history. This is the purpose of function `feedForResume`. Arguments --------- `X` (all) solution points in chronological order, phenotypic representation. The number of points must be a multiple of popsize. `function_values` respective objective function values Details ------- `feedForResume` can be called repeatedly with only parts of the history. The part must have the length of a multiple of the population size. `feedForResume` feeds the history in popsize-chunks into `tell`. The state of the random number generator might not be reconstructed, but this would be only relevant for the future. Example ------- :: import cma # prepare (x0, sigma0) = ... # initial values from previous trial X = ... # list of generated solutions from a previous trial f = ... # respective list of f-values # resume es = cma.CMAEvolutionStrategy(x0, sigma0) es.feedForResume(X, f) # continue with func as objective function while not es.stop(): X = es.ask() es.tell(X, [func(x) for x in X]) Credits to Dirk Bueche and Fabrice Marchal for the feeding idea. :See: class `CMAEvolutionStrategy` for a simple dump/load to resume """ if self.countiter > 0: print('WARNING: feed should generally be used with a new object instance') if len(X) != len(function_values): raise _Error('number of solutions ' + str(len(X)) + ' and number function values ' + str(len(function_values))+' must not differ') popsize = self.sp.popsize if (len(X) % popsize) != 0: raise _Error('number of solutions ' + str(len(X)) + ' must be a multiple of popsize (lambda) ' + str(popsize)) for i in range(len(X) / popsize): # feed in chunks of size popsize self.ask() # a fake ask, mainly for a conditioned calling of updateBD # and secondary to get possibly the same random state self.tell(X[i*popsize:(i+1)*popsize], function_values[i*popsize:(i+1)*popsize]) #____________________________________________________________ #____________________________________________________________ def readProperties(self): """reads dynamic parameters from property file (not implemented) """ print('not yet implemented') #____________________________________________________________ #____________________________________________________________ def mahalanobisNorm(self, dx): """ compute the Mahalanobis norm that is induced by the adapted covariance matrix C times sigma**2. Argument -------- A *genotype* difference `dx`. Example ------- >>> import cma, numpy >>> es = cma.CMAEvolutionStrategy(numpy.ones(10), 1) >>> xx = numpy.random.randn(2, 10) >>> d = es.mahalanobisNorm(es.gp.geno(xx[0]-xx[1])) `d` is the distance "in" the true sample distribution, sampled points have a typical distance of ``sqrt(2*es.N)``, where `N` is the dimension. In the example, `d` is the Euclidean distance, because C = I and sigma = 1. """ return sqrt(sum((self.D**-1 * np.dot(self.B.T, dx))**2)) / self.sigma #____________________________________________________________ #____________________________________________________________ # def timesCroot(self, mat): """return C**0.5 times mat, where mat can be a vector or matrix. Not functional, because _Croot=C**0.5 is never computed (should be in updateBD) """ print("WARNING: timesCroot is not yet tested") if self.opts['CMA_diagonal'] is True \ or self.countiter <= self.opts['CMA_diagonal']: res = (self._Croot * mat.T).T else: res = np.dot(self._Croot, mat) return res def divCroot(self, mat): """return C**-1/2 times mat, where mat can be a vector or matrix""" print("WARNING: divCroot is not yet tested") if self.opts['CMA_diagonal'] is True \ or self.countiter <= self.opts['CMA_diagonal']: res = (self._Crootinv * mat.T).T else: res = np.dot(self._Crootinv, mat) return res #____________________________________________________________ #____________________________________________________________ def disp_annotation(self): """print annotation for `disp()`""" print('Iterat #Fevals function value axis ratio sigma minstd maxstd min:sec') sys.stdout.flush() #____________________________________________________________ #____________________________________________________________ def disp(self, modulo=None): # TODO: rather assign opt['verb_disp'] as default? """prints some infos according to `disp_annotation()`, if ``iteration_counter % modulo == 0`` """ if modulo is None: modulo = self.opts['verb_disp'] # console display if modulo: if (self.countiter-1) % (10 * modulo) < 1: self.disp_annotation() if self.countiter > 0 and (self.stop() or self.countiter < 4 or self.countiter % modulo < 1): if self.opts['verb_time']: toc = self.elapsed_time() stime = str(int(toc//60))+':'+str(round(toc%60,1)) else: stime = '' print(' '.join((repr(self.countiter).rjust(5), repr(self.countevals).rjust(7), '%.15e' % (min(self.fit.fit)), '%4.1e' % (self.D.max()/self.D.min()), '%6.2e' % self.sigma, '%6.0e' % (self.sigma * sqrt(min(self.dC))), '%6.0e' % (self.sigma * sqrt(max(self.dC))), stime))) # if self.countiter < 4: sys.stdout.flush() class Options(dict): """``Options()`` returns a dictionary with the available options and their default values for function fmin and for class CMAEvolutionStrategy. ``Options(opts)`` returns the subset of recognized options in dict(opts). ``Options('pop')`` returns a subset of recognized options that contain 'pop' in there keyword name, value or description. Option values can be "written" in a string and, when passed to fmin or CMAEvolutionStrategy, are evaluated using "N" and "popsize" as known values for dimension and population size (sample size, number of new solutions per iteration). All default option values are such a string. Details ------- All Options are originally defined via the input arguments of `fmin()`. Options starting with ``tol`` are termination "tolerances". For `tolstagnation`, the median over the first and the second half of at least `tolstagnation` iterations are compared for both, the per-iteration best and per-iteration median function value. Some options are, as mentioned (`restarts`,...), only used with `fmin`. Example ------- :: import cma cma.Options('tol') is a shortcut for cma.Options().match('tol') that returns all options that contain 'tol' in their name or description. :See: `fmin`(), `CMAEvolutionStrategy`, `CMAParameters` """ # @classmethod # self is the class, not the instance # @property # def default(self): # """returns all options with defaults""" # return fmin([],[]) @staticmethod def defaults(): """return a dictionary with default option values and description, calls `fmin([], [])`""" return fmin([], []) @staticmethod def versatileOptions(): """return list of options that can be changed at any time (not only be initialized), however the list might not be entirely up to date. The string ' #v ' in the default value indicates a 'versatile' option that can be changed any time. """ return tuple(sorted(i[0] for i in list(Options.defaults().items()) if i[1].find(' #v ') > 0)) def __init__(self, s=None, unchecked=False): """return an `Options` instance, either with the default options, if ``s is None``, or with all options whose name or description contains `s`, if `s` is a string (case is disregarded), or with entries from dictionary `s` as options, not complemented with default options or settings Returns: see above. """ # if not Options.defaults: # this is different from self.defaults!!! # Options.defaults = fmin([],[]) if s is None: super(Options, self).__init__(Options.defaults()) # self = Options.defaults() elif type(s) is str: super(Options, self).__init__(Options().match(s)) # we could return here else: super(Options, self).__init__(s) if not unchecked: for key in list(self.keys()): if key not in Options.defaults(): print('Warning in cma.Options.__init__(): invalid key ``' + str(key) + '`` popped') self.pop(key) # self.evaluated = False # would become an option entry def init(self, dict_or_str, val=None, warn=True): """initialize one or several options. Arguments --------- `dict_or_str` a dictionary if ``val is None``, otherwise a key. If `val` is provided `dict_or_str` must be a valid key. `val` value for key Details ------- Only known keys are accepted. Known keys are in `Options.defaults()` """ #dic = dict_or_key if val is None else {dict_or_key:val} dic = dict_or_str if val is not None: dic = {dict_or_str:val} for key, val in list(dic.items()): if key not in Options.defaults(): # TODO: find a better solution? if warn: print('Warning in cma.Options.init(): key ' + str(key) + ' ignored') else: self[key] = val return self def set(self, dic, val=None, warn=True): """set can assign versatile options from `Options.versatileOptions()` with a new value, use `init()` for the others. Arguments --------- `dic` either a dictionary or a key. In the latter case, val must be provided `val` value for key `warn` bool, print a warning if the option cannot be changed and is therefore omitted This method will be most probably used with the ``opts`` attribute of a `CMAEvolutionStrategy` instance. """ if val is not None: # dic is a key in this case dic = {dic:val} # compose a dictionary for key, val in list(dic.items()): if key in Options.versatileOptions(): self[key] = val elif warn: print('Warning in cma.Options.set(): key ' + str(key) + ' ignored') return self # to allow o = Options(o).set(new) def complement(self): """add all missing options with their default values""" for key in Options.defaults(): if key not in self: self[key] = Options.defaults()[key] return self def settable(self): """return the subset of those options that are settable at any time. Settable options are in `versatileOptions()`, but the list might be incomlete. """ return Options([i for i in list(self.items()) if i[0] in Options.versatileOptions()]) def __call__(self, key, default=None, loc=None): """evaluate and return the value of option `key` on the fly, or returns those options whose name or description contains `key`, case disregarded. Details ------- Keys that contain `filename` are not evaluated. For ``loc==None``, `self` is used as environment but this does not define `N`. :See: `eval()`, `evalall()` """ try: val = self[key] except: return self.match(key) if loc is None: loc = self # TODO: this hack is not so useful: popsize could be there, but N is missing try: if type(val) is str: val = val.split('#')[0].strip() # remove comments if type(val) == type('') and key.find('filename') < 0 and key.find('mindx') < 0: val = eval(val, globals(), loc) # invoke default # TODO: val in ... fails with array type, because it is applied element wise! # elif val in (None,(),[],{}) and default is not None: elif val is None and default is not None: val = eval(str(default), globals(), loc) except: pass # slighly optimistic: the previous is bug-free return val def eval(self, key, default=None, loc=None): """Evaluates and sets the specified option value in environment `loc`. Many options need `N` to be defined in `loc`, some need `popsize`. Details ------- Keys that contain 'filename' are not evaluated. For `loc` is None, the self-dict is used as environment :See: `evalall()`, `__call__` """ self[key] = self(key, default, loc) return self[key] def evalall(self, loc=None): """Evaluates all option values in environment `loc`. :See: `eval()` """ # TODO: this needs rather the parameter N instead of loc if 'N' in list(loc.keys()): # TODO: __init__ of CMA can be simplified popsize = self('popsize', Options.defaults()['popsize'], loc) for k in list(self.keys()): self.eval(k, Options.defaults()[k], {'N':loc['N'], 'popsize':popsize}) return self def match(self, s=''): """return all options that match, in the name or the description, with string `s`, case is disregarded. Example: ``cma.Options().match('verb')`` returns the verbosity options. """ match = s.lower() res = {} for k in sorted(self): s = str(k) + '=\'' + str(self[k]) + '\'' if match in s.lower(): res[k] = self[k] return Options(res) def pp(self): pprint(self) def printme(self, linebreak=80): for i in sorted(Options.defaults().items()): s = str(i[0]) + "='" + str(i[1]) + "'" a = s.split(' ') # print s in chunks l = '' # start entire to the left while a: while a and len(l) + len(a[0]) < linebreak: l += ' ' + a.pop(0) print(l) l = ' ' # tab for subsequent lines #____________________________________________________________ #____________________________________________________________ class CMAParameters(object): """strategy parameters like population size and learning rates. Note: contrary to `Options`, `CMAParameters` is not (yet) part of the "user-interface" and subject to future changes (it might become a `collections.namedtuple`) Example ------- >>> import cma >>> es = cma.CMAEvolutionStrategy(20 * [0.1], 1) (6_w,12)-CMA-ES (mu_w=3.7,w_1=40%) in dimension 20 (seed=504519190) # the seed is "random" by default >>> >>> type(es.sp) # sp contains the strategy parameters >>> >>> es.sp.disp() {'CMA_on': True, 'N': 20, 'c1': 0.004181139918745593, 'c1_sep': 0.034327992810300939, 'cc': 0.17176721127681213, 'cc_sep': 0.25259494835857677, 'cmean': 1.0, 'cmu': 0.0085149624979034746, 'cmu_sep': 0.057796356229390715, 'cs': 0.21434997799189287, 'damps': 1.2143499779918929, 'mu': 6, 'mu_f': 6.0, 'mueff': 3.7294589343030671, 'popsize': 12, 'rankmualpha': 0.3, 'weights': array([ 0.40240294, 0.25338908, 0.16622156, 0.10437523, 0.05640348, 0.01720771])} >>> >> es.sp == cma.CMAParameters(20, 12, cma.Options().evalall({'N': 20})) True :See: `Options`, `CMAEvolutionStrategy` """ def __init__(self, N, opts, ccovfac=1, verbose=True): """Compute strategy parameters, mainly depending on dimension and population size, by calling `set` """ self.N = N if ccovfac == 1: ccovfac = opts['CMA_on'] # that's a hack self.set(opts, ccovfac=ccovfac, verbose=verbose) def set(self, opts, popsize=None, ccovfac=1, verbose=True): """Compute strategy parameters as a function of dimension and population size """ alpha_cc = 1.0 # cc-correction for mueff, was zero before def cone(df, mu, N, alphacov=2.0): """rank one update learning rate, ``df`` is disregarded and obsolete, reduce alphacov on noisy problems, say to 0.5""" return alphacov / ((N + 1.3)**2 + mu) def cmu(df, mu, alphamu=0.0, alphacov=2.0): """rank mu learning rate, disregarding the constrant cmu <= 1 - cone""" c = alphacov * (alphamu + mu - 2 + 1/mu) / ((N + 2)**2 + alphacov * mu / 2) # c = alphacov * (alphamu + mu - 2 + 1/mu) / (2 * (N + 2)**1.5 + alphacov * mu / 2) # print 'cmu =', c return c def conedf(df, mu, N): """used for computing separable learning rate""" return 1. / (df + 2.*sqrt(df) + float(mu)/N) def cmudf(df, mu, alphamu): """used for computing separable learning rate""" return (alphamu + mu - 2. + 1./mu) / (df + 4.*sqrt(df) + mu/2.) sp = self N = sp.N if popsize: opts.evalall({'N':N, 'popsize':popsize}) else: popsize = opts.evalall({'N':N})['popsize'] # the default popsize is computed in Options() sp.popsize = popsize if opts['CMA_mirrors'] < 0.5: sp.lam_mirr = int(0.5 + opts['CMA_mirrors'] * popsize) elif opts['CMA_mirrors'] > 1: sp.lam_mirr = int(0.5 + opts['CMA_mirrors']) else: sp.lam_mirr = int(0.5 + 0.16 * min((popsize, 2 * N + 2)) + 0.29) # 0.158650... * popsize is optimal # lam = arange(2,22) # mirr = 0.16 + 0.29/lam # print(lam); print([int(0.5 + l) for l in mirr*lam]) # [ 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21] # [1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4] sp.mu_f = sp.popsize / 2.0 # float value of mu if opts['CMA_mu'] is not None: sp.mu_f = opts['CMA_mu'] sp.mu = int(sp.mu_f + 0.499999) # round down for x.5 # in principle we have mu_opt = popsize/2 + lam_mirr/2, # which means in particular weights should only be negative for q > 0.5+mirr_frac/2 if sp.mu > sp.popsize - 2 * sp.lam_mirr + 1: print("WARNING: pairwise selection is not implemented, therefore " + " mu = %d > %d = %d - 2*%d + 1 = popsize - 2*mirr + 1 can produce a bias" % ( sp.mu, sp.popsize - 2 * sp.lam_mirr + 1, sp.popsize, sp.lam_mirr)) if sp.lam_mirr > sp.popsize // 2: raise _Error("fraction of mirrors in the population as read from option CMA_mirrors cannot be larger 0.5, " + "theoretically optimal is 0.159") sp.weights = log(max([sp.mu, sp.popsize / 2.0]) + 0.5) - log(1 + np.arange(sp.mu)) if 11 < 3: # equal recombination weights sp.mu = sp.popsize // 4 sp.weights = np.ones(sp.mu) print(sp.weights[:10]) sp.weights /= sum(sp.weights) sp.mueff = 1 / sum(sp.weights**2) sp.cs = (sp.mueff + 2) / (N + sp.mueff + 3) # TODO: clean up (here the cumulation constant is shorter if sigma_vec is used) sp.dampsvec = opts['CMA_dampsvec_fac'] * (N + 2) if opts['CMA_dampsvec_fac'] else np.Inf sp.dampsvec_fading = opts['CMA_dampsvec_fade'] if np.isfinite(sp.dampsvec): sp.cs = ((sp.mueff + 2) / (N + sp.mueff + 3))**0.5 # sp.cs = (sp.mueff + 2) / (N + 1.5*sp.mueff + 1) sp.cc = (4 + alpha_cc * sp.mueff / N) / (N + 4 + alpha_cc * 2 * sp.mueff / N) sp.cc_sep = (1 + 1/N + alpha_cc * sp.mueff / N) / (N**0.5 + 1/N + alpha_cc * 2 * sp.mueff / N) # \not\gg\cc sp.rankmualpha = opts['CMA_rankmualpha'] # sp.rankmualpha = _evalOption(opts['CMA_rankmualpha'], 0.3) sp.c1 = ccovfac * min(1, sp.popsize/6) * cone((N**2 + N) / 2, sp.mueff, N) # 2. / ((N+1.3)**2 + sp.mucov) sp.c1_sep = ccovfac * conedf(N, sp.mueff, N) if 11 < 3: sp.c1 = 0. print('c1 is zero') if opts['CMA_rankmu'] != 0: # also empty sp.cmu = min(1 - sp.c1, ccovfac * cmu((N**2+N)/2, sp.mueff, sp.rankmualpha)) sp.cmu_sep = min(1 - sp.c1_sep, ccovfac * cmudf(N, sp.mueff, sp.rankmualpha)) else: sp.cmu = sp.cmu_sep = 0 sp.neg = BlancClass() if opts['CMA_active']: # in principle we have mu_opt = popsize/2 + lam_mirr/2, # which means in particular weights should only be negative for q > 0.5+mirr_frac/2 sp.neg.mu_f = popsize - (popsize + sp.lam_mirr) / 2 if popsize > 2 else 1 sp.neg.weights = log(sp.mu_f + 0.5) - log(1 + np.arange(sp.popsize - int(sp.neg.mu_f), sp.popsize)) sp.neg.mu = len(sp.neg.weights) # maybe never useful? sp.neg.weights /= sum(sp.neg.weights) sp.neg.mueff = 1 / sum(sp.neg.weights**2) sp.neg.cmuexp = opts['CMA_activefac'] * 0.25 * sp.neg.mueff / ((N+2)**1.5 + 2 * sp.neg.mueff) assert sp.neg.mu >= sp.lam_mirr # not really necessary # sp.neg.minresidualvariance = 0.66 # not it use, keep at least 0.66 in all directions, small popsize is most critical else: sp.neg.cmuexp = 0 sp.CMA_on = sp.c1 + sp.cmu > 0 # print(sp.c1_sep / sp.cc_sep) if not opts['CMA_on'] and opts['CMA_on'] not in (None,[],(),''): sp.CMA_on = False # sp.c1 = sp.cmu = sp.c1_sep = sp.cmu_sep = 0 sp.damps = opts['CMA_dampfac'] * (0.5 + 0.5 * min([1, (sp.lam_mirr/(0.159*sp.popsize) - 1)**2])**1 + 2 * max([0, ((sp.mueff-1) / (N+1))**0.5 - 1]) + sp.cs ) if 11 < 3: # this is worse than damps = 1 + sp.cs for the (1,10000)-ES on 40D parabolic ridge sp.damps = 0.3 + 2 * max([sp.mueff/sp.popsize, ((sp.mueff-1)/(N+1))**0.5 - 1]) + sp.cs if 11 < 3: # this does not work for lambda = 4*N^2 on the parabolic ridge sp.damps = opts['CMA_dampfac'] * (2 - 0*sp.lam_mirr/sp.popsize) * sp.mueff/sp.popsize + 0.3 + sp.cs # nicer future setting print('damps =', sp.damps) if 11 < 3: sp.damps = 10 * sp.damps # 1e99 # (1 + 2*max(0,sqrt((sp.mueff-1)/(N+1))-1)) + sp.cs; # sp.damps = 20 # 1. + 20 * sp.cs**-1 # 1e99 # (1 + 2*max(0,sqrt((sp.mueff-1)/(N+1))-1)) + sp.cs; print('damps is %f' % (sp.damps)) sp.cmean = float(opts['CMA_cmean']) # sp.kappa = 1 # 4-D, lam=16, rank1, kappa < 4 does not influence convergence rate # in larger dim it does, 15-D with defaults, kappa=8 factor 2 if sp.cmean != 1: print(' cmean = %f' % (sp.cmean)) if verbose: if not sp.CMA_on: print('covariance matrix adaptation turned off') if opts['CMA_mu'] != None: print('mu = %f' % (sp.mu_f)) # return self # the constructor returns itself def disp(self): pprint(self.__dict__) #____________________________________________________________ #____________________________________________________________ class CMAStopDict(dict): """keep and update a termination condition dictionary, which is "usually" empty and returned by `CMAEvolutionStrategy.stop()`. Details ------- This could be a nested class, but nested classes cannot be serialized. :See: `stop()` """ def __init__(self, d={}): update = (type(d) == CMAEvolutionStrategy) inherit = (type(d) == CMAStopDict) super(CMAStopDict, self).__init__({} if update else d) self._stoplist = d._stoplist if inherit else [] # multiple entries self.lastiter = d.lastiter if inherit else 0 # probably not necessary if update: self._update(d) def __call__(self, es): """update the dictionary""" return self._update(es) def _addstop(self, key, cond, val=None): if cond: self.stoplist.append(key) # can have the same key twice if key in list(self.opts.keys()): val = self.opts[key] self[key] = val def _update(self, es): """Test termination criteria and update dictionary. """ if es.countiter == self.lastiter: if es.countiter == 0: self.__init__() return self try: if es == self.es: return self except: # self.es not yet assigned pass self.lastiter = es.countiter self.es = es self.stoplist = [] N = es.N opts = es.opts self.opts = opts # a hack to get _addstop going # fitness: generic criterion, user defined w/o default self._addstop('ftarget', es.best.f < opts['ftarget']) # maxiter, maxfevals: generic criteria self._addstop('maxfevals', es.countevals - 1 >= opts['maxfevals']) self._addstop('maxiter', es.countiter >= opts['maxiter']) # tolx, tolfacupx: generic criteria # tolfun, tolfunhist (CEC:tolfun includes hist) self._addstop('tolx', all([es.sigma*xi < opts['tolx'] for xi in es.pc]) and \ all([es.sigma*xi < opts['tolx'] for xi in sqrt(es.dC)])) self._addstop('tolfacupx', any([es.sigma * sig > es.sigma0 * opts['tolfacupx'] for sig in sqrt(es.dC)])) self._addstop('tolfun', es.fit.fit[-1] - es.fit.fit[0] < opts['tolfun'] and \ max(es.fit.hist) - min(es.fit.hist) < opts['tolfun']) self._addstop('tolfunhist', len(es.fit.hist) > 9 and \ max(es.fit.hist) - min(es.fit.hist) < opts['tolfunhist']) # worst seen false positive: table N=80,lam=80, getting worse for fevals=35e3 \approx 50 * N**1.5 # but the median is not so much getting worse # / 5 reflects the sparsity of histbest/median # / 2 reflects the left and right part to be compared l = int(max(opts['tolstagnation'] / 5. / 2, len(es.fit.histbest) / 10)); # TODO: why max(..., len(histbest)/10) ??? # TODO: the problem in the beginning is only with best ==> ??? if 11 < 3: # print(es.countiter, (opts['tolstagnation'], es.countiter > N * (5 + 100 / es.popsize), len(es.fit.histbest) > 100, np.median(es.fit.histmedian[:l]) >= np.median(es.fit.histmedian[l:2*l]), np.median(es.fit.histbest[:l]) >= np.median(es.fit.histbest[l:2*l]))) # equality should handle flat fitness self._addstop('tolstagnation', # leads sometimes early stop on ftablet, fcigtab, N>=50? 1 < 3 and opts['tolstagnation'] and es.countiter > N * (5 + 100 / es.popsize) and len(es.fit.histbest) > 100 and 2*l < len(es.fit.histbest) and np.median(es.fit.histmedian[:l]) >= np.median(es.fit.histmedian[l:2*l]) and np.median(es.fit.histbest[:l]) >= np.median(es.fit.histbest[l:2*l])) # iiinteger: stagnation termination can prevent to find the optimum self._addstop('tolupsigma', opts['tolupsigma'] and es.sigma / es.sigma0 / np.max(es.D) > opts['tolupsigma']) if 11 < 3 and 2*l < len(es.fit.histbest): # TODO: this might go wrong, because the nb of written columns changes tmp = np.array((-np.median(es.fit.histmedian[:l]) + np.median(es.fit.histmedian[l:2*l]), -np.median(es.fit.histbest[:l]) + np.median(es.fit.histbest[l:2*l]))) es.more_to_write += [(10**t if t < 0 else t + 1) for t in tmp] # the latter to get monotonicy if 1 < 3: # non-user defined, method specific # noeffectaxis (CEC: 0.1sigma), noeffectcoord (CEC:0.2sigma), conditioncov self._addstop('noeffectcoord', any([es.mean[i] == es.mean[i] + 0.2*es.sigma*sqrt(es.dC[i]) for i in range(N)])) if opts['CMA_diagonal'] is not True and es.countiter > opts['CMA_diagonal']: i = es.countiter % N self._addstop('noeffectaxis', sum(es.mean == es.mean + 0.1 * es.sigma * es.D[i] * es.B[:, i]) == N) self._addstop('conditioncov', es.D[-1] > 1e7 * es.D[0], 1e14) # TODO self._addstop('callback', es.callbackstop) # termination_callback if len(self): self._addstop('flat fitness: please (re)consider how to compute the fitness more elaborate', len(es.fit.hist) > 9 and \ max(es.fit.hist) == min(es.fit.hist)) if 11 < 3 and opts['vv'] == 321: self._addstop('||xmean||^2 1: f.write(' '.join(map(str, es.gp.scales))) else: f.write(str(es.gp.scales)) f.write(', typical_x: ') if np.size(es.gp.typical_x) > 1: f.write(' '.join(map(str, es.gp.typical_x))) else: f.write(str(es.gp.typical_x)) f.write('\n') f.close() except (IOError, OSError): print('could not open/write file ' + fn) fn = self.name_prefix + 'xrecentbest.dat' try: with open(fn, 'w') as f: f.write('% # iter+eval+sigma+0+fitness+xbest, ' + strseedtime + '\n') except (IOError, OSError): print('could not open/write file ' + fn) return self # end def __init__ def load(self, filenameprefix=None): """loads data from files written and return a data dictionary, *not* a prerequisite for using `plot()` or `disp()`. Argument `filenameprefix` is the filename prefix of data to be loaded (five files), by default ``'outcmaes'``. Return data dictionary with keys `xrecent`, `xmean`, `f`, `D`, `std` """ if not filenameprefix: filenameprefix = self.name_prefix for i in range(len(self.file_names)): fn = filenameprefix + self.file_names[i] + '.dat' try: self.__dict__[self.key_names[i]] = _fileToMatrix(fn) except: print('WARNING: reading from file "' + fn + '" failed') if self.key_names[i] in self.key_names_with_annotation: self.__dict__[self.key_names[i]].append(self.__dict__[self.key_names[i]][-1]) # copy last row to later fill in annotation position for display self.__dict__[self.key_names[i]] = array(self.__dict__[self.key_names[i]], copy=False) return self def add(self, es=None, more_data=[], modulo=None): # TODO: find a different way to communicate current x and f """append some logging data from `CMAEvolutionStrategy` class instance `es`, if ``number_of_times_called % modulo`` equals to zero, never if ``modulo==0``. The sequence ``more_data`` must always have the same length. When used for a different optimizer class, this function can be (easily?) adapted by changing the assignments under INTERFACE in the implemention. """ self.counter += 1 mod = modulo if modulo is not None else self.modulo if mod == 0 or (self.counter > 3 and self.counter % mod): return if es is None: try: es = self.es # must have been registered except AttributeError : raise _Error('call `add` with argument `es` or ``register(es)`` before ``add()``') elif not self.registered: self.register(es) # calls initialize # --- INTERFACE, can be changed if necessary --- if type(es) is not CMAEvolutionStrategy: # not necessary print('WARNING: expected, found ' + str(type(es)) + ' in method CMADataLogger.add') evals = es.countevals iteration = es.countiter sigma = es.sigma axratio = es.D.max()/es.D.min() xmean = es.mean # TODO: should be optionally phenotype? fmean_noise_free = es.fmean_noise_free fmean = es.fmean try: besteverf = es.best.f bestf = es.fit.fit[0] medianf = es.fit.fit[es.sp.popsize//2] worstf = es.fit.fit[-1] except: if self.counter > 1: # first call without f-values is OK raise try: xrecent = es.best.last.x except: xrecent = None maxD = es.D.max() minD = es.D.min() diagD = es.D diagC = es.sigma*es.sigma_vec*sqrt(es.dC) more_to_write = es.more_to_write es.more_to_write = [] # --- end interface --- try: # fit if self.counter > 1: fn = self.name_prefix + 'fit.dat' with open(fn, 'a') as f: f.write(str(iteration) + ' ' + str(evals) + ' ' + str(sigma) + ' ' + str(axratio) + ' ' + str(besteverf) + ' ' + '%.16e' % bestf + ' ' + str(medianf) + ' ' + str(worstf) + ' ' # + str(es.sp.popsize) + ' ' # + str(10**es.noiseS) + ' ' # + str(es.sp.cmean) + ' ' + ' '.join(str(i) for i in more_to_write) + ' '.join(str(i) for i in more_data) + '\n') # axlen fn = self.name_prefix + 'axlen.dat' with open(fn, 'a') as f: # does not rely on reference counting f.write(str(iteration) + ' ' + str(evals) + ' ' + str(sigma) + ' ' + str(maxD) + ' ' + str(minD) + ' ' + ' '.join(map(str, diagD)) + '\n') # stddev fn = self.name_prefix + 'stddev.dat' with open(fn, 'a') as f: f.write(str(iteration) + ' ' + str(evals) + ' ' + str(sigma) + ' ' + '0 0 ' + ' '.join(map(str, diagC)) + '\n') # xmean fn = self.name_prefix + 'xmean.dat' with open(fn, 'a') as f: if iteration < 1: # before first iteration f.write('0 0 0 0 0 ' + ' '.join(map(str, xmean)) + '\n') else: f.write(str(iteration) + ' ' + str(evals) + ' ' # + str(sigma) + ' ' + '0 ' + str(fmean_noise_free) + ' ' + str(fmean) + ' ' # TODO: this does not make sense # TODO should be optional the phenotyp? + ' '.join(map(str, xmean)) + '\n') # xrecent fn = self.name_prefix + 'xrecentbest.dat' if iteration > 0 and xrecent is not None: with open(fn, 'a') as f: f.write(str(iteration) + ' ' + str(evals) + ' ' + str(sigma) + ' ' + '0 ' + str(bestf) + ' ' + ' '.join(map(str, xrecent)) + '\n') except (IOError, OSError): if iteration <= 1: print('could not open/write file') def closefig(self): pylab.close(self.fighandle) def save(self, nameprefix, switch=False): """saves logger data to a different set of files, for ``switch=True`` also the loggers name prefix is switched to the new value """ if not nameprefix or type(nameprefix) is not str: _Error('filename prefix must be a nonempty string') if nameprefix == self.default_prefix: _Error('cannot save to default name "' + nameprefix + '...", chose another name') if nameprefix == self.name_prefix: return for name in CMADataLogger.names: open(nameprefix+name+'.dat', 'w').write(open(self.name_prefix+name+'.dat').read()) if switch: self.name_prefix = nameprefix def plot(self, fig=None, iabscissa=1, iteridx=None, plot_mean=True, # TODO: plot_mean default should be False foffset=1e-19, x_opt = None, fontsize=10): """ plot data from a `CMADataLogger` (using the files written by the logger). Arguments --------- `fig` figure number, by default 325 `iabscissa` ``0==plot`` versus iteration count, ``1==plot`` versus function evaluation number `iteridx` iteration indices to plot Return `CMADataLogger` itself. Examples -------- :: import cma logger = cma.CMADataLogger() # with default name # try to plot the "default logging" data (e.g. from previous fmin calls) logger.plot() # to continue you might need to close the pop-up window # once and call plot() again. # This behavior seems to disappear in subsequent # calls of plot(). Also using ipython with -pylab # option might help. cma.savefig('fig325.png') # save current figure logger.closefig() Dependencies: matlabplotlib/pylab. """ dat = self.load(self.name_prefix) try: # pylab: prodedural interface for matplotlib from matplotlib.pylab import figure, ioff, ion, subplot, semilogy, hold, plot, grid, \ axis, title, text, xlabel, isinteractive, draw, gcf except ImportError: ImportError('could not find matplotlib.pylab module, function plot() is not available') return if fontsize and pylab.rcParams['font.size'] != fontsize: print('global variable pylab.rcParams[\'font.size\'] set (from ' + str(pylab.rcParams['font.size']) + ') to ' + str(fontsize)) pylab.rcParams['font.size'] = fontsize # subtracted in the end, but return can happen inbetween if fig: figure(fig) else: figure(325) # show() # should not be necessary self.fighandle = gcf() # fighandle.number if iabscissa not in (0,1): iabscissa = 1 interactive_status = isinteractive() ioff() # prevents immediate drawing dat.x = dat.xmean # this is the genotyp if not plot_mean: try: dat.x = dat.xrecent except: pass if len(dat.x) < 2: print('not enough data to plot') return {} if iteridx is not None: dat.f = dat.f[np.where([x in iteridx for x in dat.f[:,0]])[0],:] dat.D = dat.D[np.where([x in iteridx for x in dat.D[:,0]])[0],:] iteridx.append(dat.x[-1,1]) # last entry is artificial dat.x = dat.x[np.where([x in iteridx for x in dat.x[:,0]])[0],:] dat.std = dat.std[np.where([x in iteridx for x in dat.std[:,0]])[0],:] if iabscissa == 0: xlab = 'iterations' elif iabscissa == 1: xlab = 'function evaluations' # use fake last entry in x and std for line extension-annotation if dat.x.shape[1] < 100: minxend = int(1.06*dat.x[-2, iabscissa]) # write y-values for individual annotation into dat.x dat.x[-1, iabscissa] = minxend # TODO: should be ax[1] idx = np.argsort(dat.x[-2,5:]) idx2 = np.argsort(idx) if x_opt is None: dat.x[-1,5+idx] = np.linspace(np.min(dat.x[:,5:]), np.max(dat.x[:,5:]), dat.x.shape[1]-5) else: dat.x[-1,5+idx] = np.logspace(np.log10(np.min(abs(dat.x[:,5:]))), np.log10(np.max(abs(dat.x[:,5:]))), dat.x.shape[1]-5) else: minxend = 0 if len(dat.f) == 0: print('nothing to plot') return # not in use anymore, see formatter above # xticklocs = np.arange(5) * np.round(minxend/4., -int(np.log10(minxend/4.))) # dfit(dfit<1e-98) = NaN; ioff() # turns update off # TODO: if abscissa==0 plot in chunks, ie loop over subsets where dat.f[:,0]==countiter is monotonous subplot(2,2,1) self.plotdivers(dat, iabscissa, foffset) # TODO: modularize also the remaining subplots subplot(2,2,2) hold(False) if x_opt is not None: # TODO: differentate neg and pos? semilogy(dat.x[:, iabscissa], abs(dat.x[:,5:]) - x_opt, '-') else: plot(dat.x[:, iabscissa], dat.x[:,5:],'-') hold(True) grid(True) ax = array(axis()) # ax[1] = max(minxend, ax[1]) axis(ax) ax[1] -= 1e-6 if dat.x.shape[1] < 100: yy = np.linspace(ax[2]+1e-6, ax[3]-1e-6, dat.x.shape[1]-5) #yyl = np.sort(dat.x[-1,5:]) idx = np.argsort(dat.x[-1,5:]) idx2 = np.argsort(idx) if x_opt is not None: semilogy([dat.x[-1, iabscissa], ax[1]], [abs(dat.x[-1,5:]), yy[idx2]], 'k-') # line from last data point semilogy(np.dot(dat.x[-2, iabscissa],[1,1]), array([ax[2]+1e-6, ax[3]-1e-6]), 'k-') else: # plot([dat.x[-1, iabscissa], ax[1]], [dat.x[-1,5:], yy[idx2]], 'k-') # line from last data point plot(np.dot(dat.x[-2, iabscissa],[1,1]), array([ax[2]+1e-6, ax[3]-1e-6]), 'k-') # plot(array([dat.x[-1, iabscissa], ax[1]]), # reshape(array([dat.x[-1,5:], yy[idx2]]).flatten(), (2,4)), '-k') for i in range(len(idx)): # TODOqqq: annotate phenotypic value!? # text(ax[1], yy[i], 'x(' + str(idx[i]) + ')=' + str(dat.x[-2,5+idx[i]])) text(dat.x[-1,iabscissa], dat.x[-1,5+i], 'x(' + str(i) + ')=' + str(dat.x[-2,5+i])) i = 2 # find smallest i where iteration count differs (in case the same row appears twice) while i < len(dat.f) and dat.f[-i][0] == dat.f[-1][0]: i += 1 title('Object Variables (' + ('mean' if plot_mean else 'curr best') + ', ' + str(dat.x.shape[1]-5) + '-D, popsize~' + (str(int((dat.f[-1][1] - dat.f[-i][1]) / (dat.f[-1][0] - dat.f[-i][0]))) if len(dat.f.T[0]) > 1 and dat.f[-1][0] > dat.f[-i][0] else 'NA') + ')') # pylab.xticks(xticklocs) # Scaling subplot(2,2,3) hold(False) semilogy(dat.D[:, iabscissa], dat.D[:,5:], '-b') hold(True) grid(True) ax = array(axis()) # ax[1] = max(minxend, ax[1]) axis(ax) title('Scaling (All Main Axes)') # pylab.xticks(xticklocs) xlabel(xlab) # standard deviations subplot(2,2,4) hold(False) # remove sigma from stds (graphs become much better readible) dat.std[:,5:] = np.transpose(dat.std[:,5:].T / dat.std[:,2].T) # ax = array(axis()) # ax[1] = max(minxend, ax[1]) # axis(ax) if 1 < 2 and dat.std.shape[1] < 100: # use fake last entry in x and std for line extension-annotation minxend = int(1.06*dat.x[-2, iabscissa]) dat.std[-1, iabscissa] = minxend # TODO: should be ax[1] idx = np.argsort(dat.std[-2,5:]) idx2 = np.argsort(idx) dat.std[-1,5+idx] = np.logspace(np.log10(np.min(dat.std[:,5:])), np.log10(np.max(dat.std[:,5:])), dat.std.shape[1]-5) dat.std[-1, iabscissa] = minxend # TODO: should be ax[1] yy = np.logspace(np.log10(ax[2]), np.log10(ax[3]), dat.std.shape[1]-5) #yyl = np.sort(dat.std[-1,5:]) idx = np.argsort(dat.std[-1,5:]) idx2 = np.argsort(idx) # plot(np.dot(dat.std[-2, iabscissa],[1,1]), array([ax[2]+1e-6, ax[3]-1e-6]), 'k-') # vertical separator # vertical separator plot(np.dot(dat.std[-2, iabscissa],[1,1]), array([np.min(dat.std[-2,5:]), np.max(dat.std[-2,5:])]), 'k-') hold(True) # plot([dat.std[-1, iabscissa], ax[1]], [dat.std[-1,5:], yy[idx2]], 'k-') # line from last data point for i in range(len(idx)): # text(ax[1], yy[i], ' '+str(idx[i])) text(dat.std[-1, iabscissa], dat.std[-1, 5+i], ' '+str(i)) semilogy(dat.std[:, iabscissa], dat.std[:,5:], '-') grid(True) title('Standard Deviations in All Coordinates') # pylab.xticks(xticklocs) xlabel(xlab) draw() # does not suffice if interactive_status: ion() # turns interactive mode on (again) draw() show() return self #____________________________________________________________ #____________________________________________________________ # @staticmethod def plotdivers(dat, iabscissa, foffset): """helper function for `plot()` that plots all what is in the upper left subplot like fitness, sigma, etc. Arguments --------- `iabscissa` in ``(0,1)`` 0==versus fevals, 1==versus iteration `foffset` offset to fitness for log-plot :See: `plot()` """ from matplotlib.pylab import semilogy, hold, grid, \ axis, title, text fontsize = pylab.rcParams['font.size'] hold(False) dfit = dat.f[:,5]-min(dat.f[:,5]) dfit[dfit<1e-98] = np.NaN if dat.f.shape[1] > 7: # semilogy(dat.f[:, iabscissa], abs(dat.f[:,[6, 7, 10, 12]])+foffset,'-k') semilogy(dat.f[:, iabscissa], abs(dat.f[:,[6, 7]])+foffset,'-k') hold(True) # (larger indices): additional fitness data, for example constraints values if dat.f.shape[1] > 8: # dd = abs(dat.f[:,7:]) + 10*foffset # dd = np.where(dat.f[:,7:]==0, np.NaN, dd) # cannot be semilogy(dat.f[:, iabscissa], np.abs(dat.f[:,8:]) + 10*foffset, 'm') hold(True) idx = np.where(dat.f[:,5]>1e-98)[0] # positive values semilogy(dat.f[idx, iabscissa], dat.f[idx,5]+foffset, '.b') hold(True) grid(True) idx = np.where(dat.f[:,5] < -1e-98) # negative values semilogy(dat.f[idx, iabscissa], abs(dat.f[idx,5])+foffset,'.r') semilogy(dat.f[:, iabscissa],abs(dat.f[:,5])+foffset,'-b') semilogy(dat.f[:, iabscissa], dfit, '-c') if 11 < 3: # delta-fitness as points dfit = dat.f[1:, 5] - dat.f[:-1,5] # should be negative usually semilogy(dat.f[1:,iabscissa], # abs(fit(g) - fit(g-1)) np.abs(dfit)+foffset, '.c') i = dfit > 0 # print(np.sum(i) / float(len(dat.f[1:,iabscissa]))) semilogy(dat.f[1:,iabscissa][i], # abs(fit(g) - fit(g-1)) np.abs(dfit[i])+foffset, '.r') # overall minimum i = np.argmin(dat.f[:,5]) semilogy(dat.f[i, iabscissa]*np.ones(2), dat.f[i,5]*np.ones(2), 'rd') # semilogy(dat.f[-1, iabscissa]*np.ones(2), dat.f[-1,4]*np.ones(2), 'rd') # AR and sigma semilogy(dat.f[:, iabscissa], dat.f[:,3], '-r') # AR semilogy(dat.f[:, iabscissa], dat.f[:,2],'-g') # sigma semilogy(dat.std[:-1, iabscissa], np.vstack([list(map(max, dat.std[:-1,5:])), list(map(min, dat.std[:-1,5:]))]).T, '-m', linewidth=2) text(dat.std[-2, iabscissa], max(dat.std[-2, 5:]), 'max std', fontsize=fontsize) text(dat.std[-2, iabscissa], min(dat.std[-2, 5:]), 'min std', fontsize=fontsize) ax = array(axis()) # ax[1] = max(minxend, ax[1]) axis(ax) text(ax[0]+0.01, ax[2], # 10**(log10(ax[2])+0.05*(log10(ax[3])-log10(ax[2]))), '.f_recent=' + repr(dat.f[-1,5]) ) # title('abs(f) (blue), f-min(f) (cyan), Sigma (green), Axis Ratio (red)') title('blue:abs(f), cyan:f-min(f), green:sigma, red:axis ratio', fontsize=fontsize-1) # pylab.xticks(xticklocs) def downsampling(self, factor=10, first=3, switch=True): """ rude downsampling of a `CMADataLogger` data file by `factor`, keeping also the first `first` entries. This function is a stump and subject to future changes. Arguments --------- - `factor` -- downsampling factor - `first` -- keep first `first` entries - `switch` -- switch the new logger name to oldname+'down' Details ------- ``self.name_prefix+'down'`` files are written Example ------- :: import cma cma.downsampling() # takes outcmaes* files cma.plot('outcmaesdown') """ newprefix = self.name_prefix + 'down' for name in CMADataLogger.names: f = open(newprefix+name+'.dat','w') iline = 0 cwritten = 0 for line in open(self.name_prefix+name+'.dat'): if iline < first or iline % factor == 0: f.write(line) cwritten += 1 iline += 1 f.close() print('%d' % (cwritten) + ' lines written in ' + newprefix+name+'.dat') if switch: self.name_prefix += 'down' return self #____________________________________________________________ #____________________________________________________________ # def disp(self, idx=100): # r_[0:5,1e2:1e9:1e2,-10:0]): """displays selected data from (files written by) the class `CMADataLogger`. Arguments --------- `idx` indices corresponding to rows in the data file; if idx is a scalar (int), the first two, then every idx-th, and the last three rows are displayed. Too large index values are removed. Example ------- >>> import cma, numpy as np >>> res = cma.fmin(cma.fcts.elli, 7 * [0.1], 1, verb_disp=1e9) # generate data >>> assert res[1] < 1e-9 >>> assert res[2] < 4400 >>> l = cma.CMADataLogger() # == res[-1], logger with default name, "points to" above data >>> l.disp([0,-1]) # first and last >>> l.disp(20) # some first/last and every 20-th line >>> l.disp(np.r_[0:999999:100, -1]) # every 100-th and last >>> l.disp(np.r_[0, -10:0]) # first and ten last >>> cma.disp(l.name_prefix, np.r_[0::100, -10:]) # the same as l.disp(...) Details ------- The data line with the best f-value is displayed as last line. :See: `disp()` """ filenameprefix=self.name_prefix def printdatarow(dat, iteration): """print data of iteration i""" i = np.where(dat.f[:, 0] == iteration)[0][0] j = np.where(dat.std[:, 0] == iteration)[0][0] print('%5d' % (int(dat.f[i,0])) + ' %6d' % (int(dat.f[i,1])) + ' %.14e' % (dat.f[i,5]) + ' %5.1e' % (dat.f[i,3]) + ' %6.2e' % (max(dat.std[j,5:])) + ' %6.2e' % min(dat.std[j,5:])) dat = CMADataLogger(filenameprefix).load() ndata = dat.f.shape[0] # map index to iteration number, is difficult if not all iteration numbers exist # idx = idx[np.where(map(lambda x: x in dat.f[:,0], idx))[0]] # TODO: takes pretty long # otherwise: if idx is None: idx = 100 if np.isscalar(idx): # idx = np.arange(0, ndata, idx) if idx: idx = np.r_[0, 1, idx:ndata-3:idx, -3:0] else: idx = np.r_[0, 1, -3:0] idx = array(idx) idx = idx[idx 1: f.write(' '.join(map(str, es.gp.scales))) else: f.write(str(es.gp.scales)) f.write(', typical_x: ') if np.size(es.gp.typical_x) > 1: f.write(' '.join(map(str, es.gp.typical_x))) else: f.write(str(es.gp.typical_x)) f.write('\n') f.close() except (IOError, OSError): print('could not open/write file ' + fn) if 11 < 3: fn = self.name_prefix + 'xrecentbest.dat' try: with open(fn, 'w') as f: f.write('% # iter+eval+sigma+0+fitness+xbest, ' + strseedtime + '\n') except (IOError, OSError): print('could not open/write file ' + fn) return self # end def __init__ def load(self, filenameprefix=None): """loads data from files written and return a data dictionary, *not* a prerequisite for using `plot()` or `disp()`. Argument `filenameprefix` is the filename prefix of data to be loaded (five files), by default ``'outcmaes'``. Return data dictionary with keys `xrecent`, `xmean`, `f`, `D`, `std` """ if not filenameprefix: filenameprefix = self.name_prefix dat = self # historical # dat.xrecent = _fileToMatrix(filenameprefix + 'xrecentbest.dat') dat.xmean = _fileToMatrix(filenameprefix + 'xmean.dat') dat.std = _fileToMatrix(filenameprefix + 'stddev' + '.dat') # a hack to later write something into the last entry for key in ['xmean', 'std']: # 'xrecent', dat.__dict__[key].append(dat.__dict__[key][-1]) # copy last row to later fill in annotation position for display dat.__dict__[key] = array(dat.__dict__[key], copy=False) dat.f = array(_fileToMatrix(filenameprefix + 'fit.dat')) dat.D = array(_fileToMatrix(filenameprefix + 'axlen' + '.dat')) return dat def add(self, fitness_values, es=None, more_data=[], modulo=None): # TODO: find a different way to communicate current x and f """append some logging data from `CMAEvolutionStrategy` class instance `es`, if ``number_of_times_called % modulo`` equals to zero, never if ``modulo==0``. The sequence ``more_data`` must always have the same length. """ self.counter += 1 fitness_values = np.sort(fitness_values) if fitness_values[0] < self.best_fitness: self.best_fitness = fitness_values[0] mod = modulo if modulo is not None else self.modulo if mod == 0 or (self.counter > 3 and self.counter % mod): return if es is None: try: es = self.es # must have been registered except AttributeError : raise _Error('call register() before add() or add(es)') elif not self.registered: self.register(es) if 11 < 3: try: # TODO: find a more decent interface to store and pass recent_x xrecent = es.best.last.x except: if self.counter == 2: # by now a recent_x should be available print('WARNING: es.out[\'recent_x\'] not found in CMADataLogger.add, count=' + str(self.counter)) try: # fit if es.update_count > 0: # fit = es.fit.fit[0] # TODO: where do we get the fitness from? fn = self.name_prefix + 'fit.dat' with open(fn, 'a') as f: f.write(str(es.update_count) + ' ' + str(es.update_count * es.lambda_) + ' ' + str(es.sigma) + ' ' + str(es.diagD[-1]/es.diagD[0]) + ' ' + str(self.best_fitness) + ' ' + '%.16e' % fitness_values[0] + ' ' + str(fitness_values[es.lambda_//2]) + ' ' + str(fitness_values[-1]) + ' ' # + str(es.sp.popsize) + ' ' # + str(10**es.noiseS) + ' ' # + str(es.sp.cmean) + ' ' # + ' '.join(str(i) for i in es.more_to_write) + ' '.join(str(i) for i in more_data) + '\n') # es.more_to_write = [] # axlen fn = self.name_prefix + 'axlen.dat' with open(fn, 'a') as f: # does not rely on reference counting f.write(str(es.update_count) + ' ' + str(es.update_count * es.lambda_) + ' ' + str(es.sigma) + ' ' + str(es.diagD[-1]) + ' ' + str(es.diagD[0]) + ' ' + ' '.join(map(str, es.diagD)) + '\n') # stddev fn = self.name_prefix + 'stddev.dat' with open(fn, 'a') as f: f.write(str(es.update_count) + ' ' + str(es.update_count * es.lambda_) + ' ' + str(es.sigma) + ' ' + '0 0 ' + ' '.join(map(str, es.sigma*np.sqrt([es.C[i][i] for i in range(es.dim)]))) + '\n') # xmean fn = self.name_prefix + 'xmean.dat' with open(fn, 'a') as f: if es.update_count < 1: f.write('0 0 0 0 0 ' + ' '.join(map(str, # TODO should be optional the phenotyp? # es.gp.geno(es.x0) es.mean)) + '\n') else: f.write(str(es.update_count) + ' ' + str(es.update_count * es.lambda_) + ' ' # + str(es.sigma) + ' ' + '0 0 0 ' # + str(es.fmean_noise_free) + ' ' # + str(es.fmean) + ' ' # TODO: this does not make sense # TODO should be optional the phenotyp? + ' '.join(map(str, es.centroid)) + '\n') # xrecent if 11 < 3: fn = self.name_prefix + 'xrecentbest.dat' if es.countiter > 0 and xrecent is not None: with open(fn, 'a') as f: f.write(str(es.countiter) + ' ' + str(es.countevals) + ' ' + str(es.sigma) + ' ' + '0 ' + str(es.fit.fit[0]) + ' ' + ' '.join(map(str, xrecent)) + '\n') except (IOError, OSError): if es.countiter == 1: print('could not open/write file') def closefig(self): pylab.close(self.fighandle) def save(self, nameprefix, switch=False): """saves logger data to a different set of files, for ``switch=True`` also the loggers name prefix is switched to the new value """ if not nameprefix or type(nameprefix) is not str: _Error('filename prefix must be a nonempty string') if nameprefix == self.default_prefix: _Error('cannot save to default name "' + nameprefix + '...", chose another name') if nameprefix == self.name_prefix: return for name in CMADataLogger.names: open(nameprefix+name+'.dat', 'w').write(open(self.name_prefix+name+'.dat').read()) if switch: self.name_prefix = nameprefix def plot(self, fig=None, iabscissa=1, iteridx=None, plot_mean=True, # TODO: plot_mean default should be False foffset=1e-19, x_opt = None, fontsize=10): """ plot data from a `CMADataLogger` (using the files written by the logger). Arguments --------- `fig` figure number, by default 325 `iabscissa` ``0==plot`` versus iteration count, ``1==plot`` versus function evaluation number `iteridx` iteration indices to plot Return `CMADataLogger` itself. Examples -------- :: import cma logger = cma.CMADataLogger() # with default name # try to plot the "default logging" data (e.g. from previous fmin calls) logger.plot() # to continue you might need to close the pop-up window # once and call plot() again. # This behavior seems to disappear in subsequent # calls of plot(). Also using ipython with -pylab # option might help. cma.savefig('fig325.png') # save current figure logger.closefig() Dependencies: matlabplotlib/pylab. """ dat = self.load(self.name_prefix) try: # pylab: prodedural interface for matplotlib from matplotlib.pylab import figure, ioff, ion, subplot, semilogy, hold, plot, grid, \ axis, title, text, xlabel, isinteractive, draw, gcf except ImportError: ImportError('could not find matplotlib.pylab module, function plot() is not available') return if fontsize and pylab.rcParams['font.size'] != fontsize: print('global variable pylab.rcParams[\'font.size\'] set (from ' + str(pylab.rcParams['font.size']) + ') to ' + str(fontsize)) pylab.rcParams['font.size'] = fontsize # subtracted in the end, but return can happen inbetween if fig: figure(fig) else: figure(325) # show() # should not be necessary self.fighandle = gcf() # fighandle.number if iabscissa not in (0,1): iabscissa = 1 interactive_status = isinteractive() ioff() # prevents immediate drawing if 11 < 3: dat.x = dat.xrecent if len(dat.x) < 2: print('not enough data to plot') return {} # if plot_mean: dat.x = dat.xmean # this is the genotyp if iteridx is not None: dat.f = dat.f[np.where([x in iteridx for x in dat.f[:,0]])[0],:] dat.D = dat.D[np.where([x in iteridx for x in dat.D[:,0]])[0],:] iteridx.append(dat.x[-1,1]) # last entry is artificial dat.x = dat.x[np.where([x in iteridx for x in dat.x[:,0]])[0],:] dat.std = dat.std[np.where([x in iteridx for x in dat.std[:,0]])[0],:] if iabscissa == 0: xlab = 'iterations' elif iabscissa == 1: xlab = 'function evaluations' # use fake last entry in x and std for line extension-annotation if dat.x.shape[1] < 100: minxend = int(1.06*dat.x[-2, iabscissa]) # write y-values for individual annotation into dat.x dat.x[-1, iabscissa] = minxend # TODO: should be ax[1] idx = np.argsort(dat.x[-2,5:]) idx2 = np.argsort(idx) if x_opt is None: dat.x[-1,5+idx] = np.linspace(np.min(dat.x[:,5:]), np.max(dat.x[:,5:]), dat.x.shape[1]-5) else: dat.x[-1,5+idx] = np.logspace(np.log10(np.min(abs(dat.x[:,5:]))), np.log10(np.max(abs(dat.x[:,5:]))), dat.x.shape[1]-5) else: minxend = 0 if len(dat.f) == 0: print('nothing to plot') return # not in use anymore, see formatter above # xticklocs = np.arange(5) * np.round(minxend/4., -int(np.log10(minxend/4.))) # dfit(dfit<1e-98) = NaN; ioff() # turns update off # TODO: if abscissa==0 plot in chunks, ie loop over subsets where dat.f[:,0]==countiter is monotonous subplot(2,2,1) self.plotdivers(dat, iabscissa, foffset) # TODO: modularize also the remaining subplots subplot(2,2,2) hold(False) if x_opt is not None: # TODO: differentate neg and pos? semilogy(dat.x[:, iabscissa], abs(dat.x[:,5:]) - x_opt, '-') else: plot(dat.x[:, iabscissa], dat.x[:,5:],'-') hold(True) grid(True) ax = array(axis()) # ax[1] = max(minxend, ax[1]) axis(ax) ax[1] -= 1e-6 if dat.x.shape[1] < 100: yy = np.linspace(ax[2]+1e-6, ax[3]-1e-6, dat.x.shape[1]-5) #yyl = np.sort(dat.x[-1,5:]) idx = np.argsort(dat.x[-1,5:]) idx2 = np.argsort(idx) if x_opt is not None: semilogy([dat.x[-1, iabscissa], ax[1]], [abs(dat.x[-1,5:]), yy[idx2]], 'k-') # line from last data point semilogy(np.dot(dat.x[-2, iabscissa],[1,1]), array([ax[2]+1e-6, ax[3]-1e-6]), 'k-') else: # plot([dat.x[-1, iabscissa], ax[1]], [dat.x[-1,5:], yy[idx2]], 'k-') # line from last data point plot(np.dot(dat.x[-2, iabscissa],[1,1]), array([ax[2]+1e-6, ax[3]-1e-6]), 'k-') # plot(array([dat.x[-1, iabscissa], ax[1]]), # reshape(array([dat.x[-1,5:], yy[idx2]]).flatten(), (2,4)), '-k') for i in range(len(idx)): # TODOqqq: annotate phenotypic value!? # text(ax[1], yy[i], 'x(' + str(idx[i]) + ')=' + str(dat.x[-2,5+idx[i]])) text(dat.x[-1,iabscissa], dat.x[-1,5+i], 'x(' + str(i) + ')=' + str(dat.x[-2,5+i])) i = 2 # find smallest i where iteration count differs (in case the same row appears twice) while i < len(dat.f) and dat.f[-i][0] == dat.f[-1][0]: i += 1 title('Object Variables (' + ('mean' if plot_mean else 'curr best') + ', ' + str(dat.x.shape[1]-5) + '-D, popsize~' + (str(int((dat.f[-1][1] - dat.f[-i][1]) / (dat.f[-1][0] - dat.f[-i][0]))) if len(dat.f.T[0]) > 1 and dat.f[-1][0] > dat.f[-i][0] else 'NA') + ')') # pylab.xticks(xticklocs) # Scaling subplot(2,2,3) hold(False) semilogy(dat.D[:, iabscissa], dat.D[:,5:], '-b') hold(True) grid(True) ax = array(axis()) # ax[1] = max(minxend, ax[1]) axis(ax) title('Scaling (All Main Axes)') # pylab.xticks(xticklocs) xlabel(xlab) # standard deviations subplot(2,2,4) hold(False) # remove sigma from stds (graphs become much better readible) dat.std[:,5:] = np.transpose(dat.std[:,5:].T / dat.std[:,2].T) # ax = array(axis()) # ax[1] = max(minxend, ax[1]) # axis(ax) if 1 < 2 and dat.std.shape[1] < 100: # use fake last entry in x and std for line extension-annotation minxend = int(1.06*dat.x[-2, iabscissa]) dat.std[-1, iabscissa] = minxend # TODO: should be ax[1] idx = np.argsort(dat.std[-2,5:]) idx2 = np.argsort(idx) dat.std[-1,5+idx] = np.logspace(np.log10(np.min(dat.std[:,5:])), np.log10(np.max(dat.std[:,5:])), dat.std.shape[1]-5) dat.std[-1, iabscissa] = minxend # TODO: should be ax[1] yy = np.logspace(np.log10(ax[2]), np.log10(ax[3]), dat.std.shape[1]-5) #yyl = np.sort(dat.std[-1,5:]) idx = np.argsort(dat.std[-1,5:]) idx2 = np.argsort(idx) # plot(np.dot(dat.std[-2, iabscissa],[1,1]), array([ax[2]+1e-6, ax[3]-1e-6]), 'k-') # vertical separator # vertical separator plot(np.dot(dat.std[-2, iabscissa],[1,1]), array([np.min(dat.std[-2,5:]), np.max(dat.std[-2,5:])]), 'k-') hold(True) # plot([dat.std[-1, iabscissa], ax[1]], [dat.std[-1,5:], yy[idx2]], 'k-') # line from last data point for i in range(len(idx)): # text(ax[1], yy[i], ' '+str(idx[i])) text(dat.std[-1, iabscissa], dat.std[-1, 5+i], ' '+str(i)) semilogy(dat.std[:, iabscissa], dat.std[:,5:], '-') grid(True) title('Standard Deviations in All Coordinates') # pylab.xticks(xticklocs) xlabel(xlab) draw() # does not suffice if interactive_status: ion() # turns interactive mode on (again) draw() show() return self #____________________________________________________________ #____________________________________________________________ # @staticmethod def plotdivers(dat, iabscissa, foffset): """helper function for `plot()` that plots all what is in the upper left subplot like fitness, sigma, etc. Arguments --------- `iabscissa` in ``(0,1)`` 0==versus fevals, 1==versus iteration `foffset` offset to fitness for log-plot :See: `plot()` """ from matplotlib.pylab import semilogy, hold, grid, \ axis, title, text fontsize = pylab.rcParams['font.size'] hold(False) dfit = dat.f[:,5]-min(dat.f[:,5]) dfit[dfit<1e-98] = np.NaN if dat.f.shape[1] > 7: # semilogy(dat.f[:, iabscissa], abs(dat.f[:,[6, 7, 10, 12]])+foffset,'-k') semilogy(dat.f[:, iabscissa], abs(dat.f[:,[6, 7]])+foffset,'-k') hold(True) # (larger indices): additional fitness data, for example constraints values if dat.f.shape[1] > 8: # dd = abs(dat.f[:,7:]) + 10*foffset # dd = np.where(dat.f[:,7:]==0, np.NaN, dd) # cannot be semilogy(dat.f[:, iabscissa], np.abs(dat.f[:,8:]) + 10*foffset, 'm') hold(True) idx = np.where(dat.f[:,5]>1e-98)[0] # positive values semilogy(dat.f[idx, iabscissa], dat.f[idx,5]+foffset, '.b') hold(True) grid(True) idx = np.where(dat.f[:,5] < -1e-98) # negative values semilogy(dat.f[idx, iabscissa], abs(dat.f[idx,5])+foffset,'.r') semilogy(dat.f[:, iabscissa],abs(dat.f[:,5])+foffset,'-b') semilogy(dat.f[:, iabscissa], dfit, '-c') if 11 < 3: # delta-fitness as points dfit = dat.f[1:, 5] - dat.f[:-1,5] # should be negative usually semilogy(dat.f[1:,iabscissa], # abs(fit(g) - fit(g-1)) np.abs(dfit)+foffset, '.c') i = dfit > 0 # print(np.sum(i) / float(len(dat.f[1:,iabscissa]))) semilogy(dat.f[1:,iabscissa][i], # abs(fit(g) - fit(g-1)) np.abs(dfit[i])+foffset, '.r') # overall minimum i = np.argmin(dat.f[:,5]) semilogy(dat.f[i, iabscissa]*np.ones(2), dat.f[i,5]*np.ones(2), 'rd') # semilogy(dat.f[-1, iabscissa]*np.ones(2), dat.f[-1,4]*np.ones(2), 'rd') # AR and sigma semilogy(dat.f[:, iabscissa], dat.f[:,3], '-r') # AR semilogy(dat.f[:, iabscissa], dat.f[:,2],'-g') # sigma semilogy(dat.std[:-1, iabscissa], np.vstack([list(map(max, dat.std[:-1,5:])), list(map(min, dat.std[:-1,5:]))]).T, '-m', linewidth=2) text(dat.std[-2, iabscissa], max(dat.std[-2, 5:]), 'max std', fontsize=fontsize) text(dat.std[-2, iabscissa], min(dat.std[-2, 5:]), 'min std', fontsize=fontsize) ax = array(axis()) # ax[1] = max(minxend, ax[1]) axis(ax) text(ax[0]+0.01, ax[2], # 10**(log10(ax[2])+0.05*(log10(ax[3])-log10(ax[2]))), '.f_recent=' + repr(dat.f[-1,5]) ) # title('abs(f) (blue), f-min(f) (cyan), Sigma (green), Axis Ratio (red)') title('blue:abs(f), cyan:f-min(f), green:sigma, red:axis ratio', fontsize=fontsize-1) # pylab.xticks(xticklocs) def downsampling(self, factor=10, first=3, switch=True): """ rude downsampling of a `CMADataLogger` data file by `factor`, keeping also the first `first` entries. This function is a stump and subject to future changes. Arguments --------- - `factor` -- downsampling factor - `first` -- keep first `first` entries - `switch` -- switch the new logger name to oldname+'down' Details ------- ``self.name_prefix+'down'`` files are written Example ------- :: import cma cma.downsampling() # takes outcmaes* files cma.plot('outcmaesdown') """ newprefix = self.name_prefix + 'down' for name in CMADataLogger.names: f = open(newprefix+name+'.dat','w') iline = 0 cwritten = 0 for line in open(self.name_prefix+name+'.dat'): if iline < first or iline % factor == 0: f.write(line) cwritten += 1 iline += 1 f.close() print('%d' % (cwritten) + ' lines written in ' + newprefix+name+'.dat') if switch: self.name_prefix += 'down' return self #____________________________________________________________ #____________________________________________________________ # def disp_header(self): heading = 'Iterat Nfevals function value axis ratio maxstd minstd' print(heading) def disp(self, idx=100): # r_[0:5,1e2:1e9:1e2,-10:0]): """displays selected data from (files written by) the class `CMADataLogger`. Arguments --------- `idx` indices corresponding to rows in the data file; if idx is a scalar (int), the first two, then every idx-th, and the last three rows are displayed. Too large index values are removed. If ``len(idx) == 1``, only a single row is displayed, e.g. the last entry when ``idx == [-1]``. Example ------- >>> import cma, numpy as np >>> res = cma.fmin(cma.fcts.elli, 7 * [0.1], 1, verb_disp=1e9) # generate data >>> assert res[1] < 1e-9 >>> assert res[2] < 4400 >>> l = cma.CMADataLogger() # == res[-1], logger with default name, "points to" above data >>> l.disp([0,-1]) # first and last >>> l.disp(20) # some first/last and every 20-th line >>> l.disp(np.r_[0:999999:100, -1]) # every 100-th and last >>> l.disp(np.r_[0, -10:0]) # first and ten last >>> cma.disp(l.name_prefix, np.r_[0::100, -10:]) # the same as l.disp(...) Details ------- The data line with the best f-value is displayed as last line. :See: `disp()` """ filenameprefix=self.name_prefix def printdatarow(dat, iteration): """print data of iteration i""" i = np.where(dat.f[:, 0] == iteration)[0][0] j = np.where(dat.std[:, 0] == iteration)[0][0] print('%5d' % (int(dat.f[i,0])) + ' %6d' % (int(dat.f[i,1])) + ' %.14e' % (dat.f[i,5]) + ' %5.1e' % (dat.f[i,3]) + ' %6.2e' % (max(dat.std[j,5:])) + ' %6.2e' % min(dat.std[j,5:])) dat = CMADataLogger(filenameprefix).load() ndata = dat.f.shape[0] # map index to iteration number, is difficult if not all iteration numbers exist # idx = idx[np.where(map(lambda x: x in dat.f[:,0], idx))[0]] # TODO: takes pretty long # otherwise: if idx is None: idx = 100 if np.isscalar(idx): # idx = np.arange(0, ndata, idx) if idx: idx = np.r_[0, 1, idx:ndata-3:idx, -3:0] else: idx = np.r_[0, 1, -3:0] idx = array(idx) idx = idx[idx<=ndata] # TODO: shouldn't this be "<"? idx = idx[-idx<=ndata] iters = dat.f[idx, 0] idxbest = np.argmin(dat.f[:,5]) iterbest = dat.f[idxbest, 0] if len(iters) == 1: printdatarow(dat, iters[0]) else: self.disp_header() for i in iters: printdatarow(dat, i) self.disp_header() printdatarow(dat, iterbest) sys.stdout.flush() def irg(ar): return range(len(ar)) class AII(object): """unstable experimental code, updates ps, sigma, sigmai, pr, r, sigma_r, mean, all from self. Depends on that the ordering of solutions has not change upon calling update should become a OOOptimizer in far future? """ # Try: ps**2 - 1 instead of (ps**2)**0.5 / chi1 - 1: compare learning rate etc # and dito for psr def __init__(self, x0, sigma0, randn=np.random.randn): """TODO: check scaling of r-learing: seems worse than linear: 9e3 25e3 65e3 (10,20,40-D)""" self.N = len(x0) N = self.N # parameters to play with: # PROBLEM: smaller eta_r even fails on *axparallel* cigar!! Also dampi needs to be smaller then! self.dampi = 4 * N # two times smaller is self.eta_r = 0 / N / 3 # c_r learning rate for direction, cigar: 4/N/3 is optimal in 10-D, 10/N/3 still works (15 in 20-D) but not on the axparallel cigar with recombination self.mu = 1 self.use_abs_sigma = 1 # without it is a problem on 20=D axpar-cigar!!, but why?? Because dampi is just boarderline self.use_abs_sigma_r = 1 # self.randn = randn self.x0 = array(x0, copy=True) self.sigma0 = sigma0 self.cs = 1 / N**0.5 # evolution path for step-size(s) self.damps = 1 self.use_sign = 0 self.use_scalar_product = 0 # sometimes makes it somewhat worse on Rosenbrock, don't know why self.csr = 1 / N**0.5 # cumulation for sigma_r self.dampsr = (4 * N)**0.5 self.chi1 = (2/np.pi)**0.5 self.chiN = N**0.5*(1-1./(4.*N)+1./(21.*N**2)) # expectation of norm(randn(N,1)) self.initialize() def initialize(self): """alias ``reset``, set all state variables to initial values""" N = self.N self.mean = array(self.x0, copy=True) self.sigma = self.sigma0 self.sigmai = np.ones(N) self.ps = np.zeros(N) # path for individual and globalstep-size(s) self.r = np.zeros(N) self.pr = 0 # cumulation for zr = N(0,1) self.sigma_r = 0 def ask(self, popsize): if popsize == 1: raise NotImplementedError() self.Z = [self.randn(self.N) for _i in range(popsize)] self.zr = list(self.randn(popsize)) pop = [self.mean + self.sigma * (self.sigmai * self.Z[k]) + self.zr[k] * self.sigma_r * self.r for k in range(popsize)] if not np.isfinite(pop[0][0]): raise ValueError() return pop def tell(self, X, f): """update """ mu = 1 if self.mu else int(len(f) / 4) idx = np.argsort(f)[:mu] zr = [self.zr[i] for i in idx] Z = [self.Z[i] for i in idx] X = [X[i] for i in idx] xmean = np.mean(X, axis=0) self.ps *= 1 - self.cs self.ps += (self.cs*(2-self.cs))**0.5 * mu**0.5 * np.mean(Z, axis=0) self.sigma *= np.exp((self.cs/self.damps) * (sum(self.ps**2)**0.5 / self.chiN - 1)) if self.use_abs_sigma: self.sigmai *= np.exp((1/self.dampi) * (np.abs(self.ps) / self.chi1 - 1)) else: self.sigmai *= np.exp((1.3/self.dampi/2) * (self.ps**2 - 1)) self.pr *= 1 - self.csr self.pr += (self.csr*(2-self.csr))**0.5 * mu**0.5 * np.mean(zr) fac = 1 if self.use_sign: fac = np.sign(self.pr) # produces readaptations on the cigar else: self.pr = max([0, self.pr]) if self.use_scalar_product: if np.sign(sum(self.r * (xmean - self.mean))) < 0: # and self.pr > 1: # if np.sign(sum(self.r * self.ps)) < 0: self.r *= -1 if self.eta_r: self.r *= (1 - self.eta_r) * self.sigma_r self.r += fac * self.eta_r * mu**0.5 * (xmean - self.mean) self.r /= sum(self.r**2)**0.5 if self.use_abs_sigma_r: self.sigma_r *= np.exp((1/self.dampsr) * ((self.pr**2)**0.5 / self.chi1 - 1)) else: # this is worse on the cigar, where the direction vector(!) behaves strangely self.sigma_r *= np.exp((1/self.dampsr) * (self.pr**2 - 1) / 2) self.sigma_r = max([self.sigma * sum(self.sigmai**2)**0.5 / 3, self.sigma_r]) # self.sigma_r = 0 self.mean = xmean def fmin(func, x0, sigma0=None, args=() # the follow string arguments are evaluated, besides the verb_filenameprefix , CMA_active='False # exponential negative update, conducted after the original update' , CMA_activefac='1 # learning rate multiplier for active update' , CMA_cmean='1 # learning rate for the mean value' , CMA_const_trace='False # normalize trace, value CMA_const_trace=2 normalizes sum log eigenvalues to zero' , CMA_diagonal='0*100*N/sqrt(popsize) # nb of iterations with diagonal covariance matrix, True for always' # TODO 4/ccov_separable? , CMA_eigenmethod='np.linalg.eigh # 0=numpy-s eigh, -1=pygsl, otherwise cma.Misc.eig (slower)' , CMA_elitist='False # elitism likely impairs global search performance' , CMA_mirrors='popsize < 6 # values <0.5 are interpreted as fraction, values >1 as numbers (rounded), otherwise about 0.16 is used' , CMA_mu='None # parents selection parameter, default is popsize // 2' , CMA_on='True # False or 0 for no adaptation of the covariance matrix' , CMA_rankmu='True # False or 0 for omitting rank-mu update of covariance matrix' , CMA_rankmualpha='0.3 # factor of rank-mu update if mu=1, subject to removal, default might change to 0.0' , CMA_dampfac='1 #v positive multiplier for step-size damping, 0.3 is close to optimal on the sphere' , CMA_dampsvec_fac='np.Inf # tentative and subject to changes, 0.5 would be a "default" damping for sigma vector update' , CMA_dampsvec_fade='0.1 # tentative fading out parameter for sigma vector update' , CMA_teststds='None # factors for non-isotropic initial distr. mainly for test purpose, see scaling_...' , CMA_AII='False # not yet tested' , bounds='[None, None] # lower (=bounds[0]) and upper domain boundaries, each a scalar or a list/vector' , eval_parallel='False # when True, func might be called with more than one solution as first argument' , eval_initial_x='False # ' , fixed_variables='None # dictionary with index-value pairs like {0:1.1, 2:0.1} that are not optimized' , ftarget='-inf #v target function value, minimization' , incpopsize='2 # in fmin(): multiplier for increasing popsize before each restart' , maxfevals='inf #v maximum number of function evaluations' , maxiter='100 + 50 * (N+3)**2 // popsize**0.5 #v maximum number of iterations' , mindx='0 #v minimal std in any direction, cave interference with tol*' , minstd='0 #v minimal std in any coordinate direction, cave interference with tol*' , noise_handling='False # maximal number of evaluations for noise treatment, only fmin' , noise_reevals=' 1.5 + popsize/20 # number of solution to be reevaluated for noise measurement, only fmin' , noise_eps='1e-7 # perturbation factor for noise handling reevaluations, only fmin' , noise_change_sigma='True # exponent to default sigma increment' , popsize='4+int(3*log(N)) # population size, AKA lambda, number of new solution per iteration' , randn='np.random.standard_normal #v randn((lam, N)) must return an np.array of shape (lam, N)' , restarts='0 # in fmin(): number of restarts' , restart_from_best='False' , scaling_of_variables='None # scale for each variable, sigma0 is interpreted w.r.t. this scale, in that effective_sigma0 = sigma0*scaling. Internally the variables are divided by scaling_of_variables and sigma is unchanged, default is ones(N)' , seed='None # random number seed' , termination_callback='None #v a function returning True for termination, called after each iteration step and could be abused for side effects' , tolfacupx='1e3 #v termination when step-size increases by tolfacupx (diverges). That is, the initial step-size was chosen far too small and better solutions were found far away from the initial solution x0' , tolupsigma='1e20 #v sigma/sigma0 > tolupsigma * max(sqrt(eivenvals(C))) indicates "creeping behavior" with usually minor improvements' , tolfun='1e-11 #v termination criterion: tolerance in function value, quite useful' , tolfunhist='1e-12 #v termination criterion: tolerance in function value history' , tolstagnation='int(100 + 100 * N**1.5 / popsize) #v termination if no improvement over tolstagnation iterations' , tolx='1e-11 #v termination criterion: tolerance in x-changes' , transformation='None # [t0, t1] are two mappings, t0 transforms solutions from CMA-representation to f-representation (tf_pheno), t1 is the (optional) back transformation, see class GenoPheno' , typical_x='None # used with scaling_of_variables' , updatecovwait='None #v number of iterations without distribution update, name is subject to future changes' # TODO: rename: iterwaitupdatedistribution? , verb_append='0 # initial evaluation counter, if append, do not overwrite output files' , verb_disp='100 #v verbosity: display console output every verb_disp iteration' , verb_filenameprefix='outcmaes # output filenames prefix' , verb_log='1 #v verbosity: write data to files every verb_log iteration, writing can be time critical on fast to evaluate functions' , verb_plot='0 #v in fmin(): plot() is called every verb_plot iteration' , verb_time='True #v output timings on console' , vv='0 #? versatile variable for hacking purposes, value found in self.opts[\'vv\']' ): """functional interface to the stochastic optimizer CMA-ES for non-convex function minimization. Calling Sequences ================= ``fmin([],[])`` returns all optional arguments, that is, all keyword arguments to fmin with their default values in a dictionary. ``fmin(func, x0, sigma0)`` minimizes `func` starting at `x0` and with standard deviation `sigma0` (step-size) ``fmin(func, x0, sigma0, ftarget=1e-5)`` minimizes `func` up to target function value 1e-5 ``fmin(func, x0, sigma0, args=('f',), **options)`` minimizes `func` called with an additional argument ``'f'``. `options` is a dictionary with additional keyword arguments, e.g. delivered by `Options()`. ``fmin(func, x0, sigma0, **{'ftarget':1e-5, 'popsize':40})`` the same as ``fmin(func, x0, sigma0, ftarget=1e-5, popsize=40)`` ``fmin(func, esobj, **{'maxfevals': 1e5})`` uses the `CMAEvolutionStrategy` object instance `esobj` to optimize `func`, similar to `CMAEvolutionStrategy.optimize()`. Arguments ========= `func` function to be minimized. Called as ``func(x,*args)``. `x` is a one-dimensional `numpy.ndarray`. `func` can return `numpy.NaN`, which is interpreted as outright rejection of solution `x` and invokes an immediate resampling and (re-)evaluation of a new solution not counting as function evaluation. `x0` list or `numpy.ndarray`, initial guess of minimum solution or `cma.CMAEvolutionStrategy` object instance. In this case `sigma0` can be omitted. `sigma0` scalar, initial standard deviation in each coordinate. `sigma0` should be about 1/4 of the search domain width where the optimum is to be expected. The variables in `func` should be scaled such that they presumably have similar sensitivity. See also option `scaling_of_variables`. Keyword Arguments ================= All arguments besides `args` and `verb_filenameprefix` are evaluated if they are of type `str`, see class `Options` for details. The following list might not be fully up-to-date, use ``cma.Options()`` or ``cma.fmin([],[])`` to get the actual list. :: args=() -- additional arguments for func, not in `cma.Options()` CMA_active='False # exponential negative update, conducted after the original update' CMA_activefac='1 # learning rate multiplier for active update' CMA_cmean='1 # learning rate for the mean value' CMA_dampfac='1 #v positive multiplier for step-size damping, 0.3 is close to optimal on the sphere' CMA_diagonal='0*100*N/sqrt(popsize) # nb of iterations with diagonal covariance matrix, True for always' CMA_eigenmethod='np.linalg.eigh # 0=numpy-s eigh, -1=pygsl, alternative: Misc.eig (slower)' CMA_elitist='False # elitism likely impairs global search performance' CMA_mirrors='0 # values <0.5 are interpreted as fraction, values >1 as numbers (rounded), otherwise about 0.16 is used' CMA_mu='None # parents selection parameter, default is popsize // 2' CMA_on='True # False or 0 for no adaptation of the covariance matrix' CMA_rankmu='True # False or 0 for omitting rank-mu update of covariance matrix' CMA_rankmualpha='0.3 # factor of rank-mu update if mu=1, subject to removal, default might change to 0.0' CMA_teststds='None # factors for non-isotropic initial distr. mainly for test purpose, see scaling_...' bounds='[None, None] # lower (=bounds[0]) and upper domain boundaries, each a scalar or a list/vector' eval_initial_x='False # ' fixed_variables='None # dictionary with index-value pairs like {0:1.1, 2:0.1} that are not optimized' ftarget='-inf #v target function value, minimization' incpopsize='2 # in fmin(): multiplier for increasing popsize before each restart' maxfevals='inf #v maximum number of function evaluations' maxiter='long(1e3*N**2/sqrt(popsize)) #v maximum number of iterations' mindx='0 #v minimal std in any direction, cave interference with tol*' minstd='0 #v minimal std in any coordinate direction, cave interference with tol*' noise_eps='1e-7 # perturbation factor for noise handling reevaluations, only fmin' noise_handling='False # maximal number of evaluations for noise treatment, only fmin' noise_reevals=' 1.5 + popsize/20 # number of solution to be reevaluated for noise measurement, only fmin' popsize='4+int(3*log(N)) # population size, AKA lambda, number of new solution per iteration' randn='np.random.standard_normal #v randn((lam, N)) must return an np.array of shape (lam, N)' restarts='0 # in fmin(): number of restarts' scaling_of_variables='None # scale for each variable, sigma0 is interpreted w.r.t. this scale, in that effective_sigma0 = sigma0*scaling. Internally the variables are divided by scaling_of_variables and sigma is unchanged, default is ones(N)' seed='None # random number seed' termination_callback='None #v in fmin(): a function returning True for termination, called after each iteration step and could be abused for side effects' tolfacupx='1e3 #v termination when step-size increases by tolfacupx (diverges). That is, the initial step-size was chosen far too small and better solutions were found far away from the initial solution x0' tolupsigma='1e20 #v sigma/sigma0 > tolupsigma * max(sqrt(eivenvals(C))) indicates "creeping behavior" with usually minor improvements' tolfun='1e-11 #v termination criterion: tolerance in function value, quite useful' tolfunhist='1e-12 #v termination criterion: tolerance in function value history' tolstagnation='int(100 * N**1.5 / popsize) #v termination if no improvement over tolstagnation iterations' tolx='1e-11 #v termination criterion: tolerance in x-changes' transformation='None # [t0, t1] are two mappings, t0 transforms solutions from CMA-representation to f-representation, t1 is the back transformation, see class GenoPheno' typical_x='None # used with scaling_of_variables' updatecovwait='None #v number of iterations without distribution update, name is subject to future changes' verb_append='0 # initial evaluation counter, if append, do not overwrite output files' verb_disp='100 #v verbosity: display console output every verb_disp iteration' verb_filenameprefix='outcmaes # output filenames prefix' verb_log='1 #v verbosity: write data to files every verb_log iteration, writing can be time critical on fast to evaluate functions' verb_plot='0 #v in fmin(): plot() is called every verb_plot iteration' verb_time='True #v output timings on console' vv='0 #? versatile variable for hacking purposes, value found in self.opts['vv']' Subsets of options can be displayed, for example like ``cma.Options('tol')``, see also class `Options`. Return ====== Similar to `OOOptimizer.optimize()` and/or `CMAEvolutionStrategy.optimize()`, return the list provided by `CMAEvolutionStrategy.result()` appended with an `OOOptimizer` and an `BaseDataLogger`:: res = optim.result() + (optim.stop(), optim, logger) where - ``res[0]`` (``xopt``) -- best evaluated solution - ``res[1]`` (``fopt``) -- respective function value - ``res[2]`` (``evalsopt``) -- respective number of function evaluations - ``res[3]`` (``evals``) -- number of overall conducted objective function evaluations - ``res[4]`` (``iterations``) -- number of overall conducted iterations - ``res[5]`` (``xmean``) -- mean of the final sample distribution - ``res[6]`` (``stds``) -- effective stds of the final sample distribution - ``res[-3]`` (``stop``) -- termination condition(s) in a dictionary - ``res[-2]`` (``cmaes``) -- class `CMAEvolutionStrategy` instance - ``res[-1]`` (``logger``) -- class `CMADataLogger` instance Details ======= This function is an interface to the class `CMAEvolutionStrategy`. The class can be used when full control over the iteration loop of the optimizer is desired. The noise handling follows closely [Hansen et al 2009, A Method for Handling Uncertainty in Evolutionary Optimization...] in the measurement part, but the implemented treatment is slightly different: for ``noiseS > 0``, ``evaluations`` (time) and sigma are increased by ``alpha``. For ``noiseS < 0``, ``evaluations`` (time) is decreased by ``alpha**(1/4)``. The option ``noise_handling`` switches the uncertainty handling on/off, the given value defines the maximal number of evaluations for a single fitness computation. If ``noise_handling`` is a list, the smallest element defines the minimal number and if the list has three elements, the median value is the start value for ``evaluations``. See also class `NoiseHandler`. Examples ======== The following example calls `fmin` optimizing the Rosenbrock function in 10-D with initial solution 0.1 and initial step-size 0.5. The options are specified for the usage with the `doctest` module. >>> import cma >>> # cma.Options() # returns all possible options >>> options = {'CMA_diagonal':10, 'seed':1234, 'verb_time':0} >>> >>> res = cma.fmin(cma.fcts.rosen, [0.1] * 10, 0.5, **options) (5_w,10)-CMA-ES (mu_w=3.2,w_1=45%) in dimension 10 (seed=1234) Covariance matrix is diagonal for 10 iterations (1/ccov=29.0) Iterat #Fevals function value axis ratio sigma minstd maxstd min:sec 1 10 1.264232686260072e+02 1.1e+00 4.40e-01 4e-01 4e-01 2 20 1.023929748193649e+02 1.1e+00 4.00e-01 4e-01 4e-01 3 30 1.214724267489674e+02 1.2e+00 3.70e-01 3e-01 4e-01 100 1000 6.366683525319511e+00 6.2e+00 2.49e-02 9e-03 3e-02 200 2000 3.347312410388666e+00 1.2e+01 4.52e-02 8e-03 4e-02 300 3000 1.027509686232270e+00 1.3e+01 2.85e-02 5e-03 2e-02 400 4000 1.279649321170636e-01 2.3e+01 3.53e-02 3e-03 3e-02 500 5000 4.302636076186532e-04 4.6e+01 4.78e-03 3e-04 5e-03 600 6000 6.943669235595049e-11 5.1e+01 5.41e-06 1e-07 4e-06 650 6500 5.557961334063003e-14 5.4e+01 1.88e-07 4e-09 1e-07 termination on tolfun : 1e-11 final/bestever f-value = 5.55796133406e-14 2.62435631419e-14 mean solution: [ 1. 1.00000001 1. 1. 1. 1.00000001 1.00000002 1.00000003 ...] std deviation: [ 3.9193387e-09 3.7792732e-09 4.0062285e-09 4.6605925e-09 5.4966188e-09 7.4377745e-09 1.3797207e-08 2.6020765e-08 ...] >>> >>> print('best solutions fitness = %f' % (res[1])) best solutions fitness = 2.62435631419e-14 >>> assert res[1] < 1e-12 The method :: cma.plot(); (based on `matplotlib.pylab`) produces a plot of the run and, if necessary:: cma.show() shows the plot in a window. To continue you might need to close the pop-up window. This behavior seems to disappear in subsequent calls of `cma.plot()` and is avoided by using `ipython` with `-pylab` option. Finally :: cma.savefig('myfirstrun') # savefig from matplotlib.pylab will save the figure in a png. :See: `CMAEvolutionStrategy`, `OOOptimizer.optimize(), `plot()`, `Options`, `scipy.optimize.fmin()` """ # style guides say there should be the above empty line try: # pass on KeyboardInterrupt opts = locals() # collect all local variables (i.e. arguments) in a dictionary del opts['func'] # remove those without a default value del opts['args'] del opts['x0'] # is not optional, no default available del opts['sigma0'] # is not optional for the constructor CMAEvolutionStrategy if not func: # return available options in a dictionary return Options(opts, True) # these opts are by definition valid # TODO: this is very ugly: incpopsize = Options({'incpopsize':incpopsize}).eval('incpopsize') restarts = Options({'restarts':restarts}).eval('restarts') del opts['restarts'] noise_handling = Options({'noise_handling': noise_handling}).eval('noise_handling') del opts['noise_handling']# otherwise CMA throws an error irun = 0 best = BestSolution() while 1: # recover from a CMA object if irun == 0 and isinstance(x0, CMAEvolutionStrategy): es = x0 x0 = es.inputargs['x0'] # for the next restarts if sigma0 is None or not np.isscalar(array(sigma0)): sigma0 = es.inputargs['sigma0'] # for the next restarts # ignore further input args and keep original options else: # default case if irun and opts['restart_from_best']: print('CAVE: restart_from_best is typically not useful') es = CMAEvolutionStrategy(best.x, sigma0, opts) else: es = CMAEvolutionStrategy(x0, sigma0, opts) if opts['eval_initial_x']: x = es.gp.pheno(es.mean, bounds=es.gp.bounds) es.best.update([x], None, [func(x, *args)], 1) es.countevals += 1 opts = es.opts # processed options, unambiguous append = opts['verb_append'] or es.countiter > 0 or irun > 0 logger = CMADataLogger(opts['verb_filenameprefix'], opts['verb_log']) logger.register(es, append).add() # initial values, not fitness values # if es.countiter == 0 and es.opts['verb_log'] > 0 and not es.opts['verb_append']: # logger = CMADataLogger(es.opts['verb_filenameprefix']).register(es) # logger.add() # es.writeOutput() # initial values for sigma etc noisehandler = NoiseHandler(es.N, noise_handling, np.median, opts['noise_reevals'], opts['noise_eps'], opts['eval_parallel']) while not es.stop(): X, fit = es.ask_and_eval(func, args, evaluations=noisehandler.evaluations, aggregation=np.median) # treats NaN with resampling # TODO: check args and in case use args=(noisehandler.evaluations, ) if 11 < 3 and opts['vv']: # inject a solution # use option check_point = [0] if 0 * np.random.randn() >= 0: X[0] = 0 + opts['vv'] * es.sigma**0 * np.random.randn(es.N) fit[0] = func(X[0], *args) # print fit[0] es.tell(X, fit) # prepare for next iteration if noise_handling: es.sigma *= noisehandler(X, fit, func, es.ask, args)**opts['noise_change_sigma'] es.countevals += noisehandler.evaluations_just_done # TODO: this is a hack, not important though es.disp() logger.add(more_data=[noisehandler.evaluations, 10**noisehandler.noiseS] if noise_handling else [], modulo=1 if es.stop() and logger.modulo else None) if opts['verb_log'] and opts['verb_plot'] and \ (es.countiter % max(opts['verb_plot'], opts['verb_log']) == 0 or es.stop()): logger.plot(324, fontsize=10) # end while not es.stop mean_pheno = es.gp.pheno(es.mean, bounds=es.gp.bounds) fmean = func(mean_pheno, *args) es.countevals += 1 es.best.update([mean_pheno], None, [fmean], es.countevals) best.update(es.best) # in restarted case # final message if opts['verb_disp']: srestarts = (' after %i restart' + ('s' if irun > 1 else '')) % irun if irun else '' for k, v in list(es.stop().items()): print('termination on %s=%s%s (%s)' % (k, str(v), srestarts, time.asctime())) print('final/bestever f-value = %e %e' % (es.best.last.f, best.f)) if es.N < 9: print('mean solution: ' + str(es.gp.pheno(es.mean))) print('std deviation: ' + str(es.sigma * sqrt(es.dC) * es.gp.scales)) else: print('mean solution: %s ...]' % (str(es.gp.pheno(es.mean)[:8])[:-1])) print('std deviations: %s ...]' % (str((es.sigma * sqrt(es.dC) * es.gp.scales)[:8])[:-1])) irun += 1 if irun > restarts or 'ftarget' in es.stopdict or 'maxfunevals' in es.stopdict: break opts['verb_append'] = es.countevals opts['popsize'] = incpopsize * es.sp.popsize # TODO: use rather options? opts['seed'] += 1 # while irun es.out['best'] = best # TODO: this is a rather suboptimal type for inspection in the shell if 1 < 3: return es.result() + (es.stop(), es, logger) else: # previously: to be removed return (best.x.copy(), best.f, es.countevals, dict((('stopdict', CMAStopDict(es.stopdict)) ,('mean', es.gp.pheno(es.mean)) ,('std', es.sigma * sqrt(es.dC) * es.gp.scales) ,('out', es.out) ,('opts', es.opts) # last state of options ,('cma', es) ,('inputargs', es.inputargs) )) ) # TODO refine output, can #args be flexible? # is this well usable as it is now? except KeyboardInterrupt: # Exception, e: if opts['verb_disp'] > 0: print(' in/outcomment ``raise`` in last line of cma.fmin to prevent/restore KeyboardInterrupt exception') raise # cave: swallowing this exception can silently mess up experiments, if ctrl-C is hit def plot(name=None, fig=None, abscissa=1, iteridx=None, plot_mean=True, # TODO: plot_mean default should be False foffset=1e-19, x_opt=None, fontsize=10): """ plot data from files written by a `CMADataLogger`, the call ``cma.plot(name, **argsdict)`` is a shortcut for ``cma.CMADataLogger(name).plot(**argsdict)`` Arguments --------- `name` name of the logger, filename prefix, None evaluates to the default 'outcmaes' `fig` filename or figure number, or both as a tuple (any order) `abscissa` 0==plot versus iteration count, 1==plot versus function evaluation number `iteridx` iteration indices to plot Return `None` Examples -------- :: cma.plot(); # the optimization might be still # running in a different shell cma.show() # to continue you might need to close the pop-up window # once and call cma.plot() again. # This behavior seems to disappear in subsequent # calls of cma.plot(). Also using ipython with -pylab # option might help. cma.savefig('fig325.png') cma.close() cdl = cma.CMADataLogger().downsampling().plot() Details ------- Data from codes in other languages (C, Java, Matlab, Scilab) have the same format and can be plotted just the same. :See: `CMADataLogger`, `CMADataLogger.plot()` """ CMADataLogger(name).plot(fig, abscissa, iteridx, plot_mean, foffset, x_opt, fontsize) def disp(name=None, idx=None): """displays selected data from (files written by) the class `CMADataLogger`. The call ``cma.disp(name, idx)`` is a shortcut for ``cma.CMADataLogger(name).disp(idx)``. Arguments --------- `name` name of the logger, filename prefix, `None` evaluates to the default ``'outcmaes'`` `idx` indices corresponding to rows in the data file; by default the first five, then every 100-th, and the last 10 rows. Too large index values are removed. Examples -------- :: import cma, numpy # assume some data are available from previous runs cma.disp(None,numpy.r_[0,-1]) # first and last cma.disp(None,numpy.r_[0:1e9:100,-1]) # every 100-th and last cma.disp(idx=numpy.r_[0,-10:0]) # first and ten last cma.disp(idx=numpy.r_[0:1e9:1e3,-10:0]) :See: `CMADataLogger.disp()` """ return CMADataLogger(name if name else 'outcmaes' ).disp(idx) #____________________________________________________________ def _fileToMatrix(file_name): """rudimentary method to read in data from a file""" # TODO: np.loadtxt() might be an alternative # try: if 1 < 3: lres = [] for line in open(file_name, 'r').readlines(): if len(line) > 0 and line[0] not in ('%', '#'): lres.append(list(map(float, line.split()))) res = lres else: fil = open(file_name, 'r') fil.readline() # rudimentary, assume one comment line lineToRow = lambda line: list(map(float, line.split())) res = list(map(lineToRow, fil.readlines())) fil.close() # close file could be omitted, reference counting should do during garbage collection, but... while res != [] and res[0] == []: # remove further leading empty lines del res[0] return res # except: print('could not read file ' + file_name) #____________________________________________________________ #____________________________________________________________ class NoiseHandler(object): """Noise handling according to [Hansen et al 2009, A Method for Handling Uncertainty in Evolutionary Optimization...] The interface of this class is yet versatile and subject to changes. The attribute ``evaluations`` serves to control the noise via number of evaluations, for example with `ask_and_eval()`, see also parameter ``maxevals`` and compare the example. Example ------- >>> import cma, numpy as np >>> func = cma.Fcts.noisysphere >>> es = cma.CMAEvolutionStrategy(np.ones(10), 1) >>> logger = cma.CMADataLogger().register(es) >>> nh = cma.NoiseHandler(es.N, maxevals=[1, 30]) >>> while not es.stop(): ... X, fit = es.ask_and_eval(func, evaluations=nh.evaluations) ... es.tell(X, fit) # prepare for next iteration ... es.sigma *= nh(X, fit, func, es.ask) # see method __call__ ... es.countevals += nh.evaluations_just_done # this is a hack, not important though ... logger.add(more_data = [nh.evaluations, nh.noiseS]) # add a data point ... es.disp() ... # nh.maxevals = ... it might be useful to start with smaller values and then increase >>> print(es.stop()) >>> print(es.result()[-2]) # take mean value, the best solution is totally off >>> assert sum(es.result()[-2]**2) < 1e-9 >>> print(X[np.argmin(fit)]) # not bad, but probably worse than the mean >>> logger.plot() The noise options of `fmin()` control a `NoiseHandler` instance similar to this example. The command ``cma.Options('noise')`` lists in effect the parameters of `__init__` apart from ``aggregate``. Details ------- The parameters reevals, theta, c_s, and alpha_t are set differently than in the original publication, see method `__init__()`. For a very small population size, say popsize <= 5, the measurement technique based on rank changes is likely to fail. Missing Features ---------------- In case no noise is found, ``self.lam_reeval`` should be adaptive and get at least as low as 1 (however the possible savings from this are rather limited). Another option might be to decide during the first call by a quantitative analysis of fitness values whether ``lam_reeval`` is set to zero. More generally, an automatic noise mode detection might also set the covariance matrix learning rates to smaller values. :See: `fmin()`, `ask_and_eval()` """ def __init__(self, N, maxevals=10, aggregate=np.median, reevals=None, epsilon=1e-7, parallel=False): """parameters are `N` dimension `maxevals` maximal value for ``self.evaluations``, where ``self.evaluations`` function calls are aggregated for noise treatment. With ``maxevals == 0`` the noise handler is (temporarily) "switched off". If `maxevals` is a list, min value and (for >2 elements) median are used to define minimal and initial value of ``self.evaluations``. Choosing ``maxevals > 1`` is only reasonable, if also the original ``fit`` values (that are passed to `__call__`) are computed by aggregation of ``self.evaluations`` values (otherwise the values are not comparable), as it is done within `fmin()`. `aggregate` function to aggregate single f-values to a 'fitness', e.g. ``np.median``. `reevals` number of solutions to be reevaluated for noise measurement, can be a float, by default set to ``1.5 + popsize/20``, zero switches noise handling off. `epsilon` multiplier for perturbation of the reevaluated solutions `parallel` a single f-call with all resampled solutions :See: `fmin()`, `Options`, `CMAEvolutionStrategy.ask_and_eval()` """ self.lam_reeval = reevals # 2 + popsize/20, see method indices(), originally 2 + popsize/10 self.epsilon = epsilon self.parallel = parallel self.theta = 0.5 # originally 0.2 self.cum = 0.3 # originally 1, 0.3 allows one disagreement of current point with resulting noiseS self.alphasigma = 1 + 2 / (N+10) self.alphaevals = 1 + 2 / (N+10) # originally 1.5 self.alphaevalsdown = self.alphaevals**-0.25 # originally 1/1.5 self.evaluations = 1 # to aggregate for a single f-evaluation self.minevals = 1 self.maxevals = int(np.max(maxevals)) if hasattr(maxevals, '__contains__'): # i.e. can deal with ``in`` if len(maxevals) > 1: self.minevals = min(maxevals) self.evaluations = self.minevals if len(maxevals) > 2: self.evaluations = np.median(maxevals) self.f_aggregate = aggregate self.evaluations_just_done = 0 # actually conducted evals, only for documentation self.noiseS = 0 def __call__(self, X, fit, func, ask=None, args=()): """proceed with noise measurement, set anew attributes ``evaluations`` (proposed number of evaluations to "treat" noise) and ``evaluations_just_done`` and return a factor for increasing sigma. Parameters ---------- `X` a list/sequence/vector of solutions `fit` the respective list of function values `func` the objective function, ``fit[i]`` corresponds to ``func(X[i], *args)`` `ask` a method to generate a new, slightly disturbed solution. The argument is mandatory if ``epsilon`` is not zero, see `__init__()`. `args` optional additional arguments to `func` Details ------- Calls the methods ``reeval()``, ``update_measure()`` and ``treat()`` in this order. ``self.evaluations`` is adapted within the method `treat()`. """ self.evaluations_just_done = 0 if not self.maxevals or self.lam_reeval == 0: return 1.0 res = self.reeval(X, fit, func, ask, args) if not len(res): return 1.0 self.update_measure() return self.treat() def get_evaluations(self): """return ``self.evaluations``, the number of evalutions to get a single fitness measurement""" return self.evaluations def treat(self): """adapt self.evaluations depending on the current measurement value and return ``sigma_fac in (1.0, self.alphasigma)`` """ if self.noiseS > 0: self.evaluations = min((self.evaluations * self.alphaevals, self.maxevals)) return self.alphasigma else: self.evaluations = max((self.evaluations * self.alphaevalsdown, self.minevals)) return 1.0 def reeval(self, X, fit, func, ask, args=()): """store two fitness lists, `fit` and ``fitre`` reevaluating some solutions in `X`. ``self.evaluations`` evaluations are done for each reevaluated fitness value. See `__call__()`, where `reeval()` is called. """ self.fit = list(fit) self.fitre = list(fit) self.idx = self.indices(fit) if not len(self.idx): return self.idx evals = int(self.evaluations) if self.f_aggregate else 1 fagg = np.median if self.f_aggregate is None else self.f_aggregate for i in self.idx: if self.epsilon: if self.parallel: self.fitre[i] = fagg(func(ask(evals, X[i], self.epsilon), *args)) else: self.fitre[i] = fagg([func(ask(1, X[i], self.epsilon)[0], *args) for _k in range(evals)]) else: self.fitre[i] = fagg([func(X[i], *args) for _k in range(evals)]) self.evaluations_just_done = evals * len(self.idx) return self.fit, self.fitre, self.idx def update_measure(self): """updated noise level measure using two fitness lists ``self.fit`` and ``self.fitre``, return ``self.noiseS, all_individual_measures``. Assumes that `self.idx` contains the indices where the fitness lists differ """ lam = len(self.fit) idx = np.argsort(self.fit + self.fitre) ranks = np.argsort(idx).reshape((2, lam)) rankDelta = ranks[0] - ranks[1] - np.sign(ranks[0] - ranks[1]) # compute rank change limits using both ranks[0] and ranks[1] r = np.arange(1, 2 * lam) # 2 * lam - 2 elements limits = [0.5 * (Mh.prctile(np.abs(r - (ranks[0,i] + 1 - (ranks[0,i] > ranks[1,i]))), self.theta*50) + Mh.prctile(np.abs(r - (ranks[1,i] + 1 - (ranks[1,i] > ranks[0,i]))), self.theta*50)) for i in self.idx] # compute measurement # max: 1 rankchange in 2*lambda is always fine s = np.abs(rankDelta[self.idx]) - Mh.amax(limits, 1) # lives roughly in 0..2*lambda self.noiseS += self.cum * (np.mean(s) - self.noiseS) return self.noiseS, s def indices(self, fit): """return the set of indices to be reevaluted for noise measurement, taking the ``lam_reeval`` best from the first ``2 * lam_reeval + 2`` values. Given the first values are the earliest, this is a useful policy also with a time changing objective. """ lam = self.lam_reeval if self.lam_reeval else 2 + len(fit) / 20 reev = int(lam) + ((lam % 1) > np.random.rand()) return np.argsort(array(fit, copy=False)[:2 * (reev + 1)])[:reev] #____________________________________________________________ #____________________________________________________________ class Sections(object): """plot sections through an objective function. A first rational thing to do, when facing an (expensive) application. By default 6 points in each coordinate are evaluated. This class is still experimental. Examples -------- >>> import cma, numpy as np >>> s = cma.Sections(cma.Fcts.rosen, np.zeros(3)).do(plot=False) >>> s.do(plot=False) # evaluate the same points again, i.e. check for noise >>> try: ... s.plot() ... except: ... print('plotting failed: pylab package is missing?') Details ------- Data are saved after each function call during `do()`. The filename is attribute ``name`` and by default ``str(func)``, see `__init__()`. A random (orthogonal) basis can be generated with ``cma.Rotation()(np.eye(3))``. The default name is unique in the function name, but it should be unique in all parameters of `__init__()` but `plot_cmd` and `load`. ``self.res`` is a dictionary with an entry for each "coordinate" ``i`` and with an entry ``'x'``, the middle point. Each entry ``i`` is again a dictionary with keys being different dx values and the value being a sequence of f-values. For example ``self.res[2][0.1] == [0.01, 0.01]``, which is generated using the difference vector ``self.basis[2]`` like ``self.res[2][dx] += func(self.res['x'] + dx * self.basis[2])``. :See: `__init__()` """ def __init__(self, func, x, args=(), basis=None, name=None, plot_cmd=pylab.plot if pylab else None, load=True): """ Parameters ---------- `func` objective function `x` point in search space, middle point of the sections `args` arguments passed to `func` `basis` evaluated points are ``func(x + locations[j] * basis[i]) for i in len(basis) for j in len(locations)``, see `do()` `name` filename where to save the result `plot_cmd` command used to plot the data, typically matplotlib pylabs `plot` or `semilogy` `load` load previous data from file ``str(func) + '.pkl'`` """ self.func = func self.args = args self.x = x self.name = name if name else str(func).replace(' ', '_').replace('>', '').replace('<', '') self.plot_cmd = plot_cmd # or semilogy self.basis = np.eye(len(x)) if basis is None else basis try: self.load() if any(self.res['x'] != x): self.res = {} self.res['x'] = x # TODO: res['x'] does not look perfect else: print(self.name + ' loaded') except: self.res = {} self.res['x'] = x def do(self, repetitions=1, locations=np.arange(-0.5, 0.6, 0.2), plot=True): """generates, plots and saves function values ``func(y)``, where ``y`` is 'close' to `x` (see `__init__()`). The data are stored in the ``res`` attribute and the class instance is saved in a file with (the weired) name ``str(func)``. Parameters ---------- `repetitions` for each point, only for noisy functions is >1 useful. For ``repetitions==0`` only already generated data are plotted. `locations` coordinated wise deviations from the middle point given in `__init__` """ if not repetitions: self.plot() return res = self.res for i in range(len(self.basis)): # i-th coordinate if i not in res: res[i] = {} # xx = np.array(self.x) # TODO: store res[i]['dx'] = self.basis[i] here? for dx in locations: xx = self.x + dx * self.basis[i] xkey = dx # xx[i] if (self.basis == np.eye(len(self.basis))).all() else dx if xkey not in res[i]: res[i][xkey] = [] n = repetitions while n > 0: n -= 1 res[i][xkey].append(self.func(xx, *self.args)) if plot: self.plot() self.save() return self def plot(self, plot_cmd=None, tf=lambda y: y): """plot the data we have, return ``self``""" if not plot_cmd: plot_cmd = self.plot_cmd colors = 'bgrcmyk' pylab.hold(False) res = self.res flatx, flatf = self.flattened() minf = np.inf for i in flatf: minf = min((minf, min(flatf[i]))) addf = 1e-9 - minf if minf <= 0 else 0 for i in sorted(res.keys()): # we plot not all values here if type(i) is int: color = colors[i % len(colors)] arx = sorted(res[i].keys()) plot_cmd(arx, [tf(np.median(res[i][x]) + addf) for x in arx], color + '-') pylab.text(arx[-1], tf(np.median(res[i][arx[-1]])), i) pylab.hold(True) plot_cmd(flatx[i], tf(np.array(flatf[i]) + addf), color + 'o') pylab.ylabel('f + ' + str(addf)) pylab.draw() show() # raw_input('press return') return self def flattened(self): """return flattened data ``(x, f)`` such that for the sweep through coordinate ``i`` we have for data point ``j`` that ``f[i][j] == func(x[i][j])`` """ flatx = {} flatf = {} for i in self.res: if type(i) is int: flatx[i] = [] flatf[i] = [] for x in sorted(self.res[i]): for d in sorted(self.res[i][x]): flatx[i].append(x) flatf[i].append(d) return flatx, flatf def save(self, name=None): """save to file""" import pickle name = name if name else self.name fun = self.func del self.func # instance method produces error pickle.dump(self, open(name + '.pkl', "wb" )) self.func = fun return self def load(self, name=None): """load from file""" import pickle name = name if name else self.name s = pickle.load(open(name + '.pkl', 'rb')) self.res = s.res # disregard the class return self #____________________________________________________________ #____________________________________________________________ class _Error(Exception): """generic exception of cma module""" pass #____________________________________________________________ #____________________________________________________________ # class ElapsedTime(object): """32-bit C overflows after int(2**32/1e6) == 4294s about 72 min""" def __init__(self): self.tic0 = time.clock() self.tic = self.tic0 self.lasttoc = time.clock() self.lastdiff = time.clock() - self.lasttoc self.time_to_add = 0 self.messages = 0 def __call__(self): toc = time.clock() if toc - self.tic >= self.lasttoc - self.tic: self.lastdiff = toc - self.lasttoc self.lasttoc = toc else: # overflow, reset self.tic if self.messages < 3: self.messages += 1 print(' in cma.ElapsedTime: time measure overflow, last difference estimated from', self.tic0, self.tic, self.lasttoc, toc, toc - self.lasttoc, self.lastdiff) self.time_to_add += self.lastdiff + self.lasttoc - self.tic self.tic = toc # reset self.lasttoc = toc self.elapsedtime = toc - self.tic + self.time_to_add return self.elapsedtime #____________________________________________________________ #____________________________________________________________ # class TimeIt(object): def __init__(self, fct, args=(), seconds=1): pass class Misc(object): #____________________________________________________________ #____________________________________________________________ # class MathHelperFunctions(object): """static convenience math helper functions, if the function name is preceded with an "a", a numpy array is returned """ @staticmethod def aclamp(x, upper): return -Misc.MathHelperFunctions.apos(-x, -upper) @staticmethod def expms(A, eig=np.linalg.eigh): """matrix exponential for a symmetric matrix""" # TODO: check that this works reliably for low rank matrices # first: symmetrize A D, B = eig(A) return np.dot(B, (np.exp(D) * B).T) @staticmethod def amax(vec, vec_or_scalar): return array(Misc.MathHelperFunctions.max(vec, vec_or_scalar)) @staticmethod def max(vec, vec_or_scalar): b = vec_or_scalar if np.isscalar(b): m = [max(x, b) for x in vec] else: m = [max(vec[i], b[i]) for i in range(len(vec))] return m @staticmethod def amin(vec_or_scalar, vec_or_scalar2): return array(Misc.MathHelperFunctions.min(vec_or_scalar, vec_or_scalar2)) @staticmethod def min(a, b): iss = np.isscalar if iss(a) and iss(b): return min(a, b) if iss(a): a, b = b, a # now only b can be still a scalar if iss(b): return [min(x, b) for x in a] else: # two non-scalars must have the same length return [min(a[i], b[i]) for i in range(len(a))] @staticmethod def norm(vec, expo=2): return sum(vec**expo)**(1/expo) @staticmethod def apos(x, lower=0): """clips argument (scalar or array) from below at lower""" if lower == 0: return (x > 0) * x else: return lower + (x > lower) * (x - lower) @staticmethod def prctile(data, p_vals=[0, 25, 50, 75, 100], sorted_=False): """``prctile(data, 50)`` returns the median, but p_vals can also be a sequence. Provides for small samples better values than matplotlib.mlab.prctile, however also slower. """ ps = [p_vals] if np.isscalar(p_vals) else p_vals if not sorted_: data = sorted(data) n = len(data) d = [] for p in ps: fi = p * n / 100 - 0.5 if fi <= 0: # maybe extrapolate? d.append(data[0]) elif fi >= n - 1: d.append(data[-1]) else: i = int(fi) d.append((i+1 - fi) * data[i] + (fi - i) * data[i+1]) return d[0] if np.isscalar(p_vals) else d @staticmethod def sround(nb): # TODO: to be vectorized """return stochastic round: floor(nb) + (rand() 1000: n = np.random.randn() / np.random.randn() return n / 25 @staticmethod def standard_finite_cauchy(size=1): try: l = len(size) except TypeError: l = 0 if l == 0: return array([Mh.cauchy_with_variance_one() for _i in range(size)]) elif l == 1: return array([Mh.cauchy_with_variance_one() for _i in range(size[0])]) elif l == 2: return array([[Mh.cauchy_with_variance_one() for _i in range(size[1])] for _j in range(size[0])]) else: raise _Error('len(size) cannot be large than two') @staticmethod def likelihood(x, m=None, Cinv=None, sigma=1, detC=None): """return likelihood of x for the normal density N(m, sigma**2 * Cinv**-1)""" # testing: MC integrate must be one: mean(p(x_i)) * volume(where x_i are uniformely sampled) # for i in range(3): print mean([cma.likelihood(20*r-10, dim * [0], None, 3) for r in rand(10000,dim)]) * 20**dim if m is None: dx = x else: dx = x - m # array(x) - array(m) n = len(x) s2pi = (2*np.pi)**(n/2.) if Cinv is None: return exp(-sum(dx**2) / sigma**2 / 2) / s2pi / sigma**n if detC is None: detC = 1. / np.linalg.linalg.det(Cinv) return exp(-np.dot(dx, np.dot(Cinv, dx)) / sigma**2 / 2) / s2pi / abs(detC)**0.5 / sigma**n @staticmethod def loglikelihood(self, x, previous=False): """return log-likelihood of `x` regarding the current sample distribution""" # testing of original fct: MC integrate must be one: mean(p(x_i)) * volume(where x_i are uniformely sampled) # for i in range(3): print mean([cma.likelihood(20*r-10, dim * [0], None, 3) for r in rand(10000,dim)]) * 20**dim # TODO: test this!! # c=cma.fmin... # c[3]['cma'].loglikelihood(...) if previous and hasattr(self, 'lastiter'): sigma = self.lastiter.sigma Crootinv = self.lastiter._Crootinv xmean = self.lastiter.mean D = self.lastiter.D elif previous and self.countiter > 1: raise _Error('no previous distribution parameters stored, check options importance_mixing') else: sigma = self.sigma Crootinv = self._Crootinv xmean = self.mean D = self.D dx = array(x) - xmean # array(x) - array(m) n = self.N logs2pi = n * log(2*np.pi) / 2. logdetC = 2 * sum(log(D)) dx = np.dot(Crootinv, dx) res = -sum(dx**2) / sigma**2 / 2 - logs2pi - logdetC/2 - n*log(sigma) if 1 < 3: # testing s2pi = (2*np.pi)**(n/2.) detC = np.prod(D)**2 res2 = -sum(dx**2) / sigma**2 / 2 - log(s2pi * abs(detC)**0.5 * sigma**n) assert res2 < res + 1e-8 or res2 > res - 1e-8 return res #____________________________________________________________ #____________________________________________________________ # # C and B are arrays rather than matrices, because they are # addressed via B[i][j], matrices can only be addressed via B[i,j] # tred2(N, B, diagD, offdiag); # tql2(N, diagD, offdiag, B); # Symmetric Householder reduction to tridiagonal form, translated from JAMA package. @staticmethod def eig(C): """eigendecomposition of a symmetric matrix, much slower than `numpy.linalg.eigh`, return ``(EVals, Basis)``, the eigenvalues and an orthonormal basis of the corresponding eigenvectors, where ``Basis[i]`` the i-th row of ``Basis`` columns of ``Basis``, ``[Basis[j][i] for j in range(len(Basis))]`` the i-th eigenvector with eigenvalue ``EVals[i]`` """ # class eig(object): # def __call__(self, C): # Householder transformation of a symmetric matrix V into tridiagonal form. # -> n : dimension # -> V : symmetric nxn-matrix # <- V : orthogonal transformation matrix: # tridiag matrix == V * V_in * V^t # <- d : diagonal # <- e[0..n-1] : off diagonal (elements 1..n-1) # Symmetric tridiagonal QL algorithm, iterative # Computes the eigensystem from a tridiagonal matrix in roughtly 3N^3 operations # -> n : Dimension. # -> d : Diagonale of tridiagonal matrix. # -> e[1..n-1] : off-diagonal, output from Householder # -> V : matrix output von Householder # <- d : eigenvalues # <- e : garbage? # <- V : basis of eigenvectors, according to d # tred2(N, B, diagD, offdiag); B=C on input # tql2(N, diagD, offdiag, B); # private void tred2 (int n, double V[][], double d[], double e[]) { def tred2 (n, V, d, e): # This is derived from the Algol procedures tred2 by # Bowdler, Martin, Reinsch, and Wilkinson, Handbook for # Auto. Comp., Vol.ii-Linear Algebra, and the corresponding # Fortran subroutine in EISPACK. num_opt = False # factor 1.5 in 30-D for j in range(n): d[j] = V[n-1][j] # d is output argument # Householder reduction to tridiagonal form. for i in range(n-1,0,-1): # Scale to avoid under/overflow. h = 0.0 if not num_opt: scale = 0.0 for k in range(i): scale = scale + abs(d[k]) else: scale = sum(abs(d[0:i])) if scale == 0.0: e[i] = d[i-1] for j in range(i): d[j] = V[i-1][j] V[i][j] = 0.0 V[j][i] = 0.0 else: # Generate Householder vector. if not num_opt: for k in range(i): d[k] /= scale h += d[k] * d[k] else: d[:i] /= scale h = np.dot(d[:i],d[:i]) f = d[i-1] g = h**0.5 if f > 0: g = -g e[i] = scale * g h = h - f * g d[i-1] = f - g if not num_opt: for j in range(i): e[j] = 0.0 else: e[:i] = 0.0 # Apply similarity transformation to remaining columns. for j in range(i): f = d[j] V[j][i] = f g = e[j] + V[j][j] * f if not num_opt: for k in range(j+1, i): g += V[k][j] * d[k] e[k] += V[k][j] * f e[j] = g else: e[j+1:i] += V.T[j][j+1:i] * f e[j] = g + np.dot(V.T[j][j+1:i],d[j+1:i]) f = 0.0 if not num_opt: for j in range(i): e[j] /= h f += e[j] * d[j] else: e[:i] /= h f += np.dot(e[:i],d[:i]) hh = f / (h + h) if not num_opt: for j in range(i): e[j] -= hh * d[j] else: e[:i] -= hh * d[:i] for j in range(i): f = d[j] g = e[j] if not num_opt: for k in range(j, i): V[k][j] -= (f * e[k] + g * d[k]) else: V.T[j][j:i] -= (f * e[j:i] + g * d[j:i]) d[j] = V[i-1][j] V[i][j] = 0.0 d[i] = h # end for i-- # Accumulate transformations. for i in range(n-1): V[n-1][i] = V[i][i] V[i][i] = 1.0 h = d[i+1] if h != 0.0: if not num_opt: for k in range(i+1): d[k] = V[k][i+1] / h else: d[:i+1] = V.T[i+1][:i+1] / h for j in range(i+1): if not num_opt: g = 0.0 for k in range(i+1): g += V[k][i+1] * V[k][j] for k in range(i+1): V[k][j] -= g * d[k] else: g = np.dot(V.T[i+1][0:i+1], V.T[j][0:i+1]) V.T[j][:i+1] -= g * d[:i+1] if not num_opt: for k in range(i+1): V[k][i+1] = 0.0 else: V.T[i+1][:i+1] = 0.0 if not num_opt: for j in range(n): d[j] = V[n-1][j] V[n-1][j] = 0.0 else: d[:n] = V[n-1][:n] V[n-1][:n] = 0.0 V[n-1][n-1] = 1.0 e[0] = 0.0 # Symmetric tridiagonal QL algorithm, taken from JAMA package. # private void tql2 (int n, double d[], double e[], double V[][]) { # needs roughly 3N^3 operations def tql2 (n, d, e, V): # This is derived from the Algol procedures tql2, by # Bowdler, Martin, Reinsch, and Wilkinson, Handbook for # Auto. Comp., Vol.ii-Linear Algebra, and the corresponding # Fortran subroutine in EISPACK. num_opt = False # using vectors from numpy makes it faster if not num_opt: for i in range(1,n): # (int i = 1; i < n; i++): e[i-1] = e[i] else: e[0:n-1] = e[1:n] e[n-1] = 0.0 f = 0.0 tst1 = 0.0 eps = 2.0**-52.0 for l in range(n): # (int l = 0; l < n; l++) { # Find small subdiagonal element tst1 = max(tst1, abs(d[l]) + abs(e[l])) m = l while m < n: if abs(e[m]) <= eps*tst1: break m += 1 # If m == l, d[l] is an eigenvalue, # otherwise, iterate. if m > l: iiter = 0 while 1: # do { iiter += 1 # (Could check iteration count here.) # Compute implicit shift g = d[l] p = (d[l+1] - g) / (2.0 * e[l]) r = (p**2 + 1)**0.5 # hypot(p,1.0) if p < 0: r = -r d[l] = e[l] / (p + r) d[l+1] = e[l] * (p + r) dl1 = d[l+1] h = g - d[l] if not num_opt: for i in range(l+2, n): d[i] -= h else: d[l+2:n] -= h f = f + h # Implicit QL transformation. p = d[m] c = 1.0 c2 = c c3 = c el1 = e[l+1] s = 0.0 s2 = 0.0 # hh = V.T[0].copy() # only with num_opt for i in range(m-1, l-1, -1): # (int i = m-1; i >= l; i--) { c3 = c2 c2 = c s2 = s g = c * e[i] h = c * p r = (p**2 + e[i]**2)**0.5 # hypot(p,e[i]) e[i+1] = s * r s = e[i] / r c = p / r p = c * d[i] - s * g d[i+1] = h + s * (c * g + s * d[i]) # Accumulate transformation. if not num_opt: # overall factor 3 in 30-D for k in range(n): # (int k = 0; k < n; k++) { h = V[k][i+1] V[k][i+1] = s * V[k][i] + c * h V[k][i] = c * V[k][i] - s * h else: # about 20% faster in 10-D hh = V.T[i+1].copy() # hh[:] = V.T[i+1][:] V.T[i+1] = s * V.T[i] + c * hh V.T[i] = c * V.T[i] - s * hh # V.T[i] *= c # V.T[i] -= s * hh p = -s * s2 * c3 * el1 * e[l] / dl1 e[l] = s * p d[l] = c * p # Check for convergence. if abs(e[l]) <= eps*tst1: break # } while (Math.abs(e[l]) > eps*tst1); d[l] = d[l] + f e[l] = 0.0 # Sort eigenvalues and corresponding vectors. if 11 < 3: for i in range(n-1): # (int i = 0; i < n-1; i++) { k = i p = d[i] for j in range(i+1, n): # (int j = i+1; j < n; j++) { if d[j] < p: # NH find smallest k>i k = j p = d[j] if k != i: d[k] = d[i] # swap k and i d[i] = p for j in range(n): # (int j = 0; j < n; j++) { p = V[j][i] V[j][i] = V[j][k] V[j][k] = p # tql2 N = len(C[0]) if 11 < 3: V = np.array([x[:] for x in C]) # copy each "row" N = V[0].size d = np.zeros(N) e = np.zeros(N) else: V = [[x[i] for i in range(N)] for x in C] # copy each "row" d = N * [0.] e = N * [0.] tred2(N, V, d, e) tql2(N, d, e, V) return (array(d), array(V)) Mh = Misc.MathHelperFunctions def pprint(to_be_printed): """nicely formated print""" try: import pprint as pp # generate an instance PrettyPrinter # pp.PrettyPrinter().pprint(to_be_printed) pp.pprint(to_be_printed) except ImportError: print('could not use pprint module, will apply regular print') print(to_be_printed) class Rotation(object): """Rotation class that implements an orthogonal linear transformation, one for each dimension. Used to implement non-separable test functions. Example: >>> import cma, numpy as np >>> R = cma.Rotation() >>> R2 = cma.Rotation() # another rotation >>> x = np.array((1,2,3)) >>> print(R(R(x), inverse=1)) [ 1. 2. 3.] """ dicMatrices = {} # store matrix if necessary, for each dimension def __init__(self): self.dicMatrices = {} # otherwise there might be shared bases which is probably not what we want def __call__(self, x, inverse=False): # function when calling an object """Rotates the input array `x` with a fixed rotation matrix (``self.dicMatrices['str(len(x))']``) """ N = x.shape[0] # can be an array or matrix, TODO: accept also a list of arrays? if str(N) not in self.dicMatrices: # create new N-basis for once and all B = np.random.randn(N, N) for i in range(N): for j in range(0, i): B[i] -= np.dot(B[i], B[j]) * B[j] B[i] /= sum(B[i]**2)**0.5 self.dicMatrices[str(N)] = B if inverse: return np.dot(self.dicMatrices[str(N)].T, x) # compute rotation else: return np.dot(self.dicMatrices[str(N)], x) # compute rotation # Use rotate(x) to rotate x rotate = Rotation() #____________________________________________________________ #____________________________________________________________ # class FitnessFunctions(object): """ versatile container for test objective functions """ def __init__(self): self.counter = 0 # number of calls or any other practical use def rot(self, x, fun, rot=1, args=()): """returns ``fun(rotation(x), *args)``, ie. `fun` applied to a rotated argument""" if len(np.shape(array(x))) > 1: # parallelized res = [] for x in x: res.append(self.rot(x, fun, rot, args)) return res if rot: return fun(rotate(x, *args)) else: return fun(x) def somenan(self, x, fun, p=0.1): """returns sometimes np.NaN, otherwise fun(x)""" if np.random.rand(1) < p: return np.NaN else: return fun(x) def rand(self, x): """Random test objective function""" return np.random.random(1)[0] def linear(self, x): return -x[0] def lineard(self, x): if 1 < 3 and any(array(x) < 0): return np.nan if 1 < 3 and sum([ (10 + i) * x[i] for i in range(len(x))]) > 50e3: return np.nan return -sum(x) def sphere(self, x): """Sphere (squared norm) test objective function""" # return np.random.rand(1)[0]**0 * sum(x**2) + 1 * np.random.rand(1)[0] return sum((x+0)**2) def spherewithoneconstraint(self, x): return sum((x+0)**2) if x[0] > 1 else np.nan def elliwithoneconstraint(self, x, idx=[-1]): return self.ellirot(x) if all(array(x)[idx] > 1) else np.nan def spherewithnconstraints(self, x): return sum((x+0)**2) if all(array(x) > 1) else np.nan def noisysphere(self, x, noise=4.0, cond=1.0): """noise=10 does not work with default popsize, noise handling does not help """ return self.elli(x, cond=cond) * (1 + noise * np.random.randn() / len(x)) def spherew(self, x): """Sphere (squared norm) with sum x_i = 1 test objective function""" # return np.random.rand(1)[0]**0 * sum(x**2) + 1 * np.random.rand(1)[0] # s = sum(abs(x)) # return sum((x/s+0)**2) - 1/len(x) # return sum((x/s)**2) - 1/len(x) return -0.01*x[0] + abs(x[0])**-2 * sum(x[1:]**2) def partsphere(self, x): """Sphere (squared norm) test objective function""" self.counter += 1 # return np.random.rand(1)[0]**0 * sum(x**2) + 1 * np.random.rand(1)[0] dim = len(x) x = array([x[i % dim] for i in range(2*dim)]) N = 8 i = self.counter % dim #f = sum(x[i:i + N]**2) f = sum(x[np.random.randint(dim, size=N)]**2) return f def sectorsphere(self, x): """asymmetric Sphere (squared norm) test objective function""" return sum(x**2) + (1e6-1) * sum(x[x<0]**2) def cornersphere(self, x): """Sphere (squared norm) test objective function constraint to the corner""" nconstr = len(x) - 0 if any(x[:nconstr] < 1): return np.NaN return sum(x**2) - nconstr def cornerelli(self, x): """ """ if any(x < 1): return np.NaN return self.elli(x) - self.elli(np.ones(len(x))) def cornerellirot(self, x): """ """ if any(x < 1): return np.NaN return self.ellirot(x) def normalSkew(self, f): N = np.random.randn(1)[0]**2 if N < 1: N = f * N # diminish blow up lower part return N def noiseC(self, x, func=sphere, fac=10, expon=0.8): f = func(self, x) N = np.random.randn(1)[0]/np.random.randn(1)[0] return max(1e-19, f + (float(fac)/len(x)) * f**expon * N) def noise(self, x, func=sphere, fac=10, expon=1): f = func(self, x) #R = np.random.randn(1)[0] R = np.log10(f) + expon * abs(10-np.log10(f)) * np.random.rand(1)[0] # sig = float(fac)/float(len(x)) # R = log(f) + 0.5*log(f) * random.randn(1)[0] # return max(1e-19, f + sig * (f**np.log10(f)) * np.exp(R)) # return max(1e-19, f * np.exp(sig * N / f**expon)) # return max(1e-19, f * normalSkew(f**expon)**sig) return f + 10**R # == f + f**(1+0.5*RN) def cigar(self, x, rot=0, cond=1e6): """Cigar test objective function""" if rot: x = rotate(x) x = [x] if np.isscalar(x[0]) else x # scalar into list f = [x[0]**2 + cond * sum(x[1:]**2) for x in x] return f if len(f) > 1 else f[0] # 1-element-list into scalar def tablet(self, x, rot=0): """Tablet test objective function""" if rot: x = rotate(x) x = [x] if np.isscalar(x[0]) else x # scalar into list f = [1e6*x[0]**2 + sum(x[1:]**2) for x in x] return f if len(f) > 1 else f[0] # 1-element-list into scalar def cigtab(self, y): """Cigtab test objective function""" X = [y] if np.isscalar(y[0]) else y f = [1e-4 * x[0]**2 + 1e4 * x[1]**2 + sum(x[2:]**2) for x in X] return f if len(f) > 1 else f[0] def twoaxes(self, y): """Cigtab test objective function""" X = [y] if np.isscalar(y[0]) else y N2 = len(X[0]) // 2 f = [1e6 * sum(x[0:N2]**2) + sum(x[N2:]**2) for x in X] return f if len(f) > 1 else f[0] def ellirot(self, x): return fcts.elli(array(x), 1) def hyperelli(self, x): N = len(x) return sum((np.arange(1, N+1) * x)**2) def elli(self, x, rot=0, xoffset=0, cond=1e6, actuator_noise=0.0, both=False): """Ellipsoid test objective function""" if not np.isscalar(x[0]): # parallel evaluation return [self.elli(xi, rot) for xi in x] # could save 20% overall if rot: x = rotate(x) N = len(x) if actuator_noise: x = x + actuator_noise * np.random.randn(N) ftrue = sum(cond**(np.arange(N)/(N-1.))*(x+xoffset)**2) alpha = 0.49 + 1./N beta = 1 felli = np.random.rand(1)[0]**beta * ftrue * \ max(1, (10.**9 / (ftrue+1e-99))**(alpha*np.random.rand(1)[0])) # felli = ftrue + 1*np.random.randn(1)[0] / (1e-30 + # np.abs(np.random.randn(1)[0]))**0 if both: return (felli, ftrue) else: # return felli # possibly noisy value return ftrue # + np.random.randn() def elliconstraint(self, x, cfac = 1e8, tough=True, cond=1e6): """ellipsoid test objective function with "constraints" """ N = len(x) f = sum(cond**(np.arange(N)[-1::-1]/(N-1)) * x**2) cvals = (x[0] + 1, x[0] + 1 + 100*x[1], x[0] + 1 - 100*x[1]) if tough: f += cfac * sum(max(0,c) for c in cvals) else: f += cfac * sum(max(0,c+1e-3)**2 for c in cvals) return f def rosen(self, x, alpha=1e2): """Rosenbrock test objective function""" x = [x] if np.isscalar(x[0]) else x # scalar into list f = [sum(alpha*(x[:-1]**2-x[1:])**2 + (1.-x[:-1])**2) for x in x] return f if len(f) > 1 else f[0] # 1-element-list into scalar def diffpow(self, x, rot=0): """Diffpow test objective function""" N = len(x) if rot: x = rotate(x) return sum(np.abs(x)**(2.+4.*np.arange(N)/(N-1.)))**0.5 def rosenelli(self, x): N = len(x) return self.rosen(x[:N/2]) + self.elli(x[N/2:], cond=1) def ridge(self, x, expo=2): x = [x] if np.isscalar(x[0]) else x # scalar into list f = [x[0] + 100*np.sum(x[1:]**2)**(expo/2.) for x in x] return f if len(f) > 1 else f[0] # 1-element-list into scalar def ridgecircle(self, x, expo=0.5): """happy cat by HG Beyer""" a = len(x) s = sum(x**2) return ((s - a)**2)**(expo/2) + s/a + sum(x)/a def happycat(self, x, alpha=1./8): s = sum(x**2) return ((s - len(x))**2)**alpha + (s/2 + sum(x)) / len(x) + 0.5 def flat(self,x): return 1 return 1 if np.random.rand(1) < 0.9 else 1.1 return np.random.randint(1,30) def branin(self, x): # in [0,15]**2 y = x[1] x = x[0] + 5 return (y - 5.1*x**2 / 4 / np.pi**2 + 5 * x / np.pi - 6)**2 + 10 * (1 - 1/8/np.pi) * np.cos(x) + 10 - 0.397887357729738160000 def goldsteinprice(self, x): x1 = x[0] x2 = x[1] return (1 + (x1 +x2 + 1)**2 * (19 - 14 * x1 + 3 * x1**2 - 14 * x2 + 6 * x1 * x2 + 3 * x2**2)) * ( 30 + (2 * x1 - 3 * x2)**2 * (18 - 32 * x1 + 12 * x1**2 + 48 * x2 - 36 * x1 * x2 + 27 * x2**2)) - 3 def griewank(self, x): # was in [-600 600] x = (600./5) * x return 1 - np.prod(np.cos(x/sqrt(1.+np.arange(len(x))))) + sum(x**2)/4e3 def rastrigin(self, x): """Rastrigin test objective function""" if not np.isscalar(x[0]): N = len(x[0]) return [10*N + sum(xi**2 - 10*np.cos(2*np.pi*xi)) for xi in x] # return 10*N + sum(x**2 - 10*np.cos(2*np.pi*x), axis=1) N = len(x) return 10*N + sum(x**2 - 10*np.cos(2*np.pi*x)) def schaffer(self, x): """ Schaffer function x0 in [-100..100]""" N = len(x); s = x[0:N-1]**2 + x[1:N]**2; return sum(s**0.25 * (np.sin(50*s**0.1)**2 + 1)) def schwefelelli(self, x): s = 0 f = 0 for i in range(len(x)): s += x[i] f += s**2 return f def schwefelmult(self, x, pen_fac = 1e4): """multimodal Schwefel function with domain -500..500""" y = [x] if np.isscalar(x[0]) else x N = len(y[0]) f = array([418.9829*N - 1.27275661e-5*N - sum(x * np.sin(np.abs(x)**0.5)) + pen_fac * sum((abs(x) > 500) * (abs(x) - 500)**2) for x in y]) return f if len(f) > 1 else f[0] def optprob(self, x): n = np.arange(len(x)) + 1 f = n * x * (1-x)**(n-1) return sum(1-f) def lincon(self, x, theta=0.01): """ridge like linear function with one linear constraint""" if x[0] < 0: return np.NaN return theta * x[1] + x[0] def rosen_nesterov(self, x, rho=100): """needs exponential number of steps in a non-increasing f-sequence. x_0 = (-1,1,...,1) See Jarre (2011) "On Nesterov's Smooth Chebyshev-Rosenbrock Function" """ f = 0.25 * (x[0] - 1)**2 f += rho * sum((x[1:] - 2 * x[:-1]**2 + 1)**2) return f fcts = FitnessFunctions() Fcts = fcts # for cross compatibility, as if the functions were static members of class Fcts def felli(x): # unbound function, needed to test multiprocessor return sum(1e6**(np.arange(len(x))/(len(x)-1))*(x)**2) #____________________________________________ #____________________________________________________________ def _test(module=None): # None is fine when called from inside the module import doctest print(doctest.testmod(module)) # this is pretty coool! def process_test(stream=None): """ """ import fileinput s1 = "" s2 = "" s3 = "" state = 0 for line in fileinput.input(stream): # takes argv as file or stdin if 1 < 3: s3 += line if state < -1 and line.startswith('***'): print(s3) if line.startswith('***'): s3 = "" if state == -1: # found a failed example line s1 += '\n\n*** Failed Example:' + line s2 += '\n\n\n' # line # state = 0 # wait for 'Expected:' line if line.startswith('Expected:'): state = 1 continue elif line.startswith('Got:'): state = 2 continue elif line.startswith('***'): # marks end of failed example state = 0 elif line.startswith('Failed example:'): state = -1 elif line.startswith('Exception raised'): state = -2 # in effect more else: if state == 1: s1 += line + '' if state == 2: s2 += line + '' #____________________________________________________________ #____________________________________________________________ # def main(argv=None): """to install and/or test from the command line use:: python cma.py [options | func dim sig0 [optkey optval][optkey optval]...] --test (or -t) to run the doctest, ``--test -v`` to get (much) verbosity and ``--test -q`` to run it quietly with output only in case of errors. install to install cma.py (uses setup from distutils.core). --fcts and --doc for more infos or start ipython --pylab. Examples -------- First, testing with the local python distribution:: python cma.py --test If succeeded install (uses setup from distutils.core):: python cma.py install A single run on the ellipsoid function:: python cma.py elli 10 1 """ if argv is None: argv = sys.argv # should have better been sys.argv[1:] # uncomment for unit test # _test() # handle input arguments, getopt might be helpful ;-) if len(argv) >= 1: # function and help if len(argv) == 1 or argv[1].startswith('-h') or argv[1].startswith('--help'): print(main.__doc__) fun = None elif argv[1].startswith('-t') or argv[1].startswith('--test'): import doctest if len(argv) > 2 and (argv[2].startswith('--v') or argv[2].startswith('-v')): # verbose print('doctest for cma.py: due to different platforms and python versions') print('and in some cases due to a missing unique random seed') print('many examples will "fail". This is OK, if they give a similar') print('to the expected result and if no exception occurs. ') # if argv[1][2] == 'v': doctest.testmod(report=True) # this is quite cool! else: # was: if len(argv) > 2 and (argv[2].startswith('--qu') or argv[2].startswith('-q')): print('doctest for cma.py: launching (it might be necessary to close a few pop up windows to finish)') fn = '__cma_doctest__.txt' stdout = sys.stdout try: with open(fn, 'w') as f: sys.stdout = f doctest.testmod(report=True) # this is quite cool! finally: sys.stdout = stdout process_test(fn) print('doctest for cma.py: finished (no other output should be seen after launching)') return elif argv[1] == '--doc': print(__doc__) print(CMAEvolutionStrategy.__doc__) print(fmin.__doc__) fun = None elif argv[1] == '--fcts': print('List of valid function names:') print([d for d in dir(fcts) if not d.startswith('_')]) fun = None elif argv[1] in ('install', '--install'): from distutils.core import setup setup(name = "cma", version = __version__, author = "Nikolaus Hansen", # packages = ["cma"], py_modules = ["cma"], ) fun = None elif argv[1] in ('plot',): plot() raw_input('press return') fun = None elif len(argv) > 3: fun = eval('fcts.' + argv[1]) else: print('try -h option') fun = None if fun is not None: if len(argv) > 2: # dimension x0 = np.ones(eval(argv[2])) if len(argv) > 3: # sigma sig0 = eval(argv[3]) opts = {} for i in range(5, len(argv), 2): opts[argv[i-1]] = eval(argv[i]) # run fmin if fun is not None: tic = time.time() fmin(fun, x0, sig0, **opts) # ftarget=1e-9, tolfacupx=1e9, verb_log=10) # plot() # print ' best function value ', res[2]['es'].best[1] print('elapsed time [s]: + %.2f', round(time.time() - tic, 2)) elif not len(argv): fmin(fcts.elli, np.ones(6)*0.1, 0.1, ftarget=1e-9) #____________________________________________________________ #____________________________________________________________ # # mainly for testing purpose # executed when called from an OS shell if __name__ == "__main__": # for i in range(1000): # how to find the memory leak # main(["cma.py", "rastrigin", "10", "5", "popsize", "200", "maxfevals", "24999", "verb_log", "0"]) main() ================================================ FILE: src/aup/Proposer/spearmint/gp.py ================================================ ## # Copyright (C) 2012 Jasper Snoek, Hugo Larochelle and Ryan P. Adams # # This code is written for research and educational purposes only to # supplement the paper entitled # "Practical Bayesian Optimization of Machine Learning Algorithms" # by Snoek, Larochelle and Adams # Advances in Neural Information Processing Systems, 2012 # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . """ gp.py contains utility functions related to computation in Gaussian processes. """ import numpy as np import scipy.linalg as spla import scipy.optimize as spo import scipy.io as sio SQRT_3 = np.sqrt(3.0) SQRT_5 = np.sqrt(5.0) def dist2(ls, x1, x2=None): # Assumes NxD and MxD matrices. # Compute the squared distance matrix, given length scales. if x2 is None: # Find distance with self for x1. # Rescale. xx1 = x1 / ls xx2 = xx1 else: # Rescale. xx1 = x1 / ls xx2 = x2 / ls r2 = np.maximum(-(np.dot(xx1, 2*xx2.T) - np.sum(xx1*xx1, axis=1)[:,np.newaxis] - np.sum(xx2*xx2, axis=1)[:,np.newaxis].T), 0.0) return r2 def grad_dist2(ls, x1, x2=None): if x2 is None: x2 = x1 # Rescale. x1 = x1 / ls x2 = x2 / ls N = x1.shape[0] M = x2.shape[0] D = x1.shape[1] gX = np.zeros((x1.shape[0],x2.shape[0],x1.shape[1])) code = \ """ for (int i=0; i 100000): val = spla.cholesky(np.eye(covmat.shape[0])) break try: val = spla.cholesky(covmat + jitter*np.eye(covmat.shape[0]), lower=True) passed = True except ValueError: jitter = jitter*1.1 print("Covariance matrix not PSD, adding jitter:", jitter) passed = False return val def memoize(amp2, noise, ls): if ( 'corr' not in state or state['amp2'] != amp2 or state['noise'] != noise or np.any(state['ls'] != ls)): # Get the correlation matrix (corr, grad_corr) = self.cov_func(ls, comp, None, grad=True) # Scale and add noise & jitter. covmat = (amp2 * (corr + 1e-6*np.eye(comp.shape[0])) + noise * np.eye(comp.shape[0])) # Memoize state['corr'] = corr state['grad_corr'] = grad_corr state['chol'] = jitter_chol(covmat) state['amp2'] = amp2 state['noise'] = noise state['ls'] = ls return (state['chol'], state['corr'], state['grad_corr']) def nlogprob(hypers): amp2 = np.exp(hypers[0]) noise = np.exp(hypers[1]) ls = np.exp(hypers[2:]) chol = memoize(amp2, noise, ls)[0] solve = spla.cho_solve((chol, True), diffs) lp = -np.sum(np.log(np.diag(chol)))-0.5*np.dot(diffs, solve) return -lp def grad_nlogprob(hypers): amp2 = np.exp(hypers[0]) noise = np.exp(hypers[1]) ls = np.exp(hypers[2:]) chol, corr, grad_corr = memoize(amp2, noise, ls) solve = spla.cho_solve((chol, True), diffs) inv_cov = spla.cho_solve((chol, True), np.eye(chol.shape[0])) jacobian = np.outer(solve, solve) - inv_cov grad = np.zeros(self.D + 2) # Log amplitude gradient. grad[0] = 0.5 * np.trace(np.dot( jacobian, corr + 1e-6*np.eye(chol.shape[0]))) * amp2 # Log noise gradient. grad[1] = 0.5 * np.trace(np.dot( jacobian, np.eye(chol.shape[0]))) * noise # Log length scale gradients. for dd in range(self.D): grad[dd+2] = 1 * np.trace(np.dot( jacobian, -amp2*grad_corr[:,:,dd]*comp[:,dd][:,np.newaxis]/(np.exp(ls[dd]))))*np.exp(ls[dd]) # Roll in the prior variance. #grad -= 2*hypers/self.hyper_prior return -grad # Initial length scales. self.ls = np.ones(self.D) # Initial amplitude. self.amp2 = np.std(vals) # Initial observation noise. self.noise = 1e-3 hypers = np.zeros(self.ls.shape[0]+2) hypers[0] = np.log(self.amp2) hypers[1] = np.log(self.noise) hypers[2:] = np.log(self.ls) # Use a bounded bfgs just to prevent the length-scales and noise from # getting into regions that are numerically unstable b = [(-10,10),(-10,10)] for i in range(comp.shape[1]): b.append((-10,5)) hypers = spo.fmin_l_bfgs_b(nlogprob, hypers, grad_nlogprob, args=(), bounds=b, disp=0) #hypers = spo.fmin_bfgs(nlogprob, hypers, grad_nlogprob, maxiter=100) hypers = hypers[0] #hypers = spo.fmin_bfgs(nlogprob, hypers, grad_nlogprob, maxiter=100) self.amp2 = np.exp(hypers[0]) self.noise = np.exp(hypers[1]) self.ls = np.exp(hypers[2:]) def main(): try: import matplotlib.pyplot as plt except: pass # Let's start with some random values x = np.linspace(0,1,10)[:,np.newaxis]*10#np.random.rand(100)[:,np.newaxis] y = np.random.randn(10) mygp = GP(covar='ARDSE') mygp.real_init(x.shape[1], y) # Sample some functions given these hyperparameters and plot them for i in range(0,5): x = np.linspace(0,1,100)[:,np.newaxis]*10 K = mygp.cov(x) y = np.random.randn(100) fsamp = mygp.mean + np.dot(spla.cholesky(K).transpose(), y) try: plt.plot(x, fsamp) except: pass print('Loglikelihood before optimizing: ', mygp.logprob(x,y)) mygp.optimize_hypers(x,y) print('Loglikelihood after optimizing: ', mygp.logprob(x,y)) try: plt.show() except: print('Install matplotlib to get figures') if __name__ == '__main__': main() ================================================ FILE: src/aup/Proposer/spearmint/helpers.py ================================================ import os import sys import subprocess import tempfile from google.protobuf import text_format from .spearmint_pb2 import * def log(*args): '''Write a msg to stderr.''' for v in args: sys.stderr.write(str(v)) sys.stderr.write("\n") def sh(cmd): '''Run a shell command (blocking until completion).''' subprocess.check_call(cmd, shell=True) def redirect_output(path): '''Redirect stdout and stderr to a file.''' outfile = open(path, 'a') sys.stdout = outfile sys.stderr = outfile def check_dir(path): '''Create a directory if it doesn't exist.''' if not os.path.exists(path): os.mkdir(path) def grid_for(job): return os.path.join(job.expt_dir, 'expt-grid.pkl') def file_write_safe(path, data): '''Write data to a temporary file, then move to the destination path.''' fh = tempfile.NamedTemporaryFile(mode='w', delete=False) fh.write(data) fh.close() cmd = 'mv "%s" "%s"' % (fh.name, path) sh(cmd) def save_experiment(filename, expt): file_write_safe(filename, text_format.MessageToString(expt)) def load_experiment(filename): fh = open(filename, 'rb') expt = Experiment() text_format.Merge(fh.read(), expt) fh.close() return expt def job_output_file(job): return os.path.join(job.expt_dir, 'output', '%08d.out' % (job.id)) def job_file_for(job): '''Get the path to the job file corresponding to a job object.''' return os.path.join(job.expt_dir, 'jobs', '%08d.pb' % (job.id)) def save_job(job): filename = job_file_for(job) file_write_safe(filename, job.SerializeToString()) def load_job(filename): fh = open(filename, 'rb') job = Job() job.ParseFromString(fh.read()) fh.close() return job ================================================ FILE: src/aup/Proposer/spearmint/runner.py ================================================ import sys import os import traceback from spearmint_pb2 import * from ExperimentGrid import * from helpers import * # System dependent modules DEFAULT_MODULES = [ 'packages/epd/7.1-2', 'packages/matlab/r2011b', 'mpi/openmpi/1.2.8/intel', 'libraries/mkl/10.0', 'packages/cuda/4.0', ] MCR_LOCATION = "/home/matlab/v715" # hack def job_runner(job): '''This fn runs in a new process. Now we are going to do a little bookkeeping and then spin off the actual job that does whatever it is we're trying to achieve.''' redirect_output(job_output_file(job)) log("Running in wrapper mode for '%s'\n" % (job.id)) ExperimentGrid.job_running(job.expt_dir, job.id) # Update metadata and save the job file, which will be read by the job wrappers. job.start_t = int(time.time()) job.status = 'running' save_job(job) success = False start_time = time.time() try: if job.language == MATLAB: run_matlab_job(job) elif job.language == PYTHON: run_python_job(job) elif job.language == SHELL: run_torch_job(job) elif job.language == MCR: run_mcr_job(job) else: raise Exception("That function type has not been implemented.") success = True except: log("-" * 40) log("Problem running the job:") log(sys.exc_info()) log(traceback.print_exc(limit=1000)) log("-" * 40) end_time = time.time() duration = end_time - start_time # The job output is written back to the job file, so we read it back in to # get the results. job_file = job_file_for(job) job = load_job(job_file) log("Job file reloaded.") if not job.HasField("value"): log("Could not find value in output file.") success = False if success: log("Completed successfully in %0.2f seconds. [%f]" % (duration, job.value)) # Update the status for this job. ExperimentGrid.job_complete(job.expt_dir, job.id, job.value, duration) job.status = 'complete' else: log("Job failed in %0.2f seconds." % (duration)) # Update the experiment status for this job. ExperimentGrid.job_broken(job.expt_dir, job.id) job.status = 'broken' job.end_t = int(time.time()) job.duration = duration save_job(job) def run_matlab_job(job): '''Run it as a Matlab function.''' log("Running matlab job.") job_file = job_file_for(job) function_call = "matlab_wrapper('%s'),quit;" % (job_file) matlab_cmd = ('matlab -nosplash -nodesktop -r "%s"' % (function_call)) log(matlab_cmd) sh(matlab_cmd) # TODO: change this function to be more flexible when running python jobs # regarding the python path, experiment directory, etc... def run_python_job(job): '''Run a Python function.''' log("Running python job.\n") # Add experiment directory to the system path. sys.path.append(os.path.realpath(job.expt_dir)) # Convert the PB object into useful parameters. params = {} for param in job.param: dbl_vals = param.dbl_val._values int_vals = param.int_val._values str_vals = param.str_val._values if len(dbl_vals) > 0: params[param.name] = np.array(dbl_vals) elif len(int_vals) > 0: params[param.name] = np.array(int_vals, dtype=int) elif len(str_vals) > 0: params[param.name] = str_vals else: raise Exception("Unknown parameter type.") # Load up this module and run module = __import__(job.name) result = module.main(job.id, params) log("Got result %f\n" % (result)) # Store the result. job.value = result save_job(job) def run_torch_job(job): '''Run a torch based job.''' params = {} for param in job.param: dbl_vals = param.dbl_val._values int_vals = param.int_val._values str_vals = param.str_val._values if len(dbl_vals) > 0: params[param.name] = dbl_vals elif len(int_vals) > 0: params[param.name] = int_vals elif len(str_vals) > 0: params[param.name] = str_vals else: raise Exception("Unknown parameter type.") #TODO: this passes args correctly for experiment utils, but we need to # figure out how to get the result back out when the experiment completes. param_str = "" for pname, pval in params.iteritems(): if len(pval) == 1: pval = str(pval[0]) else: pval = ','.join([str(v) for v in pval]) param_str += "-" + pname + " " + pval + " " cmd = "./%s %s" % (job.name, param_str) log("Executing command: %s\n" % (cmd)) sh(cmd) def run_shell_job(job): '''Run a shell based job.''' log("Running shell job.\n") # Change into the directory. os.chdir(job.expt_dir) cmd = './%s %s' % (job.name, job_file_for(job)) log("Executing command '%s'\n" % (cmd)) sh(cmd) def run_mcr_job(job): '''Run a compiled Matlab job.''' log("Running a compiled Matlab job.\n") # Change into the directory. os.chdir(job.expt_dir) if os.environ.has_key('MATLAB'): mcr_loc = os.environ['MATLAB'] else: mcr_loc = MCR_LOCATION cmd = './run_%s.sh %s %s' % (job.name, mcr_loc, job_file_for(job)) log("Executing command '%s'\n" % (cmd)) sh(cmd) ================================================ FILE: src/aup/Proposer/spearmint/sobol_lib.py ================================================ from __future__ import print_function import math from numpy import * def i4_bit_hi1 ( n ): #*****************************************************************************80 # ## I4_BIT_HI1 returns the position of the high 1 bit base 2 in an integer. # # Example: # # N Binary BIT # ---- -------- ---- # 0 0 0 # 1 1 1 # 2 10 2 # 3 11 2 # 4 100 3 # 5 101 3 # 6 110 3 # 7 111 3 # 8 1000 4 # 9 1001 4 # 10 1010 4 # 11 1011 4 # 12 1100 4 # 13 1101 4 # 14 1110 4 # 15 1111 4 # 16 10000 5 # 17 10001 5 # 1023 1111111111 10 # 1024 10000000000 11 # 1025 10000000001 11 # # Licensing: # # This code is distributed under the GNU LGPL license. # # Modified: # # 26 Nov 2011 # # Author: # # Original MATLAB version by John Burkardt. # PYTHON version by Corrado Chisari # Modified by Jasper Snoek to scale to 1111 dimensions # # Parameters: # # Input, integer N, the integer to be measured. # N should be nonnegative. If N is nonpositive, the value will always be 0. # # Output, integer BIT, the number of bits base 2. # i = math.floor ( n ) bit = 0 while ( 1 ): if ( i <= 0 ): break bit += 1 i = math.floor ( i / 2. ) return bit def i4_bit_lo0 ( n ): #*****************************************************************************80 # ## I4_BIT_LO0 returns the position of the low 0 bit base 2 in an integer. # # Example: # # N Binary BIT # ---- -------- ---- # 0 0 1 # 1 1 2 # 2 10 1 # 3 11 3 # 4 100 1 # 5 101 2 # 6 110 1 # 7 111 4 # 8 1000 1 # 9 1001 2 # 10 1010 1 # 11 1011 3 # 12 1100 1 # 13 1101 2 # 14 1110 1 # 15 1111 5 # 16 10000 1 # 17 10001 2 # 1023 1111111111 1 # 1024 10000000000 1 # 1025 10000000001 1 # # Licensing: # # This code is distributed under the GNU LGPL license. # # Modified: # # 22 February 2011 # # Author: # # Original MATLAB version by John Burkardt. # PYTHON version by Corrado Chisari # # Parameters: # # Input, integer N, the integer to be measured. # N should be nonnegative. # # Output, integer BIT, the position of the low 1 bit. # bit = 0 i = math.floor ( n ) while ( 1 ): bit = bit + 1 i2 = math.floor ( i / 2. ) if ( i == 2 * i2 ): break i = i2 return bit def i4_sobol_generate ( m, n, skip ): #*****************************************************************************80 # ## I4_SOBOL_GENERATE generates a Sobol dataset. # # Licensing: # # This code is distributed under the GNU LGPL license. # # Modified: # # 22 February 2011 # # Author: # # Original MATLAB version by John Burkardt. # PYTHON version by Corrado Chisari # # Parameters: # # Input, integer M, the spatial dimension. # # Input, integer N, the number of points to generate. # # Input, integer SKIP, the number of initial points to skip. # # Output, real R(M,N), the points. # r=zeros((m,n)) for j in range (1, n+1): seed = skip + j - 2 [ r[0:m,j-1], seed ] = i4_sobol ( m, seed ) return r def i4_sobol ( dim_num, seed ): #*****************************************************************************80 # ## I4_SOBOL generates a new quasirandom Sobol vector with each call. # # Discussion: # # The routine adapts the ideas of Antonov and Saleev. # # Licensing: # # This code is distributed under the GNU LGPL license. # # Modified: # # 26 February 2013 # # Author: # # Original FORTRAN77 version by Bennett Fox. # MATLAB version by John Burkardt. # PYTHON version by Corrado Chisari # PYTHON version modified by Jasper Snoek to scale (Joe & Kuo) # # Reference: # # Antonov, Saleev, # USSR Computational Mathematics and Mathematical Physics, # Volume 19, 1980, pages 252 - 256. # # Paul Bratley, Bennett Fox, # Algorithm 659: # Implementing Sobol's Quasirandom Sequence Generator, # ACM Transactions on Mathematical Software, # Volume 14, Number 1, pages 88-100, 1988. # # Bennett Fox, # Algorithm 647: # Implementation and Relative Efficiency of Quasirandom # Sequence Generators, # ACM Transactions on Mathematical Software, # Volume 12, Number 4, pages 362-376, 1986. # # Ilya Sobol, # USSR Computational Mathematics and Mathematical Physics, # Volume 16, pages 236-242, 1977. # # Ilya Sobol, Levitan, # The Production of Points Uniformly Distributed in a Multidimensional # Cube (in Russian), # Preprint IPM Akad. Nauk SSSR, # Number 40, Moscow 1976. # # Stephen Joe, Frances Kuo, # Remark on Algorithm 659: Implementing Sobol's Quasirandom Sequence Generator, # ACM Transactions on Mathematical Software, # Volume 29, Number 1, March 2003, pages 49-57. # # Parameters: # # Input, integer DIM_NUM, the number of spatial dimensions. # DIM_NUM must satisfy 1 <= DIM_NUM <= 1111. # # Input/output, integer SEED, the "seed" for the sequence. # This is essentially the index in the sequence of the quasirandom # value to be generated. On output, SEED has been set to the # appropriate next value, usually simply SEED+1. # If SEED is less than 0 on input, it is treated as though it were 0. # An input value of 0 requests the first (0-th) element of the sequence. # # Output, real QUASI(DIM_NUM), the next quasirandom vector. # global atmost global dim_max global dim_num_save global initialized global lastq global log_max global maxcol global poly global recipd global seed_save global v if ( not 'initialized' in globals().keys() ): initialized = 0 dim_num_save = -1 if ( not initialized or dim_num != dim_num_save ): initialized = 1 dim_max = 1111 dim_num_save = -1 log_max = 30 seed_save = -1 # # Initialize (part of) V. # v = zeros((dim_max,log_max)) v[0,0] = 1 v[1,0] = 1 v[2,0] = 1 v[3,0] = 1 v[4,0] = 1 v[5,0] = 1 v[6,0] = 1 v[7,0] = 1 v[8,0] = 1 v[9,0] = 1 v[10,0] = 1 v[11,0] = 1 v[12,0] = 1 v[13,0] = 1 v[14,0] = 1 v[15,0] = 1 v[16,0] = 1 v[17,0] = 1 v[18,0] = 1 v[19,0] = 1 v[20,0] = 1 v[21,0] = 1 v[22,0] = 1 v[23,0] = 1 v[24,0] = 1 v[25,0] = 1 v[26,0] = 1 v[27,0] = 1 v[28,0] = 1 v[29,0] = 1 v[30,0] = 1 v[31,0] = 1 v[32,0] = 1 v[33,0] = 1 v[34,0] = 1 v[35,0] = 1 v[36,0] = 1 v[37,0] = 1 v[38,0] = 1 v[39,0] = 1 v[40,0] = 1 v[41,0] = 1 v[42,0] = 1 v[43,0] = 1 v[44,0] = 1 v[45,0] = 1 v[46,0] = 1 v[47,0] = 1 v[48,0] = 1 v[49,0] = 1 v[50,0] = 1 v[51,0] = 1 v[52,0] = 1 v[53,0] = 1 v[54,0] = 1 v[55,0] = 1 v[56,0] = 1 v[57,0] = 1 v[58,0] = 1 v[59,0] = 1 v[60,0] = 1 v[61,0] = 1 v[62,0] = 1 v[63,0] = 1 v[64,0] = 1 v[65,0] = 1 v[66,0] = 1 v[67,0] = 1 v[68,0] = 1 v[69,0] = 1 v[70,0] = 1 v[71,0] = 1 v[72,0] = 1 v[73,0] = 1 v[74,0] = 1 v[75,0] = 1 v[76,0] = 1 v[77,0] = 1 v[78,0] = 1 v[79,0] = 1 v[80,0] = 1 v[81,0] = 1 v[82,0] = 1 v[83,0] = 1 v[84,0] = 1 v[85,0] = 1 v[86,0] = 1 v[87,0] = 1 v[88,0] = 1 v[89,0] = 1 v[90,0] = 1 v[91,0] = 1 v[92,0] = 1 v[93,0] = 1 v[94,0] = 1 v[95,0] = 1 v[96,0] = 1 v[97,0] = 1 v[98,0] = 1 v[99,0] = 1 v[100,0] = 1 v[101,0] = 1 v[102,0] = 1 v[103,0] = 1 v[104,0] = 1 v[105,0] = 1 v[106,0] = 1 v[107,0] = 1 v[108,0] = 1 v[109,0] = 1 v[110,0] = 1 v[111,0] = 1 v[112,0] = 1 v[113,0] = 1 v[114,0] = 1 v[115,0] = 1 v[116,0] = 1 v[117,0] = 1 v[118,0] = 1 v[119,0] = 1 v[120,0] = 1 v[121,0] = 1 v[122,0] = 1 v[123,0] = 1 v[124,0] = 1 v[125,0] = 1 v[126,0] = 1 v[127,0] = 1 v[128,0] = 1 v[129,0] = 1 v[130,0] = 1 v[131,0] = 1 v[132,0] = 1 v[133,0] = 1 v[134,0] = 1 v[135,0] = 1 v[136,0] = 1 v[137,0] = 1 v[138,0] = 1 v[139,0] = 1 v[140,0] = 1 v[141,0] = 1 v[142,0] = 1 v[143,0] = 1 v[144,0] = 1 v[145,0] = 1 v[146,0] = 1 v[147,0] = 1 v[148,0] = 1 v[149,0] = 1 v[150,0] = 1 v[151,0] = 1 v[152,0] = 1 v[153,0] = 1 v[154,0] = 1 v[155,0] = 1 v[156,0] = 1 v[157,0] = 1 v[158,0] = 1 v[159,0] = 1 v[160,0] = 1 v[161,0] = 1 v[162,0] = 1 v[163,0] = 1 v[164,0] = 1 v[165,0] = 1 v[166,0] = 1 v[167,0] = 1 v[168,0] = 1 v[169,0] = 1 v[170,0] = 1 v[171,0] = 1 v[172,0] = 1 v[173,0] = 1 v[174,0] = 1 v[175,0] = 1 v[176,0] = 1 v[177,0] = 1 v[178,0] = 1 v[179,0] = 1 v[180,0] = 1 v[181,0] = 1 v[182,0] = 1 v[183,0] = 1 v[184,0] = 1 v[185,0] = 1 v[186,0] = 1 v[187,0] = 1 v[188,0] = 1 v[189,0] = 1 v[190,0] = 1 v[191,0] = 1 v[192,0] = 1 v[193,0] = 1 v[194,0] = 1 v[195,0] = 1 v[196,0] = 1 v[197,0] = 1 v[198,0] = 1 v[199,0] = 1 v[200,0] = 1 v[201,0] = 1 v[202,0] = 1 v[203,0] = 1 v[204,0] = 1 v[205,0] = 1 v[206,0] = 1 v[207,0] = 1 v[208,0] = 1 v[209,0] = 1 v[210,0] = 1 v[211,0] = 1 v[212,0] = 1 v[213,0] = 1 v[214,0] = 1 v[215,0] = 1 v[216,0] = 1 v[217,0] = 1 v[218,0] = 1 v[219,0] = 1 v[220,0] = 1 v[221,0] = 1 v[222,0] = 1 v[223,0] = 1 v[224,0] = 1 v[225,0] = 1 v[226,0] = 1 v[227,0] = 1 v[228,0] = 1 v[229,0] = 1 v[230,0] = 1 v[231,0] = 1 v[232,0] = 1 v[233,0] = 1 v[234,0] = 1 v[235,0] = 1 v[236,0] = 1 v[237,0] = 1 v[238,0] = 1 v[239,0] = 1 v[240,0] = 1 v[241,0] = 1 v[242,0] = 1 v[243,0] = 1 v[244,0] = 1 v[245,0] = 1 v[246,0] = 1 v[247,0] = 1 v[248,0] = 1 v[249,0] = 1 v[250,0] = 1 v[251,0] = 1 v[252,0] = 1 v[253,0] = 1 v[254,0] = 1 v[255,0] = 1 v[256,0] = 1 v[257,0] = 1 v[258,0] = 1 v[259,0] = 1 v[260,0] = 1 v[261,0] = 1 v[262,0] = 1 v[263,0] = 1 v[264,0] = 1 v[265,0] = 1 v[266,0] = 1 v[267,0] = 1 v[268,0] = 1 v[269,0] = 1 v[270,0] = 1 v[271,0] = 1 v[272,0] = 1 v[273,0] = 1 v[274,0] = 1 v[275,0] = 1 v[276,0] = 1 v[277,0] = 1 v[278,0] = 1 v[279,0] = 1 v[280,0] = 1 v[281,0] = 1 v[282,0] = 1 v[283,0] = 1 v[284,0] = 1 v[285,0] = 1 v[286,0] = 1 v[287,0] = 1 v[288,0] = 1 v[289,0] = 1 v[290,0] = 1 v[291,0] = 1 v[292,0] = 1 v[293,0] = 1 v[294,0] = 1 v[295,0] = 1 v[296,0] = 1 v[297,0] = 1 v[298,0] = 1 v[299,0] = 1 v[300,0] = 1 v[301,0] = 1 v[302,0] = 1 v[303,0] = 1 v[304,0] = 1 v[305,0] = 1 v[306,0] = 1 v[307,0] = 1 v[308,0] = 1 v[309,0] = 1 v[310,0] = 1 v[311,0] = 1 v[312,0] = 1 v[313,0] = 1 v[314,0] = 1 v[315,0] = 1 v[316,0] = 1 v[317,0] = 1 v[318,0] = 1 v[319,0] = 1 v[320,0] = 1 v[321,0] = 1 v[322,0] = 1 v[323,0] = 1 v[324,0] = 1 v[325,0] = 1 v[326,0] = 1 v[327,0] = 1 v[328,0] = 1 v[329,0] = 1 v[330,0] = 1 v[331,0] = 1 v[332,0] = 1 v[333,0] = 1 v[334,0] = 1 v[335,0] = 1 v[336,0] = 1 v[337,0] = 1 v[338,0] = 1 v[339,0] = 1 v[340,0] = 1 v[341,0] = 1 v[342,0] = 1 v[343,0] = 1 v[344,0] = 1 v[345,0] = 1 v[346,0] = 1 v[347,0] = 1 v[348,0] = 1 v[349,0] = 1 v[350,0] = 1 v[351,0] = 1 v[352,0] = 1 v[353,0] = 1 v[354,0] = 1 v[355,0] = 1 v[356,0] = 1 v[357,0] = 1 v[358,0] = 1 v[359,0] = 1 v[360,0] = 1 v[361,0] = 1 v[362,0] = 1 v[363,0] = 1 v[364,0] = 1 v[365,0] = 1 v[366,0] = 1 v[367,0] = 1 v[368,0] = 1 v[369,0] = 1 v[370,0] = 1 v[371,0] = 1 v[372,0] = 1 v[373,0] = 1 v[374,0] = 1 v[375,0] = 1 v[376,0] = 1 v[377,0] = 1 v[378,0] = 1 v[379,0] = 1 v[380,0] = 1 v[381,0] = 1 v[382,0] = 1 v[383,0] = 1 v[384,0] = 1 v[385,0] = 1 v[386,0] = 1 v[387,0] = 1 v[388,0] = 1 v[389,0] = 1 v[390,0] = 1 v[391,0] = 1 v[392,0] = 1 v[393,0] = 1 v[394,0] = 1 v[395,0] = 1 v[396,0] = 1 v[397,0] = 1 v[398,0] = 1 v[399,0] = 1 v[400,0] = 1 v[401,0] = 1 v[402,0] = 1 v[403,0] = 1 v[404,0] = 1 v[405,0] = 1 v[406,0] = 1 v[407,0] = 1 v[408,0] = 1 v[409,0] = 1 v[410,0] = 1 v[411,0] = 1 v[412,0] = 1 v[413,0] = 1 v[414,0] = 1 v[415,0] = 1 v[416,0] = 1 v[417,0] = 1 v[418,0] = 1 v[419,0] = 1 v[420,0] = 1 v[421,0] = 1 v[422,0] = 1 v[423,0] = 1 v[424,0] = 1 v[425,0] = 1 v[426,0] = 1 v[427,0] = 1 v[428,0] = 1 v[429,0] = 1 v[430,0] = 1 v[431,0] = 1 v[432,0] = 1 v[433,0] = 1 v[434,0] = 1 v[435,0] = 1 v[436,0] = 1 v[437,0] = 1 v[438,0] = 1 v[439,0] = 1 v[440,0] = 1 v[441,0] = 1 v[442,0] = 1 v[443,0] = 1 v[444,0] = 1 v[445,0] = 1 v[446,0] = 1 v[447,0] = 1 v[448,0] = 1 v[449,0] = 1 v[450,0] = 1 v[451,0] = 1 v[452,0] = 1 v[453,0] = 1 v[454,0] = 1 v[455,0] = 1 v[456,0] = 1 v[457,0] = 1 v[458,0] = 1 v[459,0] = 1 v[460,0] = 1 v[461,0] = 1 v[462,0] = 1 v[463,0] = 1 v[464,0] = 1 v[465,0] = 1 v[466,0] = 1 v[467,0] = 1 v[468,0] = 1 v[469,0] = 1 v[470,0] = 1 v[471,0] = 1 v[472,0] = 1 v[473,0] = 1 v[474,0] = 1 v[475,0] = 1 v[476,0] = 1 v[477,0] = 1 v[478,0] = 1 v[479,0] = 1 v[480,0] = 1 v[481,0] = 1 v[482,0] = 1 v[483,0] = 1 v[484,0] = 1 v[485,0] = 1 v[486,0] = 1 v[487,0] = 1 v[488,0] = 1 v[489,0] = 1 v[490,0] = 1 v[491,0] = 1 v[492,0] = 1 v[493,0] = 1 v[494,0] = 1 v[495,0] = 1 v[496,0] = 1 v[497,0] = 1 v[498,0] = 1 v[499,0] = 1 v[500,0] = 1 v[501,0] = 1 v[502,0] = 1 v[503,0] = 1 v[504,0] = 1 v[505,0] = 1 v[506,0] = 1 v[507,0] = 1 v[508,0] = 1 v[509,0] = 1 v[510,0] = 1 v[511,0] = 1 v[512,0] = 1 v[513,0] = 1 v[514,0] = 1 v[515,0] = 1 v[516,0] = 1 v[517,0] = 1 v[518,0] = 1 v[519,0] = 1 v[520,0] = 1 v[521,0] = 1 v[522,0] = 1 v[523,0] = 1 v[524,0] = 1 v[525,0] = 1 v[526,0] = 1 v[527,0] = 1 v[528,0] = 1 v[529,0] = 1 v[530,0] = 1 v[531,0] = 1 v[532,0] = 1 v[533,0] = 1 v[534,0] = 1 v[535,0] = 1 v[536,0] = 1 v[537,0] = 1 v[538,0] = 1 v[539,0] = 1 v[540,0] = 1 v[541,0] = 1 v[542,0] = 1 v[543,0] = 1 v[544,0] = 1 v[545,0] = 1 v[546,0] = 1 v[547,0] = 1 v[548,0] = 1 v[549,0] = 1 v[550,0] = 1 v[551,0] = 1 v[552,0] = 1 v[553,0] = 1 v[554,0] = 1 v[555,0] = 1 v[556,0] = 1 v[557,0] = 1 v[558,0] = 1 v[559,0] = 1 v[560,0] = 1 v[561,0] = 1 v[562,0] = 1 v[563,0] = 1 v[564,0] = 1 v[565,0] = 1 v[566,0] = 1 v[567,0] = 1 v[568,0] = 1 v[569,0] = 1 v[570,0] = 1 v[571,0] = 1 v[572,0] = 1 v[573,0] = 1 v[574,0] = 1 v[575,0] = 1 v[576,0] = 1 v[577,0] = 1 v[578,0] = 1 v[579,0] = 1 v[580,0] = 1 v[581,0] = 1 v[582,0] = 1 v[583,0] = 1 v[584,0] = 1 v[585,0] = 1 v[586,0] = 1 v[587,0] = 1 v[588,0] = 1 v[589,0] = 1 v[590,0] = 1 v[591,0] = 1 v[592,0] = 1 v[593,0] = 1 v[594,0] = 1 v[595,0] = 1 v[596,0] = 1 v[597,0] = 1 v[598,0] = 1 v[599,0] = 1 v[600,0] = 1 v[601,0] = 1 v[602,0] = 1 v[603,0] = 1 v[604,0] = 1 v[605,0] = 1 v[606,0] = 1 v[607,0] = 1 v[608,0] = 1 v[609,0] = 1 v[610,0] = 1 v[611,0] = 1 v[612,0] = 1 v[613,0] = 1 v[614,0] = 1 v[615,0] = 1 v[616,0] = 1 v[617,0] = 1 v[618,0] = 1 v[619,0] = 1 v[620,0] = 1 v[621,0] = 1 v[622,0] = 1 v[623,0] = 1 v[624,0] = 1 v[625,0] = 1 v[626,0] = 1 v[627,0] = 1 v[628,0] = 1 v[629,0] = 1 v[630,0] = 1 v[631,0] = 1 v[632,0] = 1 v[633,0] = 1 v[634,0] = 1 v[635,0] = 1 v[636,0] = 1 v[637,0] = 1 v[638,0] = 1 v[639,0] = 1 v[640,0] = 1 v[641,0] = 1 v[642,0] = 1 v[643,0] = 1 v[644,0] = 1 v[645,0] = 1 v[646,0] = 1 v[647,0] = 1 v[648,0] = 1 v[649,0] = 1 v[650,0] = 1 v[651,0] = 1 v[652,0] = 1 v[653,0] = 1 v[654,0] = 1 v[655,0] = 1 v[656,0] = 1 v[657,0] = 1 v[658,0] = 1 v[659,0] = 1 v[660,0] = 1 v[661,0] = 1 v[662,0] = 1 v[663,0] = 1 v[664,0] = 1 v[665,0] = 1 v[666,0] = 1 v[667,0] = 1 v[668,0] = 1 v[669,0] = 1 v[670,0] = 1 v[671,0] = 1 v[672,0] = 1 v[673,0] = 1 v[674,0] = 1 v[675,0] = 1 v[676,0] = 1 v[677,0] = 1 v[678,0] = 1 v[679,0] = 1 v[680,0] = 1 v[681,0] = 1 v[682,0] = 1 v[683,0] = 1 v[684,0] = 1 v[685,0] = 1 v[686,0] = 1 v[687,0] = 1 v[688,0] = 1 v[689,0] = 1 v[690,0] = 1 v[691,0] = 1 v[692,0] = 1 v[693,0] = 1 v[694,0] = 1 v[695,0] = 1 v[696,0] = 1 v[697,0] = 1 v[698,0] = 1 v[699,0] = 1 v[700,0] = 1 v[701,0] = 1 v[702,0] = 1 v[703,0] = 1 v[704,0] = 1 v[705,0] = 1 v[706,0] = 1 v[707,0] = 1 v[708,0] = 1 v[709,0] = 1 v[710,0] = 1 v[711,0] = 1 v[712,0] = 1 v[713,0] = 1 v[714,0] = 1 v[715,0] = 1 v[716,0] = 1 v[717,0] = 1 v[718,0] = 1 v[719,0] = 1 v[720,0] = 1 v[721,0] = 1 v[722,0] = 1 v[723,0] = 1 v[724,0] = 1 v[725,0] = 1 v[726,0] = 1 v[727,0] = 1 v[728,0] = 1 v[729,0] = 1 v[730,0] = 1 v[731,0] = 1 v[732,0] = 1 v[733,0] = 1 v[734,0] = 1 v[735,0] = 1 v[736,0] = 1 v[737,0] = 1 v[738,0] = 1 v[739,0] = 1 v[740,0] = 1 v[741,0] = 1 v[742,0] = 1 v[743,0] = 1 v[744,0] = 1 v[745,0] = 1 v[746,0] = 1 v[747,0] = 1 v[748,0] = 1 v[749,0] = 1 v[750,0] = 1 v[751,0] = 1 v[752,0] = 1 v[753,0] = 1 v[754,0] = 1 v[755,0] = 1 v[756,0] = 1 v[757,0] = 1 v[758,0] = 1 v[759,0] = 1 v[760,0] = 1 v[761,0] = 1 v[762,0] = 1 v[763,0] = 1 v[764,0] = 1 v[765,0] = 1 v[766,0] = 1 v[767,0] = 1 v[768,0] = 1 v[769,0] = 1 v[770,0] = 1 v[771,0] = 1 v[772,0] = 1 v[773,0] = 1 v[774,0] = 1 v[775,0] = 1 v[776,0] = 1 v[777,0] = 1 v[778,0] = 1 v[779,0] = 1 v[780,0] = 1 v[781,0] = 1 v[782,0] = 1 v[783,0] = 1 v[784,0] = 1 v[785,0] = 1 v[786,0] = 1 v[787,0] = 1 v[788,0] = 1 v[789,0] = 1 v[790,0] = 1 v[791,0] = 1 v[792,0] = 1 v[793,0] = 1 v[794,0] = 1 v[795,0] = 1 v[796,0] = 1 v[797,0] = 1 v[798,0] = 1 v[799,0] = 1 v[800,0] = 1 v[801,0] = 1 v[802,0] = 1 v[803,0] = 1 v[804,0] = 1 v[805,0] = 1 v[806,0] = 1 v[807,0] = 1 v[808,0] = 1 v[809,0] = 1 v[810,0] = 1 v[811,0] = 1 v[812,0] = 1 v[813,0] = 1 v[814,0] = 1 v[815,0] = 1 v[816,0] = 1 v[817,0] = 1 v[818,0] = 1 v[819,0] = 1 v[820,0] = 1 v[821,0] = 1 v[822,0] = 1 v[823,0] = 1 v[824,0] = 1 v[825,0] = 1 v[826,0] = 1 v[827,0] = 1 v[828,0] = 1 v[829,0] = 1 v[830,0] = 1 v[831,0] = 1 v[832,0] = 1 v[833,0] = 1 v[834,0] = 1 v[835,0] = 1 v[836,0] = 1 v[837,0] = 1 v[838,0] = 1 v[839,0] = 1 v[840,0] = 1 v[841,0] = 1 v[842,0] = 1 v[843,0] = 1 v[844,0] = 1 v[845,0] = 1 v[846,0] = 1 v[847,0] = 1 v[848,0] = 1 v[849,0] = 1 v[850,0] = 1 v[851,0] = 1 v[852,0] = 1 v[853,0] = 1 v[854,0] = 1 v[855,0] = 1 v[856,0] = 1 v[857,0] = 1 v[858,0] = 1 v[859,0] = 1 v[860,0] = 1 v[861,0] = 1 v[862,0] = 1 v[863,0] = 1 v[864,0] = 1 v[865,0] = 1 v[866,0] = 1 v[867,0] = 1 v[868,0] = 1 v[869,0] = 1 v[870,0] = 1 v[871,0] = 1 v[872,0] = 1 v[873,0] = 1 v[874,0] = 1 v[875,0] = 1 v[876,0] = 1 v[877,0] = 1 v[878,0] = 1 v[879,0] = 1 v[880,0] = 1 v[881,0] = 1 v[882,0] = 1 v[883,0] = 1 v[884,0] = 1 v[885,0] = 1 v[886,0] = 1 v[887,0] = 1 v[888,0] = 1 v[889,0] = 1 v[890,0] = 1 v[891,0] = 1 v[892,0] = 1 v[893,0] = 1 v[894,0] = 1 v[895,0] = 1 v[896,0] = 1 v[897,0] = 1 v[898,0] = 1 v[899,0] = 1 v[900,0] = 1 v[901,0] = 1 v[902,0] = 1 v[903,0] = 1 v[904,0] = 1 v[905,0] = 1 v[906,0] = 1 v[907,0] = 1 v[908,0] = 1 v[909,0] = 1 v[910,0] = 1 v[911,0] = 1 v[912,0] = 1 v[913,0] = 1 v[914,0] = 1 v[915,0] = 1 v[916,0] = 1 v[917,0] = 1 v[918,0] = 1 v[919,0] = 1 v[920,0] = 1 v[921,0] = 1 v[922,0] = 1 v[923,0] = 1 v[924,0] = 1 v[925,0] = 1 v[926,0] = 1 v[927,0] = 1 v[928,0] = 1 v[929,0] = 1 v[930,0] = 1 v[931,0] = 1 v[932,0] = 1 v[933,0] = 1 v[934,0] = 1 v[935,0] = 1 v[936,0] = 1 v[937,0] = 1 v[938,0] = 1 v[939,0] = 1 v[940,0] = 1 v[941,0] = 1 v[942,0] = 1 v[943,0] = 1 v[944,0] = 1 v[945,0] = 1 v[946,0] = 1 v[947,0] = 1 v[948,0] = 1 v[949,0] = 1 v[950,0] = 1 v[951,0] = 1 v[952,0] = 1 v[953,0] = 1 v[954,0] = 1 v[955,0] = 1 v[956,0] = 1 v[957,0] = 1 v[958,0] = 1 v[959,0] = 1 v[960,0] = 1 v[961,0] = 1 v[962,0] = 1 v[963,0] = 1 v[964,0] = 1 v[965,0] = 1 v[966,0] = 1 v[967,0] = 1 v[968,0] = 1 v[969,0] = 1 v[970,0] = 1 v[971,0] = 1 v[972,0] = 1 v[973,0] = 1 v[974,0] = 1 v[975,0] = 1 v[976,0] = 1 v[977,0] = 1 v[978,0] = 1 v[979,0] = 1 v[980,0] = 1 v[981,0] = 1 v[982,0] = 1 v[983,0] = 1 v[984,0] = 1 v[985,0] = 1 v[986,0] = 1 v[987,0] = 1 v[988,0] = 1 v[989,0] = 1 v[990,0] = 1 v[991,0] = 1 v[992,0] = 1 v[993,0] = 1 v[994,0] = 1 v[995,0] = 1 v[996,0] = 1 v[997,0] = 1 v[998,0] = 1 v[999,0] = 1 v[1000,0] = 1 v[1001,0] = 1 v[1002,0] = 1 v[1003,0] = 1 v[1004,0] = 1 v[1005,0] = 1 v[1006,0] = 1 v[1007,0] = 1 v[1008,0] = 1 v[1009,0] = 1 v[1010,0] = 1 v[1011,0] = 1 v[1012,0] = 1 v[1013,0] = 1 v[1014,0] = 1 v[1015,0] = 1 v[1016,0] = 1 v[1017,0] = 1 v[1018,0] = 1 v[1019,0] = 1 v[1020,0] = 1 v[1021,0] = 1 v[1022,0] = 1 v[1023,0] = 1 v[1024,0] = 1 v[1025,0] = 1 v[1026,0] = 1 v[1027,0] = 1 v[1028,0] = 1 v[1029,0] = 1 v[1030,0] = 1 v[1031,0] = 1 v[1032,0] = 1 v[1033,0] = 1 v[1034,0] = 1 v[1035,0] = 1 v[1036,0] = 1 v[1037,0] = 1 v[1038,0] = 1 v[1039,0] = 1 v[1040,0] = 1 v[1041,0] = 1 v[1042,0] = 1 v[1043,0] = 1 v[1044,0] = 1 v[1045,0] = 1 v[1046,0] = 1 v[1047,0] = 1 v[1048,0] = 1 v[1049,0] = 1 v[1050,0] = 1 v[1051,0] = 1 v[1052,0] = 1 v[1053,0] = 1 v[1054,0] = 1 v[1055,0] = 1 v[1056,0] = 1 v[1057,0] = 1 v[1058,0] = 1 v[1059,0] = 1 v[1060,0] = 1 v[1061,0] = 1 v[1062,0] = 1 v[1063,0] = 1 v[1064,0] = 1 v[1065,0] = 1 v[1066,0] = 1 v[1067,0] = 1 v[1068,0] = 1 v[1069,0] = 1 v[1070,0] = 1 v[1071,0] = 1 v[1072,0] = 1 v[1073,0] = 1 v[1074,0] = 1 v[1075,0] = 1 v[1076,0] = 1 v[1077,0] = 1 v[1078,0] = 1 v[1079,0] = 1 v[1080,0] = 1 v[1081,0] = 1 v[1082,0] = 1 v[1083,0] = 1 v[1084,0] = 1 v[1085,0] = 1 v[1086,0] = 1 v[1087,0] = 1 v[1088,0] = 1 v[1089,0] = 1 v[1090,0] = 1 v[1091,0] = 1 v[1092,0] = 1 v[1093,0] = 1 v[1094,0] = 1 v[1095,0] = 1 v[1096,0] = 1 v[1097,0] = 1 v[1098,0] = 1 v[1099,0] = 1 v[1100,0] = 1 v[1101,0] = 1 v[1102,0] = 1 v[1103,0] = 1 v[1104,0] = 1 v[1105,0] = 1 v[1106,0] = 1 v[1107,0] = 1 v[1108,0] = 1 v[1109,0] = 1 v[1110,0] = 1 v[2,1] = 1 v[3,1] = 3 v[4,1] = 1 v[5,1] = 3 v[6,1] = 1 v[7,1] = 3 v[8,1] = 3 v[9,1] = 1 v[10,1] = 3 v[11,1] = 1 v[12,1] = 3 v[13,1] = 1 v[14,1] = 3 v[15,1] = 1 v[16,1] = 1 v[17,1] = 3 v[18,1] = 1 v[19,1] = 3 v[20,1] = 1 v[21,1] = 3 v[22,1] = 1 v[23,1] = 3 v[24,1] = 3 v[25,1] = 1 v[26,1] = 1 v[27,1] = 1 v[28,1] = 3 v[29,1] = 1 v[30,1] = 3 v[31,1] = 1 v[32,1] = 3 v[33,1] = 3 v[34,1] = 1 v[35,1] = 3 v[36,1] = 1 v[37,1] = 1 v[38,1] = 1 v[39,1] = 3 v[40,1] = 1 v[41,1] = 3 v[42,1] = 1 v[43,1] = 1 v[44,1] = 1 v[45,1] = 3 v[46,1] = 3 v[47,1] = 1 v[48,1] = 3 v[49,1] = 3 v[50,1] = 1 v[51,1] = 1 v[52,1] = 3 v[53,1] = 3 v[54,1] = 1 v[55,1] = 3 v[56,1] = 3 v[57,1] = 3 v[58,1] = 1 v[59,1] = 3 v[60,1] = 1 v[61,1] = 3 v[62,1] = 1 v[63,1] = 1 v[64,1] = 3 v[65,1] = 3 v[66,1] = 1 v[67,1] = 1 v[68,1] = 1 v[69,1] = 1 v[70,1] = 3 v[71,1] = 1 v[72,1] = 1 v[73,1] = 3 v[74,1] = 1 v[75,1] = 1 v[76,1] = 1 v[77,1] = 3 v[78,1] = 3 v[79,1] = 1 v[80,1] = 3 v[81,1] = 3 v[82,1] = 1 v[83,1] = 3 v[84,1] = 3 v[85,1] = 3 v[86,1] = 1 v[87,1] = 3 v[88,1] = 3 v[89,1] = 3 v[90,1] = 1 v[91,1] = 3 v[92,1] = 3 v[93,1] = 1 v[94,1] = 3 v[95,1] = 3 v[96,1] = 3 v[97,1] = 1 v[98,1] = 3 v[99,1] = 1 v[100,1] = 3 v[101,1] = 1 v[102,1] = 1 v[103,1] = 3 v[104,1] = 3 v[105,1] = 1 v[106,1] = 3 v[107,1] = 3 v[108,1] = 1 v[109,1] = 1 v[110,1] = 1 v[111,1] = 3 v[112,1] = 3 v[113,1] = 1 v[114,1] = 3 v[115,1] = 3 v[116,1] = 1 v[117,1] = 3 v[118,1] = 1 v[119,1] = 1 v[120,1] = 3 v[121,1] = 3 v[122,1] = 3 v[123,1] = 1 v[124,1] = 1 v[125,1] = 1 v[126,1] = 3 v[127,1] = 1 v[128,1] = 1 v[129,1] = 3 v[130,1] = 1 v[131,1] = 1 v[132,1] = 3 v[133,1] = 3 v[134,1] = 1 v[135,1] = 3 v[136,1] = 1 v[137,1] = 3 v[138,1] = 3 v[139,1] = 3 v[140,1] = 3 v[141,1] = 1 v[142,1] = 1 v[143,1] = 1 v[144,1] = 3 v[145,1] = 3 v[146,1] = 1 v[147,1] = 1 v[148,1] = 3 v[149,1] = 1 v[150,1] = 1 v[151,1] = 1 v[152,1] = 1 v[153,1] = 1 v[154,1] = 1 v[155,1] = 3 v[156,1] = 1 v[157,1] = 3 v[158,1] = 1 v[159,1] = 1 v[160,1] = 1 v[161,1] = 3 v[162,1] = 1 v[163,1] = 3 v[164,1] = 1 v[165,1] = 3 v[166,1] = 3 v[167,1] = 3 v[168,1] = 1 v[169,1] = 1 v[170,1] = 3 v[171,1] = 3 v[172,1] = 1 v[173,1] = 3 v[174,1] = 1 v[175,1] = 3 v[176,1] = 1 v[177,1] = 1 v[178,1] = 3 v[179,1] = 1 v[180,1] = 3 v[181,1] = 1 v[182,1] = 3 v[183,1] = 1 v[184,1] = 3 v[185,1] = 1 v[186,1] = 1 v[187,1] = 1 v[188,1] = 3 v[189,1] = 3 v[190,1] = 1 v[191,1] = 3 v[192,1] = 3 v[193,1] = 1 v[194,1] = 3 v[195,1] = 1 v[196,1] = 1 v[197,1] = 1 v[198,1] = 3 v[199,1] = 1 v[200,1] = 3 v[201,1] = 1 v[202,1] = 1 v[203,1] = 3 v[204,1] = 1 v[205,1] = 1 v[206,1] = 3 v[207,1] = 3 v[208,1] = 1 v[209,1] = 1 v[210,1] = 3 v[211,1] = 3 v[212,1] = 3 v[213,1] = 1 v[214,1] = 3 v[215,1] = 3 v[216,1] = 3 v[217,1] = 1 v[218,1] = 3 v[219,1] = 1 v[220,1] = 3 v[221,1] = 1 v[222,1] = 1 v[223,1] = 1 v[224,1] = 3 v[225,1] = 1 v[226,1] = 1 v[227,1] = 1 v[228,1] = 3 v[229,1] = 1 v[230,1] = 1 v[231,1] = 1 v[232,1] = 1 v[233,1] = 1 v[234,1] = 3 v[235,1] = 3 v[236,1] = 3 v[237,1] = 1 v[238,1] = 1 v[239,1] = 1 v[240,1] = 1 v[241,1] = 3 v[242,1] = 3 v[243,1] = 3 v[244,1] = 1 v[245,1] = 3 v[246,1] = 3 v[247,1] = 1 v[248,1] = 1 v[249,1] = 1 v[250,1] = 1 v[251,1] = 3 v[252,1] = 1 v[253,1] = 1 v[254,1] = 3 v[255,1] = 1 v[256,1] = 3 v[257,1] = 3 v[258,1] = 1 v[259,1] = 1 v[260,1] = 3 v[261,1] = 3 v[262,1] = 1 v[263,1] = 1 v[264,1] = 1 v[265,1] = 1 v[266,1] = 3 v[267,1] = 1 v[268,1] = 3 v[269,1] = 3 v[270,1] = 1 v[271,1] = 3 v[272,1] = 3 v[273,1] = 1 v[274,1] = 1 v[275,1] = 1 v[276,1] = 3 v[277,1] = 3 v[278,1] = 3 v[279,1] = 1 v[280,1] = 3 v[281,1] = 3 v[282,1] = 1 v[283,1] = 3 v[284,1] = 3 v[285,1] = 1 v[286,1] = 3 v[287,1] = 1 v[288,1] = 3 v[289,1] = 3 v[290,1] = 3 v[291,1] = 1 v[292,1] = 3 v[293,1] = 1 v[294,1] = 1 v[295,1] = 3 v[296,1] = 1 v[297,1] = 3 v[298,1] = 1 v[299,1] = 1 v[300,1] = 1 v[301,1] = 3 v[302,1] = 3 v[303,1] = 3 v[304,1] = 1 v[305,1] = 1 v[306,1] = 3 v[307,1] = 1 v[308,1] = 3 v[309,1] = 1 v[310,1] = 1 v[311,1] = 1 v[312,1] = 1 v[313,1] = 1 v[314,1] = 1 v[315,1] = 3 v[316,1] = 1 v[317,1] = 1 v[318,1] = 3 v[319,1] = 1 v[320,1] = 3 v[321,1] = 3 v[322,1] = 1 v[323,1] = 1 v[324,1] = 1 v[325,1] = 1 v[326,1] = 3 v[327,1] = 1 v[328,1] = 3 v[329,1] = 1 v[330,1] = 3 v[331,1] = 1 v[332,1] = 1 v[333,1] = 1 v[334,1] = 1 v[335,1] = 3 v[336,1] = 3 v[337,1] = 1 v[338,1] = 1 v[339,1] = 1 v[340,1] = 1 v[341,1] = 1 v[342,1] = 3 v[343,1] = 3 v[344,1] = 3 v[345,1] = 1 v[346,1] = 1 v[347,1] = 3 v[348,1] = 3 v[349,1] = 3 v[350,1] = 3 v[351,1] = 3 v[352,1] = 1 v[353,1] = 3 v[354,1] = 3 v[355,1] = 1 v[356,1] = 3 v[357,1] = 3 v[358,1] = 3 v[359,1] = 3 v[360,1] = 1 v[361,1] = 1 v[362,1] = 1 v[363,1] = 1 v[364,1] = 1 v[365,1] = 1 v[366,1] = 3 v[367,1] = 1 v[368,1] = 1 v[369,1] = 3 v[370,1] = 1 v[371,1] = 1 v[372,1] = 1 v[373,1] = 3 v[374,1] = 1 v[375,1] = 1 v[376,1] = 1 v[377,1] = 3 v[378,1] = 3 v[379,1] = 3 v[380,1] = 1 v[381,1] = 3 v[382,1] = 1 v[383,1] = 1 v[384,1] = 3 v[385,1] = 3 v[386,1] = 3 v[387,1] = 1 v[388,1] = 3 v[389,1] = 3 v[390,1] = 1 v[391,1] = 3 v[392,1] = 1 v[393,1] = 3 v[394,1] = 3 v[395,1] = 1 v[396,1] = 3 v[397,1] = 3 v[398,1] = 3 v[399,1] = 1 v[400,1] = 1 v[401,1] = 3 v[402,1] = 3 v[403,1] = 1 v[404,1] = 3 v[405,1] = 1 v[406,1] = 3 v[407,1] = 1 v[408,1] = 1 v[409,1] = 1 v[410,1] = 3 v[411,1] = 3 v[412,1] = 3 v[413,1] = 3 v[414,1] = 1 v[415,1] = 3 v[416,1] = 1 v[417,1] = 1 v[418,1] = 3 v[419,1] = 1 v[420,1] = 3 v[421,1] = 1 v[422,1] = 1 v[423,1] = 1 v[424,1] = 3 v[425,1] = 1 v[426,1] = 3 v[427,1] = 1 v[428,1] = 3 v[429,1] = 1 v[430,1] = 3 v[431,1] = 3 v[432,1] = 3 v[433,1] = 3 v[434,1] = 3 v[435,1] = 3 v[436,1] = 3 v[437,1] = 3 v[438,1] = 1 v[439,1] = 3 v[440,1] = 3 v[441,1] = 3 v[442,1] = 3 v[443,1] = 3 v[444,1] = 1 v[445,1] = 3 v[446,1] = 1 v[447,1] = 3 v[448,1] = 3 v[449,1] = 3 v[450,1] = 1 v[451,1] = 3 v[452,1] = 1 v[453,1] = 3 v[454,1] = 1 v[455,1] = 3 v[456,1] = 3 v[457,1] = 1 v[458,1] = 3 v[459,1] = 3 v[460,1] = 3 v[461,1] = 3 v[462,1] = 3 v[463,1] = 3 v[464,1] = 3 v[465,1] = 3 v[466,1] = 3 v[467,1] = 1 v[468,1] = 1 v[469,1] = 1 v[470,1] = 1 v[471,1] = 1 v[472,1] = 1 v[473,1] = 3 v[474,1] = 3 v[475,1] = 1 v[476,1] = 1 v[477,1] = 3 v[478,1] = 3 v[479,1] = 1 v[480,1] = 1 v[481,1] = 1 v[482,1] = 3 v[483,1] = 3 v[484,1] = 1 v[485,1] = 1 v[486,1] = 3 v[487,1] = 3 v[488,1] = 3 v[489,1] = 3 v[490,1] = 1 v[491,1] = 1 v[492,1] = 3 v[493,1] = 1 v[494,1] = 3 v[495,1] = 3 v[496,1] = 1 v[497,1] = 3 v[498,1] = 3 v[499,1] = 1 v[500,1] = 1 v[501,1] = 1 v[502,1] = 3 v[503,1] = 3 v[504,1] = 3 v[505,1] = 1 v[506,1] = 1 v[507,1] = 3 v[508,1] = 3 v[509,1] = 3 v[510,1] = 3 v[511,1] = 3 v[512,1] = 1 v[513,1] = 1 v[514,1] = 1 v[515,1] = 3 v[516,1] = 1 v[517,1] = 3 v[518,1] = 3 v[519,1] = 1 v[520,1] = 3 v[521,1] = 3 v[522,1] = 3 v[523,1] = 3 v[524,1] = 1 v[525,1] = 1 v[526,1] = 3 v[527,1] = 1 v[528,1] = 1 v[529,1] = 3 v[530,1] = 1 v[531,1] = 3 v[532,1] = 1 v[533,1] = 3 v[534,1] = 1 v[535,1] = 3 v[536,1] = 3 v[537,1] = 1 v[538,1] = 1 v[539,1] = 3 v[540,1] = 3 v[541,1] = 1 v[542,1] = 3 v[543,1] = 3 v[544,1] = 1 v[545,1] = 3 v[546,1] = 3 v[547,1] = 1 v[548,1] = 1 v[549,1] = 3 v[550,1] = 1 v[551,1] = 3 v[552,1] = 3 v[553,1] = 1 v[554,1] = 1 v[555,1] = 3 v[556,1] = 1 v[557,1] = 3 v[558,1] = 1 v[559,1] = 3 v[560,1] = 1 v[561,1] = 1 v[562,1] = 3 v[563,1] = 3 v[564,1] = 1 v[565,1] = 1 v[566,1] = 1 v[567,1] = 3 v[568,1] = 3 v[569,1] = 1 v[570,1] = 3 v[571,1] = 1 v[572,1] = 1 v[573,1] = 3 v[574,1] = 3 v[575,1] = 1 v[576,1] = 1 v[577,1] = 3 v[578,1] = 1 v[579,1] = 3 v[580,1] = 1 v[581,1] = 1 v[582,1] = 1 v[583,1] = 1 v[584,1] = 1 v[585,1] = 3 v[586,1] = 1 v[587,1] = 1 v[588,1] = 1 v[589,1] = 1 v[590,1] = 3 v[591,1] = 1 v[592,1] = 3 v[593,1] = 1 v[594,1] = 1 v[595,1] = 3 v[596,1] = 3 v[597,1] = 1 v[598,1] = 1 v[599,1] = 3 v[600,1] = 1 v[601,1] = 3 v[602,1] = 1 v[603,1] = 3 v[604,1] = 3 v[605,1] = 3 v[606,1] = 1 v[607,1] = 3 v[608,1] = 3 v[609,1] = 3 v[610,1] = 1 v[611,1] = 1 v[612,1] = 3 v[613,1] = 3 v[614,1] = 3 v[615,1] = 1 v[616,1] = 1 v[617,1] = 1 v[618,1] = 1 v[619,1] = 3 v[620,1] = 1 v[621,1] = 3 v[622,1] = 1 v[623,1] = 3 v[624,1] = 1 v[625,1] = 1 v[626,1] = 3 v[627,1] = 3 v[628,1] = 1 v[629,1] = 1 v[630,1] = 1 v[631,1] = 3 v[632,1] = 3 v[633,1] = 1 v[634,1] = 3 v[635,1] = 1 v[636,1] = 3 v[637,1] = 1 v[638,1] = 1 v[639,1] = 1 v[640,1] = 1 v[641,1] = 1 v[642,1] = 1 v[643,1] = 3 v[644,1] = 1 v[645,1] = 3 v[646,1] = 3 v[647,1] = 1 v[648,1] = 3 v[649,1] = 3 v[650,1] = 3 v[651,1] = 1 v[652,1] = 3 v[653,1] = 1 v[654,1] = 1 v[655,1] = 3 v[656,1] = 3 v[657,1] = 1 v[658,1] = 1 v[659,1] = 3 v[660,1] = 3 v[661,1] = 1 v[662,1] = 1 v[663,1] = 1 v[664,1] = 3 v[665,1] = 1 v[666,1] = 3 v[667,1] = 3 v[668,1] = 1 v[669,1] = 1 v[670,1] = 3 v[671,1] = 1 v[672,1] = 1 v[673,1] = 3 v[674,1] = 1 v[675,1] = 3 v[676,1] = 1 v[677,1] = 1 v[678,1] = 1 v[679,1] = 3 v[680,1] = 3 v[681,1] = 3 v[682,1] = 3 v[683,1] = 1 v[684,1] = 1 v[685,1] = 3 v[686,1] = 3 v[687,1] = 1 v[688,1] = 1 v[689,1] = 1 v[690,1] = 1 v[691,1] = 3 v[692,1] = 1 v[693,1] = 1 v[694,1] = 3 v[695,1] = 3 v[696,1] = 3 v[697,1] = 1 v[698,1] = 1 v[699,1] = 3 v[700,1] = 3 v[701,1] = 1 v[702,1] = 3 v[703,1] = 3 v[704,1] = 1 v[705,1] = 1 v[706,1] = 3 v[707,1] = 3 v[708,1] = 3 v[709,1] = 3 v[710,1] = 3 v[711,1] = 3 v[712,1] = 3 v[713,1] = 1 v[714,1] = 3 v[715,1] = 3 v[716,1] = 1 v[717,1] = 3 v[718,1] = 1 v[719,1] = 3 v[720,1] = 1 v[721,1] = 1 v[722,1] = 3 v[723,1] = 3 v[724,1] = 1 v[725,1] = 1 v[726,1] = 1 v[727,1] = 3 v[728,1] = 1 v[729,1] = 3 v[730,1] = 3 v[731,1] = 1 v[732,1] = 3 v[733,1] = 3 v[734,1] = 1 v[735,1] = 3 v[736,1] = 1 v[737,1] = 1 v[738,1] = 3 v[739,1] = 3 v[740,1] = 3 v[741,1] = 1 v[742,1] = 1 v[743,1] = 1 v[744,1] = 3 v[745,1] = 1 v[746,1] = 1 v[747,1] = 1 v[748,1] = 3 v[749,1] = 3 v[750,1] = 3 v[751,1] = 1 v[752,1] = 3 v[753,1] = 3 v[754,1] = 1 v[755,1] = 3 v[756,1] = 1 v[757,1] = 1 v[758,1] = 3 v[759,1] = 3 v[760,1] = 3 v[761,1] = 1 v[762,1] = 3 v[763,1] = 3 v[764,1] = 1 v[765,1] = 1 v[766,1] = 1 v[767,1] = 3 v[768,1] = 1 v[769,1] = 3 v[770,1] = 3 v[771,1] = 3 v[772,1] = 3 v[773,1] = 3 v[774,1] = 3 v[775,1] = 3 v[776,1] = 3 v[777,1] = 1 v[778,1] = 3 v[779,1] = 3 v[780,1] = 1 v[781,1] = 3 v[782,1] = 1 v[783,1] = 1 v[784,1] = 3 v[785,1] = 3 v[786,1] = 3 v[787,1] = 1 v[788,1] = 3 v[789,1] = 3 v[790,1] = 3 v[791,1] = 3 v[792,1] = 3 v[793,1] = 1 v[794,1] = 3 v[795,1] = 3 v[796,1] = 3 v[797,1] = 1 v[798,1] = 1 v[799,1] = 1 v[800,1] = 3 v[801,1] = 3 v[802,1] = 1 v[803,1] = 3 v[804,1] = 3 v[805,1] = 1 v[806,1] = 3 v[807,1] = 1 v[808,1] = 3 v[809,1] = 1 v[810,1] = 3 v[811,1] = 1 v[812,1] = 3 v[813,1] = 3 v[814,1] = 3 v[815,1] = 3 v[816,1] = 3 v[817,1] = 3 v[818,1] = 1 v[819,1] = 1 v[820,1] = 3 v[821,1] = 1 v[822,1] = 3 v[823,1] = 1 v[824,1] = 1 v[825,1] = 1 v[826,1] = 1 v[827,1] = 1 v[828,1] = 3 v[829,1] = 1 v[830,1] = 1 v[831,1] = 1 v[832,1] = 3 v[833,1] = 1 v[834,1] = 3 v[835,1] = 1 v[836,1] = 1 v[837,1] = 3 v[838,1] = 3 v[839,1] = 3 v[840,1] = 1 v[841,1] = 3 v[842,1] = 1 v[843,1] = 3 v[844,1] = 1 v[845,1] = 1 v[846,1] = 3 v[847,1] = 1 v[848,1] = 3 v[849,1] = 3 v[850,1] = 1 v[851,1] = 3 v[852,1] = 1 v[853,1] = 3 v[854,1] = 3 v[855,1] = 1 v[856,1] = 3 v[857,1] = 3 v[858,1] = 1 v[859,1] = 3 v[860,1] = 3 v[861,1] = 3 v[862,1] = 3 v[863,1] = 3 v[864,1] = 3 v[865,1] = 1 v[866,1] = 3 v[867,1] = 1 v[868,1] = 1 v[869,1] = 3 v[870,1] = 3 v[871,1] = 3 v[872,1] = 1 v[873,1] = 1 v[874,1] = 3 v[875,1] = 3 v[876,1] = 3 v[877,1] = 3 v[878,1] = 3 v[879,1] = 3 v[880,1] = 3 v[881,1] = 1 v[882,1] = 3 v[883,1] = 3 v[884,1] = 3 v[885,1] = 3 v[886,1] = 1 v[887,1] = 3 v[888,1] = 1 v[889,1] = 3 v[890,1] = 3 v[891,1] = 3 v[892,1] = 1 v[893,1] = 3 v[894,1] = 1 v[895,1] = 3 v[896,1] = 1 v[897,1] = 1 v[898,1] = 1 v[899,1] = 3 v[900,1] = 3 v[901,1] = 1 v[902,1] = 3 v[903,1] = 1 v[904,1] = 1 v[905,1] = 3 v[906,1] = 3 v[907,1] = 1 v[908,1] = 3 v[909,1] = 1 v[910,1] = 1 v[911,1] = 1 v[912,1] = 1 v[913,1] = 3 v[914,1] = 1 v[915,1] = 3 v[916,1] = 1 v[917,1] = 1 v[918,1] = 3 v[919,1] = 1 v[920,1] = 3 v[921,1] = 1 v[922,1] = 3 v[923,1] = 3 v[924,1] = 3 v[925,1] = 3 v[926,1] = 3 v[927,1] = 3 v[928,1] = 1 v[929,1] = 3 v[930,1] = 3 v[931,1] = 3 v[932,1] = 3 v[933,1] = 1 v[934,1] = 3 v[935,1] = 3 v[936,1] = 1 v[937,1] = 3 v[938,1] = 3 v[939,1] = 3 v[940,1] = 3 v[941,1] = 3 v[942,1] = 1 v[943,1] = 1 v[944,1] = 1 v[945,1] = 1 v[946,1] = 3 v[947,1] = 3 v[948,1] = 3 v[949,1] = 1 v[950,1] = 3 v[951,1] = 3 v[952,1] = 1 v[953,1] = 1 v[954,1] = 3 v[955,1] = 3 v[956,1] = 1 v[957,1] = 1 v[958,1] = 3 v[959,1] = 3 v[960,1] = 1 v[961,1] = 3 v[962,1] = 1 v[963,1] = 1 v[964,1] = 3 v[965,1] = 1 v[966,1] = 3 v[967,1] = 3 v[968,1] = 3 v[969,1] = 3 v[970,1] = 3 v[971,1] = 1 v[972,1] = 3 v[973,1] = 1 v[974,1] = 1 v[975,1] = 3 v[976,1] = 3 v[977,1] = 3 v[978,1] = 3 v[979,1] = 1 v[980,1] = 3 v[981,1] = 1 v[982,1] = 1 v[983,1] = 3 v[984,1] = 3 v[985,1] = 3 v[986,1] = 3 v[987,1] = 3 v[988,1] = 3 v[989,1] = 1 v[990,1] = 1 v[991,1] = 3 v[992,1] = 1 v[993,1] = 3 v[994,1] = 1 v[995,1] = 1 v[996,1] = 3 v[997,1] = 1 v[998,1] = 1 v[999,1] = 1 v[1000,1] = 1 v[1001,1] = 3 v[1002,1] = 3 v[1003,1] = 1 v[1004,1] = 1 v[1005,1] = 3 v[1006,1] = 1 v[1007,1] = 1 v[1008,1] = 1 v[1009,1] = 3 v[1010,1] = 1 v[1011,1] = 3 v[1012,1] = 1 v[1013,1] = 1 v[1014,1] = 3 v[1015,1] = 3 v[1016,1] = 1 v[1017,1] = 3 v[1018,1] = 1 v[1019,1] = 1 v[1020,1] = 3 v[1021,1] = 3 v[1022,1] = 3 v[1023,1] = 3 v[1024,1] = 3 v[1025,1] = 1 v[1026,1] = 3 v[1027,1] = 1 v[1028,1] = 1 v[1029,1] = 1 v[1030,1] = 3 v[1031,1] = 1 v[1032,1] = 1 v[1033,1] = 1 v[1034,1] = 3 v[1035,1] = 1 v[1036,1] = 1 v[1037,1] = 3 v[1038,1] = 1 v[1039,1] = 3 v[1040,1] = 3 v[1041,1] = 3 v[1042,1] = 3 v[1043,1] = 3 v[1044,1] = 1 v[1045,1] = 1 v[1046,1] = 1 v[1047,1] = 3 v[1048,1] = 3 v[1049,1] = 3 v[1050,1] = 3 v[1051,1] = 1 v[1052,1] = 3 v[1053,1] = 3 v[1054,1] = 3 v[1055,1] = 3 v[1056,1] = 1 v[1057,1] = 1 v[1058,1] = 3 v[1059,1] = 3 v[1060,1] = 3 v[1061,1] = 1 v[1062,1] = 3 v[1063,1] = 1 v[1064,1] = 1 v[1065,1] = 3 v[1066,1] = 3 v[1067,1] = 1 v[1068,1] = 3 v[1069,1] = 3 v[1070,1] = 1 v[1071,1] = 1 v[1072,1] = 1 v[1073,1] = 1 v[1074,1] = 1 v[1075,1] = 3 v[1076,1] = 1 v[1077,1] = 1 v[1078,1] = 3 v[1079,1] = 3 v[1080,1] = 1 v[1081,1] = 1 v[1082,1] = 1 v[1083,1] = 3 v[1084,1] = 1 v[1085,1] = 1 v[1086,1] = 3 v[1087,1] = 3 v[1088,1] = 1 v[1089,1] = 3 v[1090,1] = 3 v[1091,1] = 3 v[1092,1] = 3 v[1093,1] = 3 v[1094,1] = 3 v[1095,1] = 3 v[1096,1] = 3 v[1097,1] = 1 v[1098,1] = 1 v[1099,1] = 3 v[1100,1] = 3 v[1101,1] = 1 v[1102,1] = 1 v[1103,1] = 3 v[1104,1] = 1 v[1105,1] = 3 v[1106,1] = 3 v[1107,1] = 3 v[1108,1] = 3 v[1109,1] = 3 v[1110,1] = 1 v[3,2] = 7 v[4,2] = 5 v[5,2] = 1 v[6,2] = 3 v[7,2] = 3 v[8,2] = 7 v[9,2] = 5 v[10,2] = 5 v[11,2] = 7 v[12,2] = 7 v[13,2] = 1 v[14,2] = 3 v[15,2] = 3 v[16,2] = 7 v[17,2] = 5 v[18,2] = 1 v[19,2] = 1 v[20,2] = 5 v[21,2] = 3 v[22,2] = 7 v[23,2] = 1 v[24,2] = 7 v[25,2] = 5 v[26,2] = 1 v[27,2] = 3 v[28,2] = 7 v[29,2] = 7 v[30,2] = 1 v[31,2] = 1 v[32,2] = 1 v[33,2] = 5 v[34,2] = 7 v[35,2] = 7 v[36,2] = 5 v[37,2] = 1 v[38,2] = 3 v[39,2] = 3 v[40,2] = 7 v[41,2] = 5 v[42,2] = 5 v[43,2] = 5 v[44,2] = 3 v[45,2] = 3 v[46,2] = 3 v[47,2] = 1 v[48,2] = 1 v[49,2] = 5 v[50,2] = 1 v[51,2] = 1 v[52,2] = 5 v[53,2] = 3 v[54,2] = 3 v[55,2] = 3 v[56,2] = 3 v[57,2] = 1 v[58,2] = 3 v[59,2] = 7 v[60,2] = 5 v[61,2] = 7 v[62,2] = 3 v[63,2] = 7 v[64,2] = 1 v[65,2] = 3 v[66,2] = 3 v[67,2] = 5 v[68,2] = 1 v[69,2] = 3 v[70,2] = 5 v[71,2] = 5 v[72,2] = 7 v[73,2] = 7 v[74,2] = 7 v[75,2] = 1 v[76,2] = 1 v[77,2] = 3 v[78,2] = 3 v[79,2] = 1 v[80,2] = 1 v[81,2] = 5 v[82,2] = 1 v[83,2] = 5 v[84,2] = 7 v[85,2] = 5 v[86,2] = 1 v[87,2] = 7 v[88,2] = 5 v[89,2] = 3 v[90,2] = 3 v[91,2] = 1 v[92,2] = 5 v[93,2] = 7 v[94,2] = 1 v[95,2] = 7 v[96,2] = 5 v[97,2] = 1 v[98,2] = 7 v[99,2] = 3 v[100,2] = 1 v[101,2] = 7 v[102,2] = 1 v[103,2] = 7 v[104,2] = 3 v[105,2] = 3 v[106,2] = 5 v[107,2] = 7 v[108,2] = 3 v[109,2] = 3 v[110,2] = 5 v[111,2] = 1 v[112,2] = 3 v[113,2] = 3 v[114,2] = 1 v[115,2] = 3 v[116,2] = 5 v[117,2] = 1 v[118,2] = 3 v[119,2] = 3 v[120,2] = 3 v[121,2] = 7 v[122,2] = 1 v[123,2] = 1 v[124,2] = 7 v[125,2] = 3 v[126,2] = 1 v[127,2] = 3 v[128,2] = 7 v[129,2] = 5 v[130,2] = 5 v[131,2] = 7 v[132,2] = 5 v[133,2] = 5 v[134,2] = 3 v[135,2] = 1 v[136,2] = 3 v[137,2] = 3 v[138,2] = 3 v[139,2] = 1 v[140,2] = 3 v[141,2] = 3 v[142,2] = 7 v[143,2] = 3 v[144,2] = 3 v[145,2] = 1 v[146,2] = 7 v[147,2] = 5 v[148,2] = 1 v[149,2] = 7 v[150,2] = 7 v[151,2] = 5 v[152,2] = 7 v[153,2] = 5 v[154,2] = 1 v[155,2] = 3 v[156,2] = 1 v[157,2] = 7 v[158,2] = 3 v[159,2] = 7 v[160,2] = 3 v[161,2] = 5 v[162,2] = 7 v[163,2] = 3 v[164,2] = 1 v[165,2] = 3 v[166,2] = 3 v[167,2] = 3 v[168,2] = 1 v[169,2] = 5 v[170,2] = 7 v[171,2] = 3 v[172,2] = 3 v[173,2] = 7 v[174,2] = 7 v[175,2] = 7 v[176,2] = 5 v[177,2] = 3 v[178,2] = 1 v[179,2] = 7 v[180,2] = 1 v[181,2] = 3 v[182,2] = 7 v[183,2] = 5 v[184,2] = 3 v[185,2] = 3 v[186,2] = 3 v[187,2] = 7 v[188,2] = 1 v[189,2] = 1 v[190,2] = 3 v[191,2] = 1 v[192,2] = 5 v[193,2] = 7 v[194,2] = 1 v[195,2] = 3 v[196,2] = 5 v[197,2] = 3 v[198,2] = 5 v[199,2] = 3 v[200,2] = 3 v[201,2] = 7 v[202,2] = 5 v[203,2] = 5 v[204,2] = 3 v[205,2] = 3 v[206,2] = 1 v[207,2] = 3 v[208,2] = 7 v[209,2] = 7 v[210,2] = 7 v[211,2] = 1 v[212,2] = 5 v[213,2] = 7 v[214,2] = 1 v[215,2] = 3 v[216,2] = 1 v[217,2] = 1 v[218,2] = 7 v[219,2] = 1 v[220,2] = 3 v[221,2] = 1 v[222,2] = 7 v[223,2] = 1 v[224,2] = 5 v[225,2] = 3 v[226,2] = 5 v[227,2] = 3 v[228,2] = 1 v[229,2] = 1 v[230,2] = 5 v[231,2] = 5 v[232,2] = 3 v[233,2] = 3 v[234,2] = 5 v[235,2] = 7 v[236,2] = 1 v[237,2] = 5 v[238,2] = 3 v[239,2] = 7 v[240,2] = 7 v[241,2] = 3 v[242,2] = 5 v[243,2] = 3 v[244,2] = 3 v[245,2] = 1 v[246,2] = 7 v[247,2] = 3 v[248,2] = 1 v[249,2] = 3 v[250,2] = 5 v[251,2] = 7 v[252,2] = 1 v[253,2] = 3 v[254,2] = 7 v[255,2] = 1 v[256,2] = 5 v[257,2] = 1 v[258,2] = 3 v[259,2] = 1 v[260,2] = 5 v[261,2] = 3 v[262,2] = 1 v[263,2] = 7 v[264,2] = 1 v[265,2] = 5 v[266,2] = 5 v[267,2] = 5 v[268,2] = 3 v[269,2] = 7 v[270,2] = 1 v[271,2] = 1 v[272,2] = 7 v[273,2] = 3 v[274,2] = 1 v[275,2] = 1 v[276,2] = 7 v[277,2] = 5 v[278,2] = 7 v[279,2] = 5 v[280,2] = 7 v[281,2] = 7 v[282,2] = 3 v[283,2] = 7 v[284,2] = 1 v[285,2] = 3 v[286,2] = 7 v[287,2] = 7 v[288,2] = 3 v[289,2] = 5 v[290,2] = 1 v[291,2] = 1 v[292,2] = 7 v[293,2] = 1 v[294,2] = 5 v[295,2] = 5 v[296,2] = 5 v[297,2] = 1 v[298,2] = 5 v[299,2] = 1 v[300,2] = 7 v[301,2] = 5 v[302,2] = 5 v[303,2] = 7 v[304,2] = 1 v[305,2] = 1 v[306,2] = 7 v[307,2] = 1 v[308,2] = 7 v[309,2] = 7 v[310,2] = 1 v[311,2] = 1 v[312,2] = 3 v[313,2] = 3 v[314,2] = 3 v[315,2] = 7 v[316,2] = 7 v[317,2] = 5 v[318,2] = 3 v[319,2] = 7 v[320,2] = 3 v[321,2] = 1 v[322,2] = 3 v[323,2] = 7 v[324,2] = 5 v[325,2] = 3 v[326,2] = 3 v[327,2] = 5 v[328,2] = 7 v[329,2] = 1 v[330,2] = 1 v[331,2] = 5 v[332,2] = 5 v[333,2] = 7 v[334,2] = 7 v[335,2] = 1 v[336,2] = 1 v[337,2] = 1 v[338,2] = 1 v[339,2] = 5 v[340,2] = 5 v[341,2] = 5 v[342,2] = 7 v[343,2] = 5 v[344,2] = 7 v[345,2] = 1 v[346,2] = 1 v[347,2] = 3 v[348,2] = 5 v[349,2] = 1 v[350,2] = 3 v[351,2] = 3 v[352,2] = 7 v[353,2] = 3 v[354,2] = 7 v[355,2] = 5 v[356,2] = 3 v[357,2] = 5 v[358,2] = 3 v[359,2] = 1 v[360,2] = 7 v[361,2] = 1 v[362,2] = 7 v[363,2] = 7 v[364,2] = 1 v[365,2] = 1 v[366,2] = 7 v[367,2] = 7 v[368,2] = 7 v[369,2] = 5 v[370,2] = 5 v[371,2] = 1 v[372,2] = 1 v[373,2] = 7 v[374,2] = 5 v[375,2] = 5 v[376,2] = 7 v[377,2] = 5 v[378,2] = 1 v[379,2] = 1 v[380,2] = 5 v[381,2] = 5 v[382,2] = 5 v[383,2] = 5 v[384,2] = 5 v[385,2] = 5 v[386,2] = 1 v[387,2] = 3 v[388,2] = 1 v[389,2] = 5 v[390,2] = 7 v[391,2] = 3 v[392,2] = 3 v[393,2] = 5 v[394,2] = 7 v[395,2] = 3 v[396,2] = 7 v[397,2] = 1 v[398,2] = 7 v[399,2] = 7 v[400,2] = 1 v[401,2] = 3 v[402,2] = 5 v[403,2] = 1 v[404,2] = 5 v[405,2] = 5 v[406,2] = 3 v[407,2] = 7 v[408,2] = 3 v[409,2] = 7 v[410,2] = 7 v[411,2] = 5 v[412,2] = 7 v[413,2] = 5 v[414,2] = 7 v[415,2] = 1 v[416,2] = 1 v[417,2] = 5 v[418,2] = 3 v[419,2] = 5 v[420,2] = 1 v[421,2] = 5 v[422,2] = 3 v[423,2] = 7 v[424,2] = 1 v[425,2] = 5 v[426,2] = 7 v[427,2] = 7 v[428,2] = 3 v[429,2] = 5 v[430,2] = 1 v[431,2] = 3 v[432,2] = 5 v[433,2] = 1 v[434,2] = 5 v[435,2] = 3 v[436,2] = 3 v[437,2] = 3 v[438,2] = 7 v[439,2] = 3 v[440,2] = 5 v[441,2] = 1 v[442,2] = 3 v[443,2] = 7 v[444,2] = 7 v[445,2] = 3 v[446,2] = 7 v[447,2] = 5 v[448,2] = 3 v[449,2] = 3 v[450,2] = 1 v[451,2] = 7 v[452,2] = 5 v[453,2] = 1 v[454,2] = 1 v[455,2] = 3 v[456,2] = 7 v[457,2] = 1 v[458,2] = 7 v[459,2] = 1 v[460,2] = 7 v[461,2] = 3 v[462,2] = 7 v[463,2] = 3 v[464,2] = 5 v[465,2] = 7 v[466,2] = 3 v[467,2] = 5 v[468,2] = 3 v[469,2] = 1 v[470,2] = 1 v[471,2] = 1 v[472,2] = 5 v[473,2] = 7 v[474,2] = 7 v[475,2] = 3 v[476,2] = 3 v[477,2] = 1 v[478,2] = 1 v[479,2] = 1 v[480,2] = 5 v[481,2] = 5 v[482,2] = 7 v[483,2] = 3 v[484,2] = 1 v[485,2] = 1 v[486,2] = 3 v[487,2] = 3 v[488,2] = 7 v[489,2] = 3 v[490,2] = 3 v[491,2] = 5 v[492,2] = 1 v[493,2] = 3 v[494,2] = 7 v[495,2] = 3 v[496,2] = 3 v[497,2] = 7 v[498,2] = 3 v[499,2] = 5 v[500,2] = 7 v[501,2] = 5 v[502,2] = 7 v[503,2] = 7 v[504,2] = 3 v[505,2] = 3 v[506,2] = 5 v[507,2] = 1 v[508,2] = 3 v[509,2] = 5 v[510,2] = 3 v[511,2] = 1 v[512,2] = 3 v[513,2] = 5 v[514,2] = 1 v[515,2] = 1 v[516,2] = 3 v[517,2] = 7 v[518,2] = 7 v[519,2] = 1 v[520,2] = 5 v[521,2] = 1 v[522,2] = 3 v[523,2] = 7 v[524,2] = 3 v[525,2] = 7 v[526,2] = 3 v[527,2] = 5 v[528,2] = 1 v[529,2] = 7 v[530,2] = 1 v[531,2] = 1 v[532,2] = 3 v[533,2] = 5 v[534,2] = 3 v[535,2] = 7 v[536,2] = 1 v[537,2] = 5 v[538,2] = 5 v[539,2] = 1 v[540,2] = 1 v[541,2] = 3 v[542,2] = 1 v[543,2] = 3 v[544,2] = 3 v[545,2] = 7 v[546,2] = 1 v[547,2] = 7 v[548,2] = 3 v[549,2] = 1 v[550,2] = 7 v[551,2] = 3 v[552,2] = 1 v[553,2] = 7 v[554,2] = 3 v[555,2] = 5 v[556,2] = 3 v[557,2] = 5 v[558,2] = 7 v[559,2] = 3 v[560,2] = 3 v[561,2] = 3 v[562,2] = 5 v[563,2] = 1 v[564,2] = 7 v[565,2] = 7 v[566,2] = 1 v[567,2] = 3 v[568,2] = 1 v[569,2] = 3 v[570,2] = 7 v[571,2] = 7 v[572,2] = 1 v[573,2] = 3 v[574,2] = 7 v[575,2] = 3 v[576,2] = 1 v[577,2] = 5 v[578,2] = 3 v[579,2] = 1 v[580,2] = 1 v[581,2] = 1 v[582,2] = 5 v[583,2] = 3 v[584,2] = 3 v[585,2] = 7 v[586,2] = 1 v[587,2] = 5 v[588,2] = 3 v[589,2] = 5 v[590,2] = 1 v[591,2] = 3 v[592,2] = 1 v[593,2] = 3 v[594,2] = 1 v[595,2] = 5 v[596,2] = 7 v[597,2] = 7 v[598,2] = 1 v[599,2] = 1 v[600,2] = 5 v[601,2] = 3 v[602,2] = 1 v[603,2] = 5 v[604,2] = 1 v[605,2] = 1 v[606,2] = 7 v[607,2] = 7 v[608,2] = 3 v[609,2] = 5 v[610,2] = 5 v[611,2] = 1 v[612,2] = 7 v[613,2] = 1 v[614,2] = 5 v[615,2] = 1 v[616,2] = 1 v[617,2] = 3 v[618,2] = 1 v[619,2] = 5 v[620,2] = 7 v[621,2] = 5 v[622,2] = 7 v[623,2] = 7 v[624,2] = 1 v[625,2] = 5 v[626,2] = 1 v[627,2] = 1 v[628,2] = 3 v[629,2] = 5 v[630,2] = 1 v[631,2] = 5 v[632,2] = 5 v[633,2] = 3 v[634,2] = 1 v[635,2] = 3 v[636,2] = 1 v[637,2] = 5 v[638,2] = 5 v[639,2] = 3 v[640,2] = 3 v[641,2] = 3 v[642,2] = 3 v[643,2] = 1 v[644,2] = 1 v[645,2] = 3 v[646,2] = 1 v[647,2] = 3 v[648,2] = 5 v[649,2] = 5 v[650,2] = 7 v[651,2] = 5 v[652,2] = 5 v[653,2] = 7 v[654,2] = 5 v[655,2] = 7 v[656,2] = 1 v[657,2] = 3 v[658,2] = 7 v[659,2] = 7 v[660,2] = 3 v[661,2] = 5 v[662,2] = 5 v[663,2] = 7 v[664,2] = 5 v[665,2] = 5 v[666,2] = 3 v[667,2] = 3 v[668,2] = 3 v[669,2] = 1 v[670,2] = 7 v[671,2] = 1 v[672,2] = 5 v[673,2] = 5 v[674,2] = 5 v[675,2] = 3 v[676,2] = 3 v[677,2] = 5 v[678,2] = 1 v[679,2] = 3 v[680,2] = 1 v[681,2] = 3 v[682,2] = 3 v[683,2] = 3 v[684,2] = 7 v[685,2] = 1 v[686,2] = 7 v[687,2] = 7 v[688,2] = 3 v[689,2] = 7 v[690,2] = 1 v[691,2] = 1 v[692,2] = 5 v[693,2] = 7 v[694,2] = 1 v[695,2] = 7 v[696,2] = 1 v[697,2] = 7 v[698,2] = 7 v[699,2] = 1 v[700,2] = 3 v[701,2] = 7 v[702,2] = 5 v[703,2] = 1 v[704,2] = 3 v[705,2] = 5 v[706,2] = 5 v[707,2] = 5 v[708,2] = 1 v[709,2] = 1 v[710,2] = 7 v[711,2] = 1 v[712,2] = 7 v[713,2] = 1 v[714,2] = 7 v[715,2] = 7 v[716,2] = 3 v[717,2] = 1 v[718,2] = 1 v[719,2] = 5 v[720,2] = 1 v[721,2] = 5 v[722,2] = 1 v[723,2] = 5 v[724,2] = 3 v[725,2] = 5 v[726,2] = 5 v[727,2] = 5 v[728,2] = 5 v[729,2] = 5 v[730,2] = 3 v[731,2] = 3 v[732,2] = 7 v[733,2] = 3 v[734,2] = 3 v[735,2] = 5 v[736,2] = 5 v[737,2] = 3 v[738,2] = 7 v[739,2] = 1 v[740,2] = 5 v[741,2] = 7 v[742,2] = 5 v[743,2] = 1 v[744,2] = 5 v[745,2] = 5 v[746,2] = 3 v[747,2] = 5 v[748,2] = 5 v[749,2] = 7 v[750,2] = 5 v[751,2] = 3 v[752,2] = 5 v[753,2] = 5 v[754,2] = 5 v[755,2] = 1 v[756,2] = 5 v[757,2] = 5 v[758,2] = 5 v[759,2] = 5 v[760,2] = 1 v[761,2] = 3 v[762,2] = 5 v[763,2] = 3 v[764,2] = 1 v[765,2] = 7 v[766,2] = 5 v[767,2] = 5 v[768,2] = 7 v[769,2] = 1 v[770,2] = 5 v[771,2] = 3 v[772,2] = 3 v[773,2] = 1 v[774,2] = 5 v[775,2] = 3 v[776,2] = 7 v[777,2] = 1 v[778,2] = 7 v[779,2] = 5 v[780,2] = 1 v[781,2] = 1 v[782,2] = 3 v[783,2] = 1 v[784,2] = 1 v[785,2] = 7 v[786,2] = 1 v[787,2] = 5 v[788,2] = 5 v[789,2] = 3 v[790,2] = 7 v[791,2] = 3 v[792,2] = 7 v[793,2] = 5 v[794,2] = 3 v[795,2] = 1 v[796,2] = 1 v[797,2] = 3 v[798,2] = 1 v[799,2] = 3 v[800,2] = 5 v[801,2] = 5 v[802,2] = 7 v[803,2] = 5 v[804,2] = 3 v[805,2] = 7 v[806,2] = 7 v[807,2] = 7 v[808,2] = 3 v[809,2] = 7 v[810,2] = 3 v[811,2] = 7 v[812,2] = 1 v[813,2] = 3 v[814,2] = 1 v[815,2] = 7 v[816,2] = 7 v[817,2] = 1 v[818,2] = 7 v[819,2] = 3 v[820,2] = 7 v[821,2] = 3 v[822,2] = 7 v[823,2] = 3 v[824,2] = 7 v[825,2] = 3 v[826,2] = 5 v[827,2] = 1 v[828,2] = 1 v[829,2] = 7 v[830,2] = 3 v[831,2] = 1 v[832,2] = 5 v[833,2] = 5 v[834,2] = 7 v[835,2] = 1 v[836,2] = 5 v[837,2] = 5 v[838,2] = 5 v[839,2] = 7 v[840,2] = 1 v[841,2] = 5 v[842,2] = 5 v[843,2] = 1 v[844,2] = 5 v[845,2] = 5 v[846,2] = 3 v[847,2] = 1 v[848,2] = 3 v[849,2] = 1 v[850,2] = 7 v[851,2] = 3 v[852,2] = 1 v[853,2] = 3 v[854,2] = 5 v[855,2] = 7 v[856,2] = 7 v[857,2] = 7 v[858,2] = 1 v[859,2] = 1 v[860,2] = 7 v[861,2] = 3 v[862,2] = 1 v[863,2] = 5 v[864,2] = 5 v[865,2] = 5 v[866,2] = 1 v[867,2] = 1 v[868,2] = 1 v[869,2] = 1 v[870,2] = 1 v[871,2] = 5 v[872,2] = 3 v[873,2] = 5 v[874,2] = 1 v[875,2] = 3 v[876,2] = 5 v[877,2] = 3 v[878,2] = 1 v[879,2] = 1 v[880,2] = 1 v[881,2] = 1 v[882,2] = 3 v[883,2] = 7 v[884,2] = 3 v[885,2] = 7 v[886,2] = 5 v[887,2] = 7 v[888,2] = 1 v[889,2] = 5 v[890,2] = 5 v[891,2] = 7 v[892,2] = 5 v[893,2] = 3 v[894,2] = 3 v[895,2] = 7 v[896,2] = 5 v[897,2] = 3 v[898,2] = 1 v[899,2] = 1 v[900,2] = 3 v[901,2] = 1 v[902,2] = 3 v[903,2] = 1 v[904,2] = 1 v[905,2] = 3 v[906,2] = 7 v[907,2] = 1 v[908,2] = 7 v[909,2] = 1 v[910,2] = 1 v[911,2] = 5 v[912,2] = 1 v[913,2] = 7 v[914,2] = 5 v[915,2] = 3 v[916,2] = 7 v[917,2] = 3 v[918,2] = 5 v[919,2] = 3 v[920,2] = 1 v[921,2] = 1 v[922,2] = 5 v[923,2] = 5 v[924,2] = 1 v[925,2] = 7 v[926,2] = 7 v[927,2] = 3 v[928,2] = 7 v[929,2] = 3 v[930,2] = 7 v[931,2] = 1 v[932,2] = 5 v[933,2] = 1 v[934,2] = 5 v[935,2] = 3 v[936,2] = 7 v[937,2] = 3 v[938,2] = 5 v[939,2] = 7 v[940,2] = 7 v[941,2] = 7 v[942,2] = 3 v[943,2] = 3 v[944,2] = 1 v[945,2] = 1 v[946,2] = 5 v[947,2] = 5 v[948,2] = 3 v[949,2] = 7 v[950,2] = 1 v[951,2] = 1 v[952,2] = 1 v[953,2] = 3 v[954,2] = 5 v[955,2] = 3 v[956,2] = 1 v[957,2] = 1 v[958,2] = 3 v[959,2] = 3 v[960,2] = 7 v[961,2] = 5 v[962,2] = 1 v[963,2] = 1 v[964,2] = 3 v[965,2] = 7 v[966,2] = 1 v[967,2] = 5 v[968,2] = 7 v[969,2] = 3 v[970,2] = 7 v[971,2] = 5 v[972,2] = 5 v[973,2] = 7 v[974,2] = 3 v[975,2] = 5 v[976,2] = 3 v[977,2] = 1 v[978,2] = 5 v[979,2] = 3 v[980,2] = 1 v[981,2] = 1 v[982,2] = 7 v[983,2] = 5 v[984,2] = 1 v[985,2] = 7 v[986,2] = 3 v[987,2] = 7 v[988,2] = 5 v[989,2] = 1 v[990,2] = 7 v[991,2] = 1 v[992,2] = 7 v[993,2] = 7 v[994,2] = 1 v[995,2] = 1 v[996,2] = 7 v[997,2] = 1 v[998,2] = 5 v[999,2] = 5 v[1000,2] = 1 v[1001,2] = 1 v[1002,2] = 7 v[1003,2] = 5 v[1004,2] = 7 v[1005,2] = 1 v[1006,2] = 5 v[1007,2] = 3 v[1008,2] = 5 v[1009,2] = 3 v[1010,2] = 3 v[1011,2] = 7 v[1012,2] = 1 v[1013,2] = 5 v[1014,2] = 1 v[1015,2] = 1 v[1016,2] = 5 v[1017,2] = 5 v[1018,2] = 3 v[1019,2] = 3 v[1020,2] = 7 v[1021,2] = 5 v[1022,2] = 5 v[1023,2] = 1 v[1024,2] = 1 v[1025,2] = 1 v[1026,2] = 3 v[1027,2] = 1 v[1028,2] = 5 v[1029,2] = 7 v[1030,2] = 7 v[1031,2] = 1 v[1032,2] = 7 v[1033,2] = 5 v[1034,2] = 7 v[1035,2] = 3 v[1036,2] = 7 v[1037,2] = 3 v[1038,2] = 1 v[1039,2] = 3 v[1040,2] = 7 v[1041,2] = 3 v[1042,2] = 1 v[1043,2] = 5 v[1044,2] = 5 v[1045,2] = 3 v[1046,2] = 5 v[1047,2] = 1 v[1048,2] = 3 v[1049,2] = 5 v[1050,2] = 5 v[1051,2] = 5 v[1052,2] = 1 v[1053,2] = 1 v[1054,2] = 7 v[1055,2] = 7 v[1056,2] = 1 v[1057,2] = 5 v[1058,2] = 5 v[1059,2] = 1 v[1060,2] = 3 v[1061,2] = 5 v[1062,2] = 1 v[1063,2] = 5 v[1064,2] = 3 v[1065,2] = 5 v[1066,2] = 3 v[1067,2] = 3 v[1068,2] = 7 v[1069,2] = 5 v[1070,2] = 7 v[1071,2] = 3 v[1072,2] = 7 v[1073,2] = 3 v[1074,2] = 1 v[1075,2] = 3 v[1076,2] = 7 v[1077,2] = 7 v[1078,2] = 3 v[1079,2] = 3 v[1080,2] = 1 v[1081,2] = 1 v[1082,2] = 3 v[1083,2] = 3 v[1084,2] = 3 v[1085,2] = 3 v[1086,2] = 3 v[1087,2] = 5 v[1088,2] = 5 v[1089,2] = 3 v[1090,2] = 3 v[1091,2] = 3 v[1092,2] = 1 v[1093,2] = 3 v[1094,2] = 5 v[1095,2] = 7 v[1096,2] = 7 v[1097,2] = 1 v[1098,2] = 5 v[1099,2] = 7 v[1100,2] = 3 v[1101,2] = 7 v[1102,2] = 1 v[1103,2] = 1 v[1104,2] = 3 v[1105,2] = 5 v[1106,2] = 7 v[1107,2] = 5 v[1108,2] = 3 v[1109,2] = 3 v[1110,2] = 3 v[5,3] = 1 v[6,3] = 7 v[7,3] = 9 v[8,3] = 13 v[9,3] = 11 v[10,3] = 1 v[11,3] = 3 v[12,3] = 7 v[13,3] = 9 v[14,3] = 5 v[15,3] = 13 v[16,3] = 13 v[17,3] = 11 v[18,3] = 3 v[19,3] = 15 v[20,3] = 5 v[21,3] = 3 v[22,3] = 15 v[23,3] = 7 v[24,3] = 9 v[25,3] = 13 v[26,3] = 9 v[27,3] = 1 v[28,3] = 11 v[29,3] = 7 v[30,3] = 5 v[31,3] = 15 v[32,3] = 1 v[33,3] = 15 v[34,3] = 11 v[35,3] = 5 v[36,3] = 11 v[37,3] = 1 v[38,3] = 7 v[39,3] = 9 v[40,3] = 7 v[41,3] = 7 v[42,3] = 1 v[43,3] = 15 v[44,3] = 15 v[45,3] = 15 v[46,3] = 13 v[47,3] = 3 v[48,3] = 3 v[49,3] = 15 v[50,3] = 5 v[51,3] = 9 v[52,3] = 7 v[53,3] = 13 v[54,3] = 3 v[55,3] = 7 v[56,3] = 5 v[57,3] = 11 v[58,3] = 9 v[59,3] = 1 v[60,3] = 9 v[61,3] = 1 v[62,3] = 5 v[63,3] = 7 v[64,3] = 13 v[65,3] = 9 v[66,3] = 9 v[67,3] = 1 v[68,3] = 7 v[69,3] = 3 v[70,3] = 5 v[71,3] = 1 v[72,3] = 11 v[73,3] = 11 v[74,3] = 13 v[75,3] = 7 v[76,3] = 7 v[77,3] = 9 v[78,3] = 9 v[79,3] = 1 v[80,3] = 1 v[81,3] = 3 v[82,3] = 9 v[83,3] = 15 v[84,3] = 1 v[85,3] = 5 v[86,3] = 13 v[87,3] = 1 v[88,3] = 9 v[89,3] = 9 v[90,3] = 9 v[91,3] = 9 v[92,3] = 9 v[93,3] = 13 v[94,3] = 11 v[95,3] = 3 v[96,3] = 5 v[97,3] = 11 v[98,3] = 11 v[99,3] = 13 v[100,3] = 5 v[101,3] = 3 v[102,3] = 15 v[103,3] = 1 v[104,3] = 11 v[105,3] = 11 v[106,3] = 7 v[107,3] = 13 v[108,3] = 15 v[109,3] = 11 v[110,3] = 13 v[111,3] = 9 v[112,3] = 11 v[113,3] = 15 v[114,3] = 15 v[115,3] = 13 v[116,3] = 3 v[117,3] = 15 v[118,3] = 7 v[119,3] = 9 v[120,3] = 11 v[121,3] = 13 v[122,3] = 11 v[123,3] = 9 v[124,3] = 9 v[125,3] = 5 v[126,3] = 13 v[127,3] = 9 v[128,3] = 1 v[129,3] = 13 v[130,3] = 7 v[131,3] = 7 v[132,3] = 7 v[133,3] = 7 v[134,3] = 7 v[135,3] = 5 v[136,3] = 9 v[137,3] = 7 v[138,3] = 13 v[139,3] = 11 v[140,3] = 9 v[141,3] = 11 v[142,3] = 15 v[143,3] = 3 v[144,3] = 13 v[145,3] = 11 v[146,3] = 1 v[147,3] = 11 v[148,3] = 3 v[149,3] = 3 v[150,3] = 9 v[151,3] = 11 v[152,3] = 1 v[153,3] = 7 v[154,3] = 1 v[155,3] = 15 v[156,3] = 15 v[157,3] = 3 v[158,3] = 1 v[159,3] = 9 v[160,3] = 1 v[161,3] = 7 v[162,3] = 13 v[163,3] = 11 v[164,3] = 3 v[165,3] = 13 v[166,3] = 11 v[167,3] = 7 v[168,3] = 3 v[169,3] = 3 v[170,3] = 5 v[171,3] = 13 v[172,3] = 11 v[173,3] = 5 v[174,3] = 11 v[175,3] = 1 v[176,3] = 3 v[177,3] = 9 v[178,3] = 7 v[179,3] = 15 v[180,3] = 7 v[181,3] = 5 v[182,3] = 13 v[183,3] = 7 v[184,3] = 9 v[185,3] = 13 v[186,3] = 15 v[187,3] = 13 v[188,3] = 9 v[189,3] = 7 v[190,3] = 15 v[191,3] = 7 v[192,3] = 9 v[193,3] = 5 v[194,3] = 11 v[195,3] = 11 v[196,3] = 13 v[197,3] = 13 v[198,3] = 9 v[199,3] = 3 v[200,3] = 5 v[201,3] = 13 v[202,3] = 9 v[203,3] = 11 v[204,3] = 15 v[205,3] = 11 v[206,3] = 7 v[207,3] = 1 v[208,3] = 7 v[209,3] = 13 v[210,3] = 3 v[211,3] = 13 v[212,3] = 3 v[213,3] = 13 v[214,3] = 9 v[215,3] = 15 v[216,3] = 7 v[217,3] = 13 v[218,3] = 13 v[219,3] = 3 v[220,3] = 13 v[221,3] = 15 v[222,3] = 15 v[223,3] = 11 v[224,3] = 9 v[225,3] = 13 v[226,3] = 9 v[227,3] = 15 v[228,3] = 1 v[229,3] = 1 v[230,3] = 15 v[231,3] = 11 v[232,3] = 11 v[233,3] = 7 v[234,3] = 1 v[235,3] = 11 v[236,3] = 13 v[237,3] = 9 v[238,3] = 13 v[239,3] = 3 v[240,3] = 5 v[241,3] = 11 v[242,3] = 13 v[243,3] = 9 v[244,3] = 9 v[245,3] = 13 v[246,3] = 1 v[247,3] = 11 v[248,3] = 15 v[249,3] = 13 v[250,3] = 3 v[251,3] = 13 v[252,3] = 7 v[253,3] = 15 v[254,3] = 1 v[255,3] = 15 v[256,3] = 3 v[257,3] = 3 v[258,3] = 11 v[259,3] = 7 v[260,3] = 13 v[261,3] = 7 v[262,3] = 7 v[263,3] = 9 v[264,3] = 7 v[265,3] = 5 v[266,3] = 15 v[267,3] = 9 v[268,3] = 5 v[269,3] = 5 v[270,3] = 7 v[271,3] = 15 v[272,3] = 13 v[273,3] = 15 v[274,3] = 5 v[275,3] = 15 v[276,3] = 5 v[277,3] = 3 v[278,3] = 1 v[279,3] = 11 v[280,3] = 7 v[281,3] = 1 v[282,3] = 5 v[283,3] = 7 v[284,3] = 9 v[285,3] = 3 v[286,3] = 11 v[287,3] = 1 v[288,3] = 15 v[289,3] = 1 v[290,3] = 3 v[291,3] = 15 v[292,3] = 11 v[293,3] = 13 v[294,3] = 5 v[295,3] = 13 v[296,3] = 1 v[297,3] = 7 v[298,3] = 1 v[299,3] = 15 v[300,3] = 7 v[301,3] = 5 v[302,3] = 1 v[303,3] = 1 v[304,3] = 15 v[305,3] = 13 v[306,3] = 11 v[307,3] = 11 v[308,3] = 13 v[309,3] = 5 v[310,3] = 11 v[311,3] = 7 v[312,3] = 9 v[313,3] = 7 v[314,3] = 1 v[315,3] = 5 v[316,3] = 3 v[317,3] = 9 v[318,3] = 5 v[319,3] = 5 v[320,3] = 11 v[321,3] = 5 v[322,3] = 1 v[323,3] = 7 v[324,3] = 1 v[325,3] = 11 v[326,3] = 7 v[327,3] = 9 v[328,3] = 13 v[329,3] = 15 v[330,3] = 13 v[331,3] = 3 v[332,3] = 1 v[333,3] = 11 v[334,3] = 13 v[335,3] = 15 v[336,3] = 1 v[337,3] = 1 v[338,3] = 11 v[339,3] = 9 v[340,3] = 13 v[341,3] = 3 v[342,3] = 13 v[343,3] = 11 v[344,3] = 15 v[345,3] = 13 v[346,3] = 9 v[347,3] = 9 v[348,3] = 9 v[349,3] = 5 v[350,3] = 5 v[351,3] = 5 v[352,3] = 5 v[353,3] = 1 v[354,3] = 15 v[355,3] = 5 v[356,3] = 9 v[357,3] = 11 v[358,3] = 7 v[359,3] = 15 v[360,3] = 5 v[361,3] = 3 v[362,3] = 13 v[363,3] = 5 v[364,3] = 3 v[365,3] = 11 v[366,3] = 5 v[367,3] = 1 v[368,3] = 11 v[369,3] = 13 v[370,3] = 9 v[371,3] = 11 v[372,3] = 3 v[373,3] = 7 v[374,3] = 13 v[375,3] = 15 v[376,3] = 1 v[377,3] = 7 v[378,3] = 11 v[379,3] = 1 v[380,3] = 13 v[381,3] = 1 v[382,3] = 15 v[383,3] = 1 v[384,3] = 9 v[385,3] = 7 v[386,3] = 3 v[387,3] = 9 v[388,3] = 11 v[389,3] = 1 v[390,3] = 9 v[391,3] = 13 v[392,3] = 13 v[393,3] = 3 v[394,3] = 11 v[395,3] = 7 v[396,3] = 9 v[397,3] = 1 v[398,3] = 7 v[399,3] = 15 v[400,3] = 9 v[401,3] = 1 v[402,3] = 5 v[403,3] = 13 v[404,3] = 5 v[405,3] = 11 v[406,3] = 3 v[407,3] = 9 v[408,3] = 15 v[409,3] = 11 v[410,3] = 13 v[411,3] = 5 v[412,3] = 1 v[413,3] = 7 v[414,3] = 7 v[415,3] = 5 v[416,3] = 13 v[417,3] = 7 v[418,3] = 7 v[419,3] = 9 v[420,3] = 5 v[421,3] = 11 v[422,3] = 11 v[423,3] = 1 v[424,3] = 1 v[425,3] = 15 v[426,3] = 3 v[427,3] = 13 v[428,3] = 9 v[429,3] = 13 v[430,3] = 9 v[431,3] = 9 v[432,3] = 11 v[433,3] = 5 v[434,3] = 5 v[435,3] = 13 v[436,3] = 15 v[437,3] = 3 v[438,3] = 9 v[439,3] = 15 v[440,3] = 3 v[441,3] = 11 v[442,3] = 11 v[443,3] = 15 v[444,3] = 15 v[445,3] = 3 v[446,3] = 11 v[447,3] = 15 v[448,3] = 15 v[449,3] = 3 v[450,3] = 1 v[451,3] = 3 v[452,3] = 1 v[453,3] = 3 v[454,3] = 3 v[455,3] = 1 v[456,3] = 3 v[457,3] = 13 v[458,3] = 1 v[459,3] = 11 v[460,3] = 5 v[461,3] = 15 v[462,3] = 7 v[463,3] = 15 v[464,3] = 9 v[465,3] = 1 v[466,3] = 7 v[467,3] = 1 v[468,3] = 9 v[469,3] = 11 v[470,3] = 15 v[471,3] = 1 v[472,3] = 13 v[473,3] = 9 v[474,3] = 13 v[475,3] = 11 v[476,3] = 7 v[477,3] = 3 v[478,3] = 7 v[479,3] = 3 v[480,3] = 13 v[481,3] = 7 v[482,3] = 9 v[483,3] = 7 v[484,3] = 7 v[485,3] = 3 v[486,3] = 3 v[487,3] = 9 v[488,3] = 9 v[489,3] = 7 v[490,3] = 5 v[491,3] = 11 v[492,3] = 13 v[493,3] = 13 v[494,3] = 7 v[495,3] = 7 v[496,3] = 15 v[497,3] = 9 v[498,3] = 5 v[499,3] = 5 v[500,3] = 3 v[501,3] = 3 v[502,3] = 13 v[503,3] = 3 v[504,3] = 9 v[505,3] = 3 v[506,3] = 1 v[507,3] = 11 v[508,3] = 1 v[509,3] = 3 v[510,3] = 11 v[511,3] = 15 v[512,3] = 11 v[513,3] = 11 v[514,3] = 11 v[515,3] = 9 v[516,3] = 13 v[517,3] = 7 v[518,3] = 9 v[519,3] = 15 v[520,3] = 9 v[521,3] = 11 v[522,3] = 1 v[523,3] = 3 v[524,3] = 3 v[525,3] = 9 v[526,3] = 7 v[527,3] = 15 v[528,3] = 13 v[529,3] = 13 v[530,3] = 7 v[531,3] = 15 v[532,3] = 9 v[533,3] = 13 v[534,3] = 9 v[535,3] = 15 v[536,3] = 13 v[537,3] = 15 v[538,3] = 9 v[539,3] = 13 v[540,3] = 1 v[541,3] = 11 v[542,3] = 7 v[543,3] = 11 v[544,3] = 3 v[545,3] = 13 v[546,3] = 5 v[547,3] = 1 v[548,3] = 7 v[549,3] = 15 v[550,3] = 3 v[551,3] = 13 v[552,3] = 7 v[553,3] = 13 v[554,3] = 13 v[555,3] = 11 v[556,3] = 3 v[557,3] = 5 v[558,3] = 3 v[559,3] = 13 v[560,3] = 11 v[561,3] = 9 v[562,3] = 9 v[563,3] = 3 v[564,3] = 11 v[565,3] = 11 v[566,3] = 7 v[567,3] = 9 v[568,3] = 13 v[569,3] = 11 v[570,3] = 7 v[571,3] = 15 v[572,3] = 13 v[573,3] = 7 v[574,3] = 5 v[575,3] = 3 v[576,3] = 1 v[577,3] = 5 v[578,3] = 15 v[579,3] = 15 v[580,3] = 3 v[581,3] = 11 v[582,3] = 1 v[583,3] = 7 v[584,3] = 3 v[585,3] = 15 v[586,3] = 11 v[587,3] = 5 v[588,3] = 5 v[589,3] = 3 v[590,3] = 5 v[591,3] = 5 v[592,3] = 1 v[593,3] = 15 v[594,3] = 5 v[595,3] = 1 v[596,3] = 5 v[597,3] = 3 v[598,3] = 7 v[599,3] = 5 v[600,3] = 11 v[601,3] = 3 v[602,3] = 13 v[603,3] = 9 v[604,3] = 13 v[605,3] = 15 v[606,3] = 5 v[607,3] = 3 v[608,3] = 5 v[609,3] = 9 v[610,3] = 5 v[611,3] = 3 v[612,3] = 11 v[613,3] = 1 v[614,3] = 13 v[615,3] = 9 v[616,3] = 15 v[617,3] = 3 v[618,3] = 5 v[619,3] = 11 v[620,3] = 9 v[621,3] = 1 v[622,3] = 3 v[623,3] = 15 v[624,3] = 9 v[625,3] = 9 v[626,3] = 9 v[627,3] = 11 v[628,3] = 7 v[629,3] = 5 v[630,3] = 13 v[631,3] = 1 v[632,3] = 15 v[633,3] = 3 v[634,3] = 13 v[635,3] = 9 v[636,3] = 13 v[637,3] = 5 v[638,3] = 1 v[639,3] = 5 v[640,3] = 1 v[641,3] = 13 v[642,3] = 13 v[643,3] = 7 v[644,3] = 7 v[645,3] = 1 v[646,3] = 9 v[647,3] = 5 v[648,3] = 11 v[649,3] = 9 v[650,3] = 11 v[651,3] = 13 v[652,3] = 3 v[653,3] = 15 v[654,3] = 15 v[655,3] = 13 v[656,3] = 15 v[657,3] = 7 v[658,3] = 5 v[659,3] = 7 v[660,3] = 9 v[661,3] = 7 v[662,3] = 9 v[663,3] = 9 v[664,3] = 9 v[665,3] = 11 v[666,3] = 9 v[667,3] = 3 v[668,3] = 11 v[669,3] = 15 v[670,3] = 13 v[671,3] = 13 v[672,3] = 5 v[673,3] = 9 v[674,3] = 15 v[675,3] = 1 v[676,3] = 1 v[677,3] = 9 v[678,3] = 5 v[679,3] = 13 v[680,3] = 3 v[681,3] = 13 v[682,3] = 15 v[683,3] = 3 v[684,3] = 1 v[685,3] = 3 v[686,3] = 11 v[687,3] = 13 v[688,3] = 1 v[689,3] = 15 v[690,3] = 9 v[691,3] = 9 v[692,3] = 3 v[693,3] = 1 v[694,3] = 9 v[695,3] = 1 v[696,3] = 9 v[697,3] = 1 v[698,3] = 13 v[699,3] = 11 v[700,3] = 15 v[701,3] = 7 v[702,3] = 11 v[703,3] = 15 v[704,3] = 13 v[705,3] = 15 v[706,3] = 1 v[707,3] = 9 v[708,3] = 9 v[709,3] = 7 v[710,3] = 3 v[711,3] = 5 v[712,3] = 11 v[713,3] = 7 v[714,3] = 3 v[715,3] = 9 v[716,3] = 5 v[717,3] = 15 v[718,3] = 7 v[719,3] = 5 v[720,3] = 3 v[721,3] = 13 v[722,3] = 7 v[723,3] = 1 v[724,3] = 1 v[725,3] = 9 v[726,3] = 15 v[727,3] = 15 v[728,3] = 15 v[729,3] = 11 v[730,3] = 3 v[731,3] = 5 v[732,3] = 15 v[733,3] = 13 v[734,3] = 7 v[735,3] = 15 v[736,3] = 15 v[737,3] = 11 v[738,3] = 11 v[739,3] = 9 v[740,3] = 5 v[741,3] = 15 v[742,3] = 9 v[743,3] = 7 v[744,3] = 3 v[745,3] = 13 v[746,3] = 1 v[747,3] = 1 v[748,3] = 5 v[749,3] = 1 v[750,3] = 3 v[751,3] = 1 v[752,3] = 7 v[753,3] = 1 v[754,3] = 1 v[755,3] = 5 v[756,3] = 1 v[757,3] = 11 v[758,3] = 11 v[759,3] = 9 v[760,3] = 9 v[761,3] = 5 v[762,3] = 13 v[763,3] = 7 v[764,3] = 7 v[765,3] = 7 v[766,3] = 1 v[767,3] = 1 v[768,3] = 9 v[769,3] = 9 v[770,3] = 11 v[771,3] = 11 v[772,3] = 15 v[773,3] = 7 v[774,3] = 5 v[775,3] = 5 v[776,3] = 3 v[777,3] = 11 v[778,3] = 1 v[779,3] = 3 v[780,3] = 7 v[781,3] = 13 v[782,3] = 7 v[783,3] = 7 v[784,3] = 7 v[785,3] = 3 v[786,3] = 15 v[787,3] = 15 v[788,3] = 11 v[789,3] = 9 v[790,3] = 3 v[791,3] = 9 v[792,3] = 3 v[793,3] = 15 v[794,3] = 13 v[795,3] = 5 v[796,3] = 3 v[797,3] = 3 v[798,3] = 3 v[799,3] = 5 v[800,3] = 9 v[801,3] = 15 v[802,3] = 9 v[803,3] = 9 v[804,3] = 1 v[805,3] = 5 v[806,3] = 9 v[807,3] = 9 v[808,3] = 15 v[809,3] = 5 v[810,3] = 15 v[811,3] = 7 v[812,3] = 9 v[813,3] = 1 v[814,3] = 9 v[815,3] = 9 v[816,3] = 5 v[817,3] = 11 v[818,3] = 5 v[819,3] = 15 v[820,3] = 15 v[821,3] = 11 v[822,3] = 7 v[823,3] = 7 v[824,3] = 7 v[825,3] = 1 v[826,3] = 1 v[827,3] = 11 v[828,3] = 11 v[829,3] = 13 v[830,3] = 15 v[831,3] = 3 v[832,3] = 13 v[833,3] = 5 v[834,3] = 1 v[835,3] = 7 v[836,3] = 1 v[837,3] = 11 v[838,3] = 3 v[839,3] = 13 v[840,3] = 15 v[841,3] = 3 v[842,3] = 5 v[843,3] = 3 v[844,3] = 5 v[845,3] = 7 v[846,3] = 3 v[847,3] = 9 v[848,3] = 9 v[849,3] = 5 v[850,3] = 1 v[851,3] = 7 v[852,3] = 11 v[853,3] = 9 v[854,3] = 3 v[855,3] = 5 v[856,3] = 11 v[857,3] = 13 v[858,3] = 13 v[859,3] = 13 v[860,3] = 9 v[861,3] = 15 v[862,3] = 5 v[863,3] = 7 v[864,3] = 1 v[865,3] = 15 v[866,3] = 11 v[867,3] = 9 v[868,3] = 15 v[869,3] = 15 v[870,3] = 13 v[871,3] = 13 v[872,3] = 13 v[873,3] = 1 v[874,3] = 11 v[875,3] = 9 v[876,3] = 15 v[877,3] = 9 v[878,3] = 5 v[879,3] = 15 v[880,3] = 5 v[881,3] = 7 v[882,3] = 3 v[883,3] = 11 v[884,3] = 3 v[885,3] = 15 v[886,3] = 7 v[887,3] = 13 v[888,3] = 11 v[889,3] = 7 v[890,3] = 3 v[891,3] = 7 v[892,3] = 13 v[893,3] = 5 v[894,3] = 13 v[895,3] = 15 v[896,3] = 5 v[897,3] = 13 v[898,3] = 9 v[899,3] = 1 v[900,3] = 15 v[901,3] = 11 v[902,3] = 5 v[903,3] = 5 v[904,3] = 1 v[905,3] = 11 v[906,3] = 3 v[907,3] = 3 v[908,3] = 7 v[909,3] = 1 v[910,3] = 9 v[911,3] = 7 v[912,3] = 15 v[913,3] = 9 v[914,3] = 9 v[915,3] = 3 v[916,3] = 11 v[917,3] = 15 v[918,3] = 7 v[919,3] = 1 v[920,3] = 3 v[921,3] = 1 v[922,3] = 1 v[923,3] = 1 v[924,3] = 9 v[925,3] = 1 v[926,3] = 5 v[927,3] = 15 v[928,3] = 15 v[929,3] = 7 v[930,3] = 5 v[931,3] = 5 v[932,3] = 7 v[933,3] = 9 v[934,3] = 7 v[935,3] = 15 v[936,3] = 13 v[937,3] = 13 v[938,3] = 11 v[939,3] = 1 v[940,3] = 9 v[941,3] = 11 v[942,3] = 1 v[943,3] = 13 v[944,3] = 1 v[945,3] = 7 v[946,3] = 15 v[947,3] = 15 v[948,3] = 5 v[949,3] = 5 v[950,3] = 1 v[951,3] = 11 v[952,3] = 3 v[953,3] = 9 v[954,3] = 11 v[955,3] = 9 v[956,3] = 9 v[957,3] = 9 v[958,3] = 1 v[959,3] = 9 v[960,3] = 3 v[961,3] = 5 v[962,3] = 15 v[963,3] = 1 v[964,3] = 1 v[965,3] = 9 v[966,3] = 7 v[967,3] = 3 v[968,3] = 3 v[969,3] = 1 v[970,3] = 9 v[971,3] = 9 v[972,3] = 11 v[973,3] = 9 v[974,3] = 9 v[975,3] = 13 v[976,3] = 13 v[977,3] = 3 v[978,3] = 13 v[979,3] = 11 v[980,3] = 13 v[981,3] = 5 v[982,3] = 1 v[983,3] = 5 v[984,3] = 5 v[985,3] = 9 v[986,3] = 9 v[987,3] = 3 v[988,3] = 13 v[989,3] = 13 v[990,3] = 9 v[991,3] = 15 v[992,3] = 9 v[993,3] = 11 v[994,3] = 7 v[995,3] = 11 v[996,3] = 9 v[997,3] = 13 v[998,3] = 9 v[999,3] = 1 v[1000,3] = 15 v[1001,3] = 9 v[1002,3] = 7 v[1003,3] = 7 v[1004,3] = 1 v[1005,3] = 7 v[1006,3] = 9 v[1007,3] = 9 v[1008,3] = 15 v[1009,3] = 1 v[1010,3] = 11 v[1011,3] = 1 v[1012,3] = 13 v[1013,3] = 13 v[1014,3] = 15 v[1015,3] = 9 v[1016,3] = 13 v[1017,3] = 7 v[1018,3] = 15 v[1019,3] = 3 v[1020,3] = 9 v[1021,3] = 3 v[1022,3] = 1 v[1023,3] = 13 v[1024,3] = 7 v[1025,3] = 5 v[1026,3] = 9 v[1027,3] = 3 v[1028,3] = 1 v[1029,3] = 7 v[1030,3] = 1 v[1031,3] = 1 v[1032,3] = 13 v[1033,3] = 3 v[1034,3] = 3 v[1035,3] = 11 v[1036,3] = 1 v[1037,3] = 7 v[1038,3] = 13 v[1039,3] = 15 v[1040,3] = 15 v[1041,3] = 5 v[1042,3] = 7 v[1043,3] = 13 v[1044,3] = 13 v[1045,3] = 15 v[1046,3] = 11 v[1047,3] = 13 v[1048,3] = 1 v[1049,3] = 13 v[1050,3] = 13 v[1051,3] = 3 v[1052,3] = 9 v[1053,3] = 15 v[1054,3] = 15 v[1055,3] = 11 v[1056,3] = 15 v[1057,3] = 9 v[1058,3] = 15 v[1059,3] = 1 v[1060,3] = 13 v[1061,3] = 15 v[1062,3] = 1 v[1063,3] = 1 v[1064,3] = 5 v[1065,3] = 11 v[1066,3] = 5 v[1067,3] = 1 v[1068,3] = 11 v[1069,3] = 11 v[1070,3] = 5 v[1071,3] = 3 v[1072,3] = 9 v[1073,3] = 1 v[1074,3] = 3 v[1075,3] = 5 v[1076,3] = 13 v[1077,3] = 9 v[1078,3] = 7 v[1079,3] = 7 v[1080,3] = 1 v[1081,3] = 9 v[1082,3] = 9 v[1083,3] = 15 v[1084,3] = 7 v[1085,3] = 5 v[1086,3] = 5 v[1087,3] = 15 v[1088,3] = 13 v[1089,3] = 9 v[1090,3] = 7 v[1091,3] = 13 v[1092,3] = 3 v[1093,3] = 13 v[1094,3] = 11 v[1095,3] = 13 v[1096,3] = 7 v[1097,3] = 9 v[1098,3] = 13 v[1099,3] = 13 v[1100,3] = 13 v[1101,3] = 15 v[1102,3] = 9 v[1103,3] = 5 v[1104,3] = 5 v[1105,3] = 3 v[1106,3] = 3 v[1107,3] = 3 v[1108,3] = 1 v[1109,3] = 3 v[1110,3] = 15 v[7,4] = 9 v[8,4] = 3 v[9,4] = 27 v[10,4] = 15 v[11,4] = 29 v[12,4] = 21 v[13,4] = 23 v[14,4] = 19 v[15,4] = 11 v[16,4] = 25 v[17,4] = 7 v[18,4] = 13 v[19,4] = 17 v[20,4] = 1 v[21,4] = 25 v[22,4] = 29 v[23,4] = 3 v[24,4] = 31 v[25,4] = 11 v[26,4] = 5 v[27,4] = 23 v[28,4] = 27 v[29,4] = 19 v[30,4] = 21 v[31,4] = 5 v[32,4] = 1 v[33,4] = 17 v[34,4] = 13 v[35,4] = 7 v[36,4] = 15 v[37,4] = 9 v[38,4] = 31 v[39,4] = 25 v[40,4] = 3 v[41,4] = 5 v[42,4] = 23 v[43,4] = 7 v[44,4] = 3 v[45,4] = 17 v[46,4] = 23 v[47,4] = 3 v[48,4] = 3 v[49,4] = 21 v[50,4] = 25 v[51,4] = 25 v[52,4] = 23 v[53,4] = 11 v[54,4] = 19 v[55,4] = 3 v[56,4] = 11 v[57,4] = 31 v[58,4] = 7 v[59,4] = 9 v[60,4] = 5 v[61,4] = 17 v[62,4] = 23 v[63,4] = 17 v[64,4] = 17 v[65,4] = 25 v[66,4] = 13 v[67,4] = 11 v[68,4] = 31 v[69,4] = 27 v[70,4] = 19 v[71,4] = 17 v[72,4] = 23 v[73,4] = 7 v[74,4] = 5 v[75,4] = 11 v[76,4] = 19 v[77,4] = 19 v[78,4] = 7 v[79,4] = 13 v[80,4] = 21 v[81,4] = 21 v[82,4] = 7 v[83,4] = 9 v[84,4] = 11 v[85,4] = 1 v[86,4] = 5 v[87,4] = 21 v[88,4] = 11 v[89,4] = 13 v[90,4] = 25 v[91,4] = 9 v[92,4] = 7 v[93,4] = 7 v[94,4] = 27 v[95,4] = 15 v[96,4] = 25 v[97,4] = 15 v[98,4] = 21 v[99,4] = 17 v[100,4] = 19 v[101,4] = 19 v[102,4] = 21 v[103,4] = 5 v[104,4] = 11 v[105,4] = 3 v[106,4] = 5 v[107,4] = 29 v[108,4] = 31 v[109,4] = 29 v[110,4] = 5 v[111,4] = 5 v[112,4] = 1 v[113,4] = 31 v[114,4] = 27 v[115,4] = 11 v[116,4] = 13 v[117,4] = 1 v[118,4] = 3 v[119,4] = 7 v[120,4] = 11 v[121,4] = 7 v[122,4] = 3 v[123,4] = 23 v[124,4] = 13 v[125,4] = 31 v[126,4] = 17 v[127,4] = 1 v[128,4] = 27 v[129,4] = 11 v[130,4] = 25 v[131,4] = 1 v[132,4] = 23 v[133,4] = 29 v[134,4] = 17 v[135,4] = 25 v[136,4] = 7 v[137,4] = 25 v[138,4] = 27 v[139,4] = 17 v[140,4] = 13 v[141,4] = 17 v[142,4] = 23 v[143,4] = 5 v[144,4] = 17 v[145,4] = 5 v[146,4] = 13 v[147,4] = 11 v[148,4] = 21 v[149,4] = 5 v[150,4] = 11 v[151,4] = 5 v[152,4] = 9 v[153,4] = 31 v[154,4] = 19 v[155,4] = 17 v[156,4] = 9 v[157,4] = 9 v[158,4] = 27 v[159,4] = 21 v[160,4] = 15 v[161,4] = 15 v[162,4] = 1 v[163,4] = 1 v[164,4] = 29 v[165,4] = 5 v[166,4] = 31 v[167,4] = 11 v[168,4] = 17 v[169,4] = 23 v[170,4] = 19 v[171,4] = 21 v[172,4] = 25 v[173,4] = 15 v[174,4] = 11 v[175,4] = 5 v[176,4] = 5 v[177,4] = 1 v[178,4] = 19 v[179,4] = 19 v[180,4] = 19 v[181,4] = 7 v[182,4] = 13 v[183,4] = 21 v[184,4] = 17 v[185,4] = 17 v[186,4] = 25 v[187,4] = 23 v[188,4] = 19 v[189,4] = 23 v[190,4] = 15 v[191,4] = 13 v[192,4] = 5 v[193,4] = 19 v[194,4] = 25 v[195,4] = 9 v[196,4] = 7 v[197,4] = 3 v[198,4] = 21 v[199,4] = 17 v[200,4] = 25 v[201,4] = 1 v[202,4] = 27 v[203,4] = 25 v[204,4] = 27 v[205,4] = 25 v[206,4] = 9 v[207,4] = 13 v[208,4] = 3 v[209,4] = 17 v[210,4] = 25 v[211,4] = 23 v[212,4] = 9 v[213,4] = 25 v[214,4] = 9 v[215,4] = 13 v[216,4] = 17 v[217,4] = 17 v[218,4] = 3 v[219,4] = 15 v[220,4] = 7 v[221,4] = 7 v[222,4] = 29 v[223,4] = 3 v[224,4] = 19 v[225,4] = 29 v[226,4] = 29 v[227,4] = 19 v[228,4] = 29 v[229,4] = 13 v[230,4] = 15 v[231,4] = 25 v[232,4] = 27 v[233,4] = 1 v[234,4] = 3 v[235,4] = 9 v[236,4] = 9 v[237,4] = 13 v[238,4] = 31 v[239,4] = 29 v[240,4] = 31 v[241,4] = 5 v[242,4] = 15 v[243,4] = 29 v[244,4] = 1 v[245,4] = 19 v[246,4] = 5 v[247,4] = 9 v[248,4] = 19 v[249,4] = 5 v[250,4] = 15 v[251,4] = 3 v[252,4] = 5 v[253,4] = 7 v[254,4] = 15 v[255,4] = 17 v[256,4] = 17 v[257,4] = 23 v[258,4] = 11 v[259,4] = 9 v[260,4] = 23 v[261,4] = 19 v[262,4] = 3 v[263,4] = 17 v[264,4] = 1 v[265,4] = 27 v[266,4] = 9 v[267,4] = 9 v[268,4] = 17 v[269,4] = 13 v[270,4] = 25 v[271,4] = 29 v[272,4] = 23 v[273,4] = 29 v[274,4] = 11 v[275,4] = 31 v[276,4] = 25 v[277,4] = 21 v[278,4] = 29 v[279,4] = 19 v[280,4] = 27 v[281,4] = 31 v[282,4] = 3 v[283,4] = 5 v[284,4] = 3 v[285,4] = 3 v[286,4] = 13 v[287,4] = 21 v[288,4] = 9 v[289,4] = 29 v[290,4] = 3 v[291,4] = 17 v[292,4] = 11 v[293,4] = 11 v[294,4] = 9 v[295,4] = 21 v[296,4] = 19 v[297,4] = 7 v[298,4] = 17 v[299,4] = 31 v[300,4] = 25 v[301,4] = 1 v[302,4] = 27 v[303,4] = 5 v[304,4] = 15 v[305,4] = 27 v[306,4] = 29 v[307,4] = 29 v[308,4] = 29 v[309,4] = 25 v[310,4] = 27 v[311,4] = 25 v[312,4] = 3 v[313,4] = 21 v[314,4] = 17 v[315,4] = 25 v[316,4] = 13 v[317,4] = 15 v[318,4] = 17 v[319,4] = 13 v[320,4] = 23 v[321,4] = 9 v[322,4] = 3 v[323,4] = 11 v[324,4] = 7 v[325,4] = 9 v[326,4] = 9 v[327,4] = 7 v[328,4] = 17 v[329,4] = 7 v[330,4] = 1 v[331,4] = 27 v[332,4] = 1 v[333,4] = 9 v[334,4] = 5 v[335,4] = 31 v[336,4] = 21 v[337,4] = 25 v[338,4] = 25 v[339,4] = 21 v[340,4] = 11 v[341,4] = 1 v[342,4] = 23 v[343,4] = 19 v[344,4] = 27 v[345,4] = 15 v[346,4] = 3 v[347,4] = 5 v[348,4] = 23 v[349,4] = 9 v[350,4] = 25 v[351,4] = 7 v[352,4] = 29 v[353,4] = 11 v[354,4] = 9 v[355,4] = 13 v[356,4] = 5 v[357,4] = 11 v[358,4] = 1 v[359,4] = 3 v[360,4] = 31 v[361,4] = 27 v[362,4] = 3 v[363,4] = 17 v[364,4] = 27 v[365,4] = 11 v[366,4] = 13 v[367,4] = 15 v[368,4] = 29 v[369,4] = 15 v[370,4] = 1 v[371,4] = 15 v[372,4] = 23 v[373,4] = 25 v[374,4] = 13 v[375,4] = 21 v[376,4] = 15 v[377,4] = 3 v[378,4] = 29 v[379,4] = 29 v[380,4] = 5 v[381,4] = 25 v[382,4] = 17 v[383,4] = 11 v[384,4] = 7 v[385,4] = 15 v[386,4] = 5 v[387,4] = 21 v[388,4] = 7 v[389,4] = 31 v[390,4] = 13 v[391,4] = 11 v[392,4] = 23 v[393,4] = 5 v[394,4] = 7 v[395,4] = 23 v[396,4] = 27 v[397,4] = 21 v[398,4] = 29 v[399,4] = 15 v[400,4] = 7 v[401,4] = 27 v[402,4] = 27 v[403,4] = 19 v[404,4] = 7 v[405,4] = 15 v[406,4] = 27 v[407,4] = 27 v[408,4] = 19 v[409,4] = 19 v[410,4] = 9 v[411,4] = 15 v[412,4] = 1 v[413,4] = 3 v[414,4] = 29 v[415,4] = 29 v[416,4] = 5 v[417,4] = 27 v[418,4] = 31 v[419,4] = 9 v[420,4] = 1 v[421,4] = 7 v[422,4] = 3 v[423,4] = 19 v[424,4] = 19 v[425,4] = 29 v[426,4] = 9 v[427,4] = 3 v[428,4] = 21 v[429,4] = 31 v[430,4] = 29 v[431,4] = 25 v[432,4] = 1 v[433,4] = 3 v[434,4] = 9 v[435,4] = 27 v[436,4] = 5 v[437,4] = 27 v[438,4] = 25 v[439,4] = 21 v[440,4] = 11 v[441,4] = 29 v[442,4] = 31 v[443,4] = 27 v[444,4] = 21 v[445,4] = 29 v[446,4] = 17 v[447,4] = 9 v[448,4] = 17 v[449,4] = 13 v[450,4] = 11 v[451,4] = 25 v[452,4] = 15 v[453,4] = 21 v[454,4] = 11 v[455,4] = 19 v[456,4] = 31 v[457,4] = 3 v[458,4] = 19 v[459,4] = 5 v[460,4] = 3 v[461,4] = 3 v[462,4] = 9 v[463,4] = 13 v[464,4] = 13 v[465,4] = 3 v[466,4] = 29 v[467,4] = 7 v[468,4] = 5 v[469,4] = 9 v[470,4] = 23 v[471,4] = 13 v[472,4] = 21 v[473,4] = 23 v[474,4] = 21 v[475,4] = 31 v[476,4] = 11 v[477,4] = 7 v[478,4] = 7 v[479,4] = 3 v[480,4] = 23 v[481,4] = 1 v[482,4] = 23 v[483,4] = 5 v[484,4] = 9 v[485,4] = 17 v[486,4] = 21 v[487,4] = 1 v[488,4] = 17 v[489,4] = 29 v[490,4] = 7 v[491,4] = 5 v[492,4] = 17 v[493,4] = 13 v[494,4] = 25 v[495,4] = 17 v[496,4] = 9 v[497,4] = 19 v[498,4] = 9 v[499,4] = 5 v[500,4] = 7 v[501,4] = 21 v[502,4] = 19 v[503,4] = 13 v[504,4] = 9 v[505,4] = 7 v[506,4] = 3 v[507,4] = 9 v[508,4] = 3 v[509,4] = 15 v[510,4] = 31 v[511,4] = 29 v[512,4] = 29 v[513,4] = 25 v[514,4] = 13 v[515,4] = 9 v[516,4] = 21 v[517,4] = 9 v[518,4] = 31 v[519,4] = 7 v[520,4] = 15 v[521,4] = 5 v[522,4] = 31 v[523,4] = 7 v[524,4] = 15 v[525,4] = 27 v[526,4] = 25 v[527,4] = 19 v[528,4] = 9 v[529,4] = 9 v[530,4] = 25 v[531,4] = 25 v[532,4] = 23 v[533,4] = 1 v[534,4] = 9 v[535,4] = 7 v[536,4] = 11 v[537,4] = 15 v[538,4] = 19 v[539,4] = 15 v[540,4] = 27 v[541,4] = 17 v[542,4] = 11 v[543,4] = 11 v[544,4] = 31 v[545,4] = 13 v[546,4] = 25 v[547,4] = 25 v[548,4] = 9 v[549,4] = 7 v[550,4] = 13 v[551,4] = 29 v[552,4] = 19 v[553,4] = 5 v[554,4] = 19 v[555,4] = 31 v[556,4] = 25 v[557,4] = 13 v[558,4] = 25 v[559,4] = 15 v[560,4] = 5 v[561,4] = 9 v[562,4] = 29 v[563,4] = 31 v[564,4] = 9 v[565,4] = 29 v[566,4] = 27 v[567,4] = 25 v[568,4] = 27 v[569,4] = 11 v[570,4] = 17 v[571,4] = 5 v[572,4] = 17 v[573,4] = 3 v[574,4] = 23 v[575,4] = 15 v[576,4] = 9 v[577,4] = 9 v[578,4] = 17 v[579,4] = 17 v[580,4] = 31 v[581,4] = 11 v[582,4] = 19 v[583,4] = 25 v[584,4] = 13 v[585,4] = 23 v[586,4] = 15 v[587,4] = 25 v[588,4] = 21 v[589,4] = 31 v[590,4] = 19 v[591,4] = 3 v[592,4] = 11 v[593,4] = 25 v[594,4] = 7 v[595,4] = 15 v[596,4] = 19 v[597,4] = 7 v[598,4] = 5 v[599,4] = 3 v[600,4] = 13 v[601,4] = 13 v[602,4] = 1 v[603,4] = 23 v[604,4] = 5 v[605,4] = 25 v[606,4] = 11 v[607,4] = 25 v[608,4] = 15 v[609,4] = 13 v[610,4] = 21 v[611,4] = 11 v[612,4] = 23 v[613,4] = 29 v[614,4] = 5 v[615,4] = 17 v[616,4] = 27 v[617,4] = 9 v[618,4] = 19 v[619,4] = 15 v[620,4] = 5 v[621,4] = 29 v[622,4] = 23 v[623,4] = 19 v[624,4] = 1 v[625,4] = 27 v[626,4] = 3 v[627,4] = 23 v[628,4] = 21 v[629,4] = 19 v[630,4] = 27 v[631,4] = 11 v[632,4] = 17 v[633,4] = 13 v[634,4] = 27 v[635,4] = 11 v[636,4] = 31 v[637,4] = 23 v[638,4] = 5 v[639,4] = 9 v[640,4] = 21 v[641,4] = 31 v[642,4] = 29 v[643,4] = 11 v[644,4] = 21 v[645,4] = 17 v[646,4] = 15 v[647,4] = 7 v[648,4] = 15 v[649,4] = 7 v[650,4] = 9 v[651,4] = 21 v[652,4] = 27 v[653,4] = 25 v[654,4] = 29 v[655,4] = 11 v[656,4] = 3 v[657,4] = 21 v[658,4] = 13 v[659,4] = 23 v[660,4] = 19 v[661,4] = 27 v[662,4] = 17 v[663,4] = 29 v[664,4] = 25 v[665,4] = 17 v[666,4] = 9 v[667,4] = 1 v[668,4] = 19 v[669,4] = 23 v[670,4] = 5 v[671,4] = 23 v[672,4] = 1 v[673,4] = 17 v[674,4] = 17 v[675,4] = 13 v[676,4] = 27 v[677,4] = 23 v[678,4] = 7 v[679,4] = 7 v[680,4] = 11 v[681,4] = 13 v[682,4] = 17 v[683,4] = 13 v[684,4] = 11 v[685,4] = 21 v[686,4] = 13 v[687,4] = 23 v[688,4] = 1 v[689,4] = 27 v[690,4] = 13 v[691,4] = 9 v[692,4] = 7 v[693,4] = 1 v[694,4] = 27 v[695,4] = 29 v[696,4] = 5 v[697,4] = 13 v[698,4] = 25 v[699,4] = 21 v[700,4] = 3 v[701,4] = 31 v[702,4] = 15 v[703,4] = 13 v[704,4] = 3 v[705,4] = 19 v[706,4] = 13 v[707,4] = 1 v[708,4] = 27 v[709,4] = 15 v[710,4] = 17 v[711,4] = 1 v[712,4] = 3 v[713,4] = 13 v[714,4] = 13 v[715,4] = 13 v[716,4] = 31 v[717,4] = 29 v[718,4] = 27 v[719,4] = 7 v[720,4] = 7 v[721,4] = 21 v[722,4] = 29 v[723,4] = 15 v[724,4] = 17 v[725,4] = 17 v[726,4] = 21 v[727,4] = 19 v[728,4] = 17 v[729,4] = 3 v[730,4] = 15 v[731,4] = 5 v[732,4] = 27 v[733,4] = 27 v[734,4] = 3 v[735,4] = 31 v[736,4] = 31 v[737,4] = 7 v[738,4] = 21 v[739,4] = 3 v[740,4] = 13 v[741,4] = 11 v[742,4] = 17 v[743,4] = 27 v[744,4] = 25 v[745,4] = 1 v[746,4] = 9 v[747,4] = 7 v[748,4] = 29 v[749,4] = 27 v[750,4] = 21 v[751,4] = 23 v[752,4] = 13 v[753,4] = 25 v[754,4] = 29 v[755,4] = 15 v[756,4] = 17 v[757,4] = 29 v[758,4] = 9 v[759,4] = 15 v[760,4] = 3 v[761,4] = 21 v[762,4] = 15 v[763,4] = 17 v[764,4] = 17 v[765,4] = 31 v[766,4] = 9 v[767,4] = 9 v[768,4] = 23 v[769,4] = 19 v[770,4] = 25 v[771,4] = 3 v[772,4] = 1 v[773,4] = 11 v[774,4] = 27 v[775,4] = 29 v[776,4] = 1 v[777,4] = 31 v[778,4] = 29 v[779,4] = 25 v[780,4] = 29 v[781,4] = 1 v[782,4] = 23 v[783,4] = 29 v[784,4] = 25 v[785,4] = 13 v[786,4] = 3 v[787,4] = 31 v[788,4] = 25 v[789,4] = 5 v[790,4] = 5 v[791,4] = 11 v[792,4] = 3 v[793,4] = 21 v[794,4] = 9 v[795,4] = 23 v[796,4] = 7 v[797,4] = 11 v[798,4] = 23 v[799,4] = 11 v[800,4] = 1 v[801,4] = 1 v[802,4] = 3 v[803,4] = 23 v[804,4] = 25 v[805,4] = 23 v[806,4] = 1 v[807,4] = 23 v[808,4] = 3 v[809,4] = 27 v[810,4] = 9 v[811,4] = 27 v[812,4] = 3 v[813,4] = 23 v[814,4] = 25 v[815,4] = 19 v[816,4] = 29 v[817,4] = 29 v[818,4] = 13 v[819,4] = 27 v[820,4] = 5 v[821,4] = 9 v[822,4] = 29 v[823,4] = 29 v[824,4] = 13 v[825,4] = 17 v[826,4] = 3 v[827,4] = 23 v[828,4] = 19 v[829,4] = 7 v[830,4] = 13 v[831,4] = 3 v[832,4] = 19 v[833,4] = 23 v[834,4] = 5 v[835,4] = 29 v[836,4] = 29 v[837,4] = 13 v[838,4] = 13 v[839,4] = 5 v[840,4] = 19 v[841,4] = 5 v[842,4] = 17 v[843,4] = 9 v[844,4] = 11 v[845,4] = 11 v[846,4] = 29 v[847,4] = 27 v[848,4] = 23 v[849,4] = 19 v[850,4] = 17 v[851,4] = 25 v[852,4] = 13 v[853,4] = 1 v[854,4] = 13 v[855,4] = 3 v[856,4] = 11 v[857,4] = 1 v[858,4] = 17 v[859,4] = 29 v[860,4] = 1 v[861,4] = 13 v[862,4] = 17 v[863,4] = 9 v[864,4] = 17 v[865,4] = 21 v[866,4] = 1 v[867,4] = 11 v[868,4] = 1 v[869,4] = 1 v[870,4] = 25 v[871,4] = 5 v[872,4] = 7 v[873,4] = 29 v[874,4] = 29 v[875,4] = 19 v[876,4] = 19 v[877,4] = 1 v[878,4] = 29 v[879,4] = 13 v[880,4] = 3 v[881,4] = 1 v[882,4] = 31 v[883,4] = 15 v[884,4] = 13 v[885,4] = 3 v[886,4] = 1 v[887,4] = 11 v[888,4] = 19 v[889,4] = 5 v[890,4] = 29 v[891,4] = 13 v[892,4] = 29 v[893,4] = 23 v[894,4] = 3 v[895,4] = 1 v[896,4] = 31 v[897,4] = 13 v[898,4] = 19 v[899,4] = 17 v[900,4] = 5 v[901,4] = 5 v[902,4] = 1 v[903,4] = 29 v[904,4] = 23 v[905,4] = 3 v[906,4] = 19 v[907,4] = 25 v[908,4] = 19 v[909,4] = 27 v[910,4] = 9 v[911,4] = 27 v[912,4] = 13 v[913,4] = 15 v[914,4] = 29 v[915,4] = 23 v[916,4] = 13 v[917,4] = 25 v[918,4] = 25 v[919,4] = 17 v[920,4] = 19 v[921,4] = 17 v[922,4] = 15 v[923,4] = 27 v[924,4] = 3 v[925,4] = 25 v[926,4] = 17 v[927,4] = 27 v[928,4] = 3 v[929,4] = 27 v[930,4] = 31 v[931,4] = 23 v[932,4] = 13 v[933,4] = 31 v[934,4] = 11 v[935,4] = 15 v[936,4] = 7 v[937,4] = 21 v[938,4] = 19 v[939,4] = 27 v[940,4] = 19 v[941,4] = 21 v[942,4] = 29 v[943,4] = 7 v[944,4] = 31 v[945,4] = 13 v[946,4] = 9 v[947,4] = 9 v[948,4] = 7 v[949,4] = 21 v[950,4] = 13 v[951,4] = 11 v[952,4] = 9 v[953,4] = 11 v[954,4] = 29 v[955,4] = 19 v[956,4] = 11 v[957,4] = 19 v[958,4] = 21 v[959,4] = 5 v[960,4] = 29 v[961,4] = 13 v[962,4] = 7 v[963,4] = 19 v[964,4] = 19 v[965,4] = 27 v[966,4] = 23 v[967,4] = 31 v[968,4] = 1 v[969,4] = 27 v[970,4] = 21 v[971,4] = 7 v[972,4] = 3 v[973,4] = 7 v[974,4] = 11 v[975,4] = 23 v[976,4] = 13 v[977,4] = 29 v[978,4] = 11 v[979,4] = 31 v[980,4] = 19 v[981,4] = 1 v[982,4] = 5 v[983,4] = 5 v[984,4] = 11 v[985,4] = 5 v[986,4] = 3 v[987,4] = 27 v[988,4] = 5 v[989,4] = 7 v[990,4] = 11 v[991,4] = 31 v[992,4] = 1 v[993,4] = 27 v[994,4] = 31 v[995,4] = 31 v[996,4] = 23 v[997,4] = 5 v[998,4] = 21 v[999,4] = 27 v[1000,4] = 9 v[1001,4] = 25 v[1002,4] = 3 v[1003,4] = 15 v[1004,4] = 19 v[1005,4] = 1 v[1006,4] = 19 v[1007,4] = 9 v[1008,4] = 5 v[1009,4] = 25 v[1010,4] = 21 v[1011,4] = 15 v[1012,4] = 25 v[1013,4] = 29 v[1014,4] = 15 v[1015,4] = 21 v[1016,4] = 11 v[1017,4] = 19 v[1018,4] = 15 v[1019,4] = 3 v[1020,4] = 7 v[1021,4] = 13 v[1022,4] = 11 v[1023,4] = 25 v[1024,4] = 17 v[1025,4] = 1 v[1026,4] = 5 v[1027,4] = 31 v[1028,4] = 13 v[1029,4] = 29 v[1030,4] = 23 v[1031,4] = 9 v[1032,4] = 5 v[1033,4] = 29 v[1034,4] = 7 v[1035,4] = 17 v[1036,4] = 27 v[1037,4] = 7 v[1038,4] = 17 v[1039,4] = 31 v[1040,4] = 9 v[1041,4] = 31 v[1042,4] = 9 v[1043,4] = 9 v[1044,4] = 7 v[1045,4] = 21 v[1046,4] = 3 v[1047,4] = 3 v[1048,4] = 3 v[1049,4] = 9 v[1050,4] = 11 v[1051,4] = 21 v[1052,4] = 11 v[1053,4] = 31 v[1054,4] = 9 v[1055,4] = 25 v[1056,4] = 5 v[1057,4] = 1 v[1058,4] = 31 v[1059,4] = 13 v[1060,4] = 29 v[1061,4] = 9 v[1062,4] = 29 v[1063,4] = 1 v[1064,4] = 11 v[1065,4] = 19 v[1066,4] = 7 v[1067,4] = 27 v[1068,4] = 13 v[1069,4] = 31 v[1070,4] = 7 v[1071,4] = 31 v[1072,4] = 7 v[1073,4] = 25 v[1074,4] = 23 v[1075,4] = 21 v[1076,4] = 29 v[1077,4] = 11 v[1078,4] = 11 v[1079,4] = 13 v[1080,4] = 11 v[1081,4] = 27 v[1082,4] = 1 v[1083,4] = 23 v[1084,4] = 31 v[1085,4] = 21 v[1086,4] = 23 v[1087,4] = 21 v[1088,4] = 19 v[1089,4] = 31 v[1090,4] = 5 v[1091,4] = 31 v[1092,4] = 25 v[1093,4] = 25 v[1094,4] = 19 v[1095,4] = 17 v[1096,4] = 11 v[1097,4] = 25 v[1098,4] = 7 v[1099,4] = 13 v[1100,4] = 1 v[1101,4] = 29 v[1102,4] = 17 v[1103,4] = 23 v[1104,4] = 15 v[1105,4] = 7 v[1106,4] = 29 v[1107,4] = 17 v[1108,4] = 13 v[1109,4] = 3 v[1110,4] = 17 v[13,5] = 37 v[14,5] = 33 v[15,5] = 7 v[16,5] = 5 v[17,5] = 11 v[18,5] = 39 v[19,5] = 63 v[20,5] = 59 v[21,5] = 17 v[22,5] = 15 v[23,5] = 23 v[24,5] = 29 v[25,5] = 3 v[26,5] = 21 v[27,5] = 13 v[28,5] = 31 v[29,5] = 25 v[30,5] = 9 v[31,5] = 49 v[32,5] = 33 v[33,5] = 19 v[34,5] = 29 v[35,5] = 11 v[36,5] = 19 v[37,5] = 27 v[38,5] = 15 v[39,5] = 25 v[40,5] = 63 v[41,5] = 55 v[42,5] = 17 v[43,5] = 63 v[44,5] = 49 v[45,5] = 19 v[46,5] = 41 v[47,5] = 59 v[48,5] = 3 v[49,5] = 57 v[50,5] = 33 v[51,5] = 49 v[52,5] = 53 v[53,5] = 57 v[54,5] = 57 v[55,5] = 39 v[56,5] = 21 v[57,5] = 7 v[58,5] = 53 v[59,5] = 9 v[60,5] = 55 v[61,5] = 15 v[62,5] = 59 v[63,5] = 19 v[64,5] = 49 v[65,5] = 31 v[66,5] = 3 v[67,5] = 39 v[68,5] = 5 v[69,5] = 5 v[70,5] = 41 v[71,5] = 9 v[72,5] = 19 v[73,5] = 9 v[74,5] = 57 v[75,5] = 25 v[76,5] = 1 v[77,5] = 15 v[78,5] = 51 v[79,5] = 11 v[80,5] = 19 v[81,5] = 61 v[82,5] = 53 v[83,5] = 29 v[84,5] = 19 v[85,5] = 11 v[86,5] = 9 v[87,5] = 21 v[88,5] = 19 v[89,5] = 43 v[90,5] = 13 v[91,5] = 13 v[92,5] = 41 v[93,5] = 25 v[94,5] = 31 v[95,5] = 9 v[96,5] = 11 v[97,5] = 19 v[98,5] = 5 v[99,5] = 53 v[100,5] = 37 v[101,5] = 7 v[102,5] = 51 v[103,5] = 45 v[104,5] = 7 v[105,5] = 7 v[106,5] = 61 v[107,5] = 23 v[108,5] = 45 v[109,5] = 7 v[110,5] = 59 v[111,5] = 41 v[112,5] = 1 v[113,5] = 29 v[114,5] = 61 v[115,5] = 37 v[116,5] = 27 v[117,5] = 47 v[118,5] = 15 v[119,5] = 31 v[120,5] = 35 v[121,5] = 31 v[122,5] = 17 v[123,5] = 51 v[124,5] = 13 v[125,5] = 25 v[126,5] = 45 v[127,5] = 5 v[128,5] = 5 v[129,5] = 33 v[130,5] = 39 v[131,5] = 5 v[132,5] = 47 v[133,5] = 29 v[134,5] = 35 v[135,5] = 47 v[136,5] = 63 v[137,5] = 45 v[138,5] = 37 v[139,5] = 47 v[140,5] = 59 v[141,5] = 21 v[142,5] = 59 v[143,5] = 33 v[144,5] = 51 v[145,5] = 9 v[146,5] = 27 v[147,5] = 13 v[148,5] = 25 v[149,5] = 43 v[150,5] = 3 v[151,5] = 17 v[152,5] = 21 v[153,5] = 59 v[154,5] = 61 v[155,5] = 27 v[156,5] = 47 v[157,5] = 57 v[158,5] = 11 v[159,5] = 17 v[160,5] = 39 v[161,5] = 1 v[162,5] = 63 v[163,5] = 21 v[164,5] = 59 v[165,5] = 17 v[166,5] = 13 v[167,5] = 31 v[168,5] = 3 v[169,5] = 31 v[170,5] = 7 v[171,5] = 9 v[172,5] = 27 v[173,5] = 37 v[174,5] = 23 v[175,5] = 31 v[176,5] = 9 v[177,5] = 45 v[178,5] = 43 v[179,5] = 31 v[180,5] = 63 v[181,5] = 21 v[182,5] = 39 v[183,5] = 51 v[184,5] = 27 v[185,5] = 7 v[186,5] = 53 v[187,5] = 11 v[188,5] = 1 v[189,5] = 59 v[190,5] = 39 v[191,5] = 23 v[192,5] = 49 v[193,5] = 23 v[194,5] = 7 v[195,5] = 55 v[196,5] = 59 v[197,5] = 3 v[198,5] = 19 v[199,5] = 35 v[200,5] = 13 v[201,5] = 9 v[202,5] = 13 v[203,5] = 15 v[204,5] = 23 v[205,5] = 9 v[206,5] = 7 v[207,5] = 43 v[208,5] = 55 v[209,5] = 3 v[210,5] = 19 v[211,5] = 9 v[212,5] = 27 v[213,5] = 33 v[214,5] = 27 v[215,5] = 49 v[216,5] = 23 v[217,5] = 47 v[218,5] = 19 v[219,5] = 7 v[220,5] = 11 v[221,5] = 55 v[222,5] = 27 v[223,5] = 35 v[224,5] = 5 v[225,5] = 5 v[226,5] = 55 v[227,5] = 35 v[228,5] = 37 v[229,5] = 9 v[230,5] = 33 v[231,5] = 29 v[232,5] = 47 v[233,5] = 25 v[234,5] = 11 v[235,5] = 47 v[236,5] = 53 v[237,5] = 61 v[238,5] = 59 v[239,5] = 3 v[240,5] = 53 v[241,5] = 47 v[242,5] = 5 v[243,5] = 19 v[244,5] = 59 v[245,5] = 5 v[246,5] = 47 v[247,5] = 23 v[248,5] = 45 v[249,5] = 53 v[250,5] = 3 v[251,5] = 49 v[252,5] = 61 v[253,5] = 47 v[254,5] = 39 v[255,5] = 29 v[256,5] = 17 v[257,5] = 57 v[258,5] = 5 v[259,5] = 17 v[260,5] = 31 v[261,5] = 23 v[262,5] = 41 v[263,5] = 39 v[264,5] = 5 v[265,5] = 27 v[266,5] = 7 v[267,5] = 29 v[268,5] = 29 v[269,5] = 33 v[270,5] = 31 v[271,5] = 41 v[272,5] = 31 v[273,5] = 29 v[274,5] = 17 v[275,5] = 29 v[276,5] = 29 v[277,5] = 9 v[278,5] = 9 v[279,5] = 31 v[280,5] = 27 v[281,5] = 53 v[282,5] = 35 v[283,5] = 5 v[284,5] = 61 v[285,5] = 1 v[286,5] = 49 v[287,5] = 13 v[288,5] = 57 v[289,5] = 29 v[290,5] = 5 v[291,5] = 21 v[292,5] = 43 v[293,5] = 25 v[294,5] = 57 v[295,5] = 49 v[296,5] = 37 v[297,5] = 27 v[298,5] = 11 v[299,5] = 61 v[300,5] = 37 v[301,5] = 49 v[302,5] = 5 v[303,5] = 63 v[304,5] = 63 v[305,5] = 3 v[306,5] = 45 v[307,5] = 37 v[308,5] = 63 v[309,5] = 21 v[310,5] = 21 v[311,5] = 19 v[312,5] = 27 v[313,5] = 59 v[314,5] = 21 v[315,5] = 45 v[316,5] = 23 v[317,5] = 13 v[318,5] = 15 v[319,5] = 3 v[320,5] = 43 v[321,5] = 63 v[322,5] = 39 v[323,5] = 19 v[324,5] = 63 v[325,5] = 31 v[326,5] = 41 v[327,5] = 41 v[328,5] = 15 v[329,5] = 43 v[330,5] = 63 v[331,5] = 53 v[332,5] = 1 v[333,5] = 63 v[334,5] = 31 v[335,5] = 7 v[336,5] = 17 v[337,5] = 11 v[338,5] = 61 v[339,5] = 31 v[340,5] = 51 v[341,5] = 37 v[342,5] = 29 v[343,5] = 59 v[344,5] = 25 v[345,5] = 63 v[346,5] = 59 v[347,5] = 47 v[348,5] = 15 v[349,5] = 27 v[350,5] = 19 v[351,5] = 29 v[352,5] = 45 v[353,5] = 35 v[354,5] = 55 v[355,5] = 39 v[356,5] = 19 v[357,5] = 43 v[358,5] = 21 v[359,5] = 19 v[360,5] = 13 v[361,5] = 17 v[362,5] = 51 v[363,5] = 37 v[364,5] = 5 v[365,5] = 33 v[366,5] = 35 v[367,5] = 49 v[368,5] = 25 v[369,5] = 45 v[370,5] = 1 v[371,5] = 63 v[372,5] = 47 v[373,5] = 9 v[374,5] = 63 v[375,5] = 15 v[376,5] = 25 v[377,5] = 25 v[378,5] = 15 v[379,5] = 41 v[380,5] = 13 v[381,5] = 3 v[382,5] = 19 v[383,5] = 51 v[384,5] = 49 v[385,5] = 37 v[386,5] = 25 v[387,5] = 49 v[388,5] = 13 v[389,5] = 53 v[390,5] = 47 v[391,5] = 23 v[392,5] = 35 v[393,5] = 29 v[394,5] = 33 v[395,5] = 21 v[396,5] = 35 v[397,5] = 23 v[398,5] = 3 v[399,5] = 43 v[400,5] = 31 v[401,5] = 63 v[402,5] = 9 v[403,5] = 1 v[404,5] = 61 v[405,5] = 43 v[406,5] = 3 v[407,5] = 11 v[408,5] = 55 v[409,5] = 11 v[410,5] = 35 v[411,5] = 1 v[412,5] = 63 v[413,5] = 35 v[414,5] = 49 v[415,5] = 19 v[416,5] = 45 v[417,5] = 9 v[418,5] = 57 v[419,5] = 51 v[420,5] = 1 v[421,5] = 47 v[422,5] = 41 v[423,5] = 9 v[424,5] = 11 v[425,5] = 37 v[426,5] = 19 v[427,5] = 55 v[428,5] = 23 v[429,5] = 55 v[430,5] = 55 v[431,5] = 13 v[432,5] = 7 v[433,5] = 47 v[434,5] = 37 v[435,5] = 11 v[436,5] = 43 v[437,5] = 17 v[438,5] = 3 v[439,5] = 25 v[440,5] = 19 v[441,5] = 55 v[442,5] = 59 v[443,5] = 37 v[444,5] = 33 v[445,5] = 43 v[446,5] = 1 v[447,5] = 5 v[448,5] = 21 v[449,5] = 5 v[450,5] = 63 v[451,5] = 49 v[452,5] = 61 v[453,5] = 21 v[454,5] = 51 v[455,5] = 15 v[456,5] = 19 v[457,5] = 43 v[458,5] = 47 v[459,5] = 17 v[460,5] = 9 v[461,5] = 53 v[462,5] = 45 v[463,5] = 11 v[464,5] = 51 v[465,5] = 25 v[466,5] = 11 v[467,5] = 25 v[468,5] = 47 v[469,5] = 47 v[470,5] = 1 v[471,5] = 43 v[472,5] = 29 v[473,5] = 17 v[474,5] = 31 v[475,5] = 15 v[476,5] = 59 v[477,5] = 27 v[478,5] = 63 v[479,5] = 11 v[480,5] = 41 v[481,5] = 51 v[482,5] = 29 v[483,5] = 7 v[484,5] = 27 v[485,5] = 63 v[486,5] = 31 v[487,5] = 43 v[488,5] = 3 v[489,5] = 29 v[490,5] = 39 v[491,5] = 3 v[492,5] = 59 v[493,5] = 59 v[494,5] = 1 v[495,5] = 53 v[496,5] = 63 v[497,5] = 23 v[498,5] = 63 v[499,5] = 47 v[500,5] = 51 v[501,5] = 23 v[502,5] = 61 v[503,5] = 39 v[504,5] = 47 v[505,5] = 21 v[506,5] = 39 v[507,5] = 15 v[508,5] = 3 v[509,5] = 9 v[510,5] = 57 v[511,5] = 61 v[512,5] = 39 v[513,5] = 37 v[514,5] = 21 v[515,5] = 51 v[516,5] = 1 v[517,5] = 23 v[518,5] = 43 v[519,5] = 27 v[520,5] = 25 v[521,5] = 11 v[522,5] = 13 v[523,5] = 21 v[524,5] = 43 v[525,5] = 7 v[526,5] = 11 v[527,5] = 33 v[528,5] = 55 v[529,5] = 1 v[530,5] = 37 v[531,5] = 35 v[532,5] = 27 v[533,5] = 61 v[534,5] = 39 v[535,5] = 5 v[536,5] = 19 v[537,5] = 61 v[538,5] = 61 v[539,5] = 57 v[540,5] = 59 v[541,5] = 21 v[542,5] = 59 v[543,5] = 61 v[544,5] = 57 v[545,5] = 25 v[546,5] = 55 v[547,5] = 27 v[548,5] = 31 v[549,5] = 41 v[550,5] = 33 v[551,5] = 63 v[552,5] = 19 v[553,5] = 57 v[554,5] = 35 v[555,5] = 13 v[556,5] = 63 v[557,5] = 35 v[558,5] = 17 v[559,5] = 11 v[560,5] = 11 v[561,5] = 49 v[562,5] = 41 v[563,5] = 55 v[564,5] = 5 v[565,5] = 45 v[566,5] = 17 v[567,5] = 35 v[568,5] = 5 v[569,5] = 31 v[570,5] = 31 v[571,5] = 37 v[572,5] = 17 v[573,5] = 45 v[574,5] = 51 v[575,5] = 1 v[576,5] = 39 v[577,5] = 49 v[578,5] = 55 v[579,5] = 19 v[580,5] = 41 v[581,5] = 13 v[582,5] = 5 v[583,5] = 51 v[584,5] = 5 v[585,5] = 49 v[586,5] = 1 v[587,5] = 21 v[588,5] = 13 v[589,5] = 17 v[590,5] = 59 v[591,5] = 51 v[592,5] = 11 v[593,5] = 3 v[594,5] = 61 v[595,5] = 1 v[596,5] = 33 v[597,5] = 37 v[598,5] = 33 v[599,5] = 61 v[600,5] = 25 v[601,5] = 27 v[602,5] = 59 v[603,5] = 7 v[604,5] = 49 v[605,5] = 13 v[606,5] = 63 v[607,5] = 3 v[608,5] = 33 v[609,5] = 3 v[610,5] = 15 v[611,5] = 9 v[612,5] = 13 v[613,5] = 35 v[614,5] = 39 v[615,5] = 11 v[616,5] = 59 v[617,5] = 59 v[618,5] = 1 v[619,5] = 57 v[620,5] = 11 v[621,5] = 5 v[622,5] = 57 v[623,5] = 13 v[624,5] = 31 v[625,5] = 13 v[626,5] = 11 v[627,5] = 55 v[628,5] = 45 v[629,5] = 9 v[630,5] = 55 v[631,5] = 55 v[632,5] = 19 v[633,5] = 25 v[634,5] = 41 v[635,5] = 23 v[636,5] = 45 v[637,5] = 29 v[638,5] = 63 v[639,5] = 59 v[640,5] = 27 v[641,5] = 39 v[642,5] = 21 v[643,5] = 37 v[644,5] = 7 v[645,5] = 61 v[646,5] = 49 v[647,5] = 35 v[648,5] = 39 v[649,5] = 9 v[650,5] = 29 v[651,5] = 7 v[652,5] = 25 v[653,5] = 23 v[654,5] = 57 v[655,5] = 5 v[656,5] = 19 v[657,5] = 15 v[658,5] = 33 v[659,5] = 49 v[660,5] = 37 v[661,5] = 25 v[662,5] = 17 v[663,5] = 45 v[664,5] = 29 v[665,5] = 15 v[666,5] = 25 v[667,5] = 3 v[668,5] = 3 v[669,5] = 49 v[670,5] = 11 v[671,5] = 39 v[672,5] = 15 v[673,5] = 19 v[674,5] = 57 v[675,5] = 39 v[676,5] = 15 v[677,5] = 11 v[678,5] = 3 v[679,5] = 57 v[680,5] = 31 v[681,5] = 55 v[682,5] = 61 v[683,5] = 19 v[684,5] = 5 v[685,5] = 41 v[686,5] = 35 v[687,5] = 59 v[688,5] = 61 v[689,5] = 39 v[690,5] = 41 v[691,5] = 53 v[692,5] = 53 v[693,5] = 63 v[694,5] = 31 v[695,5] = 9 v[696,5] = 59 v[697,5] = 13 v[698,5] = 35 v[699,5] = 55 v[700,5] = 41 v[701,5] = 49 v[702,5] = 5 v[703,5] = 41 v[704,5] = 25 v[705,5] = 27 v[706,5] = 43 v[707,5] = 5 v[708,5] = 5 v[709,5] = 43 v[710,5] = 5 v[711,5] = 5 v[712,5] = 17 v[713,5] = 5 v[714,5] = 15 v[715,5] = 27 v[716,5] = 29 v[717,5] = 17 v[718,5] = 9 v[719,5] = 3 v[720,5] = 55 v[721,5] = 31 v[722,5] = 1 v[723,5] = 45 v[724,5] = 45 v[725,5] = 13 v[726,5] = 57 v[727,5] = 17 v[728,5] = 3 v[729,5] = 61 v[730,5] = 15 v[731,5] = 49 v[732,5] = 15 v[733,5] = 47 v[734,5] = 9 v[735,5] = 37 v[736,5] = 45 v[737,5] = 9 v[738,5] = 51 v[739,5] = 61 v[740,5] = 21 v[741,5] = 33 v[742,5] = 11 v[743,5] = 21 v[744,5] = 63 v[745,5] = 63 v[746,5] = 47 v[747,5] = 57 v[748,5] = 61 v[749,5] = 49 v[750,5] = 9 v[751,5] = 59 v[752,5] = 19 v[753,5] = 29 v[754,5] = 21 v[755,5] = 23 v[756,5] = 55 v[757,5] = 23 v[758,5] = 43 v[759,5] = 41 v[760,5] = 57 v[761,5] = 9 v[762,5] = 39 v[763,5] = 27 v[764,5] = 41 v[765,5] = 35 v[766,5] = 61 v[767,5] = 29 v[768,5] = 57 v[769,5] = 63 v[770,5] = 21 v[771,5] = 31 v[772,5] = 59 v[773,5] = 35 v[774,5] = 49 v[775,5] = 3 v[776,5] = 49 v[777,5] = 47 v[778,5] = 49 v[779,5] = 33 v[780,5] = 21 v[781,5] = 19 v[782,5] = 21 v[783,5] = 35 v[784,5] = 11 v[785,5] = 17 v[786,5] = 37 v[787,5] = 23 v[788,5] = 59 v[789,5] = 13 v[790,5] = 37 v[791,5] = 35 v[792,5] = 55 v[793,5] = 57 v[794,5] = 1 v[795,5] = 29 v[796,5] = 45 v[797,5] = 11 v[798,5] = 1 v[799,5] = 15 v[800,5] = 9 v[801,5] = 33 v[802,5] = 19 v[803,5] = 53 v[804,5] = 43 v[805,5] = 39 v[806,5] = 23 v[807,5] = 7 v[808,5] = 13 v[809,5] = 13 v[810,5] = 1 v[811,5] = 19 v[812,5] = 41 v[813,5] = 55 v[814,5] = 1 v[815,5] = 13 v[816,5] = 15 v[817,5] = 59 v[818,5] = 55 v[819,5] = 15 v[820,5] = 3 v[821,5] = 57 v[822,5] = 37 v[823,5] = 31 v[824,5] = 17 v[825,5] = 1 v[826,5] = 3 v[827,5] = 21 v[828,5] = 29 v[829,5] = 25 v[830,5] = 55 v[831,5] = 9 v[832,5] = 37 v[833,5] = 33 v[834,5] = 53 v[835,5] = 41 v[836,5] = 51 v[837,5] = 19 v[838,5] = 57 v[839,5] = 13 v[840,5] = 63 v[841,5] = 43 v[842,5] = 19 v[843,5] = 7 v[844,5] = 13 v[845,5] = 37 v[846,5] = 33 v[847,5] = 19 v[848,5] = 15 v[849,5] = 63 v[850,5] = 51 v[851,5] = 11 v[852,5] = 49 v[853,5] = 23 v[854,5] = 57 v[855,5] = 47 v[856,5] = 51 v[857,5] = 15 v[858,5] = 53 v[859,5] = 41 v[860,5] = 1 v[861,5] = 15 v[862,5] = 37 v[863,5] = 61 v[864,5] = 11 v[865,5] = 35 v[866,5] = 29 v[867,5] = 33 v[868,5] = 23 v[869,5] = 55 v[870,5] = 11 v[871,5] = 59 v[872,5] = 19 v[873,5] = 61 v[874,5] = 61 v[875,5] = 45 v[876,5] = 13 v[877,5] = 49 v[878,5] = 13 v[879,5] = 63 v[880,5] = 5 v[881,5] = 61 v[882,5] = 5 v[883,5] = 31 v[884,5] = 17 v[885,5] = 61 v[886,5] = 63 v[887,5] = 13 v[888,5] = 27 v[889,5] = 57 v[890,5] = 1 v[891,5] = 21 v[892,5] = 5 v[893,5] = 11 v[894,5] = 39 v[895,5] = 57 v[896,5] = 51 v[897,5] = 53 v[898,5] = 39 v[899,5] = 25 v[900,5] = 41 v[901,5] = 39 v[902,5] = 37 v[903,5] = 23 v[904,5] = 31 v[905,5] = 25 v[906,5] = 33 v[907,5] = 17 v[908,5] = 57 v[909,5] = 29 v[910,5] = 27 v[911,5] = 23 v[912,5] = 47 v[913,5] = 41 v[914,5] = 29 v[915,5] = 19 v[916,5] = 47 v[917,5] = 41 v[918,5] = 25 v[919,5] = 5 v[920,5] = 51 v[921,5] = 43 v[922,5] = 39 v[923,5] = 29 v[924,5] = 7 v[925,5] = 31 v[926,5] = 45 v[927,5] = 51 v[928,5] = 49 v[929,5] = 55 v[930,5] = 17 v[931,5] = 43 v[932,5] = 49 v[933,5] = 45 v[934,5] = 9 v[935,5] = 29 v[936,5] = 3 v[937,5] = 5 v[938,5] = 47 v[939,5] = 9 v[940,5] = 15 v[941,5] = 19 v[942,5] = 51 v[943,5] = 45 v[944,5] = 57 v[945,5] = 63 v[946,5] = 9 v[947,5] = 21 v[948,5] = 59 v[949,5] = 3 v[950,5] = 9 v[951,5] = 13 v[952,5] = 45 v[953,5] = 23 v[954,5] = 15 v[955,5] = 31 v[956,5] = 21 v[957,5] = 15 v[958,5] = 51 v[959,5] = 35 v[960,5] = 9 v[961,5] = 11 v[962,5] = 61 v[963,5] = 23 v[964,5] = 53 v[965,5] = 29 v[966,5] = 51 v[967,5] = 45 v[968,5] = 31 v[969,5] = 29 v[970,5] = 5 v[971,5] = 35 v[972,5] = 29 v[973,5] = 53 v[974,5] = 35 v[975,5] = 17 v[976,5] = 59 v[977,5] = 55 v[978,5] = 27 v[979,5] = 51 v[980,5] = 59 v[981,5] = 27 v[982,5] = 47 v[983,5] = 15 v[984,5] = 29 v[985,5] = 37 v[986,5] = 7 v[987,5] = 49 v[988,5] = 55 v[989,5] = 5 v[990,5] = 19 v[991,5] = 45 v[992,5] = 29 v[993,5] = 19 v[994,5] = 57 v[995,5] = 33 v[996,5] = 53 v[997,5] = 45 v[998,5] = 21 v[999,5] = 9 v[1000,5] = 3 v[1001,5] = 35 v[1002,5] = 29 v[1003,5] = 43 v[1004,5] = 31 v[1005,5] = 39 v[1006,5] = 3 v[1007,5] = 45 v[1008,5] = 1 v[1009,5] = 41 v[1010,5] = 29 v[1011,5] = 5 v[1012,5] = 59 v[1013,5] = 41 v[1014,5] = 33 v[1015,5] = 35 v[1016,5] = 27 v[1017,5] = 19 v[1018,5] = 13 v[1019,5] = 25 v[1020,5] = 27 v[1021,5] = 43 v[1022,5] = 33 v[1023,5] = 35 v[1024,5] = 17 v[1025,5] = 17 v[1026,5] = 23 v[1027,5] = 7 v[1028,5] = 35 v[1029,5] = 15 v[1030,5] = 61 v[1031,5] = 61 v[1032,5] = 53 v[1033,5] = 5 v[1034,5] = 15 v[1035,5] = 23 v[1036,5] = 11 v[1037,5] = 13 v[1038,5] = 43 v[1039,5] = 55 v[1040,5] = 47 v[1041,5] = 25 v[1042,5] = 43 v[1043,5] = 15 v[1044,5] = 57 v[1045,5] = 45 v[1046,5] = 1 v[1047,5] = 49 v[1048,5] = 63 v[1049,5] = 57 v[1050,5] = 15 v[1051,5] = 31 v[1052,5] = 31 v[1053,5] = 7 v[1054,5] = 53 v[1055,5] = 27 v[1056,5] = 15 v[1057,5] = 47 v[1058,5] = 23 v[1059,5] = 7 v[1060,5] = 29 v[1061,5] = 53 v[1062,5] = 47 v[1063,5] = 9 v[1064,5] = 53 v[1065,5] = 3 v[1066,5] = 25 v[1067,5] = 55 v[1068,5] = 45 v[1069,5] = 63 v[1070,5] = 21 v[1071,5] = 17 v[1072,5] = 23 v[1073,5] = 31 v[1074,5] = 27 v[1075,5] = 27 v[1076,5] = 43 v[1077,5] = 63 v[1078,5] = 55 v[1079,5] = 63 v[1080,5] = 45 v[1081,5] = 51 v[1082,5] = 15 v[1083,5] = 27 v[1084,5] = 5 v[1085,5] = 37 v[1086,5] = 43 v[1087,5] = 11 v[1088,5] = 27 v[1089,5] = 5 v[1090,5] = 27 v[1091,5] = 59 v[1092,5] = 21 v[1093,5] = 7 v[1094,5] = 39 v[1095,5] = 27 v[1096,5] = 63 v[1097,5] = 35 v[1098,5] = 47 v[1099,5] = 55 v[1100,5] = 17 v[1101,5] = 17 v[1102,5] = 17 v[1103,5] = 3 v[1104,5] = 19 v[1105,5] = 21 v[1106,5] = 13 v[1107,5] = 49 v[1108,5] = 61 v[1109,5] = 39 v[1110,5] = 15 v[19,6] = 13 v[20,6] = 33 v[21,6] = 115 v[22,6] = 41 v[23,6] = 79 v[24,6] = 17 v[25,6] = 29 v[26,6] = 119 v[27,6] = 75 v[28,6] = 73 v[29,6] = 105 v[30,6] = 7 v[31,6] = 59 v[32,6] = 65 v[33,6] = 21 v[34,6] = 3 v[35,6] = 113 v[36,6] = 61 v[37,6] = 89 v[38,6] = 45 v[39,6] = 107 v[40,6] = 21 v[41,6] = 71 v[42,6] = 79 v[43,6] = 19 v[44,6] = 71 v[45,6] = 61 v[46,6] = 41 v[47,6] = 57 v[48,6] = 121 v[49,6] = 87 v[50,6] = 119 v[51,6] = 55 v[52,6] = 85 v[53,6] = 121 v[54,6] = 119 v[55,6] = 11 v[56,6] = 23 v[57,6] = 61 v[58,6] = 11 v[59,6] = 35 v[60,6] = 33 v[61,6] = 43 v[62,6] = 107 v[63,6] = 113 v[64,6] = 101 v[65,6] = 29 v[66,6] = 87 v[67,6] = 119 v[68,6] = 97 v[69,6] = 29 v[70,6] = 17 v[71,6] = 89 v[72,6] = 5 v[73,6] = 127 v[74,6] = 89 v[75,6] = 119 v[76,6] = 117 v[77,6] = 103 v[78,6] = 105 v[79,6] = 41 v[80,6] = 83 v[81,6] = 25 v[82,6] = 41 v[83,6] = 55 v[84,6] = 69 v[85,6] = 117 v[86,6] = 49 v[87,6] = 127 v[88,6] = 29 v[89,6] = 1 v[90,6] = 99 v[91,6] = 53 v[92,6] = 83 v[93,6] = 15 v[94,6] = 31 v[95,6] = 73 v[96,6] = 115 v[97,6] = 35 v[98,6] = 21 v[99,6] = 89 v[100,6] = 5 v[101,6] = 1 v[102,6] = 91 v[103,6] = 53 v[104,6] = 35 v[105,6] = 95 v[106,6] = 83 v[107,6] = 19 v[108,6] = 85 v[109,6] = 55 v[110,6] = 51 v[111,6] = 101 v[112,6] = 33 v[113,6] = 41 v[114,6] = 55 v[115,6] = 45 v[116,6] = 95 v[117,6] = 61 v[118,6] = 27 v[119,6] = 37 v[120,6] = 89 v[121,6] = 75 v[122,6] = 57 v[123,6] = 61 v[124,6] = 15 v[125,6] = 117 v[126,6] = 15 v[127,6] = 21 v[128,6] = 27 v[129,6] = 25 v[130,6] = 27 v[131,6] = 123 v[132,6] = 39 v[133,6] = 109 v[134,6] = 93 v[135,6] = 51 v[136,6] = 21 v[137,6] = 91 v[138,6] = 109 v[139,6] = 107 v[140,6] = 45 v[141,6] = 15 v[142,6] = 93 v[143,6] = 127 v[144,6] = 3 v[145,6] = 53 v[146,6] = 81 v[147,6] = 79 v[148,6] = 107 v[149,6] = 79 v[150,6] = 87 v[151,6] = 35 v[152,6] = 109 v[153,6] = 73 v[154,6] = 35 v[155,6] = 83 v[156,6] = 107 v[157,6] = 1 v[158,6] = 51 v[159,6] = 7 v[160,6] = 59 v[161,6] = 33 v[162,6] = 115 v[163,6] = 43 v[164,6] = 111 v[165,6] = 45 v[166,6] = 121 v[167,6] = 105 v[168,6] = 125 v[169,6] = 87 v[170,6] = 101 v[171,6] = 41 v[172,6] = 95 v[173,6] = 75 v[174,6] = 1 v[175,6] = 57 v[176,6] = 117 v[177,6] = 21 v[178,6] = 27 v[179,6] = 67 v[180,6] = 29 v[181,6] = 53 v[182,6] = 117 v[183,6] = 63 v[184,6] = 1 v[185,6] = 77 v[186,6] = 89 v[187,6] = 115 v[188,6] = 49 v[189,6] = 127 v[190,6] = 15 v[191,6] = 79 v[192,6] = 81 v[193,6] = 29 v[194,6] = 65 v[195,6] = 103 v[196,6] = 33 v[197,6] = 73 v[198,6] = 79 v[199,6] = 29 v[200,6] = 21 v[201,6] = 113 v[202,6] = 31 v[203,6] = 33 v[204,6] = 107 v[205,6] = 95 v[206,6] = 111 v[207,6] = 59 v[208,6] = 99 v[209,6] = 117 v[210,6] = 63 v[211,6] = 63 v[212,6] = 99 v[213,6] = 39 v[214,6] = 9 v[215,6] = 35 v[216,6] = 63 v[217,6] = 125 v[218,6] = 99 v[219,6] = 45 v[220,6] = 93 v[221,6] = 33 v[222,6] = 93 v[223,6] = 9 v[224,6] = 105 v[225,6] = 75 v[226,6] = 51 v[227,6] = 115 v[228,6] = 11 v[229,6] = 37 v[230,6] = 17 v[231,6] = 41 v[232,6] = 21 v[233,6] = 43 v[234,6] = 73 v[235,6] = 19 v[236,6] = 93 v[237,6] = 7 v[238,6] = 95 v[239,6] = 81 v[240,6] = 93 v[241,6] = 79 v[242,6] = 81 v[243,6] = 55 v[244,6] = 9 v[245,6] = 51 v[246,6] = 63 v[247,6] = 45 v[248,6] = 89 v[249,6] = 73 v[250,6] = 19 v[251,6] = 115 v[252,6] = 39 v[253,6] = 47 v[254,6] = 81 v[255,6] = 39 v[256,6] = 5 v[257,6] = 5 v[258,6] = 45 v[259,6] = 53 v[260,6] = 65 v[261,6] = 49 v[262,6] = 17 v[263,6] = 105 v[264,6] = 13 v[265,6] = 107 v[266,6] = 5 v[267,6] = 5 v[268,6] = 19 v[269,6] = 73 v[270,6] = 59 v[271,6] = 43 v[272,6] = 83 v[273,6] = 97 v[274,6] = 115 v[275,6] = 27 v[276,6] = 1 v[277,6] = 69 v[278,6] = 103 v[279,6] = 3 v[280,6] = 99 v[281,6] = 103 v[282,6] = 63 v[283,6] = 67 v[284,6] = 25 v[285,6] = 121 v[286,6] = 97 v[287,6] = 77 v[288,6] = 13 v[289,6] = 83 v[290,6] = 103 v[291,6] = 41 v[292,6] = 11 v[293,6] = 27 v[294,6] = 81 v[295,6] = 37 v[296,6] = 33 v[297,6] = 125 v[298,6] = 71 v[299,6] = 41 v[300,6] = 41 v[301,6] = 59 v[302,6] = 41 v[303,6] = 87 v[304,6] = 123 v[305,6] = 43 v[306,6] = 101 v[307,6] = 63 v[308,6] = 45 v[309,6] = 39 v[310,6] = 21 v[311,6] = 97 v[312,6] = 15 v[313,6] = 97 v[314,6] = 111 v[315,6] = 21 v[316,6] = 49 v[317,6] = 13 v[318,6] = 17 v[319,6] = 79 v[320,6] = 91 v[321,6] = 65 v[322,6] = 105 v[323,6] = 75 v[324,6] = 1 v[325,6] = 45 v[326,6] = 67 v[327,6] = 83 v[328,6] = 107 v[329,6] = 125 v[330,6] = 87 v[331,6] = 15 v[332,6] = 81 v[333,6] = 95 v[334,6] = 105 v[335,6] = 65 v[336,6] = 45 v[337,6] = 59 v[338,6] = 103 v[339,6] = 23 v[340,6] = 103 v[341,6] = 99 v[342,6] = 67 v[343,6] = 99 v[344,6] = 47 v[345,6] = 117 v[346,6] = 71 v[347,6] = 89 v[348,6] = 35 v[349,6] = 53 v[350,6] = 73 v[351,6] = 9 v[352,6] = 115 v[353,6] = 49 v[354,6] = 37 v[355,6] = 1 v[356,6] = 35 v[357,6] = 9 v[358,6] = 45 v[359,6] = 81 v[360,6] = 19 v[361,6] = 127 v[362,6] = 17 v[363,6] = 17 v[364,6] = 105 v[365,6] = 89 v[366,6] = 49 v[367,6] = 101 v[368,6] = 7 v[369,6] = 37 v[370,6] = 33 v[371,6] = 11 v[372,6] = 95 v[373,6] = 95 v[374,6] = 17 v[375,6] = 111 v[376,6] = 105 v[377,6] = 41 v[378,6] = 115 v[379,6] = 5 v[380,6] = 69 v[381,6] = 101 v[382,6] = 27 v[383,6] = 27 v[384,6] = 101 v[385,6] = 103 v[386,6] = 53 v[387,6] = 9 v[388,6] = 21 v[389,6] = 43 v[390,6] = 79 v[391,6] = 91 v[392,6] = 65 v[393,6] = 117 v[394,6] = 87 v[395,6] = 125 v[396,6] = 55 v[397,6] = 45 v[398,6] = 63 v[399,6] = 85 v[400,6] = 83 v[401,6] = 97 v[402,6] = 45 v[403,6] = 83 v[404,6] = 87 v[405,6] = 113 v[406,6] = 93 v[407,6] = 95 v[408,6] = 5 v[409,6] = 17 v[410,6] = 77 v[411,6] = 77 v[412,6] = 127 v[413,6] = 123 v[414,6] = 45 v[415,6] = 81 v[416,6] = 85 v[417,6] = 121 v[418,6] = 119 v[419,6] = 27 v[420,6] = 85 v[421,6] = 41 v[422,6] = 49 v[423,6] = 15 v[424,6] = 107 v[425,6] = 21 v[426,6] = 51 v[427,6] = 119 v[428,6] = 11 v[429,6] = 87 v[430,6] = 101 v[431,6] = 115 v[432,6] = 63 v[433,6] = 63 v[434,6] = 37 v[435,6] = 121 v[436,6] = 109 v[437,6] = 7 v[438,6] = 43 v[439,6] = 69 v[440,6] = 19 v[441,6] = 77 v[442,6] = 49 v[443,6] = 71 v[444,6] = 59 v[445,6] = 35 v[446,6] = 7 v[447,6] = 13 v[448,6] = 55 v[449,6] = 101 v[450,6] = 127 v[451,6] = 103 v[452,6] = 85 v[453,6] = 109 v[454,6] = 29 v[455,6] = 61 v[456,6] = 67 v[457,6] = 21 v[458,6] = 111 v[459,6] = 67 v[460,6] = 23 v[461,6] = 57 v[462,6] = 75 v[463,6] = 71 v[464,6] = 101 v[465,6] = 123 v[466,6] = 41 v[467,6] = 107 v[468,6] = 101 v[469,6] = 107 v[470,6] = 125 v[471,6] = 27 v[472,6] = 47 v[473,6] = 119 v[474,6] = 41 v[475,6] = 19 v[476,6] = 127 v[477,6] = 33 v[478,6] = 31 v[479,6] = 109 v[480,6] = 7 v[481,6] = 91 v[482,6] = 91 v[483,6] = 39 v[484,6] = 125 v[485,6] = 105 v[486,6] = 47 v[487,6] = 125 v[488,6] = 123 v[489,6] = 91 v[490,6] = 9 v[491,6] = 103 v[492,6] = 45 v[493,6] = 23 v[494,6] = 117 v[495,6] = 9 v[496,6] = 125 v[497,6] = 73 v[498,6] = 11 v[499,6] = 37 v[500,6] = 61 v[501,6] = 79 v[502,6] = 21 v[503,6] = 5 v[504,6] = 47 v[505,6] = 117 v[506,6] = 67 v[507,6] = 53 v[508,6] = 85 v[509,6] = 33 v[510,6] = 81 v[511,6] = 121 v[512,6] = 47 v[513,6] = 61 v[514,6] = 51 v[515,6] = 127 v[516,6] = 29 v[517,6] = 65 v[518,6] = 45 v[519,6] = 41 v[520,6] = 95 v[521,6] = 57 v[522,6] = 73 v[523,6] = 33 v[524,6] = 117 v[525,6] = 61 v[526,6] = 111 v[527,6] = 59 v[528,6] = 123 v[529,6] = 65 v[530,6] = 47 v[531,6] = 105 v[532,6] = 23 v[533,6] = 29 v[534,6] = 107 v[535,6] = 37 v[536,6] = 81 v[537,6] = 67 v[538,6] = 29 v[539,6] = 115 v[540,6] = 119 v[541,6] = 75 v[542,6] = 73 v[543,6] = 99 v[544,6] = 103 v[545,6] = 7 v[546,6] = 57 v[547,6] = 45 v[548,6] = 61 v[549,6] = 95 v[550,6] = 49 v[551,6] = 101 v[552,6] = 101 v[553,6] = 35 v[554,6] = 47 v[555,6] = 119 v[556,6] = 39 v[557,6] = 67 v[558,6] = 31 v[559,6] = 103 v[560,6] = 7 v[561,6] = 61 v[562,6] = 127 v[563,6] = 87 v[564,6] = 3 v[565,6] = 35 v[566,6] = 29 v[567,6] = 73 v[568,6] = 95 v[569,6] = 103 v[570,6] = 71 v[571,6] = 75 v[572,6] = 51 v[573,6] = 87 v[574,6] = 57 v[575,6] = 97 v[576,6] = 11 v[577,6] = 105 v[578,6] = 87 v[579,6] = 41 v[580,6] = 73 v[581,6] = 109 v[582,6] = 69 v[583,6] = 35 v[584,6] = 121 v[585,6] = 39 v[586,6] = 111 v[587,6] = 1 v[588,6] = 77 v[589,6] = 39 v[590,6] = 47 v[591,6] = 53 v[592,6] = 91 v[593,6] = 3 v[594,6] = 17 v[595,6] = 51 v[596,6] = 83 v[597,6] = 39 v[598,6] = 125 v[599,6] = 85 v[600,6] = 111 v[601,6] = 21 v[602,6] = 69 v[603,6] = 85 v[604,6] = 29 v[605,6] = 55 v[606,6] = 11 v[607,6] = 117 v[608,6] = 1 v[609,6] = 47 v[610,6] = 17 v[611,6] = 65 v[612,6] = 63 v[613,6] = 47 v[614,6] = 117 v[615,6] = 17 v[616,6] = 115 v[617,6] = 51 v[618,6] = 25 v[619,6] = 33 v[620,6] = 123 v[621,6] = 123 v[622,6] = 83 v[623,6] = 51 v[624,6] = 113 v[625,6] = 95 v[626,6] = 121 v[627,6] = 51 v[628,6] = 91 v[629,6] = 109 v[630,6] = 43 v[631,6] = 55 v[632,6] = 35 v[633,6] = 55 v[634,6] = 87 v[635,6] = 33 v[636,6] = 37 v[637,6] = 5 v[638,6] = 3 v[639,6] = 45 v[640,6] = 21 v[641,6] = 105 v[642,6] = 127 v[643,6] = 35 v[644,6] = 17 v[645,6] = 35 v[646,6] = 37 v[647,6] = 97 v[648,6] = 97 v[649,6] = 21 v[650,6] = 77 v[651,6] = 123 v[652,6] = 17 v[653,6] = 89 v[654,6] = 53 v[655,6] = 105 v[656,6] = 75 v[657,6] = 25 v[658,6] = 125 v[659,6] = 13 v[660,6] = 47 v[661,6] = 21 v[662,6] = 125 v[663,6] = 23 v[664,6] = 55 v[665,6] = 63 v[666,6] = 61 v[667,6] = 5 v[668,6] = 17 v[669,6] = 93 v[670,6] = 57 v[671,6] = 121 v[672,6] = 69 v[673,6] = 73 v[674,6] = 93 v[675,6] = 121 v[676,6] = 105 v[677,6] = 75 v[678,6] = 91 v[679,6] = 67 v[680,6] = 95 v[681,6] = 75 v[682,6] = 9 v[683,6] = 69 v[684,6] = 97 v[685,6] = 99 v[686,6] = 93 v[687,6] = 11 v[688,6] = 53 v[689,6] = 19 v[690,6] = 73 v[691,6] = 5 v[692,6] = 33 v[693,6] = 79 v[694,6] = 107 v[695,6] = 65 v[696,6] = 69 v[697,6] = 79 v[698,6] = 125 v[699,6] = 25 v[700,6] = 93 v[701,6] = 55 v[702,6] = 61 v[703,6] = 17 v[704,6] = 117 v[705,6] = 69 v[706,6] = 97 v[707,6] = 87 v[708,6] = 111 v[709,6] = 37 v[710,6] = 93 v[711,6] = 59 v[712,6] = 79 v[713,6] = 95 v[714,6] = 53 v[715,6] = 115 v[716,6] = 53 v[717,6] = 85 v[718,6] = 85 v[719,6] = 65 v[720,6] = 59 v[721,6] = 23 v[722,6] = 75 v[723,6] = 21 v[724,6] = 67 v[725,6] = 27 v[726,6] = 99 v[727,6] = 79 v[728,6] = 27 v[729,6] = 3 v[730,6] = 95 v[731,6] = 27 v[732,6] = 69 v[733,6] = 19 v[734,6] = 75 v[735,6] = 47 v[736,6] = 59 v[737,6] = 41 v[738,6] = 85 v[739,6] = 77 v[740,6] = 99 v[741,6] = 55 v[742,6] = 49 v[743,6] = 93 v[744,6] = 93 v[745,6] = 119 v[746,6] = 51 v[747,6] = 125 v[748,6] = 63 v[749,6] = 13 v[750,6] = 15 v[751,6] = 45 v[752,6] = 61 v[753,6] = 19 v[754,6] = 105 v[755,6] = 115 v[756,6] = 17 v[757,6] = 83 v[758,6] = 7 v[759,6] = 7 v[760,6] = 11 v[761,6] = 61 v[762,6] = 37 v[763,6] = 63 v[764,6] = 89 v[765,6] = 95 v[766,6] = 119 v[767,6] = 113 v[768,6] = 67 v[769,6] = 123 v[770,6] = 91 v[771,6] = 33 v[772,6] = 37 v[773,6] = 99 v[774,6] = 43 v[775,6] = 11 v[776,6] = 33 v[777,6] = 65 v[778,6] = 81 v[779,6] = 79 v[780,6] = 81 v[781,6] = 107 v[782,6] = 63 v[783,6] = 63 v[784,6] = 55 v[785,6] = 89 v[786,6] = 91 v[787,6] = 25 v[788,6] = 93 v[789,6] = 101 v[790,6] = 27 v[791,6] = 55 v[792,6] = 75 v[793,6] = 121 v[794,6] = 79 v[795,6] = 43 v[796,6] = 125 v[797,6] = 73 v[798,6] = 27 v[799,6] = 109 v[800,6] = 35 v[801,6] = 21 v[802,6] = 71 v[803,6] = 113 v[804,6] = 89 v[805,6] = 59 v[806,6] = 95 v[807,6] = 41 v[808,6] = 45 v[809,6] = 113 v[810,6] = 119 v[811,6] = 113 v[812,6] = 39 v[813,6] = 59 v[814,6] = 73 v[815,6] = 15 v[816,6] = 13 v[817,6] = 59 v[818,6] = 67 v[819,6] = 121 v[820,6] = 27 v[821,6] = 7 v[822,6] = 105 v[823,6] = 15 v[824,6] = 59 v[825,6] = 59 v[826,6] = 35 v[827,6] = 91 v[828,6] = 89 v[829,6] = 23 v[830,6] = 125 v[831,6] = 97 v[832,6] = 53 v[833,6] = 41 v[834,6] = 91 v[835,6] = 111 v[836,6] = 29 v[837,6] = 31 v[838,6] = 3 v[839,6] = 103 v[840,6] = 61 v[841,6] = 71 v[842,6] = 35 v[843,6] = 7 v[844,6] = 119 v[845,6] = 29 v[846,6] = 45 v[847,6] = 49 v[848,6] = 111 v[849,6] = 41 v[850,6] = 109 v[851,6] = 59 v[852,6] = 125 v[853,6] = 13 v[854,6] = 27 v[855,6] = 19 v[856,6] = 79 v[857,6] = 9 v[858,6] = 75 v[859,6] = 83 v[860,6] = 81 v[861,6] = 33 v[862,6] = 91 v[863,6] = 109 v[864,6] = 33 v[865,6] = 29 v[866,6] = 107 v[867,6] = 111 v[868,6] = 101 v[869,6] = 107 v[870,6] = 109 v[871,6] = 65 v[872,6] = 59 v[873,6] = 43 v[874,6] = 37 v[875,6] = 1 v[876,6] = 9 v[877,6] = 15 v[878,6] = 109 v[879,6] = 37 v[880,6] = 111 v[881,6] = 113 v[882,6] = 119 v[883,6] = 79 v[884,6] = 73 v[885,6] = 65 v[886,6] = 71 v[887,6] = 93 v[888,6] = 17 v[889,6] = 101 v[890,6] = 87 v[891,6] = 97 v[892,6] = 43 v[893,6] = 23 v[894,6] = 75 v[895,6] = 109 v[896,6] = 41 v[897,6] = 49 v[898,6] = 53 v[899,6] = 31 v[900,6] = 97 v[901,6] = 105 v[902,6] = 109 v[903,6] = 119 v[904,6] = 51 v[905,6] = 9 v[906,6] = 53 v[907,6] = 113 v[908,6] = 97 v[909,6] = 73 v[910,6] = 89 v[911,6] = 79 v[912,6] = 49 v[913,6] = 61 v[914,6] = 105 v[915,6] = 13 v[916,6] = 99 v[917,6] = 53 v[918,6] = 71 v[919,6] = 7 v[920,6] = 87 v[921,6] = 21 v[922,6] = 101 v[923,6] = 5 v[924,6] = 71 v[925,6] = 31 v[926,6] = 123 v[927,6] = 121 v[928,6] = 121 v[929,6] = 73 v[930,6] = 79 v[931,6] = 115 v[932,6] = 13 v[933,6] = 39 v[934,6] = 101 v[935,6] = 19 v[936,6] = 37 v[937,6] = 51 v[938,6] = 83 v[939,6] = 97 v[940,6] = 55 v[941,6] = 81 v[942,6] = 91 v[943,6] = 127 v[944,6] = 105 v[945,6] = 89 v[946,6] = 63 v[947,6] = 47 v[948,6] = 49 v[949,6] = 75 v[950,6] = 37 v[951,6] = 77 v[952,6] = 15 v[953,6] = 49 v[954,6] = 107 v[955,6] = 23 v[956,6] = 23 v[957,6] = 35 v[958,6] = 19 v[959,6] = 69 v[960,6] = 17 v[961,6] = 59 v[962,6] = 63 v[963,6] = 73 v[964,6] = 29 v[965,6] = 125 v[966,6] = 61 v[967,6] = 65 v[968,6] = 95 v[969,6] = 101 v[970,6] = 81 v[971,6] = 57 v[972,6] = 69 v[973,6] = 83 v[974,6] = 37 v[975,6] = 11 v[976,6] = 37 v[977,6] = 95 v[978,6] = 1 v[979,6] = 73 v[980,6] = 27 v[981,6] = 29 v[982,6] = 57 v[983,6] = 7 v[984,6] = 65 v[985,6] = 83 v[986,6] = 99 v[987,6] = 69 v[988,6] = 19 v[989,6] = 103 v[990,6] = 43 v[991,6] = 95 v[992,6] = 25 v[993,6] = 19 v[994,6] = 103 v[995,6] = 41 v[996,6] = 125 v[997,6] = 97 v[998,6] = 71 v[999,6] = 105 v[1000,6] = 83 v[1001,6] = 83 v[1002,6] = 61 v[1003,6] = 39 v[1004,6] = 9 v[1005,6] = 45 v[1006,6] = 117 v[1007,6] = 63 v[1008,6] = 31 v[1009,6] = 5 v[1010,6] = 117 v[1011,6] = 67 v[1012,6] = 125 v[1013,6] = 41 v[1014,6] = 117 v[1015,6] = 43 v[1016,6] = 77 v[1017,6] = 97 v[1018,6] = 15 v[1019,6] = 29 v[1020,6] = 5 v[1021,6] = 59 v[1022,6] = 25 v[1023,6] = 63 v[1024,6] = 87 v[1025,6] = 39 v[1026,6] = 39 v[1027,6] = 77 v[1028,6] = 85 v[1029,6] = 37 v[1030,6] = 81 v[1031,6] = 73 v[1032,6] = 89 v[1033,6] = 29 v[1034,6] = 125 v[1035,6] = 109 v[1036,6] = 21 v[1037,6] = 23 v[1038,6] = 119 v[1039,6] = 105 v[1040,6] = 43 v[1041,6] = 93 v[1042,6] = 97 v[1043,6] = 15 v[1044,6] = 125 v[1045,6] = 29 v[1046,6] = 51 v[1047,6] = 69 v[1048,6] = 37 v[1049,6] = 45 v[1050,6] = 31 v[1051,6] = 75 v[1052,6] = 109 v[1053,6] = 119 v[1054,6] = 53 v[1055,6] = 5 v[1056,6] = 101 v[1057,6] = 125 v[1058,6] = 121 v[1059,6] = 35 v[1060,6] = 29 v[1061,6] = 7 v[1062,6] = 63 v[1063,6] = 17 v[1064,6] = 63 v[1065,6] = 13 v[1066,6] = 69 v[1067,6] = 15 v[1068,6] = 105 v[1069,6] = 51 v[1070,6] = 127 v[1071,6] = 105 v[1072,6] = 9 v[1073,6] = 57 v[1074,6] = 95 v[1075,6] = 59 v[1076,6] = 109 v[1077,6] = 35 v[1078,6] = 49 v[1079,6] = 23 v[1080,6] = 33 v[1081,6] = 107 v[1082,6] = 55 v[1083,6] = 33 v[1084,6] = 57 v[1085,6] = 79 v[1086,6] = 73 v[1087,6] = 69 v[1088,6] = 59 v[1089,6] = 107 v[1090,6] = 55 v[1091,6] = 11 v[1092,6] = 63 v[1093,6] = 95 v[1094,6] = 103 v[1095,6] = 23 v[1096,6] = 125 v[1097,6] = 91 v[1098,6] = 31 v[1099,6] = 91 v[1100,6] = 51 v[1101,6] = 65 v[1102,6] = 61 v[1103,6] = 75 v[1104,6] = 69 v[1105,6] = 107 v[1106,6] = 65 v[1107,6] = 101 v[1108,6] = 59 v[1109,6] = 35 v[1110,6] = 15 v[37,7] = 7 v[38,7] = 23 v[39,7] = 39 v[40,7] = 217 v[41,7] = 141 v[42,7] = 27 v[43,7] = 53 v[44,7] = 181 v[45,7] = 169 v[46,7] = 35 v[47,7] = 15 v[48,7] = 207 v[49,7] = 45 v[50,7] = 247 v[51,7] = 185 v[52,7] = 117 v[53,7] = 41 v[54,7] = 81 v[55,7] = 223 v[56,7] = 151 v[57,7] = 81 v[58,7] = 189 v[59,7] = 61 v[60,7] = 95 v[61,7] = 185 v[62,7] = 23 v[63,7] = 73 v[64,7] = 113 v[65,7] = 239 v[66,7] = 85 v[67,7] = 9 v[68,7] = 201 v[69,7] = 83 v[70,7] = 53 v[71,7] = 183 v[72,7] = 203 v[73,7] = 91 v[74,7] = 149 v[75,7] = 101 v[76,7] = 13 v[77,7] = 111 v[78,7] = 239 v[79,7] = 3 v[80,7] = 205 v[81,7] = 253 v[82,7] = 247 v[83,7] = 121 v[84,7] = 189 v[85,7] = 169 v[86,7] = 179 v[87,7] = 197 v[88,7] = 175 v[89,7] = 217 v[90,7] = 249 v[91,7] = 195 v[92,7] = 95 v[93,7] = 63 v[94,7] = 19 v[95,7] = 7 v[96,7] = 5 v[97,7] = 75 v[98,7] = 217 v[99,7] = 245 v[100,7] = 111 v[101,7] = 189 v[102,7] = 165 v[103,7] = 169 v[104,7] = 141 v[105,7] = 221 v[106,7] = 249 v[107,7] = 159 v[108,7] = 253 v[109,7] = 207 v[110,7] = 249 v[111,7] = 219 v[112,7] = 23 v[113,7] = 49 v[114,7] = 127 v[115,7] = 237 v[116,7] = 5 v[117,7] = 25 v[118,7] = 177 v[119,7] = 37 v[120,7] = 103 v[121,7] = 65 v[122,7] = 167 v[123,7] = 81 v[124,7] = 87 v[125,7] = 119 v[126,7] = 45 v[127,7] = 79 v[128,7] = 143 v[129,7] = 57 v[130,7] = 79 v[131,7] = 187 v[132,7] = 143 v[133,7] = 183 v[134,7] = 75 v[135,7] = 97 v[136,7] = 211 v[137,7] = 149 v[138,7] = 175 v[139,7] = 37 v[140,7] = 135 v[141,7] = 189 v[142,7] = 225 v[143,7] = 241 v[144,7] = 63 v[145,7] = 33 v[146,7] = 43 v[147,7] = 13 v[148,7] = 73 v[149,7] = 213 v[150,7] = 57 v[151,7] = 239 v[152,7] = 183 v[153,7] = 117 v[154,7] = 21 v[155,7] = 29 v[156,7] = 115 v[157,7] = 43 v[158,7] = 205 v[159,7] = 223 v[160,7] = 15 v[161,7] = 3 v[162,7] = 159 v[163,7] = 51 v[164,7] = 101 v[165,7] = 127 v[166,7] = 99 v[167,7] = 239 v[168,7] = 171 v[169,7] = 113 v[170,7] = 171 v[171,7] = 119 v[172,7] = 189 v[173,7] = 245 v[174,7] = 201 v[175,7] = 27 v[176,7] = 185 v[177,7] = 229 v[178,7] = 105 v[179,7] = 153 v[180,7] = 189 v[181,7] = 33 v[182,7] = 35 v[183,7] = 137 v[184,7] = 77 v[185,7] = 97 v[186,7] = 17 v[187,7] = 181 v[188,7] = 55 v[189,7] = 197 v[190,7] = 201 v[191,7] = 155 v[192,7] = 37 v[193,7] = 197 v[194,7] = 137 v[195,7] = 223 v[196,7] = 25 v[197,7] = 179 v[198,7] = 91 v[199,7] = 23 v[200,7] = 235 v[201,7] = 53 v[202,7] = 253 v[203,7] = 49 v[204,7] = 181 v[205,7] = 249 v[206,7] = 53 v[207,7] = 173 v[208,7] = 97 v[209,7] = 247 v[210,7] = 67 v[211,7] = 115 v[212,7] = 103 v[213,7] = 159 v[214,7] = 239 v[215,7] = 69 v[216,7] = 173 v[217,7] = 217 v[218,7] = 95 v[219,7] = 221 v[220,7] = 247 v[221,7] = 97 v[222,7] = 91 v[223,7] = 123 v[224,7] = 223 v[225,7] = 213 v[226,7] = 129 v[227,7] = 181 v[228,7] = 87 v[229,7] = 239 v[230,7] = 85 v[231,7] = 89 v[232,7] = 249 v[233,7] = 141 v[234,7] = 39 v[235,7] = 57 v[236,7] = 249 v[237,7] = 71 v[238,7] = 101 v[239,7] = 159 v[240,7] = 33 v[241,7] = 137 v[242,7] = 189 v[243,7] = 71 v[244,7] = 253 v[245,7] = 205 v[246,7] = 171 v[247,7] = 13 v[248,7] = 249 v[249,7] = 109 v[250,7] = 131 v[251,7] = 199 v[252,7] = 189 v[253,7] = 179 v[254,7] = 31 v[255,7] = 99 v[256,7] = 113 v[257,7] = 41 v[258,7] = 173 v[259,7] = 23 v[260,7] = 189 v[261,7] = 197 v[262,7] = 3 v[263,7] = 135 v[264,7] = 9 v[265,7] = 95 v[266,7] = 195 v[267,7] = 27 v[268,7] = 183 v[269,7] = 1 v[270,7] = 123 v[271,7] = 73 v[272,7] = 53 v[273,7] = 99 v[274,7] = 197 v[275,7] = 59 v[276,7] = 27 v[277,7] = 101 v[278,7] = 55 v[279,7] = 193 v[280,7] = 31 v[281,7] = 61 v[282,7] = 119 v[283,7] = 11 v[284,7] = 7 v[285,7] = 255 v[286,7] = 233 v[287,7] = 53 v[288,7] = 157 v[289,7] = 193 v[290,7] = 97 v[291,7] = 83 v[292,7] = 65 v[293,7] = 81 v[294,7] = 239 v[295,7] = 167 v[296,7] = 69 v[297,7] = 71 v[298,7] = 109 v[299,7] = 97 v[300,7] = 137 v[301,7] = 71 v[302,7] = 193 v[303,7] = 189 v[304,7] = 115 v[305,7] = 79 v[306,7] = 205 v[307,7] = 37 v[308,7] = 227 v[309,7] = 53 v[310,7] = 33 v[311,7] = 91 v[312,7] = 229 v[313,7] = 245 v[314,7] = 105 v[315,7] = 77 v[316,7] = 229 v[317,7] = 161 v[318,7] = 103 v[319,7] = 93 v[320,7] = 13 v[321,7] = 161 v[322,7] = 229 v[323,7] = 223 v[324,7] = 69 v[325,7] = 15 v[326,7] = 25 v[327,7] = 23 v[328,7] = 233 v[329,7] = 93 v[330,7] = 25 v[331,7] = 217 v[332,7] = 247 v[333,7] = 61 v[334,7] = 75 v[335,7] = 27 v[336,7] = 9 v[337,7] = 223 v[338,7] = 213 v[339,7] = 55 v[340,7] = 197 v[341,7] = 145 v[342,7] = 89 v[343,7] = 199 v[344,7] = 41 v[345,7] = 201 v[346,7] = 5 v[347,7] = 149 v[348,7] = 35 v[349,7] = 119 v[350,7] = 183 v[351,7] = 53 v[352,7] = 11 v[353,7] = 13 v[354,7] = 3 v[355,7] = 179 v[356,7] = 229 v[357,7] = 43 v[358,7] = 55 v[359,7] = 187 v[360,7] = 233 v[361,7] = 47 v[362,7] = 133 v[363,7] = 91 v[364,7] = 47 v[365,7] = 71 v[366,7] = 93 v[367,7] = 105 v[368,7] = 145 v[369,7] = 45 v[370,7] = 255 v[371,7] = 221 v[372,7] = 115 v[373,7] = 175 v[374,7] = 19 v[375,7] = 129 v[376,7] = 5 v[377,7] = 209 v[378,7] = 197 v[379,7] = 57 v[380,7] = 177 v[381,7] = 115 v[382,7] = 187 v[383,7] = 119 v[384,7] = 77 v[385,7] = 211 v[386,7] = 111 v[387,7] = 33 v[388,7] = 113 v[389,7] = 23 v[390,7] = 87 v[391,7] = 137 v[392,7] = 41 v[393,7] = 7 v[394,7] = 83 v[395,7] = 43 v[396,7] = 121 v[397,7] = 145 v[398,7] = 5 v[399,7] = 219 v[400,7] = 27 v[401,7] = 11 v[402,7] = 111 v[403,7] = 207 v[404,7] = 55 v[405,7] = 97 v[406,7] = 63 v[407,7] = 229 v[408,7] = 53 v[409,7] = 33 v[410,7] = 149 v[411,7] = 23 v[412,7] = 187 v[413,7] = 153 v[414,7] = 91 v[415,7] = 193 v[416,7] = 183 v[417,7] = 59 v[418,7] = 211 v[419,7] = 93 v[420,7] = 139 v[421,7] = 59 v[422,7] = 179 v[423,7] = 163 v[424,7] = 209 v[425,7] = 77 v[426,7] = 39 v[427,7] = 111 v[428,7] = 79 v[429,7] = 229 v[430,7] = 85 v[431,7] = 237 v[432,7] = 199 v[433,7] = 137 v[434,7] = 147 v[435,7] = 25 v[436,7] = 73 v[437,7] = 121 v[438,7] = 129 v[439,7] = 83 v[440,7] = 87 v[441,7] = 93 v[442,7] = 205 v[443,7] = 167 v[444,7] = 53 v[445,7] = 107 v[446,7] = 229 v[447,7] = 213 v[448,7] = 95 v[449,7] = 219 v[450,7] = 109 v[451,7] = 175 v[452,7] = 13 v[453,7] = 209 v[454,7] = 97 v[455,7] = 61 v[456,7] = 147 v[457,7] = 19 v[458,7] = 13 v[459,7] = 123 v[460,7] = 73 v[461,7] = 35 v[462,7] = 141 v[463,7] = 81 v[464,7] = 19 v[465,7] = 171 v[466,7] = 255 v[467,7] = 111 v[468,7] = 107 v[469,7] = 233 v[470,7] = 113 v[471,7] = 133 v[472,7] = 89 v[473,7] = 9 v[474,7] = 231 v[475,7] = 95 v[476,7] = 69 v[477,7] = 33 v[478,7] = 1 v[479,7] = 253 v[480,7] = 219 v[481,7] = 253 v[482,7] = 247 v[483,7] = 129 v[484,7] = 11 v[485,7] = 251 v[486,7] = 221 v[487,7] = 153 v[488,7] = 35 v[489,7] = 103 v[490,7] = 239 v[491,7] = 7 v[492,7] = 27 v[493,7] = 235 v[494,7] = 181 v[495,7] = 5 v[496,7] = 207 v[497,7] = 53 v[498,7] = 149 v[499,7] = 155 v[500,7] = 225 v[501,7] = 165 v[502,7] = 137 v[503,7] = 155 v[504,7] = 201 v[505,7] = 97 v[506,7] = 245 v[507,7] = 203 v[508,7] = 47 v[509,7] = 39 v[510,7] = 35 v[511,7] = 105 v[512,7] = 239 v[513,7] = 49 v[514,7] = 15 v[515,7] = 253 v[516,7] = 7 v[517,7] = 237 v[518,7] = 213 v[519,7] = 55 v[520,7] = 87 v[521,7] = 199 v[522,7] = 27 v[523,7] = 175 v[524,7] = 49 v[525,7] = 41 v[526,7] = 229 v[527,7] = 85 v[528,7] = 3 v[529,7] = 149 v[530,7] = 179 v[531,7] = 129 v[532,7] = 185 v[533,7] = 249 v[534,7] = 197 v[535,7] = 15 v[536,7] = 97 v[537,7] = 197 v[538,7] = 139 v[539,7] = 203 v[540,7] = 63 v[541,7] = 33 v[542,7] = 251 v[543,7] = 217 v[544,7] = 199 v[545,7] = 199 v[546,7] = 99 v[547,7] = 249 v[548,7] = 33 v[549,7] = 229 v[550,7] = 177 v[551,7] = 13 v[552,7] = 209 v[553,7] = 147 v[554,7] = 97 v[555,7] = 31 v[556,7] = 125 v[557,7] = 177 v[558,7] = 137 v[559,7] = 187 v[560,7] = 11 v[561,7] = 91 v[562,7] = 223 v[563,7] = 29 v[564,7] = 169 v[565,7] = 231 v[566,7] = 59 v[567,7] = 31 v[568,7] = 163 v[569,7] = 41 v[570,7] = 57 v[571,7] = 87 v[572,7] = 247 v[573,7] = 25 v[574,7] = 127 v[575,7] = 101 v[576,7] = 207 v[577,7] = 187 v[578,7] = 73 v[579,7] = 61 v[580,7] = 105 v[581,7] = 27 v[582,7] = 91 v[583,7] = 171 v[584,7] = 243 v[585,7] = 33 v[586,7] = 3 v[587,7] = 1 v[588,7] = 21 v[589,7] = 229 v[590,7] = 93 v[591,7] = 71 v[592,7] = 61 v[593,7] = 37 v[594,7] = 183 v[595,7] = 65 v[596,7] = 211 v[597,7] = 53 v[598,7] = 11 v[599,7] = 151 v[600,7] = 165 v[601,7] = 47 v[602,7] = 5 v[603,7] = 129 v[604,7] = 79 v[605,7] = 101 v[606,7] = 147 v[607,7] = 169 v[608,7] = 181 v[609,7] = 19 v[610,7] = 95 v[611,7] = 77 v[612,7] = 139 v[613,7] = 197 v[614,7] = 219 v[615,7] = 97 v[616,7] = 239 v[617,7] = 183 v[618,7] = 143 v[619,7] = 9 v[620,7] = 13 v[621,7] = 209 v[622,7] = 23 v[623,7] = 215 v[624,7] = 53 v[625,7] = 137 v[626,7] = 203 v[627,7] = 19 v[628,7] = 151 v[629,7] = 171 v[630,7] = 133 v[631,7] = 219 v[632,7] = 231 v[633,7] = 3 v[634,7] = 15 v[635,7] = 253 v[636,7] = 225 v[637,7] = 33 v[638,7] = 111 v[639,7] = 183 v[640,7] = 213 v[641,7] = 169 v[642,7] = 119 v[643,7] = 111 v[644,7] = 15 v[645,7] = 201 v[646,7] = 123 v[647,7] = 121 v[648,7] = 225 v[649,7] = 113 v[650,7] = 113 v[651,7] = 225 v[652,7] = 161 v[653,7] = 165 v[654,7] = 1 v[655,7] = 139 v[656,7] = 55 v[657,7] = 3 v[658,7] = 93 v[659,7] = 217 v[660,7] = 193 v[661,7] = 97 v[662,7] = 29 v[663,7] = 69 v[664,7] = 231 v[665,7] = 161 v[666,7] = 93 v[667,7] = 69 v[668,7] = 143 v[669,7] = 137 v[670,7] = 9 v[671,7] = 87 v[672,7] = 183 v[673,7] = 113 v[674,7] = 183 v[675,7] = 73 v[676,7] = 215 v[677,7] = 137 v[678,7] = 89 v[679,7] = 251 v[680,7] = 163 v[681,7] = 41 v[682,7] = 227 v[683,7] = 145 v[684,7] = 57 v[685,7] = 81 v[686,7] = 57 v[687,7] = 11 v[688,7] = 135 v[689,7] = 145 v[690,7] = 161 v[691,7] = 175 v[692,7] = 159 v[693,7] = 25 v[694,7] = 55 v[695,7] = 167 v[696,7] = 157 v[697,7] = 211 v[698,7] = 97 v[699,7] = 247 v[700,7] = 249 v[701,7] = 23 v[702,7] = 129 v[703,7] = 159 v[704,7] = 71 v[705,7] = 197 v[706,7] = 127 v[707,7] = 141 v[708,7] = 219 v[709,7] = 5 v[710,7] = 233 v[711,7] = 131 v[712,7] = 217 v[713,7] = 101 v[714,7] = 131 v[715,7] = 33 v[716,7] = 157 v[717,7] = 173 v[718,7] = 69 v[719,7] = 207 v[720,7] = 239 v[721,7] = 81 v[722,7] = 205 v[723,7] = 11 v[724,7] = 41 v[725,7] = 169 v[726,7] = 65 v[727,7] = 193 v[728,7] = 77 v[729,7] = 201 v[730,7] = 173 v[731,7] = 1 v[732,7] = 221 v[733,7] = 157 v[734,7] = 1 v[735,7] = 15 v[736,7] = 113 v[737,7] = 147 v[738,7] = 137 v[739,7] = 205 v[740,7] = 225 v[741,7] = 73 v[742,7] = 45 v[743,7] = 49 v[744,7] = 149 v[745,7] = 113 v[746,7] = 253 v[747,7] = 99 v[748,7] = 17 v[749,7] = 119 v[750,7] = 105 v[751,7] = 117 v[752,7] = 129 v[753,7] = 243 v[754,7] = 75 v[755,7] = 203 v[756,7] = 53 v[757,7] = 29 v[758,7] = 247 v[759,7] = 35 v[760,7] = 247 v[761,7] = 171 v[762,7] = 31 v[763,7] = 199 v[764,7] = 213 v[765,7] = 29 v[766,7] = 251 v[767,7] = 7 v[768,7] = 251 v[769,7] = 187 v[770,7] = 91 v[771,7] = 11 v[772,7] = 149 v[773,7] = 13 v[774,7] = 205 v[775,7] = 37 v[776,7] = 249 v[777,7] = 137 v[778,7] = 139 v[779,7] = 9 v[780,7] = 7 v[781,7] = 113 v[782,7] = 183 v[783,7] = 205 v[784,7] = 187 v[785,7] = 39 v[786,7] = 3 v[787,7] = 79 v[788,7] = 155 v[789,7] = 227 v[790,7] = 89 v[791,7] = 185 v[792,7] = 51 v[793,7] = 127 v[794,7] = 63 v[795,7] = 83 v[796,7] = 41 v[797,7] = 133 v[798,7] = 183 v[799,7] = 181 v[800,7] = 127 v[801,7] = 19 v[802,7] = 255 v[803,7] = 219 v[804,7] = 59 v[805,7] = 251 v[806,7] = 3 v[807,7] = 187 v[808,7] = 57 v[809,7] = 217 v[810,7] = 115 v[811,7] = 217 v[812,7] = 229 v[813,7] = 181 v[814,7] = 185 v[815,7] = 149 v[816,7] = 83 v[817,7] = 115 v[818,7] = 11 v[819,7] = 123 v[820,7] = 19 v[821,7] = 109 v[822,7] = 165 v[823,7] = 103 v[824,7] = 123 v[825,7] = 219 v[826,7] = 129 v[827,7] = 155 v[828,7] = 207 v[829,7] = 177 v[830,7] = 9 v[831,7] = 49 v[832,7] = 181 v[833,7] = 231 v[834,7] = 33 v[835,7] = 233 v[836,7] = 67 v[837,7] = 155 v[838,7] = 41 v[839,7] = 9 v[840,7] = 95 v[841,7] = 123 v[842,7] = 65 v[843,7] = 117 v[844,7] = 249 v[845,7] = 85 v[846,7] = 169 v[847,7] = 129 v[848,7] = 241 v[849,7] = 173 v[850,7] = 251 v[851,7] = 225 v[852,7] = 147 v[853,7] = 165 v[854,7] = 69 v[855,7] = 81 v[856,7] = 239 v[857,7] = 95 v[858,7] = 23 v[859,7] = 83 v[860,7] = 227 v[861,7] = 249 v[862,7] = 143 v[863,7] = 171 v[864,7] = 193 v[865,7] = 9 v[866,7] = 21 v[867,7] = 57 v[868,7] = 73 v[869,7] = 97 v[870,7] = 57 v[871,7] = 29 v[872,7] = 239 v[873,7] = 151 v[874,7] = 159 v[875,7] = 191 v[876,7] = 47 v[877,7] = 51 v[878,7] = 1 v[879,7] = 223 v[880,7] = 251 v[881,7] = 251 v[882,7] = 151 v[883,7] = 41 v[884,7] = 119 v[885,7] = 127 v[886,7] = 131 v[887,7] = 33 v[888,7] = 209 v[889,7] = 123 v[890,7] = 53 v[891,7] = 241 v[892,7] = 25 v[893,7] = 31 v[894,7] = 183 v[895,7] = 107 v[896,7] = 25 v[897,7] = 115 v[898,7] = 39 v[899,7] = 11 v[900,7] = 213 v[901,7] = 239 v[902,7] = 219 v[903,7] = 109 v[904,7] = 185 v[905,7] = 35 v[906,7] = 133 v[907,7] = 123 v[908,7] = 185 v[909,7] = 27 v[910,7] = 55 v[911,7] = 245 v[912,7] = 61 v[913,7] = 75 v[914,7] = 205 v[915,7] = 213 v[916,7] = 169 v[917,7] = 163 v[918,7] = 63 v[919,7] = 55 v[920,7] = 49 v[921,7] = 83 v[922,7] = 195 v[923,7] = 51 v[924,7] = 31 v[925,7] = 41 v[926,7] = 15 v[927,7] = 203 v[928,7] = 41 v[929,7] = 63 v[930,7] = 127 v[931,7] = 161 v[932,7] = 5 v[933,7] = 143 v[934,7] = 7 v[935,7] = 199 v[936,7] = 251 v[937,7] = 95 v[938,7] = 75 v[939,7] = 101 v[940,7] = 15 v[941,7] = 43 v[942,7] = 237 v[943,7] = 197 v[944,7] = 117 v[945,7] = 167 v[946,7] = 155 v[947,7] = 21 v[948,7] = 83 v[949,7] = 205 v[950,7] = 255 v[951,7] = 49 v[952,7] = 101 v[953,7] = 213 v[954,7] = 237 v[955,7] = 135 v[956,7] = 135 v[957,7] = 21 v[958,7] = 73 v[959,7] = 93 v[960,7] = 115 v[961,7] = 7 v[962,7] = 85 v[963,7] = 223 v[964,7] = 237 v[965,7] = 79 v[966,7] = 89 v[967,7] = 5 v[968,7] = 57 v[969,7] = 239 v[970,7] = 67 v[971,7] = 65 v[972,7] = 201 v[973,7] = 155 v[974,7] = 71 v[975,7] = 85 v[976,7] = 195 v[977,7] = 89 v[978,7] = 181 v[979,7] = 119 v[980,7] = 135 v[981,7] = 147 v[982,7] = 237 v[983,7] = 173 v[984,7] = 41 v[985,7] = 155 v[986,7] = 67 v[987,7] = 113 v[988,7] = 111 v[989,7] = 21 v[990,7] = 183 v[991,7] = 23 v[992,7] = 103 v[993,7] = 207 v[994,7] = 253 v[995,7] = 69 v[996,7] = 219 v[997,7] = 205 v[998,7] = 195 v[999,7] = 43 v[1000,7] = 197 v[1001,7] = 229 v[1002,7] = 139 v[1003,7] = 177 v[1004,7] = 129 v[1005,7] = 69 v[1006,7] = 97 v[1007,7] = 201 v[1008,7] = 163 v[1009,7] = 189 v[1010,7] = 11 v[1011,7] = 99 v[1012,7] = 91 v[1013,7] = 253 v[1014,7] = 239 v[1015,7] = 91 v[1016,7] = 145 v[1017,7] = 19 v[1018,7] = 179 v[1019,7] = 231 v[1020,7] = 121 v[1021,7] = 7 v[1022,7] = 225 v[1023,7] = 237 v[1024,7] = 125 v[1025,7] = 191 v[1026,7] = 119 v[1027,7] = 59 v[1028,7] = 175 v[1029,7] = 237 v[1030,7] = 131 v[1031,7] = 79 v[1032,7] = 43 v[1033,7] = 45 v[1034,7] = 205 v[1035,7] = 199 v[1036,7] = 251 v[1037,7] = 153 v[1038,7] = 207 v[1039,7] = 37 v[1040,7] = 179 v[1041,7] = 113 v[1042,7] = 255 v[1043,7] = 107 v[1044,7] = 217 v[1045,7] = 61 v[1046,7] = 7 v[1047,7] = 181 v[1048,7] = 247 v[1049,7] = 31 v[1050,7] = 13 v[1051,7] = 113 v[1052,7] = 145 v[1053,7] = 107 v[1054,7] = 233 v[1055,7] = 233 v[1056,7] = 43 v[1057,7] = 79 v[1058,7] = 23 v[1059,7] = 169 v[1060,7] = 137 v[1061,7] = 129 v[1062,7] = 183 v[1063,7] = 53 v[1064,7] = 91 v[1065,7] = 55 v[1066,7] = 103 v[1067,7] = 223 v[1068,7] = 87 v[1069,7] = 177 v[1070,7] = 157 v[1071,7] = 79 v[1072,7] = 213 v[1073,7] = 139 v[1074,7] = 183 v[1075,7] = 231 v[1076,7] = 205 v[1077,7] = 143 v[1078,7] = 129 v[1079,7] = 243 v[1080,7] = 205 v[1081,7] = 93 v[1082,7] = 59 v[1083,7] = 15 v[1084,7] = 89 v[1085,7] = 9 v[1086,7] = 11 v[1087,7] = 47 v[1088,7] = 133 v[1089,7] = 227 v[1090,7] = 75 v[1091,7] = 9 v[1092,7] = 91 v[1093,7] = 19 v[1094,7] = 171 v[1095,7] = 163 v[1096,7] = 79 v[1097,7] = 7 v[1098,7] = 103 v[1099,7] = 5 v[1100,7] = 119 v[1101,7] = 155 v[1102,7] = 75 v[1103,7] = 11 v[1104,7] = 71 v[1105,7] = 95 v[1106,7] = 17 v[1107,7] = 13 v[1108,7] = 243 v[1109,7] = 207 v[1110,7] = 187 v[53,8] = 235 v[54,8] = 307 v[55,8] = 495 v[56,8] = 417 v[57,8] = 57 v[58,8] = 151 v[59,8] = 19 v[60,8] = 119 v[61,8] = 375 v[62,8] = 451 v[63,8] = 55 v[64,8] = 449 v[65,8] = 501 v[66,8] = 53 v[67,8] = 185 v[68,8] = 317 v[69,8] = 17 v[70,8] = 21 v[71,8] = 487 v[72,8] = 13 v[73,8] = 347 v[74,8] = 393 v[75,8] = 15 v[76,8] = 391 v[77,8] = 307 v[78,8] = 189 v[79,8] = 381 v[80,8] = 71 v[81,8] = 163 v[82,8] = 99 v[83,8] = 467 v[84,8] = 167 v[85,8] = 433 v[86,8] = 337 v[87,8] = 257 v[88,8] = 179 v[89,8] = 47 v[90,8] = 385 v[91,8] = 23 v[92,8] = 117 v[93,8] = 369 v[94,8] = 425 v[95,8] = 207 v[96,8] = 433 v[97,8] = 301 v[98,8] = 147 v[99,8] = 333 v[100,8] = 85 v[101,8] = 221 v[102,8] = 423 v[103,8] = 49 v[104,8] = 3 v[105,8] = 43 v[106,8] = 229 v[107,8] = 227 v[108,8] = 201 v[109,8] = 383 v[110,8] = 281 v[111,8] = 229 v[112,8] = 207 v[113,8] = 21 v[114,8] = 343 v[115,8] = 251 v[116,8] = 397 v[117,8] = 173 v[118,8] = 507 v[119,8] = 421 v[120,8] = 443 v[121,8] = 399 v[122,8] = 53 v[123,8] = 345 v[124,8] = 77 v[125,8] = 385 v[126,8] = 317 v[127,8] = 155 v[128,8] = 187 v[129,8] = 269 v[130,8] = 501 v[131,8] = 19 v[132,8] = 169 v[133,8] = 235 v[134,8] = 415 v[135,8] = 61 v[136,8] = 247 v[137,8] = 183 v[138,8] = 5 v[139,8] = 257 v[140,8] = 401 v[141,8] = 451 v[142,8] = 95 v[143,8] = 455 v[144,8] = 49 v[145,8] = 489 v[146,8] = 75 v[147,8] = 459 v[148,8] = 377 v[149,8] = 87 v[150,8] = 463 v[151,8] = 155 v[152,8] = 233 v[153,8] = 115 v[154,8] = 429 v[155,8] = 211 v[156,8] = 419 v[157,8] = 143 v[158,8] = 487 v[159,8] = 195 v[160,8] = 209 v[161,8] = 461 v[162,8] = 193 v[163,8] = 157 v[164,8] = 193 v[165,8] = 363 v[166,8] = 181 v[167,8] = 271 v[168,8] = 445 v[169,8] = 381 v[170,8] = 231 v[171,8] = 135 v[172,8] = 327 v[173,8] = 403 v[174,8] = 171 v[175,8] = 197 v[176,8] = 181 v[177,8] = 343 v[178,8] = 113 v[179,8] = 313 v[180,8] = 393 v[181,8] = 311 v[182,8] = 415 v[183,8] = 267 v[184,8] = 247 v[185,8] = 425 v[186,8] = 233 v[187,8] = 289 v[188,8] = 55 v[189,8] = 39 v[190,8] = 247 v[191,8] = 327 v[192,8] = 141 v[193,8] = 5 v[194,8] = 189 v[195,8] = 183 v[196,8] = 27 v[197,8] = 337 v[198,8] = 341 v[199,8] = 327 v[200,8] = 87 v[201,8] = 429 v[202,8] = 357 v[203,8] = 265 v[204,8] = 251 v[205,8] = 437 v[206,8] = 201 v[207,8] = 29 v[208,8] = 339 v[209,8] = 257 v[210,8] = 377 v[211,8] = 17 v[212,8] = 53 v[213,8] = 327 v[214,8] = 47 v[215,8] = 375 v[216,8] = 393 v[217,8] = 369 v[218,8] = 403 v[219,8] = 125 v[220,8] = 429 v[221,8] = 257 v[222,8] = 157 v[223,8] = 217 v[224,8] = 85 v[225,8] = 267 v[226,8] = 117 v[227,8] = 337 v[228,8] = 447 v[229,8] = 219 v[230,8] = 501 v[231,8] = 41 v[232,8] = 41 v[233,8] = 193 v[234,8] = 509 v[235,8] = 131 v[236,8] = 207 v[237,8] = 505 v[238,8] = 421 v[239,8] = 149 v[240,8] = 111 v[241,8] = 177 v[242,8] = 167 v[243,8] = 223 v[244,8] = 291 v[245,8] = 91 v[246,8] = 29 v[247,8] = 305 v[248,8] = 151 v[249,8] = 177 v[250,8] = 337 v[251,8] = 183 v[252,8] = 361 v[253,8] = 435 v[254,8] = 307 v[255,8] = 507 v[256,8] = 77 v[257,8] = 181 v[258,8] = 507 v[259,8] = 315 v[260,8] = 145 v[261,8] = 423 v[262,8] = 71 v[263,8] = 103 v[264,8] = 493 v[265,8] = 271 v[266,8] = 469 v[267,8] = 339 v[268,8] = 237 v[269,8] = 437 v[270,8] = 483 v[271,8] = 31 v[272,8] = 219 v[273,8] = 61 v[274,8] = 131 v[275,8] = 391 v[276,8] = 233 v[277,8] = 219 v[278,8] = 69 v[279,8] = 57 v[280,8] = 459 v[281,8] = 225 v[282,8] = 421 v[283,8] = 7 v[284,8] = 461 v[285,8] = 111 v[286,8] = 451 v[287,8] = 277 v[288,8] = 185 v[289,8] = 193 v[290,8] = 125 v[291,8] = 251 v[292,8] = 199 v[293,8] = 73 v[294,8] = 71 v[295,8] = 7 v[296,8] = 409 v[297,8] = 417 v[298,8] = 149 v[299,8] = 193 v[300,8] = 53 v[301,8] = 437 v[302,8] = 29 v[303,8] = 467 v[304,8] = 229 v[305,8] = 31 v[306,8] = 35 v[307,8] = 75 v[308,8] = 105 v[309,8] = 503 v[310,8] = 75 v[311,8] = 317 v[312,8] = 401 v[313,8] = 367 v[314,8] = 131 v[315,8] = 365 v[316,8] = 441 v[317,8] = 433 v[318,8] = 93 v[319,8] = 377 v[320,8] = 405 v[321,8] = 465 v[322,8] = 259 v[323,8] = 283 v[324,8] = 443 v[325,8] = 143 v[326,8] = 445 v[327,8] = 3 v[328,8] = 461 v[329,8] = 329 v[330,8] = 309 v[331,8] = 77 v[332,8] = 323 v[333,8] = 155 v[334,8] = 347 v[335,8] = 45 v[336,8] = 381 v[337,8] = 315 v[338,8] = 463 v[339,8] = 207 v[340,8] = 321 v[341,8] = 157 v[342,8] = 109 v[343,8] = 479 v[344,8] = 313 v[345,8] = 345 v[346,8] = 167 v[347,8] = 439 v[348,8] = 307 v[349,8] = 235 v[350,8] = 473 v[351,8] = 79 v[352,8] = 101 v[353,8] = 245 v[354,8] = 19 v[355,8] = 381 v[356,8] = 251 v[357,8] = 35 v[358,8] = 25 v[359,8] = 107 v[360,8] = 187 v[361,8] = 115 v[362,8] = 113 v[363,8] = 321 v[364,8] = 115 v[365,8] = 445 v[366,8] = 61 v[367,8] = 77 v[368,8] = 293 v[369,8] = 405 v[370,8] = 13 v[371,8] = 53 v[372,8] = 17 v[373,8] = 171 v[374,8] = 299 v[375,8] = 41 v[376,8] = 79 v[377,8] = 3 v[378,8] = 485 v[379,8] = 331 v[380,8] = 13 v[381,8] = 257 v[382,8] = 59 v[383,8] = 201 v[384,8] = 497 v[385,8] = 81 v[386,8] = 451 v[387,8] = 199 v[388,8] = 171 v[389,8] = 81 v[390,8] = 253 v[391,8] = 365 v[392,8] = 75 v[393,8] = 451 v[394,8] = 149 v[395,8] = 483 v[396,8] = 81 v[397,8] = 453 v[398,8] = 469 v[399,8] = 485 v[400,8] = 305 v[401,8] = 163 v[402,8] = 401 v[403,8] = 15 v[404,8] = 91 v[405,8] = 3 v[406,8] = 129 v[407,8] = 35 v[408,8] = 239 v[409,8] = 355 v[410,8] = 211 v[411,8] = 387 v[412,8] = 101 v[413,8] = 299 v[414,8] = 67 v[415,8] = 375 v[416,8] = 405 v[417,8] = 357 v[418,8] = 267 v[419,8] = 363 v[420,8] = 79 v[421,8] = 83 v[422,8] = 437 v[423,8] = 457 v[424,8] = 39 v[425,8] = 97 v[426,8] = 473 v[427,8] = 289 v[428,8] = 179 v[429,8] = 57 v[430,8] = 23 v[431,8] = 49 v[432,8] = 79 v[433,8] = 71 v[434,8] = 341 v[435,8] = 287 v[436,8] = 95 v[437,8] = 229 v[438,8] = 271 v[439,8] = 475 v[440,8] = 49 v[441,8] = 241 v[442,8] = 261 v[443,8] = 495 v[444,8] = 353 v[445,8] = 381 v[446,8] = 13 v[447,8] = 291 v[448,8] = 37 v[449,8] = 251 v[450,8] = 105 v[451,8] = 399 v[452,8] = 81 v[453,8] = 89 v[454,8] = 265 v[455,8] = 507 v[456,8] = 205 v[457,8] = 145 v[458,8] = 331 v[459,8] = 129 v[460,8] = 119 v[461,8] = 503 v[462,8] = 249 v[463,8] = 1 v[464,8] = 289 v[465,8] = 463 v[466,8] = 163 v[467,8] = 443 v[468,8] = 63 v[469,8] = 123 v[470,8] = 361 v[471,8] = 261 v[472,8] = 49 v[473,8] = 429 v[474,8] = 137 v[475,8] = 355 v[476,8] = 175 v[477,8] = 507 v[478,8] = 59 v[479,8] = 277 v[480,8] = 391 v[481,8] = 25 v[482,8] = 185 v[483,8] = 381 v[484,8] = 197 v[485,8] = 39 v[486,8] = 5 v[487,8] = 429 v[488,8] = 119 v[489,8] = 247 v[490,8] = 177 v[491,8] = 329 v[492,8] = 465 v[493,8] = 421 v[494,8] = 271 v[495,8] = 467 v[496,8] = 151 v[497,8] = 45 v[498,8] = 429 v[499,8] = 137 v[500,8] = 471 v[501,8] = 11 v[502,8] = 17 v[503,8] = 409 v[504,8] = 347 v[505,8] = 199 v[506,8] = 463 v[507,8] = 177 v[508,8] = 11 v[509,8] = 51 v[510,8] = 361 v[511,8] = 95 v[512,8] = 497 v[513,8] = 163 v[514,8] = 351 v[515,8] = 127 v[516,8] = 395 v[517,8] = 511 v[518,8] = 327 v[519,8] = 353 v[520,8] = 49 v[521,8] = 105 v[522,8] = 151 v[523,8] = 321 v[524,8] = 331 v[525,8] = 329 v[526,8] = 509 v[527,8] = 107 v[528,8] = 109 v[529,8] = 303 v[530,8] = 467 v[531,8] = 287 v[532,8] = 161 v[533,8] = 45 v[534,8] = 385 v[535,8] = 289 v[536,8] = 363 v[537,8] = 331 v[538,8] = 265 v[539,8] = 407 v[540,8] = 37 v[541,8] = 433 v[542,8] = 315 v[543,8] = 343 v[544,8] = 63 v[545,8] = 51 v[546,8] = 185 v[547,8] = 71 v[548,8] = 27 v[549,8] = 267 v[550,8] = 503 v[551,8] = 239 v[552,8] = 293 v[553,8] = 245 v[554,8] = 281 v[555,8] = 297 v[556,8] = 75 v[557,8] = 461 v[558,8] = 371 v[559,8] = 129 v[560,8] = 189 v[561,8] = 189 v[562,8] = 339 v[563,8] = 287 v[564,8] = 111 v[565,8] = 111 v[566,8] = 379 v[567,8] = 93 v[568,8] = 27 v[569,8] = 185 v[570,8] = 347 v[571,8] = 337 v[572,8] = 247 v[573,8] = 507 v[574,8] = 161 v[575,8] = 231 v[576,8] = 43 v[577,8] = 499 v[578,8] = 73 v[579,8] = 327 v[580,8] = 263 v[581,8] = 331 v[582,8] = 249 v[583,8] = 493 v[584,8] = 37 v[585,8] = 25 v[586,8] = 115 v[587,8] = 3 v[588,8] = 167 v[589,8] = 197 v[590,8] = 127 v[591,8] = 357 v[592,8] = 497 v[593,8] = 103 v[594,8] = 125 v[595,8] = 191 v[596,8] = 165 v[597,8] = 55 v[598,8] = 101 v[599,8] = 95 v[600,8] = 79 v[601,8] = 351 v[602,8] = 341 v[603,8] = 43 v[604,8] = 125 v[605,8] = 135 v[606,8] = 173 v[607,8] = 289 v[608,8] = 373 v[609,8] = 133 v[610,8] = 421 v[611,8] = 241 v[612,8] = 281 v[613,8] = 213 v[614,8] = 177 v[615,8] = 363 v[616,8] = 151 v[617,8] = 227 v[618,8] = 145 v[619,8] = 363 v[620,8] = 239 v[621,8] = 431 v[622,8] = 81 v[623,8] = 397 v[624,8] = 241 v[625,8] = 67 v[626,8] = 291 v[627,8] = 255 v[628,8] = 405 v[629,8] = 421 v[630,8] = 399 v[631,8] = 75 v[632,8] = 399 v[633,8] = 105 v[634,8] = 329 v[635,8] = 41 v[636,8] = 425 v[637,8] = 7 v[638,8] = 283 v[639,8] = 375 v[640,8] = 475 v[641,8] = 427 v[642,8] = 277 v[643,8] = 209 v[644,8] = 411 v[645,8] = 3 v[646,8] = 137 v[647,8] = 195 v[648,8] = 289 v[649,8] = 509 v[650,8] = 121 v[651,8] = 55 v[652,8] = 147 v[653,8] = 275 v[654,8] = 251 v[655,8] = 19 v[656,8] = 129 v[657,8] = 285 v[658,8] = 415 v[659,8] = 487 v[660,8] = 491 v[661,8] = 193 v[662,8] = 219 v[663,8] = 403 v[664,8] = 23 v[665,8] = 97 v[666,8] = 65 v[667,8] = 285 v[668,8] = 75 v[669,8] = 21 v[670,8] = 373 v[671,8] = 261 v[672,8] = 339 v[673,8] = 239 v[674,8] = 495 v[675,8] = 415 v[676,8] = 333 v[677,8] = 107 v[678,8] = 435 v[679,8] = 297 v[680,8] = 213 v[681,8] = 149 v[682,8] = 463 v[683,8] = 199 v[684,8] = 323 v[685,8] = 45 v[686,8] = 19 v[687,8] = 301 v[688,8] = 121 v[689,8] = 499 v[690,8] = 187 v[691,8] = 229 v[692,8] = 63 v[693,8] = 425 v[694,8] = 99 v[695,8] = 281 v[696,8] = 35 v[697,8] = 125 v[698,8] = 349 v[699,8] = 87 v[700,8] = 101 v[701,8] = 59 v[702,8] = 195 v[703,8] = 511 v[704,8] = 355 v[705,8] = 73 v[706,8] = 263 v[707,8] = 243 v[708,8] = 101 v[709,8] = 165 v[710,8] = 141 v[711,8] = 11 v[712,8] = 389 v[713,8] = 219 v[714,8] = 187 v[715,8] = 449 v[716,8] = 447 v[717,8] = 393 v[718,8] = 477 v[719,8] = 305 v[720,8] = 221 v[721,8] = 51 v[722,8] = 355 v[723,8] = 209 v[724,8] = 499 v[725,8] = 479 v[726,8] = 265 v[727,8] = 377 v[728,8] = 145 v[729,8] = 411 v[730,8] = 173 v[731,8] = 11 v[732,8] = 433 v[733,8] = 483 v[734,8] = 135 v[735,8] = 385 v[736,8] = 341 v[737,8] = 89 v[738,8] = 209 v[739,8] = 391 v[740,8] = 33 v[741,8] = 395 v[742,8] = 319 v[743,8] = 451 v[744,8] = 119 v[745,8] = 341 v[746,8] = 227 v[747,8] = 375 v[748,8] = 61 v[749,8] = 331 v[750,8] = 493 v[751,8] = 411 v[752,8] = 293 v[753,8] = 47 v[754,8] = 203 v[755,8] = 375 v[756,8] = 167 v[757,8] = 395 v[758,8] = 155 v[759,8] = 5 v[760,8] = 237 v[761,8] = 361 v[762,8] = 489 v[763,8] = 127 v[764,8] = 21 v[765,8] = 345 v[766,8] = 101 v[767,8] = 371 v[768,8] = 233 v[769,8] = 431 v[770,8] = 109 v[771,8] = 119 v[772,8] = 277 v[773,8] = 125 v[774,8] = 263 v[775,8] = 73 v[776,8] = 135 v[777,8] = 123 v[778,8] = 83 v[779,8] = 123 v[780,8] = 405 v[781,8] = 69 v[782,8] = 75 v[783,8] = 287 v[784,8] = 401 v[785,8] = 23 v[786,8] = 283 v[787,8] = 393 v[788,8] = 41 v[789,8] = 379 v[790,8] = 431 v[791,8] = 11 v[792,8] = 475 v[793,8] = 505 v[794,8] = 19 v[795,8] = 365 v[796,8] = 265 v[797,8] = 271 v[798,8] = 499 v[799,8] = 489 v[800,8] = 443 v[801,8] = 165 v[802,8] = 91 v[803,8] = 83 v[804,8] = 291 v[805,8] = 319 v[806,8] = 199 v[807,8] = 107 v[808,8] = 245 v[809,8] = 389 v[810,8] = 143 v[811,8] = 137 v[812,8] = 89 v[813,8] = 125 v[814,8] = 281 v[815,8] = 381 v[816,8] = 215 v[817,8] = 131 v[818,8] = 299 v[819,8] = 249 v[820,8] = 375 v[821,8] = 455 v[822,8] = 43 v[823,8] = 73 v[824,8] = 281 v[825,8] = 217 v[826,8] = 297 v[827,8] = 229 v[828,8] = 431 v[829,8] = 357 v[830,8] = 81 v[831,8] = 357 v[832,8] = 171 v[833,8] = 451 v[834,8] = 481 v[835,8] = 13 v[836,8] = 387 v[837,8] = 491 v[838,8] = 489 v[839,8] = 439 v[840,8] = 385 v[841,8] = 487 v[842,8] = 177 v[843,8] = 393 v[844,8] = 33 v[845,8] = 71 v[846,8] = 375 v[847,8] = 443 v[848,8] = 129 v[849,8] = 407 v[850,8] = 395 v[851,8] = 127 v[852,8] = 65 v[853,8] = 333 v[854,8] = 309 v[855,8] = 119 v[856,8] = 197 v[857,8] = 435 v[858,8] = 497 v[859,8] = 373 v[860,8] = 71 v[861,8] = 379 v[862,8] = 509 v[863,8] = 387 v[864,8] = 159 v[865,8] = 265 v[866,8] = 477 v[867,8] = 463 v[868,8] = 449 v[869,8] = 47 v[870,8] = 353 v[871,8] = 249 v[872,8] = 335 v[873,8] = 505 v[874,8] = 89 v[875,8] = 141 v[876,8] = 55 v[877,8] = 235 v[878,8] = 187 v[879,8] = 87 v[880,8] = 363 v[881,8] = 93 v[882,8] = 363 v[883,8] = 101 v[884,8] = 67 v[885,8] = 215 v[886,8] = 321 v[887,8] = 331 v[888,8] = 305 v[889,8] = 261 v[890,8] = 411 v[891,8] = 491 v[892,8] = 479 v[893,8] = 65 v[894,8] = 307 v[895,8] = 469 v[896,8] = 415 v[897,8] = 131 v[898,8] = 315 v[899,8] = 487 v[900,8] = 83 v[901,8] = 455 v[902,8] = 19 v[903,8] = 113 v[904,8] = 163 v[905,8] = 503 v[906,8] = 99 v[907,8] = 499 v[908,8] = 251 v[909,8] = 239 v[910,8] = 81 v[911,8] = 167 v[912,8] = 391 v[913,8] = 255 v[914,8] = 317 v[915,8] = 363 v[916,8] = 359 v[917,8] = 395 v[918,8] = 419 v[919,8] = 307 v[920,8] = 251 v[921,8] = 267 v[922,8] = 171 v[923,8] = 461 v[924,8] = 183 v[925,8] = 465 v[926,8] = 165 v[927,8] = 163 v[928,8] = 293 v[929,8] = 477 v[930,8] = 223 v[931,8] = 403 v[932,8] = 389 v[933,8] = 97 v[934,8] = 335 v[935,8] = 357 v[936,8] = 297 v[937,8] = 19 v[938,8] = 469 v[939,8] = 501 v[940,8] = 249 v[941,8] = 85 v[942,8] = 213 v[943,8] = 311 v[944,8] = 265 v[945,8] = 379 v[946,8] = 297 v[947,8] = 283 v[948,8] = 393 v[949,8] = 449 v[950,8] = 463 v[951,8] = 289 v[952,8] = 159 v[953,8] = 289 v[954,8] = 499 v[955,8] = 407 v[956,8] = 129 v[957,8] = 137 v[958,8] = 221 v[959,8] = 43 v[960,8] = 89 v[961,8] = 403 v[962,8] = 271 v[963,8] = 75 v[964,8] = 83 v[965,8] = 445 v[966,8] = 453 v[967,8] = 389 v[968,8] = 149 v[969,8] = 143 v[970,8] = 423 v[971,8] = 499 v[972,8] = 317 v[973,8] = 445 v[974,8] = 157 v[975,8] = 137 v[976,8] = 453 v[977,8] = 163 v[978,8] = 87 v[979,8] = 23 v[980,8] = 391 v[981,8] = 119 v[982,8] = 427 v[983,8] = 323 v[984,8] = 173 v[985,8] = 89 v[986,8] = 259 v[987,8] = 377 v[988,8] = 511 v[989,8] = 249 v[990,8] = 31 v[991,8] = 363 v[992,8] = 229 v[993,8] = 353 v[994,8] = 329 v[995,8] = 493 v[996,8] = 427 v[997,8] = 57 v[998,8] = 205 v[999,8] = 389 v[1000,8] = 91 v[1001,8] = 83 v[1002,8] = 13 v[1003,8] = 219 v[1004,8] = 439 v[1005,8] = 45 v[1006,8] = 35 v[1007,8] = 371 v[1008,8] = 441 v[1009,8] = 17 v[1010,8] = 267 v[1011,8] = 501 v[1012,8] = 53 v[1013,8] = 25 v[1014,8] = 333 v[1015,8] = 17 v[1016,8] = 201 v[1017,8] = 475 v[1018,8] = 257 v[1019,8] = 417 v[1020,8] = 345 v[1021,8] = 381 v[1022,8] = 377 v[1023,8] = 55 v[1024,8] = 403 v[1025,8] = 77 v[1026,8] = 389 v[1027,8] = 347 v[1028,8] = 363 v[1029,8] = 211 v[1030,8] = 413 v[1031,8] = 419 v[1032,8] = 5 v[1033,8] = 167 v[1034,8] = 219 v[1035,8] = 201 v[1036,8] = 285 v[1037,8] = 425 v[1038,8] = 11 v[1039,8] = 77 v[1040,8] = 269 v[1041,8] = 489 v[1042,8] = 281 v[1043,8] = 403 v[1044,8] = 79 v[1045,8] = 425 v[1046,8] = 125 v[1047,8] = 81 v[1048,8] = 331 v[1049,8] = 437 v[1050,8] = 271 v[1051,8] = 397 v[1052,8] = 299 v[1053,8] = 475 v[1054,8] = 271 v[1055,8] = 249 v[1056,8] = 413 v[1057,8] = 233 v[1058,8] = 261 v[1059,8] = 495 v[1060,8] = 171 v[1061,8] = 69 v[1062,8] = 27 v[1063,8] = 409 v[1064,8] = 21 v[1065,8] = 421 v[1066,8] = 367 v[1067,8] = 81 v[1068,8] = 483 v[1069,8] = 255 v[1070,8] = 15 v[1071,8] = 219 v[1072,8] = 365 v[1073,8] = 497 v[1074,8] = 181 v[1075,8] = 75 v[1076,8] = 431 v[1077,8] = 99 v[1078,8] = 325 v[1079,8] = 407 v[1080,8] = 229 v[1081,8] = 281 v[1082,8] = 63 v[1083,8] = 83 v[1084,8] = 493 v[1085,8] = 5 v[1086,8] = 113 v[1087,8] = 15 v[1088,8] = 271 v[1089,8] = 37 v[1090,8] = 87 v[1091,8] = 451 v[1092,8] = 299 v[1093,8] = 83 v[1094,8] = 451 v[1095,8] = 311 v[1096,8] = 441 v[1097,8] = 47 v[1098,8] = 455 v[1099,8] = 47 v[1100,8] = 253 v[1101,8] = 13 v[1102,8] = 109 v[1103,8] = 369 v[1104,8] = 347 v[1105,8] = 11 v[1106,8] = 409 v[1107,8] = 275 v[1108,8] = 63 v[1109,8] = 441 v[1110,8] = 15 v[101,9] = 519 v[102,9] = 307 v[103,9] = 931 v[104,9] = 1023 v[105,9] = 517 v[106,9] = 771 v[107,9] = 151 v[108,9] = 1023 v[109,9] = 539 v[110,9] = 725 v[111,9] = 45 v[112,9] = 927 v[113,9] = 707 v[114,9] = 29 v[115,9] = 125 v[116,9] = 371 v[117,9] = 275 v[118,9] = 279 v[119,9] = 817 v[120,9] = 389 v[121,9] = 453 v[122,9] = 989 v[123,9] = 1015 v[124,9] = 29 v[125,9] = 169 v[126,9] = 743 v[127,9] = 99 v[128,9] = 923 v[129,9] = 981 v[130,9] = 181 v[131,9] = 693 v[132,9] = 309 v[133,9] = 227 v[134,9] = 111 v[135,9] = 219 v[136,9] = 897 v[137,9] = 377 v[138,9] = 425 v[139,9] = 609 v[140,9] = 227 v[141,9] = 19 v[142,9] = 221 v[143,9] = 143 v[144,9] = 581 v[145,9] = 147 v[146,9] = 919 v[147,9] = 127 v[148,9] = 725 v[149,9] = 793 v[150,9] = 289 v[151,9] = 411 v[152,9] = 835 v[153,9] = 921 v[154,9] = 957 v[155,9] = 443 v[156,9] = 349 v[157,9] = 813 v[158,9] = 5 v[159,9] = 105 v[160,9] = 457 v[161,9] = 393 v[162,9] = 539 v[163,9] = 101 v[164,9] = 197 v[165,9] = 697 v[166,9] = 27 v[167,9] = 343 v[168,9] = 515 v[169,9] = 69 v[170,9] = 485 v[171,9] = 383 v[172,9] = 855 v[173,9] = 693 v[174,9] = 133 v[175,9] = 87 v[176,9] = 743 v[177,9] = 747 v[178,9] = 475 v[179,9] = 87 v[180,9] = 469 v[181,9] = 763 v[182,9] = 721 v[183,9] = 345 v[184,9] = 479 v[185,9] = 965 v[186,9] = 527 v[187,9] = 121 v[188,9] = 271 v[189,9] = 353 v[190,9] = 467 v[191,9] = 177 v[192,9] = 245 v[193,9] = 627 v[194,9] = 113 v[195,9] = 357 v[196,9] = 7 v[197,9] = 691 v[198,9] = 725 v[199,9] = 355 v[200,9] = 889 v[201,9] = 635 v[202,9] = 737 v[203,9] = 429 v[204,9] = 545 v[205,9] = 925 v[206,9] = 357 v[207,9] = 873 v[208,9] = 187 v[209,9] = 351 v[210,9] = 677 v[211,9] = 999 v[212,9] = 921 v[213,9] = 477 v[214,9] = 233 v[215,9] = 765 v[216,9] = 495 v[217,9] = 81 v[218,9] = 953 v[219,9] = 479 v[220,9] = 89 v[221,9] = 173 v[222,9] = 473 v[223,9] = 131 v[224,9] = 961 v[225,9] = 411 v[226,9] = 291 v[227,9] = 967 v[228,9] = 65 v[229,9] = 511 v[230,9] = 13 v[231,9] = 805 v[232,9] = 945 v[233,9] = 369 v[234,9] = 827 v[235,9] = 295 v[236,9] = 163 v[237,9] = 835 v[238,9] = 259 v[239,9] = 207 v[240,9] = 331 v[241,9] = 29 v[242,9] = 315 v[243,9] = 999 v[244,9] = 133 v[245,9] = 967 v[246,9] = 41 v[247,9] = 117 v[248,9] = 677 v[249,9] = 471 v[250,9] = 717 v[251,9] = 881 v[252,9] = 755 v[253,9] = 351 v[254,9] = 723 v[255,9] = 259 v[256,9] = 879 v[257,9] = 455 v[258,9] = 721 v[259,9] = 289 v[260,9] = 149 v[261,9] = 199 v[262,9] = 805 v[263,9] = 987 v[264,9] = 851 v[265,9] = 423 v[266,9] = 597 v[267,9] = 129 v[268,9] = 11 v[269,9] = 733 v[270,9] = 549 v[271,9] = 153 v[272,9] = 285 v[273,9] = 451 v[274,9] = 559 v[275,9] = 377 v[276,9] = 109 v[277,9] = 357 v[278,9] = 143 v[279,9] = 693 v[280,9] = 615 v[281,9] = 677 v[282,9] = 701 v[283,9] = 475 v[284,9] = 767 v[285,9] = 85 v[286,9] = 229 v[287,9] = 509 v[288,9] = 547 v[289,9] = 151 v[290,9] = 389 v[291,9] = 711 v[292,9] = 785 v[293,9] = 657 v[294,9] = 319 v[295,9] = 509 v[296,9] = 99 v[297,9] = 1007 v[298,9] = 775 v[299,9] = 359 v[300,9] = 697 v[301,9] = 677 v[302,9] = 85 v[303,9] = 497 v[304,9] = 105 v[305,9] = 615 v[306,9] = 891 v[307,9] = 71 v[308,9] = 449 v[309,9] = 835 v[310,9] = 609 v[311,9] = 377 v[312,9] = 693 v[313,9] = 665 v[314,9] = 627 v[315,9] = 215 v[316,9] = 911 v[317,9] = 503 v[318,9] = 729 v[319,9] = 131 v[320,9] = 19 v[321,9] = 895 v[322,9] = 199 v[323,9] = 161 v[324,9] = 239 v[325,9] = 633 v[326,9] = 1013 v[327,9] = 537 v[328,9] = 255 v[329,9] = 23 v[330,9] = 149 v[331,9] = 679 v[332,9] = 1021 v[333,9] = 595 v[334,9] = 199 v[335,9] = 557 v[336,9] = 659 v[337,9] = 251 v[338,9] = 829 v[339,9] = 727 v[340,9] = 439 v[341,9] = 495 v[342,9] = 647 v[343,9] = 223 v[344,9] = 949 v[345,9] = 625 v[346,9] = 87 v[347,9] = 481 v[348,9] = 85 v[349,9] = 799 v[350,9] = 917 v[351,9] = 769 v[352,9] = 949 v[353,9] = 739 v[354,9] = 115 v[355,9] = 499 v[356,9] = 945 v[357,9] = 547 v[358,9] = 225 v[359,9] = 1015 v[360,9] = 469 v[361,9] = 737 v[362,9] = 495 v[363,9] = 353 v[364,9] = 103 v[365,9] = 17 v[366,9] = 665 v[367,9] = 639 v[368,9] = 525 v[369,9] = 75 v[370,9] = 447 v[371,9] = 185 v[372,9] = 43 v[373,9] = 729 v[374,9] = 577 v[375,9] = 863 v[376,9] = 735 v[377,9] = 317 v[378,9] = 99 v[379,9] = 17 v[380,9] = 477 v[381,9] = 893 v[382,9] = 537 v[383,9] = 519 v[384,9] = 1017 v[385,9] = 375 v[386,9] = 297 v[387,9] = 325 v[388,9] = 999 v[389,9] = 353 v[390,9] = 343 v[391,9] = 729 v[392,9] = 135 v[393,9] = 489 v[394,9] = 859 v[395,9] = 267 v[396,9] = 141 v[397,9] = 831 v[398,9] = 141 v[399,9] = 893 v[400,9] = 249 v[401,9] = 807 v[402,9] = 53 v[403,9] = 613 v[404,9] = 131 v[405,9] = 547 v[406,9] = 977 v[407,9] = 131 v[408,9] = 999 v[409,9] = 175 v[410,9] = 31 v[411,9] = 341 v[412,9] = 739 v[413,9] = 467 v[414,9] = 675 v[415,9] = 241 v[416,9] = 645 v[417,9] = 247 v[418,9] = 391 v[419,9] = 583 v[420,9] = 183 v[421,9] = 973 v[422,9] = 433 v[423,9] = 367 v[424,9] = 131 v[425,9] = 467 v[426,9] = 571 v[427,9] = 309 v[428,9] = 385 v[429,9] = 977 v[430,9] = 111 v[431,9] = 917 v[432,9] = 935 v[433,9] = 473 v[434,9] = 345 v[435,9] = 411 v[436,9] = 313 v[437,9] = 97 v[438,9] = 149 v[439,9] = 959 v[440,9] = 841 v[441,9] = 839 v[442,9] = 669 v[443,9] = 431 v[444,9] = 51 v[445,9] = 41 v[446,9] = 301 v[447,9] = 247 v[448,9] = 1015 v[449,9] = 377 v[450,9] = 329 v[451,9] = 945 v[452,9] = 269 v[453,9] = 67 v[454,9] = 979 v[455,9] = 581 v[456,9] = 643 v[457,9] = 823 v[458,9] = 557 v[459,9] = 91 v[460,9] = 405 v[461,9] = 117 v[462,9] = 801 v[463,9] = 509 v[464,9] = 347 v[465,9] = 893 v[466,9] = 303 v[467,9] = 227 v[468,9] = 783 v[469,9] = 555 v[470,9] = 867 v[471,9] = 99 v[472,9] = 703 v[473,9] = 111 v[474,9] = 797 v[475,9] = 873 v[476,9] = 541 v[477,9] = 919 v[478,9] = 513 v[479,9] = 343 v[480,9] = 319 v[481,9] = 517 v[482,9] = 135 v[483,9] = 871 v[484,9] = 917 v[485,9] = 285 v[486,9] = 663 v[487,9] = 301 v[488,9] = 15 v[489,9] = 763 v[490,9] = 89 v[491,9] = 323 v[492,9] = 757 v[493,9] = 317 v[494,9] = 807 v[495,9] = 309 v[496,9] = 1013 v[497,9] = 345 v[498,9] = 499 v[499,9] = 279 v[500,9] = 711 v[501,9] = 915 v[502,9] = 411 v[503,9] = 281 v[504,9] = 193 v[505,9] = 739 v[506,9] = 365 v[507,9] = 315 v[508,9] = 375 v[509,9] = 809 v[510,9] = 469 v[511,9] = 487 v[512,9] = 621 v[513,9] = 857 v[514,9] = 975 v[515,9] = 537 v[516,9] = 939 v[517,9] = 585 v[518,9] = 129 v[519,9] = 625 v[520,9] = 447 v[521,9] = 129 v[522,9] = 1017 v[523,9] = 133 v[524,9] = 83 v[525,9] = 3 v[526,9] = 415 v[527,9] = 661 v[528,9] = 53 v[529,9] = 115 v[530,9] = 903 v[531,9] = 49 v[532,9] = 79 v[533,9] = 55 v[534,9] = 385 v[535,9] = 261 v[536,9] = 345 v[537,9] = 297 v[538,9] = 199 v[539,9] = 385 v[540,9] = 617 v[541,9] = 25 v[542,9] = 515 v[543,9] = 275 v[544,9] = 849 v[545,9] = 401 v[546,9] = 471 v[547,9] = 377 v[548,9] = 661 v[549,9] = 535 v[550,9] = 505 v[551,9] = 939 v[552,9] = 465 v[553,9] = 225 v[554,9] = 929 v[555,9] = 219 v[556,9] = 955 v[557,9] = 659 v[558,9] = 441 v[559,9] = 117 v[560,9] = 527 v[561,9] = 427 v[562,9] = 515 v[563,9] = 287 v[564,9] = 191 v[565,9] = 33 v[566,9] = 389 v[567,9] = 197 v[568,9] = 825 v[569,9] = 63 v[570,9] = 417 v[571,9] = 949 v[572,9] = 35 v[573,9] = 571 v[574,9] = 9 v[575,9] = 131 v[576,9] = 609 v[577,9] = 439 v[578,9] = 95 v[579,9] = 19 v[580,9] = 569 v[581,9] = 893 v[582,9] = 451 v[583,9] = 397 v[584,9] = 971 v[585,9] = 801 v[586,9] = 125 v[587,9] = 471 v[588,9] = 187 v[589,9] = 257 v[590,9] = 67 v[591,9] = 949 v[592,9] = 621 v[593,9] = 453 v[594,9] = 411 v[595,9] = 621 v[596,9] = 955 v[597,9] = 309 v[598,9] = 783 v[599,9] = 893 v[600,9] = 597 v[601,9] = 377 v[602,9] = 753 v[603,9] = 145 v[604,9] = 637 v[605,9] = 941 v[606,9] = 593 v[607,9] = 317 v[608,9] = 555 v[609,9] = 375 v[610,9] = 575 v[611,9] = 175 v[612,9] = 403 v[613,9] = 571 v[614,9] = 555 v[615,9] = 109 v[616,9] = 377 v[617,9] = 931 v[618,9] = 499 v[619,9] = 649 v[620,9] = 653 v[621,9] = 329 v[622,9] = 279 v[623,9] = 271 v[624,9] = 647 v[625,9] = 721 v[626,9] = 665 v[627,9] = 429 v[628,9] = 957 v[629,9] = 803 v[630,9] = 767 v[631,9] = 425 v[632,9] = 477 v[633,9] = 995 v[634,9] = 105 v[635,9] = 495 v[636,9] = 575 v[637,9] = 687 v[638,9] = 385 v[639,9] = 227 v[640,9] = 923 v[641,9] = 563 v[642,9] = 723 v[643,9] = 481 v[644,9] = 717 v[645,9] = 111 v[646,9] = 633 v[647,9] = 113 v[648,9] = 369 v[649,9] = 955 v[650,9] = 253 v[651,9] = 321 v[652,9] = 409 v[653,9] = 909 v[654,9] = 367 v[655,9] = 33 v[656,9] = 967 v[657,9] = 453 v[658,9] = 863 v[659,9] = 449 v[660,9] = 539 v[661,9] = 781 v[662,9] = 911 v[663,9] = 113 v[664,9] = 7 v[665,9] = 219 v[666,9] = 725 v[667,9] = 1015 v[668,9] = 971 v[669,9] = 1021 v[670,9] = 525 v[671,9] = 785 v[672,9] = 873 v[673,9] = 191 v[674,9] = 893 v[675,9] = 297 v[676,9] = 507 v[677,9] = 215 v[678,9] = 21 v[679,9] = 153 v[680,9] = 645 v[681,9] = 913 v[682,9] = 755 v[683,9] = 371 v[684,9] = 881 v[685,9] = 113 v[686,9] = 903 v[687,9] = 225 v[688,9] = 49 v[689,9] = 587 v[690,9] = 201 v[691,9] = 927 v[692,9] = 429 v[693,9] = 599 v[694,9] = 513 v[695,9] = 97 v[696,9] = 319 v[697,9] = 331 v[698,9] = 833 v[699,9] = 325 v[700,9] = 887 v[701,9] = 139 v[702,9] = 927 v[703,9] = 399 v[704,9] = 163 v[705,9] = 307 v[706,9] = 803 v[707,9] = 169 v[708,9] = 1019 v[709,9] = 869 v[710,9] = 537 v[711,9] = 907 v[712,9] = 479 v[713,9] = 335 v[714,9] = 697 v[715,9] = 479 v[716,9] = 353 v[717,9] = 769 v[718,9] = 787 v[719,9] = 1023 v[720,9] = 855 v[721,9] = 493 v[722,9] = 883 v[723,9] = 521 v[724,9] = 735 v[725,9] = 297 v[726,9] = 1011 v[727,9] = 991 v[728,9] = 879 v[729,9] = 855 v[730,9] = 591 v[731,9] = 415 v[732,9] = 917 v[733,9] = 375 v[734,9] = 453 v[735,9] = 553 v[736,9] = 189 v[737,9] = 841 v[738,9] = 339 v[739,9] = 211 v[740,9] = 601 v[741,9] = 57 v[742,9] = 765 v[743,9] = 745 v[744,9] = 621 v[745,9] = 209 v[746,9] = 875 v[747,9] = 639 v[748,9] = 7 v[749,9] = 595 v[750,9] = 971 v[751,9] = 263 v[752,9] = 1009 v[753,9] = 201 v[754,9] = 23 v[755,9] = 77 v[756,9] = 621 v[757,9] = 33 v[758,9] = 535 v[759,9] = 963 v[760,9] = 661 v[761,9] = 523 v[762,9] = 263 v[763,9] = 917 v[764,9] = 103 v[765,9] = 623 v[766,9] = 231 v[767,9] = 47 v[768,9] = 301 v[769,9] = 549 v[770,9] = 337 v[771,9] = 675 v[772,9] = 189 v[773,9] = 357 v[774,9] = 1005 v[775,9] = 789 v[776,9] = 189 v[777,9] = 319 v[778,9] = 721 v[779,9] = 1005 v[780,9] = 525 v[781,9] = 675 v[782,9] = 539 v[783,9] = 191 v[784,9] = 813 v[785,9] = 917 v[786,9] = 51 v[787,9] = 167 v[788,9] = 415 v[789,9] = 579 v[790,9] = 755 v[791,9] = 605 v[792,9] = 721 v[793,9] = 837 v[794,9] = 529 v[795,9] = 31 v[796,9] = 327 v[797,9] = 799 v[798,9] = 961 v[799,9] = 279 v[800,9] = 409 v[801,9] = 847 v[802,9] = 649 v[803,9] = 241 v[804,9] = 285 v[805,9] = 545 v[806,9] = 407 v[807,9] = 161 v[808,9] = 591 v[809,9] = 73 v[810,9] = 313 v[811,9] = 811 v[812,9] = 17 v[813,9] = 663 v[814,9] = 269 v[815,9] = 261 v[816,9] = 37 v[817,9] = 783 v[818,9] = 127 v[819,9] = 917 v[820,9] = 231 v[821,9] = 577 v[822,9] = 975 v[823,9] = 793 v[824,9] = 921 v[825,9] = 343 v[826,9] = 751 v[827,9] = 139 v[828,9] = 221 v[829,9] = 79 v[830,9] = 817 v[831,9] = 393 v[832,9] = 545 v[833,9] = 11 v[834,9] = 781 v[835,9] = 71 v[836,9] = 1 v[837,9] = 699 v[838,9] = 767 v[839,9] = 917 v[840,9] = 9 v[841,9] = 107 v[842,9] = 341 v[843,9] = 587 v[844,9] = 903 v[845,9] = 965 v[846,9] = 599 v[847,9] = 507 v[848,9] = 843 v[849,9] = 739 v[850,9] = 579 v[851,9] = 397 v[852,9] = 397 v[853,9] = 325 v[854,9] = 775 v[855,9] = 565 v[856,9] = 925 v[857,9] = 75 v[858,9] = 55 v[859,9] = 979 v[860,9] = 931 v[861,9] = 93 v[862,9] = 957 v[863,9] = 857 v[864,9] = 753 v[865,9] = 965 v[866,9] = 795 v[867,9] = 67 v[868,9] = 5 v[869,9] = 87 v[870,9] = 909 v[871,9] = 97 v[872,9] = 995 v[873,9] = 271 v[874,9] = 875 v[875,9] = 671 v[876,9] = 613 v[877,9] = 33 v[878,9] = 351 v[879,9] = 69 v[880,9] = 811 v[881,9] = 669 v[882,9] = 729 v[883,9] = 401 v[884,9] = 647 v[885,9] = 241 v[886,9] = 435 v[887,9] = 447 v[888,9] = 721 v[889,9] = 271 v[890,9] = 745 v[891,9] = 53 v[892,9] = 775 v[893,9] = 99 v[894,9] = 343 v[895,9] = 451 v[896,9] = 427 v[897,9] = 593 v[898,9] = 339 v[899,9] = 845 v[900,9] = 243 v[901,9] = 345 v[902,9] = 17 v[903,9] = 573 v[904,9] = 421 v[905,9] = 517 v[906,9] = 971 v[907,9] = 499 v[908,9] = 435 v[909,9] = 769 v[910,9] = 75 v[911,9] = 203 v[912,9] = 793 v[913,9] = 985 v[914,9] = 343 v[915,9] = 955 v[916,9] = 735 v[917,9] = 523 v[918,9] = 659 v[919,9] = 703 v[920,9] = 303 v[921,9] = 421 v[922,9] = 951 v[923,9] = 405 v[924,9] = 631 v[925,9] = 825 v[926,9] = 735 v[927,9] = 433 v[928,9] = 841 v[929,9] = 485 v[930,9] = 49 v[931,9] = 749 v[932,9] = 107 v[933,9] = 669 v[934,9] = 211 v[935,9] = 497 v[936,9] = 143 v[937,9] = 99 v[938,9] = 57 v[939,9] = 277 v[940,9] = 969 v[941,9] = 107 v[942,9] = 397 v[943,9] = 563 v[944,9] = 551 v[945,9] = 447 v[946,9] = 381 v[947,9] = 187 v[948,9] = 57 v[949,9] = 405 v[950,9] = 731 v[951,9] = 769 v[952,9] = 923 v[953,9] = 955 v[954,9] = 915 v[955,9] = 737 v[956,9] = 595 v[957,9] = 341 v[958,9] = 253 v[959,9] = 823 v[960,9] = 197 v[961,9] = 321 v[962,9] = 315 v[963,9] = 181 v[964,9] = 885 v[965,9] = 497 v[966,9] = 159 v[967,9] = 571 v[968,9] = 981 v[969,9] = 899 v[970,9] = 785 v[971,9] = 947 v[972,9] = 217 v[973,9] = 217 v[974,9] = 135 v[975,9] = 753 v[976,9] = 623 v[977,9] = 565 v[978,9] = 717 v[979,9] = 903 v[980,9] = 581 v[981,9] = 955 v[982,9] = 621 v[983,9] = 361 v[984,9] = 869 v[985,9] = 87 v[986,9] = 943 v[987,9] = 907 v[988,9] = 853 v[989,9] = 353 v[990,9] = 335 v[991,9] = 197 v[992,9] = 771 v[993,9] = 433 v[994,9] = 743 v[995,9] = 195 v[996,9] = 91 v[997,9] = 1023 v[998,9] = 63 v[999,9] = 301 v[1000,9] = 647 v[1001,9] = 205 v[1002,9] = 485 v[1003,9] = 927 v[1004,9] = 1003 v[1005,9] = 987 v[1006,9] = 359 v[1007,9] = 577 v[1008,9] = 147 v[1009,9] = 141 v[1010,9] = 1017 v[1011,9] = 701 v[1012,9] = 273 v[1013,9] = 89 v[1014,9] = 589 v[1015,9] = 487 v[1016,9] = 859 v[1017,9] = 343 v[1018,9] = 91 v[1019,9] = 847 v[1020,9] = 341 v[1021,9] = 173 v[1022,9] = 287 v[1023,9] = 1003 v[1024,9] = 289 v[1025,9] = 639 v[1026,9] = 983 v[1027,9] = 685 v[1028,9] = 697 v[1029,9] = 35 v[1030,9] = 701 v[1031,9] = 645 v[1032,9] = 911 v[1033,9] = 501 v[1034,9] = 705 v[1035,9] = 873 v[1036,9] = 763 v[1037,9] = 745 v[1038,9] = 657 v[1039,9] = 559 v[1040,9] = 699 v[1041,9] = 315 v[1042,9] = 347 v[1043,9] = 429 v[1044,9] = 197 v[1045,9] = 165 v[1046,9] = 955 v[1047,9] = 859 v[1048,9] = 167 v[1049,9] = 303 v[1050,9] = 833 v[1051,9] = 531 v[1052,9] = 473 v[1053,9] = 635 v[1054,9] = 641 v[1055,9] = 195 v[1056,9] = 589 v[1057,9] = 821 v[1058,9] = 205 v[1059,9] = 3 v[1060,9] = 635 v[1061,9] = 371 v[1062,9] = 891 v[1063,9] = 249 v[1064,9] = 123 v[1065,9] = 77 v[1066,9] = 623 v[1067,9] = 993 v[1068,9] = 401 v[1069,9] = 525 v[1070,9] = 427 v[1071,9] = 71 v[1072,9] = 655 v[1073,9] = 951 v[1074,9] = 357 v[1075,9] = 851 v[1076,9] = 899 v[1077,9] = 535 v[1078,9] = 493 v[1079,9] = 323 v[1080,9] = 1003 v[1081,9] = 343 v[1082,9] = 515 v[1083,9] = 859 v[1084,9] = 1017 v[1085,9] = 5 v[1086,9] = 423 v[1087,9] = 315 v[1088,9] = 1011 v[1089,9] = 703 v[1090,9] = 41 v[1091,9] = 777 v[1092,9] = 163 v[1093,9] = 95 v[1094,9] = 831 v[1095,9] = 79 v[1096,9] = 975 v[1097,9] = 235 v[1098,9] = 633 v[1099,9] = 723 v[1100,9] = 297 v[1101,9] = 589 v[1102,9] = 317 v[1103,9] = 679 v[1104,9] = 981 v[1105,9] = 195 v[1106,9] = 399 v[1107,9] = 1003 v[1108,9] = 121 v[1109,9] = 501 v[1110,9] = 155 v[161,10] = 7 v[162,10] = 2011 v[163,10] = 1001 v[164,10] = 49 v[165,10] = 825 v[166,10] = 415 v[167,10] = 1441 v[168,10] = 383 v[169,10] = 1581 v[170,10] = 623 v[171,10] = 1621 v[172,10] = 1319 v[173,10] = 1387 v[174,10] = 619 v[175,10] = 839 v[176,10] = 217 v[177,10] = 75 v[178,10] = 1955 v[179,10] = 505 v[180,10] = 281 v[181,10] = 1629 v[182,10] = 1379 v[183,10] = 53 v[184,10] = 1111 v[185,10] = 1399 v[186,10] = 301 v[187,10] = 209 v[188,10] = 49 v[189,10] = 155 v[190,10] = 1647 v[191,10] = 631 v[192,10] = 129 v[193,10] = 1569 v[194,10] = 335 v[195,10] = 67 v[196,10] = 1955 v[197,10] = 1611 v[198,10] = 2021 v[199,10] = 1305 v[200,10] = 121 v[201,10] = 37 v[202,10] = 877 v[203,10] = 835 v[204,10] = 1457 v[205,10] = 669 v[206,10] = 1405 v[207,10] = 935 v[208,10] = 1735 v[209,10] = 665 v[210,10] = 551 v[211,10] = 789 v[212,10] = 1543 v[213,10] = 1267 v[214,10] = 1027 v[215,10] = 1 v[216,10] = 1911 v[217,10] = 163 v[218,10] = 1929 v[219,10] = 67 v[220,10] = 1975 v[221,10] = 1681 v[222,10] = 1413 v[223,10] = 191 v[224,10] = 1711 v[225,10] = 1307 v[226,10] = 401 v[227,10] = 725 v[228,10] = 1229 v[229,10] = 1403 v[230,10] = 1609 v[231,10] = 2035 v[232,10] = 917 v[233,10] = 921 v[234,10] = 1789 v[235,10] = 41 v[236,10] = 2003 v[237,10] = 187 v[238,10] = 67 v[239,10] = 1635 v[240,10] = 717 v[241,10] = 1449 v[242,10] = 277 v[243,10] = 1903 v[244,10] = 1179 v[245,10] = 363 v[246,10] = 1211 v[247,10] = 1231 v[248,10] = 647 v[249,10] = 1261 v[250,10] = 1029 v[251,10] = 1485 v[252,10] = 1309 v[253,10] = 1149 v[254,10] = 317 v[255,10] = 1335 v[256,10] = 171 v[257,10] = 243 v[258,10] = 271 v[259,10] = 1055 v[260,10] = 1601 v[261,10] = 1129 v[262,10] = 1653 v[263,10] = 205 v[264,10] = 1463 v[265,10] = 1681 v[266,10] = 1621 v[267,10] = 197 v[268,10] = 951 v[269,10] = 573 v[270,10] = 1697 v[271,10] = 1265 v[272,10] = 1321 v[273,10] = 1805 v[274,10] = 1235 v[275,10] = 1853 v[276,10] = 1307 v[277,10] = 945 v[278,10] = 1197 v[279,10] = 1411 v[280,10] = 833 v[281,10] = 273 v[282,10] = 1517 v[283,10] = 1747 v[284,10] = 1095 v[285,10] = 1345 v[286,10] = 869 v[287,10] = 57 v[288,10] = 1383 v[289,10] = 221 v[290,10] = 1713 v[291,10] = 335 v[292,10] = 1751 v[293,10] = 1141 v[294,10] = 839 v[295,10] = 523 v[296,10] = 1861 v[297,10] = 1105 v[298,10] = 389 v[299,10] = 1177 v[300,10] = 1877 v[301,10] = 805 v[302,10] = 93 v[303,10] = 1591 v[304,10] = 423 v[305,10] = 1835 v[306,10] = 99 v[307,10] = 1781 v[308,10] = 1515 v[309,10] = 1909 v[310,10] = 1011 v[311,10] = 303 v[312,10] = 385 v[313,10] = 1635 v[314,10] = 357 v[315,10] = 973 v[316,10] = 1781 v[317,10] = 1707 v[318,10] = 1363 v[319,10] = 1053 v[320,10] = 649 v[321,10] = 1469 v[322,10] = 623 v[323,10] = 1429 v[324,10] = 1241 v[325,10] = 1151 v[326,10] = 1055 v[327,10] = 503 v[328,10] = 921 v[329,10] = 3 v[330,10] = 349 v[331,10] = 1149 v[332,10] = 293 v[333,10] = 45 v[334,10] = 303 v[335,10] = 877 v[336,10] = 1565 v[337,10] = 1583 v[338,10] = 1001 v[339,10] = 663 v[340,10] = 1535 v[341,10] = 395 v[342,10] = 1141 v[343,10] = 1481 v[344,10] = 1797 v[345,10] = 643 v[346,10] = 1507 v[347,10] = 465 v[348,10] = 2027 v[349,10] = 1695 v[350,10] = 367 v[351,10] = 937 v[352,10] = 719 v[353,10] = 545 v[354,10] = 1991 v[355,10] = 83 v[356,10] = 819 v[357,10] = 239 v[358,10] = 1791 v[359,10] = 1461 v[360,10] = 1647 v[361,10] = 1501 v[362,10] = 1161 v[363,10] = 1629 v[364,10] = 139 v[365,10] = 1595 v[366,10] = 1921 v[367,10] = 1267 v[368,10] = 1415 v[369,10] = 509 v[370,10] = 347 v[371,10] = 777 v[372,10] = 1083 v[373,10] = 363 v[374,10] = 269 v[375,10] = 1015 v[376,10] = 1809 v[377,10] = 1105 v[378,10] = 1429 v[379,10] = 1471 v[380,10] = 2019 v[381,10] = 381 v[382,10] = 2025 v[383,10] = 1223 v[384,10] = 827 v[385,10] = 1733 v[386,10] = 887 v[387,10] = 1321 v[388,10] = 803 v[389,10] = 1951 v[390,10] = 1297 v[391,10] = 1995 v[392,10] = 833 v[393,10] = 1107 v[394,10] = 1135 v[395,10] = 1181 v[396,10] = 1251 v[397,10] = 983 v[398,10] = 1389 v[399,10] = 1565 v[400,10] = 273 v[401,10] = 137 v[402,10] = 71 v[403,10] = 735 v[404,10] = 1005 v[405,10] = 933 v[406,10] = 67 v[407,10] = 1471 v[408,10] = 551 v[409,10] = 457 v[410,10] = 1667 v[411,10] = 1729 v[412,10] = 919 v[413,10] = 285 v[414,10] = 1629 v[415,10] = 1815 v[416,10] = 653 v[417,10] = 1919 v[418,10] = 1039 v[419,10] = 531 v[420,10] = 393 v[421,10] = 1411 v[422,10] = 359 v[423,10] = 221 v[424,10] = 699 v[425,10] = 1485 v[426,10] = 471 v[427,10] = 1357 v[428,10] = 1715 v[429,10] = 595 v[430,10] = 1677 v[431,10] = 153 v[432,10] = 1903 v[433,10] = 1281 v[434,10] = 215 v[435,10] = 781 v[436,10] = 543 v[437,10] = 293 v[438,10] = 1807 v[439,10] = 965 v[440,10] = 1695 v[441,10] = 443 v[442,10] = 1985 v[443,10] = 321 v[444,10] = 879 v[445,10] = 1227 v[446,10] = 1915 v[447,10] = 839 v[448,10] = 1945 v[449,10] = 1993 v[450,10] = 1165 v[451,10] = 51 v[452,10] = 557 v[453,10] = 723 v[454,10] = 1491 v[455,10] = 817 v[456,10] = 1237 v[457,10] = 947 v[458,10] = 1215 v[459,10] = 1911 v[460,10] = 1225 v[461,10] = 1965 v[462,10] = 1889 v[463,10] = 1503 v[464,10] = 1177 v[465,10] = 73 v[466,10] = 1767 v[467,10] = 303 v[468,10] = 177 v[469,10] = 1897 v[470,10] = 1401 v[471,10] = 321 v[472,10] = 921 v[473,10] = 217 v[474,10] = 1779 v[475,10] = 327 v[476,10] = 1889 v[477,10] = 333 v[478,10] = 615 v[479,10] = 1665 v[480,10] = 1825 v[481,10] = 1639 v[482,10] = 237 v[483,10] = 1205 v[484,10] = 361 v[485,10] = 129 v[486,10] = 1655 v[487,10] = 983 v[488,10] = 1089 v[489,10] = 1171 v[490,10] = 401 v[491,10] = 677 v[492,10] = 643 v[493,10] = 749 v[494,10] = 303 v[495,10] = 1407 v[496,10] = 1873 v[497,10] = 1579 v[498,10] = 1491 v[499,10] = 1393 v[500,10] = 1247 v[501,10] = 789 v[502,10] = 763 v[503,10] = 49 v[504,10] = 5 v[505,10] = 1607 v[506,10] = 1891 v[507,10] = 735 v[508,10] = 1557 v[509,10] = 1909 v[510,10] = 1765 v[511,10] = 1777 v[512,10] = 1127 v[513,10] = 813 v[514,10] = 695 v[515,10] = 97 v[516,10] = 731 v[517,10] = 1503 v[518,10] = 1751 v[519,10] = 333 v[520,10] = 769 v[521,10] = 865 v[522,10] = 693 v[523,10] = 377 v[524,10] = 1919 v[525,10] = 957 v[526,10] = 1359 v[527,10] = 1627 v[528,10] = 1039 v[529,10] = 1783 v[530,10] = 1065 v[531,10] = 1665 v[532,10] = 1917 v[533,10] = 1947 v[534,10] = 991 v[535,10] = 1997 v[536,10] = 841 v[537,10] = 459 v[538,10] = 221 v[539,10] = 327 v[540,10] = 1595 v[541,10] = 1881 v[542,10] = 1269 v[543,10] = 1007 v[544,10] = 129 v[545,10] = 1413 v[546,10] = 475 v[547,10] = 1105 v[548,10] = 791 v[549,10] = 1983 v[550,10] = 1359 v[551,10] = 503 v[552,10] = 691 v[553,10] = 659 v[554,10] = 691 v[555,10] = 343 v[556,10] = 1375 v[557,10] = 1919 v[558,10] = 263 v[559,10] = 1373 v[560,10] = 603 v[561,10] = 1383 v[562,10] = 297 v[563,10] = 781 v[564,10] = 145 v[565,10] = 285 v[566,10] = 767 v[567,10] = 1739 v[568,10] = 1715 v[569,10] = 715 v[570,10] = 317 v[571,10] = 1333 v[572,10] = 85 v[573,10] = 831 v[574,10] = 1615 v[575,10] = 81 v[576,10] = 1667 v[577,10] = 1467 v[578,10] = 1457 v[579,10] = 1453 v[580,10] = 1825 v[581,10] = 109 v[582,10] = 387 v[583,10] = 1207 v[584,10] = 2039 v[585,10] = 213 v[586,10] = 1351 v[587,10] = 1329 v[588,10] = 1173 v[589,10] = 57 v[590,10] = 1769 v[591,10] = 951 v[592,10] = 183 v[593,10] = 23 v[594,10] = 451 v[595,10] = 1155 v[596,10] = 1551 v[597,10] = 2037 v[598,10] = 811 v[599,10] = 635 v[600,10] = 1671 v[601,10] = 1451 v[602,10] = 863 v[603,10] = 1499 v[604,10] = 1673 v[605,10] = 363 v[606,10] = 1029 v[607,10] = 1077 v[608,10] = 1525 v[609,10] = 277 v[610,10] = 1023 v[611,10] = 655 v[612,10] = 665 v[613,10] = 1869 v[614,10] = 1255 v[615,10] = 965 v[616,10] = 277 v[617,10] = 1601 v[618,10] = 329 v[619,10] = 1603 v[620,10] = 1901 v[621,10] = 395 v[622,10] = 65 v[623,10] = 1307 v[624,10] = 2029 v[625,10] = 21 v[626,10] = 1321 v[627,10] = 543 v[628,10] = 1569 v[629,10] = 1185 v[630,10] = 1905 v[631,10] = 1701 v[632,10] = 413 v[633,10] = 2041 v[634,10] = 1697 v[635,10] = 725 v[636,10] = 1417 v[637,10] = 1847 v[638,10] = 411 v[639,10] = 211 v[640,10] = 915 v[641,10] = 1891 v[642,10] = 17 v[643,10] = 1877 v[644,10] = 1699 v[645,10] = 687 v[646,10] = 1089 v[647,10] = 1973 v[648,10] = 1809 v[649,10] = 851 v[650,10] = 1495 v[651,10] = 1257 v[652,10] = 63 v[653,10] = 1323 v[654,10] = 1307 v[655,10] = 609 v[656,10] = 881 v[657,10] = 1543 v[658,10] = 177 v[659,10] = 617 v[660,10] = 1505 v[661,10] = 1747 v[662,10] = 1537 v[663,10] = 925 v[664,10] = 183 v[665,10] = 77 v[666,10] = 1723 v[667,10] = 1877 v[668,10] = 1703 v[669,10] = 397 v[670,10] = 459 v[671,10] = 521 v[672,10] = 257 v[673,10] = 1177 v[674,10] = 389 v[675,10] = 1947 v[676,10] = 1553 v[677,10] = 1583 v[678,10] = 1831 v[679,10] = 261 v[680,10] = 485 v[681,10] = 289 v[682,10] = 1281 v[683,10] = 1543 v[684,10] = 1591 v[685,10] = 1123 v[686,10] = 573 v[687,10] = 821 v[688,10] = 1065 v[689,10] = 1933 v[690,10] = 1373 v[691,10] = 2005 v[692,10] = 905 v[693,10] = 207 v[694,10] = 173 v[695,10] = 1573 v[696,10] = 1597 v[697,10] = 573 v[698,10] = 1883 v[699,10] = 1795 v[700,10] = 1499 v[701,10] = 1743 v[702,10] = 553 v[703,10] = 335 v[704,10] = 333 v[705,10] = 1645 v[706,10] = 791 v[707,10] = 871 v[708,10] = 1157 v[709,10] = 969 v[710,10] = 557 v[711,10] = 141 v[712,10] = 223 v[713,10] = 1129 v[714,10] = 1685 v[715,10] = 423 v[716,10] = 1069 v[717,10] = 391 v[718,10] = 99 v[719,10] = 95 v[720,10] = 1847 v[721,10] = 531 v[722,10] = 1859 v[723,10] = 1833 v[724,10] = 1833 v[725,10] = 341 v[726,10] = 237 v[727,10] = 1997 v[728,10] = 1799 v[729,10] = 409 v[730,10] = 431 v[731,10] = 1917 v[732,10] = 363 v[733,10] = 335 v[734,10] = 1039 v[735,10] = 1085 v[736,10] = 1657 v[737,10] = 1975 v[738,10] = 1527 v[739,10] = 1111 v[740,10] = 659 v[741,10] = 389 v[742,10] = 899 v[743,10] = 595 v[744,10] = 1439 v[745,10] = 1861 v[746,10] = 1979 v[747,10] = 1569 v[748,10] = 1087 v[749,10] = 1009 v[750,10] = 165 v[751,10] = 1895 v[752,10] = 1481 v[753,10] = 1583 v[754,10] = 29 v[755,10] = 1193 v[756,10] = 1673 v[757,10] = 1075 v[758,10] = 301 v[759,10] = 1081 v[760,10] = 1377 v[761,10] = 1747 v[762,10] = 1497 v[763,10] = 1103 v[764,10] = 1789 v[765,10] = 887 v[766,10] = 739 v[767,10] = 1577 v[768,10] = 313 v[769,10] = 1367 v[770,10] = 1299 v[771,10] = 1801 v[772,10] = 1131 v[773,10] = 1837 v[774,10] = 73 v[775,10] = 1865 v[776,10] = 1065 v[777,10] = 843 v[778,10] = 635 v[779,10] = 55 v[780,10] = 1655 v[781,10] = 913 v[782,10] = 1037 v[783,10] = 223 v[784,10] = 1871 v[785,10] = 1161 v[786,10] = 461 v[787,10] = 479 v[788,10] = 511 v[789,10] = 1721 v[790,10] = 1107 v[791,10] = 389 v[792,10] = 151 v[793,10] = 35 v[794,10] = 375 v[795,10] = 1099 v[796,10] = 937 v[797,10] = 1185 v[798,10] = 1701 v[799,10] = 769 v[800,10] = 639 v[801,10] = 1633 v[802,10] = 1609 v[803,10] = 379 v[804,10] = 1613 v[805,10] = 2031 v[806,10] = 685 v[807,10] = 289 v[808,10] = 975 v[809,10] = 671 v[810,10] = 1599 v[811,10] = 1447 v[812,10] = 871 v[813,10] = 647 v[814,10] = 99 v[815,10] = 139 v[816,10] = 1427 v[817,10] = 959 v[818,10] = 89 v[819,10] = 117 v[820,10] = 841 v[821,10] = 891 v[822,10] = 1959 v[823,10] = 223 v[824,10] = 1697 v[825,10] = 1145 v[826,10] = 499 v[827,10] = 1435 v[828,10] = 1809 v[829,10] = 1413 v[830,10] = 1445 v[831,10] = 1675 v[832,10] = 171 v[833,10] = 1073 v[834,10] = 1349 v[835,10] = 1545 v[836,10] = 2039 v[837,10] = 1027 v[838,10] = 1563 v[839,10] = 859 v[840,10] = 215 v[841,10] = 1673 v[842,10] = 1919 v[843,10] = 1633 v[844,10] = 779 v[845,10] = 411 v[846,10] = 1845 v[847,10] = 1477 v[848,10] = 1489 v[849,10] = 447 v[850,10] = 1545 v[851,10] = 351 v[852,10] = 1989 v[853,10] = 495 v[854,10] = 183 v[855,10] = 1639 v[856,10] = 1385 v[857,10] = 1805 v[858,10] = 1097 v[859,10] = 1249 v[860,10] = 1431 v[861,10] = 1571 v[862,10] = 591 v[863,10] = 697 v[864,10] = 1509 v[865,10] = 709 v[866,10] = 31 v[867,10] = 1563 v[868,10] = 165 v[869,10] = 513 v[870,10] = 1425 v[871,10] = 1299 v[872,10] = 1081 v[873,10] = 145 v[874,10] = 1841 v[875,10] = 1211 v[876,10] = 941 v[877,10] = 609 v[878,10] = 845 v[879,10] = 1169 v[880,10] = 1865 v[881,10] = 1593 v[882,10] = 347 v[883,10] = 293 v[884,10] = 1277 v[885,10] = 157 v[886,10] = 211 v[887,10] = 93 v[888,10] = 1679 v[889,10] = 1799 v[890,10] = 527 v[891,10] = 41 v[892,10] = 473 v[893,10] = 563 v[894,10] = 187 v[895,10] = 1525 v[896,10] = 575 v[897,10] = 1579 v[898,10] = 857 v[899,10] = 703 v[900,10] = 1211 v[901,10] = 647 v[902,10] = 709 v[903,10] = 981 v[904,10] = 285 v[905,10] = 697 v[906,10] = 163 v[907,10] = 981 v[908,10] = 153 v[909,10] = 1515 v[910,10] = 47 v[911,10] = 1553 v[912,10] = 599 v[913,10] = 225 v[914,10] = 1147 v[915,10] = 381 v[916,10] = 135 v[917,10] = 821 v[918,10] = 1965 v[919,10] = 609 v[920,10] = 1033 v[921,10] = 983 v[922,10] = 503 v[923,10] = 1117 v[924,10] = 327 v[925,10] = 453 v[926,10] = 2005 v[927,10] = 1257 v[928,10] = 343 v[929,10] = 1649 v[930,10] = 1199 v[931,10] = 599 v[932,10] = 1877 v[933,10] = 569 v[934,10] = 695 v[935,10] = 1587 v[936,10] = 1475 v[937,10] = 187 v[938,10] = 973 v[939,10] = 233 v[940,10] = 511 v[941,10] = 51 v[942,10] = 1083 v[943,10] = 665 v[944,10] = 1321 v[945,10] = 531 v[946,10] = 1875 v[947,10] = 1939 v[948,10] = 859 v[949,10] = 1507 v[950,10] = 1979 v[951,10] = 1203 v[952,10] = 1965 v[953,10] = 737 v[954,10] = 921 v[955,10] = 1565 v[956,10] = 1943 v[957,10] = 819 v[958,10] = 223 v[959,10] = 365 v[960,10] = 167 v[961,10] = 1705 v[962,10] = 413 v[963,10] = 1577 v[964,10] = 745 v[965,10] = 1573 v[966,10] = 655 v[967,10] = 1633 v[968,10] = 1003 v[969,10] = 91 v[970,10] = 1123 v[971,10] = 477 v[972,10] = 1741 v[973,10] = 1663 v[974,10] = 35 v[975,10] = 715 v[976,10] = 37 v[977,10] = 1513 v[978,10] = 815 v[979,10] = 941 v[980,10] = 1379 v[981,10] = 263 v[982,10] = 1831 v[983,10] = 1735 v[984,10] = 1111 v[985,10] = 1449 v[986,10] = 353 v[987,10] = 1941 v[988,10] = 1655 v[989,10] = 1349 v[990,10] = 877 v[991,10] = 285 v[992,10] = 1723 v[993,10] = 125 v[994,10] = 1753 v[995,10] = 985 v[996,10] = 723 v[997,10] = 175 v[998,10] = 439 v[999,10] = 791 v[1000,10] = 1051 v[1001,10] = 1261 v[1002,10] = 717 v[1003,10] = 1555 v[1004,10] = 1757 v[1005,10] = 1777 v[1006,10] = 577 v[1007,10] = 1583 v[1008,10] = 1957 v[1009,10] = 873 v[1010,10] = 331 v[1011,10] = 1163 v[1012,10] = 313 v[1013,10] = 1 v[1014,10] = 1963 v[1015,10] = 963 v[1016,10] = 1905 v[1017,10] = 821 v[1018,10] = 1677 v[1019,10] = 185 v[1020,10] = 709 v[1021,10] = 545 v[1022,10] = 1723 v[1023,10] = 215 v[1024,10] = 1885 v[1025,10] = 1249 v[1026,10] = 583 v[1027,10] = 1803 v[1028,10] = 839 v[1029,10] = 885 v[1030,10] = 485 v[1031,10] = 413 v[1032,10] = 1767 v[1033,10] = 425 v[1034,10] = 129 v[1035,10] = 1035 v[1036,10] = 329 v[1037,10] = 1263 v[1038,10] = 1881 v[1039,10] = 1779 v[1040,10] = 1565 v[1041,10] = 359 v[1042,10] = 367 v[1043,10] = 453 v[1044,10] = 707 v[1045,10] = 1419 v[1046,10] = 831 v[1047,10] = 1889 v[1048,10] = 887 v[1049,10] = 1871 v[1050,10] = 1869 v[1051,10] = 747 v[1052,10] = 223 v[1053,10] = 1547 v[1054,10] = 1799 v[1055,10] = 433 v[1056,10] = 1441 v[1057,10] = 553 v[1058,10] = 2021 v[1059,10] = 1303 v[1060,10] = 1505 v[1061,10] = 1735 v[1062,10] = 1619 v[1063,10] = 1065 v[1064,10] = 1161 v[1065,10] = 2047 v[1066,10] = 347 v[1067,10] = 867 v[1068,10] = 881 v[1069,10] = 1447 v[1070,10] = 329 v[1071,10] = 781 v[1072,10] = 1065 v[1073,10] = 219 v[1074,10] = 589 v[1075,10] = 645 v[1076,10] = 1257 v[1077,10] = 1833 v[1078,10] = 749 v[1079,10] = 1841 v[1080,10] = 1733 v[1081,10] = 1179 v[1082,10] = 1191 v[1083,10] = 1025 v[1084,10] = 1639 v[1085,10] = 1955 v[1086,10] = 1423 v[1087,10] = 1685 v[1088,10] = 1711 v[1089,10] = 493 v[1090,10] = 549 v[1091,10] = 783 v[1092,10] = 1653 v[1093,10] = 397 v[1094,10] = 895 v[1095,10] = 233 v[1096,10] = 759 v[1097,10] = 1505 v[1098,10] = 677 v[1099,10] = 1449 v[1100,10] = 1573 v[1101,10] = 1297 v[1102,10] = 1821 v[1103,10] = 1691 v[1104,10] = 791 v[1105,10] = 289 v[1106,10] = 1187 v[1107,10] = 867 v[1108,10] = 1535 v[1109,10] = 575 v[1110,10] = 183 v[337,11] = 3915 v[338,11] = 97 v[339,11] = 3047 v[340,11] = 937 v[341,11] = 2897 v[342,11] = 953 v[343,11] = 127 v[344,11] = 1201 v[345,11] = 3819 v[346,11] = 193 v[347,11] = 2053 v[348,11] = 3061 v[349,11] = 3759 v[350,11] = 1553 v[351,11] = 2007 v[352,11] = 2493 v[353,11] = 603 v[354,11] = 3343 v[355,11] = 3751 v[356,11] = 1059 v[357,11] = 783 v[358,11] = 1789 v[359,11] = 1589 v[360,11] = 283 v[361,11] = 1093 v[362,11] = 3919 v[363,11] = 2747 v[364,11] = 277 v[365,11] = 2605 v[366,11] = 2169 v[367,11] = 2905 v[368,11] = 721 v[369,11] = 4069 v[370,11] = 233 v[371,11] = 261 v[372,11] = 1137 v[373,11] = 3993 v[374,11] = 3619 v[375,11] = 2881 v[376,11] = 1275 v[377,11] = 3865 v[378,11] = 1299 v[379,11] = 3757 v[380,11] = 1193 v[381,11] = 733 v[382,11] = 993 v[383,11] = 1153 v[384,11] = 2945 v[385,11] = 3163 v[386,11] = 3179 v[387,11] = 437 v[388,11] = 271 v[389,11] = 3493 v[390,11] = 3971 v[391,11] = 1005 v[392,11] = 2615 v[393,11] = 2253 v[394,11] = 1131 v[395,11] = 585 v[396,11] = 2775 v[397,11] = 2171 v[398,11] = 2383 v[399,11] = 2937 v[400,11] = 2447 v[401,11] = 1745 v[402,11] = 663 v[403,11] = 1515 v[404,11] = 3767 v[405,11] = 2709 v[406,11] = 1767 v[407,11] = 3185 v[408,11] = 3017 v[409,11] = 2815 v[410,11] = 1829 v[411,11] = 87 v[412,11] = 3341 v[413,11] = 793 v[414,11] = 2627 v[415,11] = 2169 v[416,11] = 1875 v[417,11] = 3745 v[418,11] = 367 v[419,11] = 3783 v[420,11] = 783 v[421,11] = 827 v[422,11] = 3253 v[423,11] = 2639 v[424,11] = 2955 v[425,11] = 3539 v[426,11] = 1579 v[427,11] = 2109 v[428,11] = 379 v[429,11] = 2939 v[430,11] = 3019 v[431,11] = 1999 v[432,11] = 2253 v[433,11] = 2911 v[434,11] = 3733 v[435,11] = 481 v[436,11] = 1767 v[437,11] = 1055 v[438,11] = 4019 v[439,11] = 4085 v[440,11] = 105 v[441,11] = 1829 v[442,11] = 2097 v[443,11] = 2379 v[444,11] = 1567 v[445,11] = 2713 v[446,11] = 737 v[447,11] = 3423 v[448,11] = 3941 v[449,11] = 2659 v[450,11] = 3961 v[451,11] = 1755 v[452,11] = 3613 v[453,11] = 1937 v[454,11] = 1559 v[455,11] = 2287 v[456,11] = 2743 v[457,11] = 67 v[458,11] = 2859 v[459,11] = 325 v[460,11] = 2601 v[461,11] = 1149 v[462,11] = 3259 v[463,11] = 2403 v[464,11] = 3947 v[465,11] = 2011 v[466,11] = 175 v[467,11] = 3389 v[468,11] = 3915 v[469,11] = 1315 v[470,11] = 2447 v[471,11] = 141 v[472,11] = 359 v[473,11] = 3609 v[474,11] = 3933 v[475,11] = 729 v[476,11] = 2051 v[477,11] = 1755 v[478,11] = 2149 v[479,11] = 2107 v[480,11] = 1741 v[481,11] = 1051 v[482,11] = 3681 v[483,11] = 471 v[484,11] = 1055 v[485,11] = 845 v[486,11] = 257 v[487,11] = 1559 v[488,11] = 1061 v[489,11] = 2803 v[490,11] = 2219 v[491,11] = 1315 v[492,11] = 1369 v[493,11] = 3211 v[494,11] = 4027 v[495,11] = 105 v[496,11] = 11 v[497,11] = 1077 v[498,11] = 2857 v[499,11] = 337 v[500,11] = 3553 v[501,11] = 3503 v[502,11] = 3917 v[503,11] = 2665 v[504,11] = 3823 v[505,11] = 3403 v[506,11] = 3711 v[507,11] = 2085 v[508,11] = 1103 v[509,11] = 1641 v[510,11] = 701 v[511,11] = 4095 v[512,11] = 2883 v[513,11] = 1435 v[514,11] = 653 v[515,11] = 2363 v[516,11] = 1597 v[517,11] = 767 v[518,11] = 869 v[519,11] = 1825 v[520,11] = 1117 v[521,11] = 1297 v[522,11] = 501 v[523,11] = 505 v[524,11] = 149 v[525,11] = 873 v[526,11] = 2673 v[527,11] = 551 v[528,11] = 1499 v[529,11] = 2793 v[530,11] = 3277 v[531,11] = 2143 v[532,11] = 3663 v[533,11] = 533 v[534,11] = 3991 v[535,11] = 575 v[536,11] = 1877 v[537,11] = 1009 v[538,11] = 3929 v[539,11] = 473 v[540,11] = 3009 v[541,11] = 2595 v[542,11] = 3249 v[543,11] = 675 v[544,11] = 3593 v[545,11] = 2453 v[546,11] = 1567 v[547,11] = 973 v[548,11] = 595 v[549,11] = 1335 v[550,11] = 1715 v[551,11] = 589 v[552,11] = 85 v[553,11] = 2265 v[554,11] = 3069 v[555,11] = 461 v[556,11] = 1659 v[557,11] = 2627 v[558,11] = 1307 v[559,11] = 1731 v[560,11] = 1501 v[561,11] = 1699 v[562,11] = 3545 v[563,11] = 3803 v[564,11] = 2157 v[565,11] = 453 v[566,11] = 2813 v[567,11] = 2047 v[568,11] = 2999 v[569,11] = 3841 v[570,11] = 2361 v[571,11] = 1079 v[572,11] = 573 v[573,11] = 69 v[574,11] = 1363 v[575,11] = 1597 v[576,11] = 3427 v[577,11] = 2899 v[578,11] = 2771 v[579,11] = 1327 v[580,11] = 1117 v[581,11] = 1523 v[582,11] = 3521 v[583,11] = 2393 v[584,11] = 2537 v[585,11] = 1979 v[586,11] = 3179 v[587,11] = 683 v[588,11] = 2453 v[589,11] = 453 v[590,11] = 1227 v[591,11] = 779 v[592,11] = 671 v[593,11] = 3483 v[594,11] = 2135 v[595,11] = 3139 v[596,11] = 3381 v[597,11] = 3945 v[598,11] = 57 v[599,11] = 1541 v[600,11] = 3405 v[601,11] = 3381 v[602,11] = 2371 v[603,11] = 2879 v[604,11] = 1985 v[605,11] = 987 v[606,11] = 3017 v[607,11] = 3031 v[608,11] = 3839 v[609,11] = 1401 v[610,11] = 3749 v[611,11] = 2977 v[612,11] = 681 v[613,11] = 1175 v[614,11] = 1519 v[615,11] = 3355 v[616,11] = 907 v[617,11] = 117 v[618,11] = 771 v[619,11] = 3741 v[620,11] = 3337 v[621,11] = 1743 v[622,11] = 1227 v[623,11] = 3335 v[624,11] = 2755 v[625,11] = 1909 v[626,11] = 3603 v[627,11] = 2397 v[628,11] = 653 v[629,11] = 87 v[630,11] = 2025 v[631,11] = 2617 v[632,11] = 3257 v[633,11] = 287 v[634,11] = 3051 v[635,11] = 3809 v[636,11] = 897 v[637,11] = 2215 v[638,11] = 63 v[639,11] = 2043 v[640,11] = 1757 v[641,11] = 3671 v[642,11] = 297 v[643,11] = 3131 v[644,11] = 1305 v[645,11] = 293 v[646,11] = 3865 v[647,11] = 3173 v[648,11] = 3397 v[649,11] = 2269 v[650,11] = 3673 v[651,11] = 717 v[652,11] = 3041 v[653,11] = 3341 v[654,11] = 3595 v[655,11] = 3819 v[656,11] = 2871 v[657,11] = 3973 v[658,11] = 1129 v[659,11] = 513 v[660,11] = 871 v[661,11] = 1485 v[662,11] = 3977 v[663,11] = 2473 v[664,11] = 1171 v[665,11] = 1143 v[666,11] = 3063 v[667,11] = 3547 v[668,11] = 2183 v[669,11] = 3993 v[670,11] = 133 v[671,11] = 2529 v[672,11] = 2699 v[673,11] = 233 v[674,11] = 2355 v[675,11] = 231 v[676,11] = 3241 v[677,11] = 611 v[678,11] = 1309 v[679,11] = 3829 v[680,11] = 1839 v[681,11] = 1495 v[682,11] = 301 v[683,11] = 1169 v[684,11] = 1613 v[685,11] = 2673 v[686,11] = 243 v[687,11] = 3601 v[688,11] = 3669 v[689,11] = 2813 v[690,11] = 2671 v[691,11] = 2679 v[692,11] = 3463 v[693,11] = 2477 v[694,11] = 1795 v[695,11] = 617 v[696,11] = 2317 v[697,11] = 1855 v[698,11] = 1057 v[699,11] = 1703 v[700,11] = 1761 v[701,11] = 2515 v[702,11] = 801 v[703,11] = 1205 v[704,11] = 1311 v[705,11] = 473 v[706,11] = 3963 v[707,11] = 697 v[708,11] = 1221 v[709,11] = 251 v[710,11] = 381 v[711,11] = 3887 v[712,11] = 1761 v[713,11] = 3093 v[714,11] = 3721 v[715,11] = 2079 v[716,11] = 4085 v[717,11] = 379 v[718,11] = 3601 v[719,11] = 3845 v[720,11] = 433 v[721,11] = 1781 v[722,11] = 29 v[723,11] = 1897 v[724,11] = 1599 v[725,11] = 2163 v[726,11] = 75 v[727,11] = 3475 v[728,11] = 3957 v[729,11] = 1641 v[730,11] = 3911 v[731,11] = 2959 v[732,11] = 2833 v[733,11] = 1279 v[734,11] = 1099 v[735,11] = 403 v[736,11] = 799 v[737,11] = 2183 v[738,11] = 2699 v[739,11] = 1711 v[740,11] = 2037 v[741,11] = 727 v[742,11] = 289 v[743,11] = 1785 v[744,11] = 1575 v[745,11] = 3633 v[746,11] = 2367 v[747,11] = 1261 v[748,11] = 3953 v[749,11] = 1735 v[750,11] = 171 v[751,11] = 1959 v[752,11] = 2867 v[753,11] = 859 v[754,11] = 2951 v[755,11] = 3211 v[756,11] = 15 v[757,11] = 1279 v[758,11] = 1323 v[759,11] = 599 v[760,11] = 1651 v[761,11] = 3951 v[762,11] = 1011 v[763,11] = 315 v[764,11] = 3513 v[765,11] = 3351 v[766,11] = 1725 v[767,11] = 3793 v[768,11] = 2399 v[769,11] = 287 v[770,11] = 4017 v[771,11] = 3571 v[772,11] = 1007 v[773,11] = 541 v[774,11] = 3115 v[775,11] = 429 v[776,11] = 1585 v[777,11] = 1285 v[778,11] = 755 v[779,11] = 1211 v[780,11] = 3047 v[781,11] = 915 v[782,11] = 3611 v[783,11] = 2697 v[784,11] = 2129 v[785,11] = 3669 v[786,11] = 81 v[787,11] = 3939 v[788,11] = 2437 v[789,11] = 915 v[790,11] = 779 v[791,11] = 3567 v[792,11] = 3701 v[793,11] = 2479 v[794,11] = 3807 v[795,11] = 1893 v[796,11] = 3927 v[797,11] = 2619 v[798,11] = 2543 v[799,11] = 3633 v[800,11] = 2007 v[801,11] = 3857 v[802,11] = 3837 v[803,11] = 487 v[804,11] = 1769 v[805,11] = 3759 v[806,11] = 3105 v[807,11] = 2727 v[808,11] = 3155 v[809,11] = 2479 v[810,11] = 1341 v[811,11] = 1657 v[812,11] = 2767 v[813,11] = 2541 v[814,11] = 577 v[815,11] = 2105 v[816,11] = 799 v[817,11] = 17 v[818,11] = 2871 v[819,11] = 3637 v[820,11] = 953 v[821,11] = 65 v[822,11] = 69 v[823,11] = 2897 v[824,11] = 3841 v[825,11] = 3559 v[826,11] = 4067 v[827,11] = 2335 v[828,11] = 3409 v[829,11] = 1087 v[830,11] = 425 v[831,11] = 2813 v[832,11] = 1705 v[833,11] = 1701 v[834,11] = 1237 v[835,11] = 821 v[836,11] = 1375 v[837,11] = 3673 v[838,11] = 2693 v[839,11] = 3925 v[840,11] = 1541 v[841,11] = 1871 v[842,11] = 2285 v[843,11] = 847 v[844,11] = 4035 v[845,11] = 1101 v[846,11] = 2029 v[847,11] = 855 v[848,11] = 2733 v[849,11] = 2503 v[850,11] = 121 v[851,11] = 2855 v[852,11] = 1069 v[853,11] = 3463 v[854,11] = 3505 v[855,11] = 1539 v[856,11] = 607 v[857,11] = 1349 v[858,11] = 575 v[859,11] = 2301 v[860,11] = 2321 v[861,11] = 1101 v[862,11] = 333 v[863,11] = 291 v[864,11] = 2171 v[865,11] = 4085 v[866,11] = 2173 v[867,11] = 2541 v[868,11] = 1195 v[869,11] = 925 v[870,11] = 4039 v[871,11] = 1379 v[872,11] = 699 v[873,11] = 1979 v[874,11] = 275 v[875,11] = 953 v[876,11] = 1755 v[877,11] = 1643 v[878,11] = 325 v[879,11] = 101 v[880,11] = 2263 v[881,11] = 3329 v[882,11] = 3673 v[883,11] = 3413 v[884,11] = 1977 v[885,11] = 2727 v[886,11] = 2313 v[887,11] = 1419 v[888,11] = 887 v[889,11] = 609 v[890,11] = 2475 v[891,11] = 591 v[892,11] = 2613 v[893,11] = 2081 v[894,11] = 3805 v[895,11] = 3435 v[896,11] = 2409 v[897,11] = 111 v[898,11] = 3557 v[899,11] = 3607 v[900,11] = 903 v[901,11] = 231 v[902,11] = 3059 v[903,11] = 473 v[904,11] = 2959 v[905,11] = 2925 v[906,11] = 3861 v[907,11] = 2043 v[908,11] = 3887 v[909,11] = 351 v[910,11] = 2865 v[911,11] = 369 v[912,11] = 1377 v[913,11] = 2639 v[914,11] = 1261 v[915,11] = 3625 v[916,11] = 3279 v[917,11] = 2201 v[918,11] = 2949 v[919,11] = 3049 v[920,11] = 449 v[921,11] = 1297 v[922,11] = 897 v[923,11] = 1891 v[924,11] = 411 v[925,11] = 2773 v[926,11] = 749 v[927,11] = 2753 v[928,11] = 1825 v[929,11] = 853 v[930,11] = 2775 v[931,11] = 3547 v[932,11] = 3923 v[933,11] = 3923 v[934,11] = 987 v[935,11] = 3723 v[936,11] = 2189 v[937,11] = 3877 v[938,11] = 3577 v[939,11] = 297 v[940,11] = 2763 v[941,11] = 1845 v[942,11] = 3083 v[943,11] = 2951 v[944,11] = 483 v[945,11] = 2169 v[946,11] = 3985 v[947,11] = 245 v[948,11] = 3655 v[949,11] = 3441 v[950,11] = 1023 v[951,11] = 235 v[952,11] = 835 v[953,11] = 3693 v[954,11] = 3585 v[955,11] = 327 v[956,11] = 1003 v[957,11] = 543 v[958,11] = 3059 v[959,11] = 2637 v[960,11] = 2923 v[961,11] = 87 v[962,11] = 3617 v[963,11] = 1031 v[964,11] = 1043 v[965,11] = 903 v[966,11] = 2913 v[967,11] = 2177 v[968,11] = 2641 v[969,11] = 3279 v[970,11] = 389 v[971,11] = 2009 v[972,11] = 525 v[973,11] = 4085 v[974,11] = 3299 v[975,11] = 987 v[976,11] = 2409 v[977,11] = 813 v[978,11] = 2683 v[979,11] = 373 v[980,11] = 2695 v[981,11] = 3775 v[982,11] = 2375 v[983,11] = 1119 v[984,11] = 2791 v[985,11] = 223 v[986,11] = 325 v[987,11] = 587 v[988,11] = 1379 v[989,11] = 2877 v[990,11] = 2867 v[991,11] = 3793 v[992,11] = 655 v[993,11] = 831 v[994,11] = 3425 v[995,11] = 1663 v[996,11] = 1681 v[997,11] = 2657 v[998,11] = 1865 v[999,11] = 3943 v[1000,11] = 2977 v[1001,11] = 1979 v[1002,11] = 2271 v[1003,11] = 3247 v[1004,11] = 1267 v[1005,11] = 1747 v[1006,11] = 811 v[1007,11] = 159 v[1008,11] = 429 v[1009,11] = 2001 v[1010,11] = 1195 v[1011,11] = 3065 v[1012,11] = 553 v[1013,11] = 1499 v[1014,11] = 3529 v[1015,11] = 1081 v[1016,11] = 2877 v[1017,11] = 3077 v[1018,11] = 845 v[1019,11] = 1793 v[1020,11] = 2409 v[1021,11] = 3995 v[1022,11] = 2559 v[1023,11] = 4081 v[1024,11] = 1195 v[1025,11] = 2955 v[1026,11] = 1117 v[1027,11] = 1409 v[1028,11] = 785 v[1029,11] = 287 v[1030,11] = 1521 v[1031,11] = 1607 v[1032,11] = 85 v[1033,11] = 3055 v[1034,11] = 3123 v[1035,11] = 2533 v[1036,11] = 2329 v[1037,11] = 3477 v[1038,11] = 799 v[1039,11] = 3683 v[1040,11] = 3715 v[1041,11] = 337 v[1042,11] = 3139 v[1043,11] = 3311 v[1044,11] = 431 v[1045,11] = 3511 v[1046,11] = 2299 v[1047,11] = 365 v[1048,11] = 2941 v[1049,11] = 3067 v[1050,11] = 1331 v[1051,11] = 1081 v[1052,11] = 1097 v[1053,11] = 2853 v[1054,11] = 2299 v[1055,11] = 495 v[1056,11] = 1745 v[1057,11] = 749 v[1058,11] = 3819 v[1059,11] = 619 v[1060,11] = 1059 v[1061,11] = 3559 v[1062,11] = 183 v[1063,11] = 3743 v[1064,11] = 723 v[1065,11] = 949 v[1066,11] = 3501 v[1067,11] = 733 v[1068,11] = 2599 v[1069,11] = 3983 v[1070,11] = 3961 v[1071,11] = 911 v[1072,11] = 1899 v[1073,11] = 985 v[1074,11] = 2493 v[1075,11] = 1795 v[1076,11] = 653 v[1077,11] = 157 v[1078,11] = 433 v[1079,11] = 2361 v[1080,11] = 3093 v[1081,11] = 3119 v[1082,11] = 3679 v[1083,11] = 2367 v[1084,11] = 1701 v[1085,11] = 1445 v[1086,11] = 1321 v[1087,11] = 2397 v[1088,11] = 1241 v[1089,11] = 3305 v[1090,11] = 3985 v[1091,11] = 2349 v[1092,11] = 4067 v[1093,11] = 3805 v[1094,11] = 3073 v[1095,11] = 2837 v[1096,11] = 1567 v[1097,11] = 3783 v[1098,11] = 451 v[1099,11] = 2441 v[1100,11] = 1181 v[1101,11] = 487 v[1102,11] = 543 v[1103,11] = 1201 v[1104,11] = 3735 v[1105,11] = 2517 v[1106,11] = 733 v[1107,11] = 1535 v[1108,11] = 2175 v[1109,11] = 3613 v[1110,11] = 3019 v[481,12] = 2319 v[482,12] = 653 v[483,12] = 1379 v[484,12] = 1675 v[485,12] = 1951 v[486,12] = 7075 v[487,12] = 2087 v[488,12] = 7147 v[489,12] = 1427 v[490,12] = 893 v[491,12] = 171 v[492,12] = 2019 v[493,12] = 7235 v[494,12] = 5697 v[495,12] = 3615 v[496,12] = 1961 v[497,12] = 7517 v[498,12] = 6849 v[499,12] = 2893 v[500,12] = 1883 v[501,12] = 2863 v[502,12] = 2173 v[503,12] = 4543 v[504,12] = 73 v[505,12] = 381 v[506,12] = 3893 v[507,12] = 6045 v[508,12] = 1643 v[509,12] = 7669 v[510,12] = 1027 v[511,12] = 1549 v[512,12] = 3983 v[513,12] = 1985 v[514,12] = 6589 v[515,12] = 7497 v[516,12] = 2745 v[517,12] = 2375 v[518,12] = 7047 v[519,12] = 1117 v[520,12] = 1171 v[521,12] = 1975 v[522,12] = 5199 v[523,12] = 3915 v[524,12] = 3695 v[525,12] = 8113 v[526,12] = 4303 v[527,12] = 3773 v[528,12] = 7705 v[529,12] = 6855 v[530,12] = 1675 v[531,12] = 2245 v[532,12] = 2817 v[533,12] = 1719 v[534,12] = 569 v[535,12] = 1021 v[536,12] = 2077 v[537,12] = 5945 v[538,12] = 1833 v[539,12] = 2631 v[540,12] = 4851 v[541,12] = 6371 v[542,12] = 833 v[543,12] = 7987 v[544,12] = 331 v[545,12] = 1899 v[546,12] = 8093 v[547,12] = 6719 v[548,12] = 6903 v[549,12] = 5903 v[550,12] = 5657 v[551,12] = 5007 v[552,12] = 2689 v[553,12] = 6637 v[554,12] = 2675 v[555,12] = 1645 v[556,12] = 1819 v[557,12] = 689 v[558,12] = 6709 v[559,12] = 7717 v[560,12] = 6295 v[561,12] = 7013 v[562,12] = 7695 v[563,12] = 3705 v[564,12] = 7069 v[565,12] = 2621 v[566,12] = 3631 v[567,12] = 6571 v[568,12] = 6259 v[569,12] = 7261 v[570,12] = 3397 v[571,12] = 7645 v[572,12] = 1115 v[573,12] = 4753 v[574,12] = 2047 v[575,12] = 7579 v[576,12] = 2271 v[577,12] = 5403 v[578,12] = 4911 v[579,12] = 7629 v[580,12] = 4225 v[581,12] = 1209 v[582,12] = 6955 v[583,12] = 6951 v[584,12] = 1829 v[585,12] = 5579 v[586,12] = 5231 v[587,12] = 1783 v[588,12] = 4285 v[589,12] = 7425 v[590,12] = 599 v[591,12] = 5785 v[592,12] = 3275 v[593,12] = 5643 v[594,12] = 2263 v[595,12] = 657 v[596,12] = 6769 v[597,12] = 6261 v[598,12] = 1251 v[599,12] = 3249 v[600,12] = 4447 v[601,12] = 4111 v[602,12] = 3991 v[603,12] = 1215 v[604,12] = 131 v[605,12] = 4397 v[606,12] = 3487 v[607,12] = 7585 v[608,12] = 5565 v[609,12] = 7199 v[610,12] = 3573 v[611,12] = 7105 v[612,12] = 7409 v[613,12] = 1671 v[614,12] = 949 v[615,12] = 3889 v[616,12] = 5971 v[617,12] = 3333 v[618,12] = 225 v[619,12] = 3647 v[620,12] = 5403 v[621,12] = 3409 v[622,12] = 7459 v[623,12] = 6879 v[624,12] = 5789 v[625,12] = 6567 v[626,12] = 5581 v[627,12] = 4919 v[628,12] = 1927 v[629,12] = 4407 v[630,12] = 8085 v[631,12] = 4691 v[632,12] = 611 v[633,12] = 3005 v[634,12] = 591 v[635,12] = 753 v[636,12] = 589 v[637,12] = 171 v[638,12] = 5729 v[639,12] = 5891 v[640,12] = 1033 v[641,12] = 3049 v[642,12] = 6567 v[643,12] = 5257 v[644,12] = 8003 v[645,12] = 1757 v[646,12] = 4489 v[647,12] = 4923 v[648,12] = 6379 v[649,12] = 5171 v[650,12] = 1757 v[651,12] = 689 v[652,12] = 3081 v[653,12] = 1389 v[654,12] = 4113 v[655,12] = 455 v[656,12] = 2761 v[657,12] = 847 v[658,12] = 7575 v[659,12] = 5829 v[660,12] = 633 v[661,12] = 6629 v[662,12] = 1103 v[663,12] = 7635 v[664,12] = 803 v[665,12] = 6175 v[666,12] = 6587 v[667,12] = 2711 v[668,12] = 3879 v[669,12] = 67 v[670,12] = 1179 v[671,12] = 4761 v[672,12] = 7281 v[673,12] = 1557 v[674,12] = 3379 v[675,12] = 2459 v[676,12] = 4273 v[677,12] = 4127 v[678,12] = 7147 v[679,12] = 35 v[680,12] = 3549 v[681,12] = 395 v[682,12] = 3735 v[683,12] = 5787 v[684,12] = 4179 v[685,12] = 5889 v[686,12] = 5057 v[687,12] = 7473 v[688,12] = 4713 v[689,12] = 2133 v[690,12] = 2897 v[691,12] = 1841 v[692,12] = 2125 v[693,12] = 1029 v[694,12] = 1695 v[695,12] = 6523 v[696,12] = 1143 v[697,12] = 5105 v[698,12] = 7133 v[699,12] = 3351 v[700,12] = 2775 v[701,12] = 3971 v[702,12] = 4503 v[703,12] = 7589 v[704,12] = 5155 v[705,12] = 4305 v[706,12] = 1641 v[707,12] = 4717 v[708,12] = 2427 v[709,12] = 5617 v[710,12] = 1267 v[711,12] = 399 v[712,12] = 5831 v[713,12] = 4305 v[714,12] = 4241 v[715,12] = 3395 v[716,12] = 3045 v[717,12] = 4899 v[718,12] = 1713 v[719,12] = 171 v[720,12] = 411 v[721,12] = 7099 v[722,12] = 5473 v[723,12] = 5209 v[724,12] = 1195 v[725,12] = 1077 v[726,12] = 1309 v[727,12] = 2953 v[728,12] = 7343 v[729,12] = 4887 v[730,12] = 3229 v[731,12] = 6759 v[732,12] = 6721 v[733,12] = 6775 v[734,12] = 675 v[735,12] = 4039 v[736,12] = 2493 v[737,12] = 7511 v[738,12] = 3269 v[739,12] = 4199 v[740,12] = 6625 v[741,12] = 7943 v[742,12] = 2013 v[743,12] = 4145 v[744,12] = 667 v[745,12] = 513 v[746,12] = 2303 v[747,12] = 4591 v[748,12] = 7941 v[749,12] = 2741 v[750,12] = 987 v[751,12] = 8061 v[752,12] = 3161 v[753,12] = 5951 v[754,12] = 1431 v[755,12] = 831 v[756,12] = 5559 v[757,12] = 7405 v[758,12] = 1357 v[759,12] = 4319 v[760,12] = 4235 v[761,12] = 5421 v[762,12] = 2559 v[763,12] = 4415 v[764,12] = 2439 v[765,12] = 823 v[766,12] = 1725 v[767,12] = 6219 v[768,12] = 4903 v[769,12] = 6699 v[770,12] = 5451 v[771,12] = 349 v[772,12] = 7703 v[773,12] = 2927 v[774,12] = 7809 v[775,12] = 6179 v[776,12] = 1417 v[777,12] = 5987 v[778,12] = 3017 v[779,12] = 4983 v[780,12] = 3479 v[781,12] = 4525 v[782,12] = 4643 v[783,12] = 4911 v[784,12] = 227 v[785,12] = 5475 v[786,12] = 2287 v[787,12] = 5581 v[788,12] = 6817 v[789,12] = 1937 v[790,12] = 1421 v[791,12] = 4415 v[792,12] = 7977 v[793,12] = 1789 v[794,12] = 3907 v[795,12] = 6815 v[796,12] = 6789 v[797,12] = 6003 v[798,12] = 5609 v[799,12] = 4507 v[800,12] = 337 v[801,12] = 7427 v[802,12] = 7943 v[803,12] = 3075 v[804,12] = 6427 v[805,12] = 1019 v[806,12] = 7121 v[807,12] = 4763 v[808,12] = 81 v[809,12] = 3587 v[810,12] = 2929 v[811,12] = 1795 v[812,12] = 8067 v[813,12] = 2415 v[814,12] = 1265 v[815,12] = 4025 v[816,12] = 5599 v[817,12] = 4771 v[818,12] = 3025 v[819,12] = 2313 v[820,12] = 6129 v[821,12] = 7611 v[822,12] = 6881 v[823,12] = 5253 v[824,12] = 4413 v[825,12] = 7869 v[826,12] = 105 v[827,12] = 3173 v[828,12] = 1629 v[829,12] = 2537 v[830,12] = 1023 v[831,12] = 4409 v[832,12] = 7209 v[833,12] = 4413 v[834,12] = 7107 v[835,12] = 7469 v[836,12] = 33 v[837,12] = 1955 v[838,12] = 2881 v[839,12] = 5167 v[840,12] = 6451 v[841,12] = 4211 v[842,12] = 179 v[843,12] = 5573 v[844,12] = 7879 v[845,12] = 3387 v[846,12] = 7759 v[847,12] = 5455 v[848,12] = 7157 v[849,12] = 1891 v[850,12] = 5683 v[851,12] = 5689 v[852,12] = 6535 v[853,12] = 3109 v[854,12] = 6555 v[855,12] = 6873 v[856,12] = 1249 v[857,12] = 4251 v[858,12] = 6437 v[859,12] = 49 v[860,12] = 2745 v[861,12] = 1201 v[862,12] = 7327 v[863,12] = 4179 v[864,12] = 6783 v[865,12] = 623 v[866,12] = 2779 v[867,12] = 5963 v[868,12] = 2585 v[869,12] = 6927 v[870,12] = 5333 v[871,12] = 4033 v[872,12] = 285 v[873,12] = 7467 v[874,12] = 4443 v[875,12] = 4917 v[876,12] = 3 v[877,12] = 4319 v[878,12] = 5517 v[879,12] = 3449 v[880,12] = 813 v[881,12] = 5499 v[882,12] = 2515 v[883,12] = 5771 v[884,12] = 3357 v[885,12] = 2073 v[886,12] = 4395 v[887,12] = 4925 v[888,12] = 2643 v[889,12] = 7215 v[890,12] = 5817 v[891,12] = 1199 v[892,12] = 1597 v[893,12] = 1619 v[894,12] = 7535 v[895,12] = 4833 v[896,12] = 609 v[897,12] = 4797 v[898,12] = 8171 v[899,12] = 6847 v[900,12] = 793 v[901,12] = 6757 v[902,12] = 8165 v[903,12] = 3371 v[904,12] = 2431 v[905,12] = 5235 v[906,12] = 4739 v[907,12] = 7703 v[908,12] = 7223 v[909,12] = 6525 v[910,12] = 5891 v[911,12] = 5605 v[912,12] = 4433 v[913,12] = 3533 v[914,12] = 5267 v[915,12] = 5125 v[916,12] = 5037 v[917,12] = 225 v[918,12] = 6717 v[919,12] = 1121 v[920,12] = 5741 v[921,12] = 2013 v[922,12] = 4327 v[923,12] = 4839 v[924,12] = 569 v[925,12] = 5227 v[926,12] = 7677 v[927,12] = 4315 v[928,12] = 2391 v[929,12] = 5551 v[930,12] = 859 v[931,12] = 3627 v[932,12] = 6377 v[933,12] = 3903 v[934,12] = 4311 v[935,12] = 6527 v[936,12] = 7573 v[937,12] = 4905 v[938,12] = 7731 v[939,12] = 1909 v[940,12] = 1555 v[941,12] = 3279 v[942,12] = 1949 v[943,12] = 1887 v[944,12] = 6675 v[945,12] = 5509 v[946,12] = 2033 v[947,12] = 5473 v[948,12] = 3539 v[949,12] = 5033 v[950,12] = 5935 v[951,12] = 6095 v[952,12] = 4761 v[953,12] = 1771 v[954,12] = 1271 v[955,12] = 1717 v[956,12] = 4415 v[957,12] = 5083 v[958,12] = 6277 v[959,12] = 3147 v[960,12] = 7695 v[961,12] = 2461 v[962,12] = 4783 v[963,12] = 4539 v[964,12] = 5833 v[965,12] = 5583 v[966,12] = 651 v[967,12] = 1419 v[968,12] = 2605 v[969,12] = 5511 v[970,12] = 3913 v[971,12] = 5795 v[972,12] = 2333 v[973,12] = 2329 v[974,12] = 4431 v[975,12] = 3725 v[976,12] = 6069 v[977,12] = 2699 v[978,12] = 7055 v[979,12] = 6879 v[980,12] = 1017 v[981,12] = 3121 v[982,12] = 2547 v[983,12] = 4603 v[984,12] = 2385 v[985,12] = 6915 v[986,12] = 6103 v[987,12] = 5669 v[988,12] = 7833 v[989,12] = 2001 v[990,12] = 4287 v[991,12] = 6619 v[992,12] = 955 v[993,12] = 2761 v[994,12] = 5711 v[995,12] = 6291 v[996,12] = 3415 v[997,12] = 3909 v[998,12] = 2841 v[999,12] = 5627 v[1000,12] = 4939 v[1001,12] = 7671 v[1002,12] = 6059 v[1003,12] = 6275 v[1004,12] = 6517 v[1005,12] = 1931 v[1006,12] = 4583 v[1007,12] = 7301 v[1008,12] = 1267 v[1009,12] = 7509 v[1010,12] = 1435 v[1011,12] = 2169 v[1012,12] = 6939 v[1013,12] = 3515 v[1014,12] = 2985 v[1015,12] = 2787 v[1016,12] = 2123 v[1017,12] = 1969 v[1018,12] = 3307 v[1019,12] = 353 v[1020,12] = 4359 v[1021,12] = 7059 v[1022,12] = 5273 v[1023,12] = 5873 v[1024,12] = 6657 v[1025,12] = 6765 v[1026,12] = 6229 v[1027,12] = 3179 v[1028,12] = 1583 v[1029,12] = 6237 v[1030,12] = 2155 v[1031,12] = 371 v[1032,12] = 273 v[1033,12] = 7491 v[1034,12] = 3309 v[1035,12] = 6805 v[1036,12] = 3015 v[1037,12] = 6831 v[1038,12] = 7819 v[1039,12] = 713 v[1040,12] = 4747 v[1041,12] = 3935 v[1042,12] = 4109 v[1043,12] = 1311 v[1044,12] = 709 v[1045,12] = 3089 v[1046,12] = 7059 v[1047,12] = 4247 v[1048,12] = 2989 v[1049,12] = 1509 v[1050,12] = 4919 v[1051,12] = 1841 v[1052,12] = 3045 v[1053,12] = 3821 v[1054,12] = 6929 v[1055,12] = 4655 v[1056,12] = 1333 v[1057,12] = 6429 v[1058,12] = 6649 v[1059,12] = 2131 v[1060,12] = 5265 v[1061,12] = 1051 v[1062,12] = 261 v[1063,12] = 8057 v[1064,12] = 3379 v[1065,12] = 2179 v[1066,12] = 1993 v[1067,12] = 5655 v[1068,12] = 3063 v[1069,12] = 6381 v[1070,12] = 3587 v[1071,12] = 7417 v[1072,12] = 1579 v[1073,12] = 1541 v[1074,12] = 2107 v[1075,12] = 5085 v[1076,12] = 2873 v[1077,12] = 6141 v[1078,12] = 955 v[1079,12] = 3537 v[1080,12] = 2157 v[1081,12] = 841 v[1082,12] = 1999 v[1083,12] = 1465 v[1084,12] = 5171 v[1085,12] = 5651 v[1086,12] = 1535 v[1087,12] = 7235 v[1088,12] = 4349 v[1089,12] = 1263 v[1090,12] = 1453 v[1091,12] = 1005 v[1092,12] = 6893 v[1093,12] = 2919 v[1094,12] = 1947 v[1095,12] = 1635 v[1096,12] = 3963 v[1097,12] = 397 v[1098,12] = 969 v[1099,12] = 4569 v[1100,12] = 655 v[1101,12] = 6737 v[1102,12] = 2995 v[1103,12] = 7235 v[1104,12] = 7713 v[1105,12] = 973 v[1106,12] = 4821 v[1107,12] = 2377 v[1108,12] = 1673 v[1109,12] = 1 v[1110,12] = 6541 # v[0:40,0] = transpose([ \ # 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \ # 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \ # 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \ # 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]) # v[2:40,1] = transpose([ \ # 1, 3, 1, 3, 1, 3, 3, 1, \ # 3, 1, 3, 1, 3, 1, 1, 3, 1, 3, \ # 1, 3, 1, 3, 3, 1, 3, 1, 3, 1, \ # 3, 1, 1, 3, 1, 3, 1, 3, 1, 3 ]) # v[3:40,2] = transpose([ \ # 7, 5, 1, 3, 3, 7, 5, \ # 5, 7, 7, 1, 3, 3, 7, 5, 1, 1, \ # 5, 3, 3, 1, 7, 5, 1, 3, 3, 7, \ # 5, 1, 1, 5, 7, 7, 5, 1, 3, 3 ]) # v[5:40,3] = transpose([ \ # 1, 7, 9,13,11, \ # 1, 3, 7, 9, 5,13,13,11, 3,15, \ # 5, 3,15, 7, 9,13, 9, 1,11, 7, \ # 5,15, 1,15,11, 5, 3, 1, 7, 9 ]) # v[7:40,4] = transpose([ \ # 9, 3,27, \ # 15,29,21,23,19,11,25, 7,13,17, \ # 1,25,29, 3,31,11, 5,23,27,19, \ # 21, 5, 1,17,13, 7,15, 9,31, 9 ]) # v[13:40,5] = transpose([ \ # 37,33, 7, 5,11,39,63, \ # 27,17,15,23,29, 3,21,13,31,25, \ # 9,49,33,19,29,11,19,27,15,25 ]) # v[19:40,6] = transpose([ \ # 13, \ # 33,115, 41, 79, 17, 29,119, 75, 73,105, \ # 7, 59, 65, 21, 3,113, 61, 89, 45,107 ]) # v[37:40,7] = transpose([ \ # 7, 23, 39 ]) # # Set POLY. # poly= [ \ 1, 3, 7, 11, 13, 19, 25, 37, 59, 47, \ 61, 55, 41, 67, 97, 91, 109, 103, 115, 131, \ 193, 137, 145, 143, 241, 157, 185, 167, 229, 171, \ 213, 191, 253, 203, 211, 239, 247, 285, 369, 299 ] poly = [\ 1, 3, 7, 11, 13, 19, 25, 37, 59, 47, 61, 55, 41, 67, 97, 91, 109, 103, 115, 131, 193, 137, 145, 143, 241, 157, 185, 167, 229, 171, 213, 191, 253, 203, 211, 239, 247, 285, 369, 299, 301, 333, 351, 355, 357, 361, 391, 397, 425, 451, 463, 487, 501, 529, 539, 545, 557, 563, 601, 607, 617, 623, 631, 637, 647, 661, 675, 677, 687, 695, 701, 719, 721, 731, 757, 761, 787, 789, 799, 803, 817, 827, 847, 859, 865, 875, 877, 883, 895, 901, 911, 949, 953, 967, 971, 973, 981, 985, 995, 1001, 1019, 1033, 1051, 1063, 1069, 1125, 1135, 1153, 1163, 1221, 1239, 1255, 1267, 1279, 1293, 1305, 1315, 1329, 1341, 1347, 1367, 1387, 1413, 1423, 1431, 1441, 1479, 1509, 1527, 1531, 1555, 1557, 1573, 1591, 1603, 1615, 1627, 1657, 1663, 1673, 1717, 1729, 1747, 1759, 1789, 1815, 1821, 1825, 1849, 1863, 1869, 1877, 1881, 1891, 1917, 1933, 1939, 1969, 2011, 2035, 2041, 2053, 2071, 2091, 2093, 2119, 2147, 2149, 2161, 2171, 2189, 2197, 2207, 2217, 2225, 2255, 2257, 2273, 2279, 2283, 2293, 2317, 2323, 2341, 2345, 2363, 2365, 2373, 2377, 2385, 2395, 2419, 2421, 2431, 2435, 2447, 2475, 2477, 2489, 2503, 2521, 2533, 2551, 2561, 2567, 2579, 2581, 2601, 2633, 2657, 2669, 2681, 2687, 2693, 2705, 2717, 2727, 2731, 2739, 2741, 2773, 2783, 2793, 2799, 2801, 2811, 2819, 2825, 2833, 2867, 2879, 2881, 2891, 2905, 2911, 2917, 2927, 2941, 2951, 2955, 2963, 2965, 2991, 2999, 3005, 3017, 3035, 3037, 3047, 3053, 3083, 3085, 3097, 3103, 3159, 3169, 3179, 3187, 3205, 3209, 3223, 3227, 3229, 3251, 3263, 3271, 3277, 3283, 3285, 3299, 3305, 3319, 3331, 3343, 3357, 3367, 3373, 3393, 3399, 3413, 3417, 3427, 3439, 3441, 3475, 3487, 3497, 3515, 3517, 3529, 3543, 3547, 3553, 3559, 3573, 3589, 3613, 3617, 3623, 3627, 3635, 3641, 3655, 3659, 3669, 3679, 3697, 3707, 3709, 3713, 3731, 3743, 3747, 3771, 3791, 3805, 3827, 3833, 3851, 3865, 3889, 3895, 3933, 3947, 3949, 3957, 3971, 3985, 3991, 3995, 4007, 4013, 4021, 4045, 4051, 4069, 4073, 4179, 4201, 4219, 4221, 4249, 4305, 4331, 4359, 4383, 4387, 4411, 4431, 4439, 4449, 4459, 4485, 4531, 4569, 4575, 4621, 4663, 4669, 4711, 4723, 4735, 4793, 4801, 4811, 4879, 4893, 4897, 4921, 4927, 4941, 4977, 5017, 5027, 5033, 5127, 5169, 5175, 5199, 5213, 5223, 5237, 5287, 5293, 5331, 5391, 5405, 5453, 5523, 5573, 5591, 5597, 5611, 5641, 5703, 5717, 5721, 5797, 5821, 5909, 5913, 5955, 5957, 6005, 6025, 6061, 6067, 6079, 6081, 6231, 6237, 6289, 6295, 6329, 6383, 6427, 6453, 6465, 6501, 6523, 6539, 6577, 6589, 6601, 6607, 6631, 6683, 6699, 6707, 6761, 6795, 6865, 6881, 6901, 6923, 6931, 6943, 6999, 7057, 7079, 7103, 7105, 7123, 7173, 7185, 7191, 7207, 7245, 7303, 7327, 7333, 7355, 7365, 7369, 7375, 7411, 7431, 7459, 7491, 7505, 7515, 7541, 7557, 7561, 7701, 7705, 7727, 7749, 7761, 7783, 7795, 7823, 7907, 7953, 7963, 7975, 8049, 8089, 8123, 8125, 8137, 8219, 8231, 8245, 8275, 8293, 8303, 8331, 8333, 8351, 8357, 8367, 8379, 8381, 8387, 8393, 8417, 8435, 8461, 8469, 8489, 8495, 8507, 8515, 8551, 8555, 8569, 8585, 8599, 8605, 8639, 8641, 8647, 8653, 8671, 8675, 8689, 8699, 8729, 8741, 8759, 8765, 8771, 8795, 8797, 8825, 8831, 8841, 8855, 8859, 8883, 8895, 8909, 8943, 8951, 8955, 8965, 8999, 9003, 9031, 9045, 9049, 9071, 9073, 9085, 9095, 9101, 9109, 9123, 9129, 9137, 9143, 9147, 9185, 9197, 9209, 9227, 9235, 9247, 9253, 9257, 9277, 9297, 9303, 9313, 9325, 9343, 9347, 9371, 9373, 9397, 9407, 9409, 9415, 9419, 9443, 9481, 9495, 9501, 9505, 9517, 9529, 9555, 9557, 9571, 9585, 9591, 9607, 9611, 9621, 9625, 9631, 9647, 9661, 9669, 9679, 9687, 9707, 9731, 9733, 9745, 9773, 9791, 9803, 9811, 9817, 9833, 9847, 9851, 9863, 9875, 9881, 9905, 9911, 9917, 9923, 9963, 9973,10003,10025, 10043,10063,10071,10077,10091,10099,10105,10115,10129,10145, 10169,10183,10187,10207,10223,10225,10247,10265,10271,10275, 10289,10299,10301,10309,10343,10357,10373,10411,10413,10431, 10445,10453,10463,10467,10473,10491,10505,10511,10513,10523, 10539,10549,10559,10561,10571,10581,10615,10621,10625,10643, 10655,10671,10679,10685,10691,10711,10739,10741,10755,10767, 10781,10785,10803,10805,10829,10857,10863,10865,10875,10877, 10917,10921,10929,10949,10967,10971,10987,10995,11009,11029, 11043,11045,11055,11063,11075,11081,11117,11135,11141,11159, 11163,11181,11187,11225,11237,11261,11279,11297,11307,11309, 11327,11329,11341,11377,11403,11405,11413,11427,11439,11453, 11461,11473,11479,11489,11495,11499,11533,11545,11561,11567, 11575,11579,11589,11611,11623,11637,11657,11663,11687,11691, 11701,11747,11761,11773,11783,11795,11797,11817,11849,11855, 11867,11869,11873,11883,11919,11921,11927,11933,11947,11955, 11961,11999,12027,12029,12037,12041,12049,12055,12095,12097, 12107,12109,12121,12127,12133,12137,12181,12197,12207,12209, 12239,12253,12263,12269,12277,12287,12295,12309,12313,12335, 12361,12367,12391,12409,12415,12433,12449,12469,12479,12481, 12499,12505,12517,12527,12549,12559,12597,12615,12621,12639, 12643,12657,12667,12707,12713,12727,12741,12745,12763,12769, 12779,12781,12787,12799,12809,12815,12829,12839,12857,12875, 12883,12889,12901,12929,12947,12953,12959,12969,12983,12987, 12995,13015,13019,13031,13063,13077,13103,13137,13149,13173, 13207,13211,13227,13241,13249,13255,13269,13283,13285,13303, 13307,13321,13339,13351,13377,13389,13407,13417,13431,13435, 13447,13459,13465,13477,13501,13513,13531,13543,13561,13581, 13599,13605,13617,13623,13637,13647,13661,13677,13683,13695, 13725,13729,13753,13773,13781,13785,13795,13801,13807,13825, 13835,13855,13861,13871,13883,13897,13905,13915,13939,13941, 13969,13979,13981,13997,14027,14035,14037,14051,14063,14085, 14095,14107,14113,14125,14137,14145,14151,14163,14193,14199, 14219,14229,14233,14243,14277,14287,14289,14295,14301,14305, 14323,14339,14341,14359,14365,14375,14387,14411,14425,14441, 14449,14499,14513,14523,14537,14543,14561,14579,14585,14593, 14599,14603,14611,14641,14671,14695,14701,14723,14725,14743, 14753,14759,14765,14795,14797,14803,14831,14839,14845,14855, 14889,14895,14909,14929,14941,14945,14951,14963,14965,14985, 15033,15039,15053,15059,15061,15071,15077,15081,15099,15121, 15147,15149,15157,15167,15187,15193,15203,15205,15215,15217, 15223,15243,15257,15269,15273,15287,15291,15313,15335,15347, 15359,15373,15379,15381,15391,15395,15397,15419,15439,15453, 15469,15491,15503,15517,15527,15531,15545,15559,15593,15611, 15613,15619,15639,15643,15649,15661,15667,15669,15681,15693, 15717,15721,15741,15745,15765,15793,15799,15811,15825,15835, 15847,15851,15865,15877,15881,15887,15899,15915,15935,15937, 15955,15973,15977,16011,16035,16061,16069,16087,16093,16097, 16121,16141,16153,16159,16165,16183,16189,16195,16197,16201, 16209,16215,16225,16259,16265,16273,16299,16309,16355,16375, 16381] atmost = 2**log_max - 1 # # Find the number of bits in ATMOST. # maxcol = i4_bit_hi1 ( atmost ) # # Initialize row 1 of V. # v[0,0:maxcol] = 1 # # Things to do only if the dimension changed. # if ( dim_num != dim_num_save ): # # Check parameters. # if ( dim_num < 1 or dim_max < dim_num ): print('I4_SOBOL - Fatal error!' ) print(' The spatial dimension DIM_NUM should satisfy:') print(' 1 <= DIM_NUM <= %d'%dim_max) print(' But this input value is DIM_NUM = %d'%dim_num) return dim_num_save = dim_num # # Initialize the remaining rows of V. # for i in range(2 , dim_num+1): # # The bits of the integer POLY(I) gives the form of polynomial I. # # Find the degree of polynomial I from binary encoding. # j = poly[i-1] m = 0 while ( 1 ): j = math.floor ( j / 2. ) if ( j <= 0 ): break m = m + 1 # # Expand this bit pattern to separate components of the logical array INCLUD. # j = poly[i-1] includ=zeros(m) for k in range(m, 0, -1): j2 = math.floor ( j / 2. ) includ[k-1] = (j != 2 * j2 ) j = j2 # # Calculate the remaining elements of row I as explained # in Bratley and Fox, section 2. # for j in range( m+1, maxcol+1 ): newv = v[i-1,j-m-1] l = 1 for k in range(1, m+1): l = 2 * l if ( includ[k-1] ): newv = bitwise_xor ( int(newv), int(l * v[i-1,j-k-1]) ) v[i-1,j-1] = newv # # Multiply columns of V by appropriate power of 2. # l = 1 for j in range( maxcol-1, 0, -1): l = 2 * l v[0:dim_num,j-1] = v[0:dim_num,j-1] * l # # RECIPD is 1/(common denominator of the elements in V). # recipd = 1.0 / ( 2 * l ) lastq=zeros(dim_num) seed = int(math.floor ( seed )) if ( seed < 0 ): seed = 0 if ( seed == 0 ): l = 1 lastq=zeros(dim_num) elif ( seed == seed_save + 1 ): # # Find the position of the right-hand zero in SEED. # l = i4_bit_lo0 ( seed ) elif ( seed <= seed_save ): seed_save = 0 l = 1 lastq=zeros(dim_num) for seed_temp in range( int(seed_save), int(seed)): l = i4_bit_lo0 ( seed_temp ) for i in range(1 , dim_num+1): lastq[i-1] = bitwise_xor ( int(lastq[i-1]), int(v[i-1,l-1]) ) l = i4_bit_lo0 ( seed ) elif ( seed_save + 1 < seed ): for seed_temp in range( int(seed_save + 1), int(seed) ): l = i4_bit_lo0 ( seed_temp ) for i in range(1, dim_num+1): lastq[i-1] = bitwise_xor ( int(lastq[i-1]), int(v[i-1,l-1]) ) l = i4_bit_lo0 ( seed ) # # Check that the user is not calling too many times! # if ( maxcol < l ): print('I4_SOBOL - Fatal error!') print(' Too many calls!') print(' MAXCOL = %d\n'%maxcol) print(' L = %d\n'%l) return # # Calculate the new components of QUASI. # quasi=zeros(dim_num) for i in range( 1, dim_num+1): quasi[i-1] = lastq[i-1] * recipd lastq[i-1] = bitwise_xor ( int(lastq[i-1]), int(v[i-1,l-1]) ) seed_save = seed seed = seed + 1 return [ quasi, seed ] def i4_uniform ( a, b, seed ): #*****************************************************************************80 # ## I4_UNIFORM returns a scaled pseudorandom I4. # # Discussion: # # The pseudorandom number will be scaled to be uniformly distributed # between A and B. # # Licensing: # # This code is distributed under the GNU LGPL license. # # Modified: # # 22 February 2011 # # Author: # # Original MATLAB version by John Burkardt. # PYTHON version by Corrado Chisari # # Reference: # # Paul Bratley, Bennett Fox, Linus Schrage, # A Guide to Simulation, # Springer Verlag, pages 201-202, 1983. # # Pierre L'Ecuyer, # Random Number Generation, # in Handbook of Simulation, # edited by Jerry Banks, # Wiley Interscience, page 95, 1998. # # Bennett Fox, # Algorithm 647: # Implementation and Relative Efficiency of Quasirandom # Sequence Generators, # ACM Transactions on Mathematical Software, # Volume 12, Number 4, pages 362-376, 1986. # # Peter Lewis, Allen Goodman, James Miller # A Pseudo-Random Number Generator for the System/360, # IBM Systems Journal, # Volume 8, pages 136-143, 1969. # # Parameters: # # Input, integer A, B, the minimum and maximum acceptable values. # # Input, integer SEED, a seed for the random number generator. # # Output, integer C, the randomly chosen integer. # # Output, integer SEED, the updated seed. # if ( seed == 0 ): print('I4_UNIFORM - Fatal error!') print(' Input SEED = 0!') seed = math.floor ( seed ) a = round ( a ) b = round ( b ) seed = mod ( seed, 2147483647 ) if ( seed < 0 ) : seed = seed + 2147483647 k = math.floor ( seed / 127773 ) seed = 16807 * ( seed - k * 127773 ) - k * 2836 if ( seed < 0 ): seed = seed + 2147483647 r = seed * 4.656612875E-10 # # Scale R to lie between A-0.5 and B+0.5. # r = ( 1.0 - r ) * ( min ( a, b ) - 0.5 ) + r * ( max ( a, b ) + 0.5 ) # # Use rounding to convert R to an integer between A and B. # value = round ( r ) value = max ( value, min ( a, b ) ) value = min ( value, max ( a, b ) ) c = value return [ int(c), int(seed) ] def prime_ge ( n ): #*****************************************************************************80 # ## PRIME_GE returns the smallest prime greater than or equal to N. # # # Example: # # N PRIME_GE # # -10 2 # 1 2 # 2 2 # 3 3 # 4 5 # 5 5 # 6 7 # 7 7 # 8 11 # 9 11 # 10 11 # # Licensing: # # This code is distributed under the GNU LGPL license. # # Modified: # # 22 February 2011 # # Author: # # Original MATLAB version by John Burkardt. # PYTHON version by Corrado Chisari # # Parameters: # # Input, integer N, the number to be bounded. # # Output, integer P, the smallest prime number that is greater # than or equal to N. # p = max ( math.ceil ( n ), 2 ) while ( not isprime ( p ) ): p = p + 1 return p def isprime(n): #*****************************************************************************80 # ## IS_PRIME returns True if N is a prime number, False otherwise # # # Licensing: # # This code is distributed under the GNU LGPL license. # # Modified: # # 22 February 2011 # # Author: # # Corrado Chisari # # Parameters: # # Input, integer N, the number to be checked. # # Output, boolean value, True or False # if n!=int(n) or n<1: return False p=2 while p. import re import numpy as np import numpy.random as npr import logging logger = logging.getLogger(__name__) log = logger.debug def unpack_args(str): if len(str) > 1: eq_re = re.compile("\s*=\s*") return dict(map(lambda x: eq_re.split(x), re.compile("\s*,\s*").split(str))) else: return {} def slice_sample(init_x, logprob, sigma=1.0, step_out=True, max_steps_out=1000, compwise=False, verbose=False): def direction_slice(direction, init_x): def dir_logprob(z): return logprob(direction*z + init_x) upper = sigma*npr.rand() lower = upper - sigma llh_s = np.log(npr.rand()) + dir_logprob(0.0) l_steps_out = 0 u_steps_out = 0 if step_out: while dir_logprob(lower) > llh_s and l_steps_out < max_steps_out: l_steps_out += 1 lower -= sigma while dir_logprob(upper) > llh_s and u_steps_out < max_steps_out: u_steps_out += 1 upper += sigma steps_in = 0 while True: steps_in += 1 new_z = (upper - lower)*npr.rand() + lower new_llh = dir_logprob(new_z) if np.isnan(new_llh): log(new_z, direction*new_z + init_x, new_llh, llh_s, init_x, logprob(init_x)) raise Exception("Slice sampler got a NaN") if new_llh > llh_s: break elif new_z < 0: lower = new_z elif new_z > 0: upper = new_z else: raise Exception("Slice sampler shrank to zero!") if verbose: log("Steps Out:", l_steps_out, u_steps_out, " Steps In:", steps_in) return new_z*direction + init_x if not init_x.shape: init_x = np.array([init_x]) dims = init_x.shape[0] if compwise: ordering = list(range(dims)) npr.shuffle(ordering) cur_x = init_x.copy() for d in ordering: direction = np.zeros((dims)) direction[d] = 1.0 cur_x = direction_slice(direction, cur_x) return cur_x else: direction = npr.randn(dims) direction = direction / np.sqrt(np.sum(direction**2)) return direction_slice(direction, init_x) ================================================ FILE: src/aup/RestAPI/__init__.py ================================================ """ .. Copyright (c) 2018 LG Electronics Inc. SPDX-License-Identifier: GPL-3.0-or-later """ ================================================ FILE: src/aup/RestAPI/server.py ================================================ """ RestAPI server using Flask ============================================ .. Copyright (c) 2018 LG Electronics Inc. SPDX-License-Identifier: GPL-3.0-or-later """ from flask import render_template, jsonify, request from flask_cors import CORS import connexion import click import logging import sys import sqlite3 as sql import os import os.path from six.moves.configparser import ConfigParser import json import signal import multiprocessing from aup.compression.utils import SERIALIZATION_SEPARATOR, run_non_automatic_experiment, verify_compression_config, adjust_compression_config from aup.setup import setup from aup.utils import get_default_username, set_default_keyvalue from ..ET.Connector.SQLiteConnector import SQLiteConnector from ..EE.Experiment import Experiment from ..aup import BasicConfig from aup.Proposer import get_proposer from threading import Lock logger = logging.getLogger("RestAPI") # Create the application instance app = connexion.App(__name__, specification_dir='./') CORS(app.app) EXPS = dict() EXPS_lock = Lock() EXPERIMENT_STATUS_TRANSLATE_DICT = { "CREATED": "CREATED", "RUNNING": "RUNNING", "STOPPED": "STOPPED", "FINISHED": "FINISHED", "FAILED": "FAILED", "STOPPING": "STOPPING", "REQUEST_STOP": "STOPPING", } def fix_none_res(arg, value): return arg if arg is not None and arg != 'None' else value def get_display_names(params, exp_config=None, eid=None, cur=None): if exp_config is None and eid is not None and cur is not None: cur.execute("SELECT json_extract(exp_config, '$') as exp_config \ FROM experiment WHERE eid={eid} LIMIT 1;".format(eid=eid)) exp_config = json.loads(str(cur.fetchone()[0])) display_names = {} for param in params: param = param['name'] full_param = param.split(SERIALIZATION_SEPARATOR) index = int(full_param[0]) original_key = full_param[-1] cdict = exp_config['compression']['config_list'][index] for part in full_param[1:-1]: cdict = cdict[part] if 'op_names' in exp_config['compression']['config_list'][index]: new_key = '{} ({})'.format( SERIALIZATION_SEPARATOR.join(full_param[1:]), ", ".join([op_name for op_name in exp_config['compression']['config_list'][index]['op_names']])) else: new_key = '{} ({})'.format( SERIALIZATION_SEPARATOR.join(full_param[1:]), ", ".join([op_type for op_type in exp_config['compression']['config_list'][index]['op_types']])) display_names[param] = new_key return display_names def fix_compression_job_config(jobs, params, display_names): new_jobs = [] for job in jobs: if job['job_config'] is None: new_job = { **{display_names[param['name']]: None for param in params}, **{key: val for key, val in job.items() if key != 'job_config'}, } new_jobs += [new_job] continue new_job = {key: val for key, val in job.items() if key != 'job_config'} job_config = json.loads(job['job_config']) for param in params: param = param['name'] full_param = param.split(SERIALIZATION_SEPARATOR) index = int(full_param[0]) original_key = full_param[-1] cdict = job_config['config_list'][index] for part in full_param[1:-1]: cdict = cdict[part] new_job[display_names[param]] = cdict[original_key] new_jobs += [new_job] return new_jobs def is_compression_experiment(exp_config=None, eid=None, cur=None): if exp_config is not None: return "compression" in exp_config elif eid is not None: ret = query_db(cur, "SELECT (json_extract(exp_config, '$.compression') IS NOT NULL) as is_compression_exp \ FROM experiment WHERE eid={eid} LIMIT 1;".format(eid=eid)) return bool(ret[0]["is_compression_exp"]) else: raise ValueError("Missing parameter for is_compression_experiment") def get_params_for_experiment(cur, eid): exp_config = query_db(cur, "SELECT json_extract(exp_config, '$.parameter_config') as parameters from experiment where eid={eid};".format(eid=eid)) params_json = json.loads(exp_config[0]['parameters']) params = [] for v in params_json: name = v['name'] new_param = {} new_param['name'] = name new_param['type'] = v['type'] new_param['range'] = v.get('range', None) new_param['interval'] = v.get('interval', None) new_param['n'] = v.get('n', None) params.append(new_param) return params def query_db(cur, query, args=(), one=False): cur.execute(query, args) r = [dict((cur.description[i][0], value) \ for i, value in enumerate(row)) for row in cur.fetchall()] return (r[0] if r else None) if one else r def start_experiment_daemon(json_conf, eid, cwd, event): daemon_logger = logging.getLogger("RestAPIDaemon") is_compression_exp = "compression" in json_conf is_one_shot_compression_exp = is_compression_exp and "proposer" not in json_conf rc = 0 exp = None previous_dir = os.getcwd() os.chdir(cwd) try: os.setsid() os.umask(0) if is_compression_exp: json_conf = verify_compression_config(json_conf) json_conf["compression"] = adjust_compression_config(json_conf["compression"]) set_default_keyvalue("workingdir", cwd, json_conf, log=logger) if not is_one_shot_compression_exp: exp = Experiment(json_conf, eid=eid) exp.add_suspend_signal() exp.add_refresh_signal() else: _, finish = run_non_automatic_experiment(json_conf, os.path.join(".aup"), eid=eid) event.set() event.clear() event.wait() if not is_one_shot_compression_exp: exp.start() except Exception as e: daemon_logger.exception('Exception caught:' + str(e)) rc = 1 finally: if not is_one_shot_compression_exp: exp.finish() else: finish() os.chdir(previous_dir) os._exit(rc) def get_valid_jobs_interval(cursor, eid): fin_cond = "(score is not NULL and (score == 'EARLY STOPPED' or typeof(score)=='real')) \ and start_time is not NULL and end_time is not NULL" cursor.execute("SELECT jid, ({fin_cond}) AS stat FROM job WHERE \ eid={eid} ORDER BY jid;".format(fin_cond=fin_cond, eid=eid)) sql_res = cursor.fetchall() first = None last = None idx = None num_jobs = 0 for i in range(0, len(sql_res)): if first == None and sql_res[i][1] == 1: first = sql_res[i][0] idx = i if first != None and sql_res[i][1] == 0: last = sql_res[i-1][0] num_jobs = (i - idx) break start_job = first if first == None: num_jobs = 0 elif last == None: num_jobs = len(sql_res) return (start_job, num_jobs) # Create a URL route in our application for "/" @app.route('/') def home(): """ This function just responds to the browser ULR localhost:5000/ :return: the rendered template 'home.html' """ return render_template('home.html') @app.route('/api/resource_types', methods=['GET']) def get_resource_types(): with sql.connect(app.app.config['db_file'], check_same_thread=False) as con: cur = con.cursor() cur.execute("SELECT DISTINCT type from resource;") res = [i[0] for i in cur.fetchall()] return jsonify({'resources': res}) return None @app.route('/api/experiments/', methods=['GET']) def get_experiment(eid): with sql.connect(app.app.config['db_file'], check_same_thread=False) as con: cur = con.cursor() experiment = experiment = query_db(cur, "SELECT *, name as experiment_name, \ json_extract(exp_config, '$.script') as script_name \ from experiment where eid={eid};".format(eid=eid)) experiment[0]['status'] = EXPERIMENT_STATUS_TRANSLATE_DICT[experiment[0]['status']] cur = con.cursor() cur.execute("SELECT count(*) from job where (end_time is NULL or \ (typeof(score) is not 'real' and score is not 'EARLY STOPPED')) and eid={eid}".format(eid=eid)) unfinished = int(cur.fetchone()[0]) cur.execute("SELECT count(*) from job where (end_time is not NULL and \ (typeof(score) is 'real' or score is 'EARLY STOPPED')) and eid={eid}".format(eid=eid)) finished = int(cur.fetchone()[0]) cur.execute("SELECT json_extract(exp_config, '$.target') from experiment where eid={eid}".format(eid=eid)) order = str(cur.fetchone()[0]) order = fix_none_res(order, 'max') cur.execute("SELECT json_extract(exp_config, '$.proposer') from experiment where eid={eid}".format(eid=eid)) proposer = str(cur.fetchone()[0]) cur = con.cursor() cur.execute("SELECT exp_config \ from experiment where eid={eid};".format(eid=eid)) exp_config = json.loads(str(cur.fetchone()[0])) num_params = len(exp_config['parameter_config']) proposer_obj = None n_samples = 1 if proposer is not None and proposer != 'None': proposer_obj = get_proposer(proposer) n_samples = proposer_obj(exp_config).nSamples if proposer == 'bohb' and experiment[0]['status'] == 'FINISHED': n_samples = finished param_names = [] for p in range(0, num_params): cur.execute("SELECT json_extract(exp_config, '$.parameter_config[{idx}].name') \ from experiment where eid={eid};".format(idx=p, eid=eid)) param_names.append(str(cur.fetchone()[0])) is_compression_exp = is_compression_experiment(exp_config) best_metrics_vs_hparams = query_db(cur, "SELECT {order}(score) as score, job_config \ from job where eid={eid} and typeof(score) = 'real';".format(order=order, eid=eid)) params = get_params_for_experiment(cur, eid) new_best_score = {} best_job_config = best_metrics_vs_hparams[0]['job_config'] if is_compression_exp: display_names = get_display_names(params, exp_config) best_metrics_vs_hparams = fix_compression_job_config(best_metrics_vs_hparams, params, display_names) for param in params: if param['name'] in display_names: param['name'] = display_names[param['name']] param['value'] = best_metrics_vs_hparams[0][param['name']] else: job_configs = [ json.loads(mvh["job_config"]) if "job_config" in mvh and mvh["job_config"] is not None else {} for mvh in best_metrics_vs_hparams ] best_metrics_vs_hparams = [{ "score": mvh["score"], **{param['name']: job_config[param['name']] if param['name'] in job_config else None for param in params}, } for mvh, job_config in zip(best_metrics_vs_hparams, job_configs)] for param in params: param['value'] = best_metrics_vs_hparams[0][param['name']] new_best_score['params'] = params new_best_score['proposer'] = proposer new_best_score['score'] = best_metrics_vs_hparams[0]['score'] res = { 'experiment': experiment[0], 'best_score': new_best_score, 'job_stats': { 'finished': finished, 'unfinished': unfinished, 'total': n_samples }, } if is_compression_exp and len(params) == 0: best_config_list = query_db(cur, "SELECT json_extract(exp_config, '$.compression.config_list') as 'config_list' \ FROM experiment WHERE eid={eid} LIMIT 1;".format(eid=eid)) best_config_list = best_config_list[0]['config_list'] res['best_score'] = { 'score': res['best_score']['score'], 'config_list': best_config_list, } return res return None @app.route('/api/experiments', methods=['GET']) def get_experiments(): with sql.connect(app.app.config['db_file'], check_same_thread=False) as con: cur = con.cursor() experiment = query_db(cur, "SELECT *, json_extract(exp_config, '$.script') as script_name, \ name as experiment_name, \ (SELECT case when (SELECT json_extract(exp_config, '$.target') from experiment where eid=experiment.eid) is \"min\" \ then min(score) else max(score) end from job where job.eid=experiment.eid and typeof(score) is 'real') as best_score, \ (SELECT json_group_array(job.score) from job where job.eid=experiment.eid) as scores, \ (SELECT count(*) from job where (end_time is NULL or typeof(score) is not 'real') and job.eid=experiment.eid) as jobs_unfinished, \ (SELECT count(*) from job where end_time is not NULL and typeof(score) = 'real' and job.eid=experiment.eid) as jobs_finished, \ (SELECT json_group_array(json_object('jid', jid, 'score', score, \ 'start_time', start_time, 'end_time', end_time, 'job_config', job_config)) from \ (SELECT * from job where eid=experiment.eid order by end_time)) as jobs \ from experiment order by start_time DESC;") for e in experiment: e['status'] = EXPERIMENT_STATUS_TRANSLATE_DICT[e['status']] mult_res_labels = query_db(cur, "SELECT JSON_EXTRACT(exp_config, '$.resource_args.multi_res_labels') \ AS labels FROM experiment ORDER BY start_time DESC") list_mult_res_labels = None if mult_res_labels is not None: for i in range(len(mult_res_labels)): labels_str = mult_res_labels[i]['labels'] if labels_str is None: continue list_mult_res_labels = json.loads(labels_str) experiment[i]['labels'] = list_mult_res_labels resource = query_db(cur, "SELECT * FROM resource WHERE type IS NOT 'passive';") return jsonify({'experiment': experiment, 'resource': resource}) return None @app.route('/api/job_status', methods=['GET']) def get_job_status(): with sql.connect(app.app.config['db_file'], check_same_thread=False) as con: cur = con.cursor() eid = request.args.get('eid') job = query_db(cur, "SELECT *, case when end_time is NULL then \"running\" \ else \"finished\" end as status, (SELECT rid from job_attempt where jid=job.jid) as rid \ from job where eid={eid} order by {sortby} {ASC};".format(eid=eid, \ sortby=request.args.get('sortby'), \ ASC="ASC" if int(request.args.get('asc')) else "DESC")) mult_res_labels = query_db(cur, "SELECT JSON_EXTRACT(exp_config, '$.resource_args.multi_res_labels') AS labels \ FROM experiment WHERE eid=?", (eid,)) mult_res_labels = mult_res_labels[0] list_mult_res_labels = None if mult_res_labels is not None and mult_res_labels['labels'] is not None: list_mult_res_labels = json.loads(mult_res_labels['labels']) for j in job: m_res = query_db(cur, "SELECT * FROM multiple_result WHERE jid=? AND is_last_result=1 ORDER BY mrid", (j['jid'],)) # take the last results if len(m_res) < len(list_mult_res_labels): continue for res in m_res: j[list_mult_res_labels[res['label_order']-1]] = res['value'] is_compression_exp = is_compression_experiment(cur=cur, eid=eid) if len(job) > 0 and is_compression_exp: params = get_params_for_experiment(cur, eid) display_names = get_display_names(params, eid=eid, cur=cur) job_configs = fix_compression_job_config([{'job_config': j['job_config']} for j in job], params, display_names) job = [{ 'job_config': json.dumps(job_configs[idx]), **{key: val for key, val in j.items() if key != 'job_config'} } for idx, j in enumerate(job)] return jsonify({'job': job, 'mult_res_labels': list_mult_res_labels}) return None @app.route('/api/hps_space', methods=['GET']) def get_hps_space(): with sql.connect(app.app.config['db_file'], check_same_thread=False) as con: cur = con.cursor() eid = request.args.get('eid') exp_config = query_db(cur, "SELECT json_extract(exp_config, '$.parameter_config') as parameters, \ json_extract(exp_config, '$.proposer') as proposer, \ json_extract(exp_config, '$.n_samples') as num_samples from experiment where eid={eid};".format(eid=eid)) return jsonify({'exp_config': exp_config[0]}) return None @app.route('/api/experiment_history', methods=['GET']) def get_experiment_history(): with sql.connect(app.app.config['db_file'], check_same_thread=False) as con: cur = con.cursor() experiment_history = query_db(cur, "SELECT *, (SELECT rid from job_attempt where jid=job.jid) as rid from job \ where eid={eid} order by end_time;".format(eid=request.args.get('eid'))) return jsonify({'experiment_history': experiment_history}) return None @app.route('/api/experiment_history_best/', methods=['GET'], defaults={'label': None}) @app.route('/api/experiment_history_best//":break;case"":i.bold=1;break;case"":i.italic=1;break;case"":i.underline=1;break;case"":i.strike=1;break;case"":i.outline=1;break;case"":i.shadow=1;break;case"":i.condense=1;break;case"":i.extend=1;break;case"":case"":break;case"":case"":break;case"":case"":break;case"":case"":break;case"":case"":break;case"":case"":break;case"":s=!1;break;default:if(r&&r.WTF&&!s)throw new Error("unrecognized "+o[0]+" in fonts")}}))}(r,i,t,n),(r=e.match(gs))&&function(e,t,n,r){t.Fills=[];var i={},s=!1;e[0].match(fe).forEach((function(e){var n=me(e);switch(Ce(n[0])){case"":case"":break;case"":case"":t.Fills.push(i={});break;case"":case"":break;case"":t.Fills.push(i),i={};break;case"":n.patternType&&(i.patternType=n.patternType);break;case"":case"":break;case"":case"":break;case"":case"":break;case"":case"":break;case"":case"":break;case"":case"":break;case"":s=!1;break;default:if(r&&r.WTF&&!s)throw new Error("unrecognized "+n[0]+" in fills")}}))}(r,i,0,n),(r=e.match(ms))&&function(e,t,n,r){t.Borders=[];var i={},s=!1;e[0].match(fe).forEach((function(e){var n=me(e);switch(Ce(n[0])){case"":case"":break;case"":case"":i={},n.diagonalUp&&(i.diagonalUp=n.diagonalUp),n.diagonalDown&&(i.diagonalDown=n.diagonalDown),t.Borders.push(i);break;case"":case"":break;case"":case"":case"":break;case"":case"":case"":break;case"":case"":case"":break;case"":case"":break;case"":case"":case"":break;case"":case"":case"":break;case"":case"":case"":break;case"":case"":case"":break;case"":case"":case"":break;case"":break;case"":case"":break;case"":case"":break;case"":s=!1;break;default:if(r&&r.WTF&&!s)throw new Error("unrecognized "+n[0]+" in borders")}}))}(r,i,0,n),(r=e.match(fs))&&function(e,t,n){var r;t.CellXf=[];var i=!1;e[0].match(fe).forEach((function(e){var s=me(e),o=0;switch(Ce(s[0])){case"":case"":case"":break;case"":for(delete(r=s)[0],o=0;o392)for(o=392;o>60;--o)if(t.NumberFmt[r.numFmtId]==t.NumberFmt[o]){r.numFmtId=o;break}t.CellXf.push(r);break;case"":break;case"":var a={};s.vertical&&(a.vertical=s.vertical),s.horizontal&&(a.horizontal=s.horizontal),null!=s.textRotation&&(a.textRotation=s.textRotation),s.indent&&(a.indent=s.indent),s.wrapText&&(a.wrapText=s.wrapText),r.alignment=a;break;case"":break;case"":case"":break;case"":case"":break;case"":i=!1;break;default:if(n&&n.WTF&&!i)throw new Error("unrecognized "+s[0]+" in cellXfs")}}))}(r,i,n),i):i}),As=Xe("styleSheet",null,{xmlns:Qe.main[0],"xmlns:vt":Qe.vt});function ys(e,t){var n,r=[de,As];return e.SSF&&null!=(n=function(e){var t=[""];return[[5,8],[23,26],[41,44],[50,392]].forEach((function(n){for(var r=n[0];r<=n[1];++r)null!=e[r]&&(t[t.length]=Xe("numFmt",null,{numFmtId:r,formatCode:xe(e[r])}))})),1===t.length?"":(t[t.length]="",t[0]=Xe("numFmts",null,{count:t.length-2}).replace("/>",">"),t.join(""))}(e.SSF))&&(r[r.length]=n),r[r.length]='',r[r.length]='',r[r.length]='',r[r.length]='',(n=function(e){var t=[];return t[t.length]=Xe("cellXfs",null),e.forEach((function(e){t[t.length]=Xe("xf",null,e)})),t[t.length]="",2===t.length?"":(t[0]=Xe("cellXfs",null,{count:t.length-2}).replace("/>",">"),t.join(""))}(t.cellXfs))&&(r[r.length]=n),r[r.length]='',r[r.length]='',r[r.length]='',r.length>2&&(r[r.length]="",r[1]=r[1].replace("/>",">")),r.join("")}function ws(e,t,n){n||(n=Lt(6+4*t.length)),n.write_shift(2,e),rn(t,n);var r=n.length>n.l?n.slice(0,n.l):n;return null==n.l&&(n.l=n.length),r}Vn.STY="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles";var Ss=G(["none","solid","mediumGray","darkGray","lightGray","darkHorizontal","darkVertical","darkDown","darkUp","darkGrid","darkTrellis","lightHorizontal","lightVertical","lightDown","lightUp","lightGrid","lightTrellis","gray125","gray0625"]),xs=Ot;function Es(e,t){t||(t=Lt(84));var n=Ss[e.patternType];null==n&&(n=40),t.write_shift(4,n);var r=0;if(40!=n)for(xn({auto:1},t),xn({auto:1},t);r<12;++r)t.write_shift(4,0);else{for(;r<4;++r)t.write_shift(4,0);for(;r<12;++r)t.write_shift(4,0)}return t.length>t.l?t.slice(0,t.l):t}function ks(e,t,n){return n||(n=Lt(16)),n.write_shift(2,t||0),n.write_shift(2,e.numFmtId||0),n.write_shift(2,0),n.write_shift(2,0),n.write_shift(2,0),n.write_shift(1,0),n.write_shift(1,0),n.write_shift(1,0),n.write_shift(1,0),n.write_shift(1,0),n.write_shift(1,0),n}function _s(e,t){return t||(t=Lt(10)),t.write_shift(1,0),t.write_shift(1,0),t.write_shift(4,0),t.write_shift(4,0),t}var Ts=Ot;function Rs(e,t){var n=Ft();return Nt(n,"BrtBeginStyleSheet"),function(e,t){if(t){var n=0;[[5,8],[23,26],[41,44],[50,392]].forEach((function(e){for(var r=e[0];r<=e[1];++r)null!=t[r]&&++n})),0!=n&&(Nt(e,"BrtBeginFmts",tn(n)),[[5,8],[23,26],[41,44],[50,392]].forEach((function(n){for(var r=n[0];r<=n[1];++r)null!=t[r]&&Nt(e,"BrtFmt",ws(r,t[r]))})),Nt(e,"BrtEndFmts"))}}(n,e.SSF),function(e){Nt(e,"BrtBeginFonts",tn(1)),Nt(e,"BrtFont",function(e,t){t||(t=Lt(153)),t.write_shift(2,20*e.sz),function(e,t){t||(t=Lt(2)),t.write_shift(1,(e.italic?2:0)|(e.strike?8:0)|(e.outline?16:0)|(e.shadow?32:0)|(e.condense?64:0)|(e.extend?128:0)),t.write_shift(1,0)}(e,t),t.write_shift(2,e.bold?700:400);var n=0;"superscript"==e.vertAlign?n=1:"subscript"==e.vertAlign&&(n=2),t.write_shift(2,n),t.write_shift(1,e.underline||0),t.write_shift(1,e.family||0),t.write_shift(1,e.charset||0),t.write_shift(1,0),xn(e.color,t);var r=0;return"major"==e.scheme&&(r=1),"minor"==e.scheme&&(r=2),t.write_shift(1,r),rn(e.name,t),t.length>t.l?t.slice(0,t.l):t}({sz:12,color:{theme:1},name:"Calibri",family:2,scheme:"minor"})),Nt(e,"BrtEndFonts")}(n),function(e){Nt(e,"BrtBeginFills",tn(2)),Nt(e,"BrtFill",Es({patternType:"none"})),Nt(e,"BrtFill",Es({patternType:"gray125"})),Nt(e,"BrtEndFills")}(n),function(e){Nt(e,"BrtBeginBorders",tn(1)),Nt(e,"BrtBorder",function(e,t){return t||(t=Lt(51)),t.write_shift(1,0),_s(0,t),_s(0,t),_s(0,t),_s(0,t),_s(0,t),t.length>t.l?t.slice(0,t.l):t}()),Nt(e,"BrtEndBorders")}(n),function(e){Nt(e,"BrtBeginCellStyleXFs",tn(1)),Nt(e,"BrtXF",ks({numFmtId:0,fontId:0,fillId:0,borderId:0},65535)),Nt(e,"BrtEndCellStyleXFs")}(n),function(e,t){Nt(e,"BrtBeginCellXFs",tn(t.length)),t.forEach((function(t){Nt(e,"BrtXF",ks(t,0))})),Nt(e,"BrtEndCellXFs")}(n,t.cellXfs),function(e){Nt(e,"BrtBeginStyles",tn(1)),Nt(e,"BrtStyle",function(e,t){return t||(t=Lt(52)),t.write_shift(4,e.xfId),t.write_shift(2,1),t.write_shift(1,+e.builtinId),t.write_shift(1,0),fn(e.name||"",t),t.length>t.l?t.slice(0,t.l):t}({xfId:0,builtinId:0,name:"Normal"})),Nt(e,"BrtEndStyles")}(n),function(e){Nt(e,"BrtBeginDXFs",tn(0)),Nt(e,"BrtEndDXFs")}(n),function(e){Nt(e,"BrtBeginTableStyles",function(e,t,n){var r=Lt(2052);return r.write_shift(4,0),fn("TableStyleMedium9",r),fn("PivotStyleMedium4",r),r.length>r.l?r.slice(0,r.l):r}()),Nt(e,"BrtEndTableStyles")}(n),Nt(n,"BrtEndStyleSheet"),n.end()}function Bs(e,t,n){t.themeElements.clrScheme=[];var r={};(e[0].match(fe)||[]).forEach((function(e){var i=me(e);switch(i[0]){case"":break;case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":"/"===i[0].charAt(1)?(t.themeElements.clrScheme.push(r),r={}):r.name=i[0].slice(3,i[0].length-1);break;default:if(n&&n.WTF)throw new Error("Unrecognized "+i[0]+" in clrScheme")}}))}function Os(){}function Ls(){}Vn.THEME="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme";var Ps=/]*)>[\s\S]*<\/a:clrScheme>/,Fs=/]*)>[\s\S]*<\/a:fontScheme>/,Ns=/]*)>[\s\S]*<\/a:fmtScheme>/,Ms=/]*)>[\s\S]*<\/a:themeElements>/;function Ds(e,t){if(!e||0===e.length)return Ds($s());var n,r={};if(!(n=e.match(Ms)))throw new Error("themeElements not found in theme");return function(e,t,n){var r;t.themeElements={},[["clrScheme",Ps,Bs],["fontScheme",Fs,Os],["fmtScheme",Ns,Ls]].forEach((function(i){if(!(r=e.match(i[1])))throw new Error(i[0]+" not found in themeElements");i[2](r,t,n)}))}(n[0],r,t),r}function $s(e,t){if(t&&t.themeXLSX)return t.themeXLSX;var n=[de];return n[n.length]='',n[n.length]="",n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]="",n[n.length]='',n[n.length]="",n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]="",n[n.length]="",n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]="",n[n.length]="",n[n.length]='',n[n.length]="",n[n.length]='',n[n.length]='',n[n.length]="",n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]="",n[n.length]='',n[n.length]="",n[n.length]='',n[n.length]="",n[n.length]='',n[n.length]='',n[n.length]="",n[n.length]='',n[n.length]="",n[n.length]="",n[n.length]="",n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]="",n[n.length]="",n[n.length]="",n[n.length]="",n[n.length]='',n[n.length]="",n[n.length]="",n[n.length]="",n[n.length]="",n[n.length]='',n[n.length]="",n[n.length]="",n[n.length]="",n[n.length]="",n[n.length]='',n[n.length]="",n[n.length]='',n[n.length]='',n[n.length]="",n[n.length]="",n[n.length]="",n[n.length]='',n[n.length]='',n[n.length]="",n[n.length]='',n[n.length]='',n[n.length]='',n[n.length]="",n[n.length]='',n[n.length]="",n[n.length]='',n[n.length]="",n[n.length]='',n[n.length]='',n[n.length]="",n[n.length]='',n[n.length]="",n[n.length]="",n[n.length]="",n[n.length]="",n[n.length]="",n[n.length]="",n[n.length]='',n[n.length]="",n[n.length]="",n[n.length]='',n[n.length]="",n[n.length]="",n[n.length]="",n[n.length]="",n.join("")}function Ws(e){var t=e.read_shift(2),n=e.read_shift(2)-4,r=[t];switch(t){case 4:case 5:case 7:case 8:case 9:case 10:case 11:case 13:r[1]=function(e){var t={};switch(t.xclrType=e.read_shift(2),t.nTintShade=e.read_shift(2),t.xclrType){case 0:e.l+=4;break;case 1:t.xclrValue=function(e,t){return Ot(e,4)}(e);break;case 2:t.xclrValue=Hr(e);break;case 3:t.xclrValue=function(e){return e.read_shift(4)}(e);break;case 4:e.l+=4}return e.l+=8,t}(e);break;case 6:r[1]=function(e,t){return Ot(e,t)}(e,n);break;case 14:case 15:r[1]=e.read_shift(1===n?1:2);break;default:throw new Error("Unrecognized ExtProp type: "+t+" "+n)}return r}Vn.IMG="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",Vn.DRAW="http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing";var Hs=1024;function Gs(e,t){for(var n=[21600,21600],r=["m0,0l0",n[1],n[0],n[1],n[0],"0xe"].join(","),i=[Xe("xml",null,{"xmlns:v":"urn:schemas-microsoft-com:vml","xmlns:o":qe,"xmlns:x":et,"xmlns:mv":"http://macVmlSchemaUri"}).replace(/\/>/,">"),Xe("o:shapelayout",Xe("o:idmap",null,{"v:ext":"edit",data:e}),{"v:ext":"edit"}),Xe("v:shapetype",[Xe("v:stroke",null,{joinstyle:"miter"}),Xe("v:path",null,{gradientshapeok:"t","o:connecttype":"rect"})].join(""),{id:"_x0000_t202","o:spt":202,coordsize:n.join(","),path:r})];Hs<1e3*e;)Hs+=1e3;return t.forEach((function(e){var t=zt(e[0]);i=i.concat(["",Xe("v:fill",Xe("o:fill",null,{type:"gradientUnscaled","v:ext":"view"}),{color2:"#BEFF82",angle:"-180",type:"gradient"}),Xe("v:shadow",null,{on:"t",obscured:"t"}),Xe("v:path",null,{"o:connecttype":"none"}),'
','',"","",ze("x:Anchor",[t.c,0,t.r,0,t.c+3,100,t.r+5,100].join(",")),ze("x:AutoFill","False"),ze("x:Row",String(t.r)),ze("x:Column",String(t.c)),e[1].hidden?"":"","",""])})),i.push(""),i.join("")}function Vs(e,t,n){var r,i=Array.isArray(t);n.forEach((function(e){var n=zt(e.ref);if(i?(t[n.r]||(t[n.r]=[]),r=t[n.r][n.c]):r=t[e.ref],!r){r={},i?t[n.r][n.c]=r:t[e.ref]=r;var s=Yt(t["!ref"]||"BDWGO1000001:A1");s.s.r>n.r&&(s.s.r=n.r),s.e.rn.c&&(s.s.c=n.c),s.e.c"),e.forEach((function(e){e[1].forEach((function(e){var r=xe(e.a);n.indexOf(r)>-1||(n.push(r),t.push(""+r+""))}))})),t.push(""),t.push(""),e.forEach((function(e){e[1].forEach((function(r){t.push(''),t.push(ze("t",null==r.t?"":xe(r.t))),t.push("")}))})),t.push(""),t.length>2&&(t[t.length]="",t[1]=t[1].replace("/>",">")),t.join("")}var zs=nn;function Ks(e){var t=Ft(),n=[];return Nt(t,"BrtBeginComments"),Nt(t,"BrtBeginCommentAuthors"),e.forEach((function(e){e[1].forEach((function(e){n.indexOf(e.a)>-1||(n.push(e.a.slice(0,54)),Nt(t,"BrtCommentAuthor",function(e){return rn(e.slice(0,54))}(e.a)))}))})),Nt(t,"BrtEndCommentAuthors"),Nt(t,"BrtBeginCommentList"),e.forEach((function(e){e[1].forEach((function(r){r.iauthor=n.indexOf(r.a);var i={s:zt(e[0]),e:zt(e[0])};Nt(t,"BrtBeginComment",function(e,t){return null==t&&(t=Lt(36)),t.write_shift(4,e[1].iauthor),In(e[0],t),t.write_shift(4,0),t.write_shift(4,0),t.write_shift(4,0),t.write_shift(4,0),t}([i,r])),r.t&&r.t.length>0&&Nt(t,"BrtCommentText",function(e,t){var n=!1;return null==t&&(n=!0,t=Lt(23+4*e.t.length)),t.write_shift(1,1),rn(e.t,t),t.write_shift(4,1),function(e,t){t||(t=Lt(4)),t.write_shift(2,e.ich||0),t.write_shift(2,e.ifnt||0)}({ich:0,ifnt:0},t),n?t.slice(0,t.l):t}(r)),Nt(t,"BrtEndComment"),delete r.iauthor}))})),Nt(t,"BrtEndCommentList"),Nt(t,"BrtEndComments"),t.end()}var Xs=["xlsb","xlsm","xlam","biff8","xla"];Vn.DS="http://schemas.openxmlformats.org/officeDocument/2006/relationships/dialogsheet",Vn.MS="http://schemas.microsoft.com/office/2006/relationships/xlMacrosheet";var Us=function(){var e=/(^|[^A-Za-z])R(\[?)(-?\d+|)\]?C(\[?)(-?\d+|)\]?/g,t={r:0,c:0};function n(e,n,r,i,s,o){var a=i.length>0?0|parseInt(i,10):0,c=o.length>0?0|parseInt(o,10):0;c<0&&0===s.length&&(c=0);var l=!1,h=!1;return(s.length>0||0==o.length)&&(l=!0),l?c+=t.c:--c,(r.length>0||0==i.length)&&(h=!0),h?a+=t.r:--a,n+(l?"":"$")+jt(c)+(h?"":"$")+Gt(a)}return function(r,i){return t=i,r.replace(e,n)}}(),Ys=/(^|[^._A-Z0-9])([$]?)([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])([$]?)([1-9]\d{0,5}|10[0-3]\d{4}|104[0-7]\d{3}|1048[0-4]\d{2}|10485[0-6]\d|104857[0-6])(?![_.\(A-Za-z0-9])/g,Js=function(e,t){return e.replace(Ys,(function(e,n,r,i,s,o){var a=Vt(i)-(r?0:t.c),c=Ht(o)-(s?0:t.r);return n+"R"+(0==c?"":s?c+1:"["+c+"]")+"C"+(0==a?"":r?a+1:"["+a+"]")}))};function Qs(e,t,n){var r=Xt(t).s,i=zt(n);return function(e,t){return e.replace(Ys,(function(e,n,r,i,s,o){return n+("$"==r?r+i:jt(Vt(i)+t.c))+("$"==s?s+o:Gt(Ht(o)+t.r))}))}(e,{r:i.r-r.r,c:i.c-r.c})}function qs(e){return e.replace(/_xlfn\./g,"")}function eo(e){e.l+=1}function to(e,t){var n=e.read_shift(1==t?1:2);return[16383&n,n>>14&1,n>>15&1]}function no(e,t,n){var r=2;if(n){if(n.biff>=2&&n.biff<=5)return ro(e);12==n.biff&&(r=4)}var i=e.read_shift(r),s=e.read_shift(r),o=to(e,2),a=to(e,2);return{s:{r:i,c:o[0],cRel:o[1],rRel:o[2]},e:{r:s,c:a[0],cRel:a[1],rRel:a[2]}}}function ro(e){var t=to(e,2),n=to(e,2),r=e.read_shift(1),i=e.read_shift(1);return{s:{r:t[0],c:r,cRel:t[1],rRel:t[2]},e:{r:n[0],c:i,cRel:n[1],rRel:n[2]}}}function io(e,t,n){if(n&&n.biff>=2&&n.biff<=5)return function(e){var t=to(e,2),n=e.read_shift(1);return{r:t[0],c:n,cRel:t[1],rRel:t[2]}}(e);var r=e.read_shift(n&&12==n.biff?4:2),i=to(e,2);return{r:r,c:i[0],cRel:i[1],rRel:i[2]}}function so(e){var t=e.read_shift(2),n=e.read_shift(2);return{r:t,c:255&n,fQuoted:!!(16384&n),cRel:n>>15,rRel:n>>15}}function oo(e){return[e.read_shift(1),e.read_shift(1)]}function ao(e,t){var n=[e.read_shift(1)];if(12==t)switch(n[0]){case 2:n[0]=4;break;case 4:n[0]=16;break;case 0:n[0]=1;break;case 1:n[0]=2}switch(n[0]){case 4:n[1]=_r(e,1)?"TRUE":"FALSE",12!=t&&(e.l+=7);break;case 37:case 16:n[1]=wn[e[e.l]],e.l+=12==t?4:8;break;case 0:e.l+=8;break;case 1:n[1]=An(e);break;case 2:n[1]=Mr(e,0,{biff:t>0&&t<8?2:t});break;default:throw new Error("Bad SerAr: "+n[0])}return n}function co(e,t,n){for(var r=e.read_shift(12==n.biff?4:2),i=[],s=0;s!=r;++s)i.push((12==n.biff?vn:Kr)(e,8));return i}function lo(e,t,n){var r=0,i=0;12==n.biff?(r=e.read_shift(4),i=e.read_shift(4)):(i=1+e.read_shift(1),r=1+e.read_shift(2)),n.biff>=2&&n.biff<8&&(--r,0==--i&&(i=256));for(var s=0,o=[];s!=r&&(o[s]=[]);++s)for(var a=0;a!=i;++a)o[s][a]=ao(e,n.biff);return o}function ho(e,t,n){return e.l+=2,[so(e)]}function uo(e){return e.l+=6,[]}var fo=ho,go=uo,po=uo,mo=ho;function Co(e){return e.l+=2,[Rr(e),1&e.read_shift(2)]}var bo=ho,vo=Co,Io=uo,Ao=ho,yo=ho,wo=["Data","All","Headers","??","?Data2","??","?DataHeaders","??","Totals","??","??","??","?DataTotals","??","??","??","?Current"],So={1:{n:"PtgExp",f:function(e,t,n){return e.l++,n&&12==n.biff?[e.read_shift(4,"i"),0]:[e.read_shift(2),e.read_shift(n&&2==n.biff?1:2)]}},2:{n:"PtgTbl",f:Ot},3:{n:"PtgAdd",f:eo},4:{n:"PtgSub",f:eo},5:{n:"PtgMul",f:eo},6:{n:"PtgDiv",f:eo},7:{n:"PtgPower",f:eo},8:{n:"PtgConcat",f:eo},9:{n:"PtgLt",f:eo},10:{n:"PtgLe",f:eo},11:{n:"PtgEq",f:eo},12:{n:"PtgGe",f:eo},13:{n:"PtgGt",f:eo},14:{n:"PtgNe",f:eo},15:{n:"PtgIsect",f:eo},16:{n:"PtgUnion",f:eo},17:{n:"PtgRange",f:eo},18:{n:"PtgUplus",f:eo},19:{n:"PtgUminus",f:eo},20:{n:"PtgPercent",f:eo},21:{n:"PtgParen",f:eo},22:{n:"PtgMissArg",f:eo},23:{n:"PtgStr",f:function(e,t,n){return e.l++,Lr(e,0,n)}},26:{n:"PtgSheet",f:function(e,t,n){return e.l+=5,e.l+=2,e.l+=2==n.biff?1:4,["PTGSHEET"]}},27:{n:"PtgEndSheet",f:function(e,t,n){return e.l+=2==n.biff?4:5,["PTGENDSHEET"]}},28:{n:"PtgErr",f:function(e){return e.l++,wn[e.read_shift(1)]}},29:{n:"PtgBool",f:function(e){return e.l++,0!==e.read_shift(1)}},30:{n:"PtgInt",f:function(e){return e.l++,e.read_shift(2)}},31:{n:"PtgNum",f:function(e){return e.l++,An(e)}},32:{n:"PtgArray",f:function(e,t,n){var r=(96&e[e.l++])>>5;return e.l+=2==n.biff?6:12==n.biff?14:7,[r]}},33:{n:"PtgFunc",f:function(e,t,n){var r=(96&e[e.l])>>5;e.l+=1;var i=e.read_shift(n&&n.biff<=3?1:2);return[Zo[i],jo[i],r]}},34:{n:"PtgFuncVar",f:function(e,t,n){var r=e[e.l++],i=e.read_shift(1),s=n&&n.biff<=3?[88==r?-1:0,e.read_shift(1)]:function(e){return[e[e.l+1]>>7,32767&e.read_shift(2)]}(e);return[i,(0===s[0]?jo:Vo)[s[1]]]}},35:{n:"PtgName",f:function(e,t,n){var r=e.read_shift(1)>>>5&3,i=e.read_shift(!n||n.biff>=8?4:2);switch(n.biff){case 2:e.l+=5;break;case 3:case 4:e.l+=8;break;case 5:e.l+=12}return[r,0,i]}},36:{n:"PtgRef",f:function(e,t,n){var r=(96&e[e.l])>>5;return e.l+=1,[r,io(e,0,n)]}},37:{n:"PtgArea",f:function(e,t,n){return[(96&e[e.l++])>>5,no(e,0,n)]}},38:{n:"PtgMemArea",f:function(e,t,n){var r=e.read_shift(1)>>>5&3;return e.l+=n&&2==n.biff?3:4,[r,e.read_shift(n&&2==n.biff?1:2)]}},39:{n:"PtgMemErr",f:Ot},40:{n:"PtgMemNoMem",f:Ot},41:{n:"PtgMemFunc",f:function(e,t,n){return[e.read_shift(1)>>>5&3,e.read_shift(n&&2==n.biff?1:2)]}},42:{n:"PtgRefErr",f:function(e,t,n){var r=e.read_shift(1)>>>5&3;return e.l+=4,n.biff<8&&e.l--,12==n.biff&&(e.l+=2),[r]}},43:{n:"PtgAreaErr",f:function(e,t,n){var r=(96&e[e.l++])>>5;return e.l+=n&&n.biff>8?12:n.biff<8?6:8,[r]}},44:{n:"PtgRefN",f:function(e,t,n){var r=(96&e[e.l])>>5;return e.l+=1,[r,function(e,t,n){var r=n&&n.biff?n.biff:8;if(r>=2&&r<=5)return function(e){var t=e.read_shift(2),n=e.read_shift(1),r=(32768&t)>>15,i=(16384&t)>>14;return t&=16383,1==r&&t>=8192&&(t-=16384),1==i&&n>=128&&(n-=256),{r:t,c:n,cRel:i,rRel:r}}(e);var i=e.read_shift(r>=12?4:2),s=e.read_shift(2),o=(16384&s)>>14,a=(32768&s)>>15;if(s&=16383,1==a)for(;i>524287;)i-=1048576;if(1==o)for(;s>8191;)s-=16384;return{r:i,c:s,cRel:o,rRel:a}}(e,0,n)]}},45:{n:"PtgAreaN",f:function(e,t,n){return[(96&e[e.l++])>>5,function(e,t,n){if(n.biff<8)return ro(e);var r=e.read_shift(12==n.biff?4:2),i=e.read_shift(12==n.biff?4:2),s=to(e,2),o=to(e,2);return{s:{r:r,c:s[0],cRel:s[1],rRel:s[2]},e:{r:i,c:o[0],cRel:o[1],rRel:o[2]}}}(e,0,n)]}},46:{n:"PtgMemAreaN",f:function(e){return[e.read_shift(1)>>>5&3,e.read_shift(2)]}},47:{n:"PtgMemNoMemN",f:function(e){return[e.read_shift(1)>>>5&3,e.read_shift(2)]}},57:{n:"PtgNameX",f:function(e,t,n){return 5==n.biff?function(e){var t=e.read_shift(1)>>>5&3,n=e.read_shift(2,"i");e.l+=8;var r=e.read_shift(2);return e.l+=12,[t,n,r]}(e):[e.read_shift(1)>>>5&3,e.read_shift(2),e.read_shift(4)]}},58:{n:"PtgRef3d",f:function(e,t,n){var r=(96&e[e.l])>>5;e.l+=1;var i=e.read_shift(2);return n&&5==n.biff&&(e.l+=12),[r,i,io(e,0,n)]}},59:{n:"PtgArea3d",f:function(e,t,n){var r=(96&e[e.l++])>>5,i=e.read_shift(2,"i");if(n)switch(n.biff){case 5:e.l+=12}return[r,i,no(e,0,n)]}},60:{n:"PtgRefErr3d",f:function(e,t,n){var r=(96&e[e.l++])>>5,i=e.read_shift(2),s=4;if(n)switch(n.biff){case 5:s=15;break;case 12:s=6}return e.l+=s,[r,i]}},61:{n:"PtgAreaErr3d",f:function(e,t,n){var r=(96&e[e.l++])>>5,i=e.read_shift(2),s=8;if(n)switch(n.biff){case 5:e.l+=12,s=6;break;case 12:s=12}return e.l+=s,[r,i]}},255:{}},xo={64:32,96:32,65:33,97:33,66:34,98:34,67:35,99:35,68:36,100:36,69:37,101:37,70:38,102:38,71:39,103:39,72:40,104:40,73:41,105:41,74:42,106:42,75:43,107:43,76:44,108:44,77:45,109:45,78:46,110:46,79:47,111:47,88:34,120:34,89:57,121:57,90:58,122:58,91:59,123:59,92:60,124:60,93:61,125:61};!function(){for(var e in xo)So[e]=So[xo[e]]}();var Eo={1:{n:"PtgElfLel",f:Co},2:{n:"PtgElfRw",f:Ao},3:{n:"PtgElfCol",f:fo},6:{n:"PtgElfRwV",f:yo},7:{n:"PtgElfColV",f:mo},10:{n:"PtgElfRadical",f:bo},11:{n:"PtgElfRadicalS",f:Io},13:{n:"PtgElfColS",f:go},15:{n:"PtgElfColSV",f:po},16:{n:"PtgElfRadicalLel",f:vo},25:{n:"PtgList",f:function(e){e.l+=2;var t=e.read_shift(2),n=e.read_shift(2),r=e.read_shift(4),i=e.read_shift(2),s=e.read_shift(2);return{ixti:t,coltype:3&n,rt:wo[n>>2&31],idx:r,c:i,C:s}}},29:{n:"PtgSxName",f:function(e){return e.l+=2,[e.read_shift(4)]}},255:{}},ko={0:{n:"PtgAttrNoop",f:function(e){return e.l+=4,[0,0]}},1:{n:"PtgAttrSemi",f:function(e,t,n){var r=255&e[e.l+1]?1:0;return e.l+=n&&2==n.biff?3:4,[r]}},2:{n:"PtgAttrIf",f:function(e,t,n){var r=255&e[e.l+1]?1:0;return e.l+=2,[r,e.read_shift(n&&2==n.biff?1:2)]}},4:{n:"PtgAttrChoose",f:function(e,t,n){e.l+=2;for(var r=e.read_shift(n&&2==n.biff?1:2),i=[],s=0;s<=r;++s)i.push(e.read_shift(n&&2==n.biff?1:2));return i}},8:{n:"PtgAttrGoto",f:function(e,t,n){var r=255&e[e.l+1]?1:0;return e.l+=2,[r,e.read_shift(n&&2==n.biff?1:2)]}},16:{n:"PtgAttrSum",f:function(e,t,n){e.l+=n&&2==n.biff?3:4}},32:{n:"PtgAttrBaxcel",f:function(e){var t=1&e[e.l+1];return e.l+=4,[t,1]}},64:{n:"PtgAttrSpace",f:function(e){return e.read_shift(2),oo(e)}},65:{n:"PtgAttrSpaceSemi",f:function(e){return e.read_shift(2),oo(e)}},128:{n:"PtgAttrIfError",f:function(e){var t=255&e[e.l+1]?1:0;return e.l+=2,[t,e.read_shift(2)]}},255:{}};function _o(e,t,n,r){if(r.biff<8)return Ot(e,t);for(var i=e.l+t,s=[],o=0;o!==n.length;++o)switch(n[o][0]){case"PtgArray":n[o][1]=lo(e,0,r),s.push(n[o][1]);break;case"PtgMemArea":n[o][2]=co(e,0,r),s.push(n[o][2]);break;case"PtgExp":r&&12==r.biff&&(n[o][1][1]=e.read_shift(4),s.push(n[o][1]));break;case"PtgList":case"PtgElfRadicalS":case"PtgElfColS":case"PtgElfColSV":throw"Unsupported "+n[o][0]}return 0!=(t=i-e.l)&&s.push(Ot(e,t)),s}function To(e,t,n){for(var r,i,s=e.l+t,o=[];s!=e.l;)t=s-e.l,r=So[i=e[e.l]],24!==i&&25!==i||(r=(24===i?Eo:ko)[e[e.l+1]]),r&&r.f?o.push([r.n,r.f(e,t,n)]):Ot(e,t);return o}function Ro(e){for(var t=[],n=0;n=",PtgGt:">",PtgLe:"<=",PtgLt:"<",PtgMul:"*",PtgNe:"<>",PtgPower:"^",PtgSub:"-"};function Oo(e,t,n){if(!e)return"SH33TJSERR0";if(n.biff>8&&(!e.XTI||!e.XTI[t]))return e.SheetNames[t];if(!e.XTI)return"SH33TJSERR6";var r=e.XTI[t];if(n.biff<8)return t>1e4&&(t-=65536),t<0&&(t=-t),0==t?"":e.XTI[t-1];if(!r)return"SH33TJSERR1";var i="";if(n.biff>8)switch(e[r[0]][0]){case 357:return i=-1==r[1]?"#REF":e.SheetNames[r[1]],r[1]==r[2]?i:i+":"+e.SheetNames[r[2]];case 358:return null!=n.SID?e.SheetNames[n.SID]:"SH33TJSSAME"+e[r[0]][0];case 355:default:return"SH33TJSSRC"+e[r[0]][0]}switch(e[r[0]][0][0]){case 1025:return i=-1==r[1]?"#REF":e.SheetNames[r[1]]||"SH33TJSERR3",r[1]==r[2]?i:i+":"+e.SheetNames[r[2]];case 14849:return e[r[0]].slice(1).map((function(e){return e.Name})).join(";;");default:return e[r[0]][0][3]?(i=-1==r[1]?"#REF":e[r[0]][0][3][r[1]]||"SH33TJSERR4",r[1]==r[2]?i:i+":"+e[r[0]][0][3][r[2]]):"SH33TJSERR2"}}function Lo(e,t,n){return function(e,t){if(!(e||t&&t.biff<=5&&t.biff>=2))throw new Error("empty sheet name");return e.indexOf(" ")>-1?"'"+e+"'":e}(Oo(e,t,n),n)}function Po(e,t,n,r,i){var s,o,a,c,l=i&&i.biff||8,h={s:{c:0,r:0},e:{c:0,r:0}},d=[],u=0,f=0,g="";if(!e[0]||!e[0][0])return"";for(var p=-1,m="",C=0,b=e[0].length;C=0){switch(e[0][p][1][0]){case 0:m=ee(" ",e[0][p][1][1]);break;case 1:m=ee("\r",e[0][p][1][1]);break;default:if(m="",i.WTF)throw new Error("Unexpected PtgAttrSpaceType "+e[0][p][1][0])}o+=m,p=-1}d.push(o+Bo[v[0]]+s);break;case"PtgIsect":s=d.pop(),o=d.pop(),d.push(o+" "+s);break;case"PtgUnion":s=d.pop(),o=d.pop(),d.push(o+","+s);break;case"PtgRange":s=d.pop(),o=d.pop(),d.push(o+":"+s);break;case"PtgAttrChoose":case"PtgAttrGoto":case"PtgAttrIf":case"PtgAttrIfError":break;case"PtgRef":a=Mt(v[1][1],h,i),d.push($t(a,l));break;case"PtgRefN":a=n?Mt(v[1][1],n,i):v[1][1],d.push($t(a,l));break;case"PtgRef3d":u=v[1][1],a=Mt(v[1][2],h,i),g=Lo(r,u,i),d.push(g+"!"+$t(a,l));break;case"PtgFunc":case"PtgFuncVar":var I=v[1][0],A=v[1][1];I||(I=0);var y=0==(I&=127)?[]:d.slice(-I);d.length-=I,"User"===A&&(A=y.shift()),d.push(A+"("+y.join(",")+")");break;case"PtgBool":d.push(v[1]?"TRUE":"FALSE");break;case"PtgInt":d.push(v[1]);break;case"PtgNum":d.push(String(v[1]));break;case"PtgStr":d.push('"'+v[1].replace(/"/g,'""')+'"');break;case"PtgErr":d.push(v[1]);break;case"PtgAreaN":c=Dt(v[1][1],n?{s:n}:h,i),d.push(Wt(c,i));break;case"PtgArea":c=Dt(v[1][1],h,i),d.push(Wt(c,i));break;case"PtgArea3d":c=v[1][2],g=Lo(r,u=v[1][1],i),d.push(g+"!"+Wt(c,i));break;case"PtgAttrSum":d.push("SUM("+d.pop()+")");break;case"PtgAttrBaxcel":case"PtgAttrSemi":break;case"PtgName":var w=(r.names||[])[(f=v[1][2])-1]||(r[0]||[])[f],S=w?w.Name:"SH33TJSNAME"+String(f);S in zo&&(S=zo[S]),d.push(S);break;case"PtgNameX":var x,E=v[1][1];if(f=v[1][2],!(i.biff<=5)){var k="";if(14849==((r[E]||[])[0]||[])[0]||(1025==((r[E]||[])[0]||[])[0]?r[E][f]&&r[E][f].itab>0&&(k=r.SheetNames[r[E][f].itab-1]+"!"):k=r.SheetNames[f-1]+"!"),r[E]&&r[E][f])k+=r[E][f].Name;else if(r[0]&&r[0][f])k+=r[0][f].Name;else{var _=Oo(r,E,i).split(";;");_[f-1]?k=_[f-1]:k+="SH33TJSERRX"}d.push(k);break}E<0&&(E=-E),r[E]&&(x=r[E][f]),x||(x={Name:"SH33TJSERRY"}),d.push(x.Name);break;case"PtgParen":var T="(",R=")";if(p>=0){switch(m="",e[0][p][1][0]){case 2:T=ee(" ",e[0][p][1][1])+T;break;case 3:T=ee("\r",e[0][p][1][1])+T;break;case 4:R=ee(" ",e[0][p][1][1])+R;break;case 5:R=ee("\r",e[0][p][1][1])+R;break;default:if(i.WTF)throw new Error("Unexpected PtgAttrSpaceType "+e[0][p][1][0])}p=-1}d.push(T+d.pop()+R);break;case"PtgRefErr":case"PtgRefErr3d":d.push("#REF!");break;case"PtgExp":var B={c:n.c,r:n.r};if(r.sharedf[Kt(a={c:v[1][1],r:v[1][0]})]){var O=r.sharedf[Kt(a)];d.push(Po(O,0,B,r,i))}else{var L=!1;for(s=0;s!=r.arrayf.length;++s)if(!(a.c<(o=r.arrayf[s])[0].s.c||a.c>o[0].e.c||a.ro[0].e.r)){d.push(Po(o[1],0,B,r,i)),L=!0;break}L||d.push(v[1])}break;case"PtgArray":d.push("{"+Ro(v[1])+"}");break;case"PtgMemArea":break;case"PtgAttrSpace":case"PtgAttrSpaceSemi":p=C;break;case"PtgTbl":case"PtgMemErr":break;case"PtgMissArg":d.push("");break;case"PtgAreaErr":case"PtgAreaErr3d":d.push("#REF!");break;case"PtgList":d.push("Table"+v[1].idx+"[#"+v[1].rt+"]");break;case"PtgMemAreaN":case"PtgMemNoMemN":case"PtgAttrNoop":case"PtgSheet":case"PtgEndSheet":case"PtgMemFunc":case"PtgMemNoMem":break;case"PtgElfCol":case"PtgElfColS":case"PtgElfColSV":case"PtgElfColV":case"PtgElfLel":case"PtgElfRadical":case"PtgElfRadicalLel":case"PtgElfRadicalS":case"PtgElfRw":case"PtgElfRwV":throw new Error("Unsupported ELFs");case"PtgSxName":default:throw new Error("Unrecognized Formula Token: "+String(v))}if(3!=i.biff&&p>=0&&-1==["PtgAttrSpace","PtgAttrSpaceSemi","PtgAttrGoto"].indexOf(e[0][C][0])){var P=!0;switch((v=e[0][p])[1][0]){case 4:P=!1;case 0:m=ee(" ",v[1][1]);break;case 5:P=!1;case 1:m=ee("\r",v[1][1]);break;default:if(m="",i.WTF)throw new Error("Unexpected PtgAttrSpaceType "+v[1][0])}d.push((P?m:"")+d.pop()+(P?"":m)),p=-1}}if(d.length>1&&i.WTF)throw new Error("bad formula stack");return d[0]}function Fo(e,t,n){var r,i=e.l+t,s=2==n.biff?1:2,o=e.read_shift(s);if(65535==o)return[[],Ot(e,t-2)];var a=To(e,o,n);return t!==o+s&&(r=_o(e,t-o-s,a,n)),e.l=i,[a,r]}function No(e,t,n){var r,i=e.l+t,s=e.read_shift(2),o=To(e,s,n);return 65535==s?[[],Ot(e,t-2)]:(t!==s+2&&(r=_o(e,i-s-2,o,n)),[o,r])}function Mo(e,t,n){var r=e.l+t,i=Vr(e);2==n.biff&&++e.l;var s=function(e){var t;if(65535!==yt(e,e.l+6))return[An(e),"n"];switch(e[e.l]){case 0:return e.l+=8,["String","s"];case 1:return t=1===e[e.l+2],e.l+=8,[t,"b"];case 2:return t=e[e.l+2],e.l+=8,[t,"e"];case 3:return e.l+=8,["","s"]}return[]}(e),o=e.read_shift(1);2!=n.biff&&(e.read_shift(1),n.biff>=5&&e.read_shift(4));var a=function(e,t,n){var r,i=e.l+t,s=2==n.biff?1:2,o=e.read_shift(s);if(65535==o)return[[],Ot(e,t-2)];var a=To(e,o,n);return t!==o+s&&(r=_o(e,t-o-s,a,n)),e.l=i,[a,r]}(e,r-e.l,n);return{cell:i,val:s[0],formula:a,shared:o>>3&1,tt:s[1]}}function Do(e,t,n){var r=e.read_shift(4),i=To(e,r,n),s=e.read_shift(4);return[i,s>0?_o(e,s,i,n):null]}var $o=Do,Wo=Do,Ho=Do,Go=Do,Vo={0:"BEEP",1:"OPEN",2:"OPEN.LINKS",3:"CLOSE.ALL",4:"SAVE",5:"SAVE.AS",6:"FILE.DELETE",7:"PAGE.SETUP",8:"PRINT",9:"PRINTER.SETUP",10:"QUIT",11:"NEW.WINDOW",12:"ARRANGE.ALL",13:"WINDOW.SIZE",14:"WINDOW.MOVE",15:"FULL",16:"CLOSE",17:"RUN",22:"SET.PRINT.AREA",23:"SET.PRINT.TITLES",24:"SET.PAGE.BREAK",25:"REMOVE.PAGE.BREAK",26:"FONT",27:"DISPLAY",28:"PROTECT.DOCUMENT",29:"PRECISION",30:"A1.R1C1",31:"CALCULATE.NOW",32:"CALCULATION",34:"DATA.FIND",35:"EXTRACT",36:"DATA.DELETE",37:"SET.DATABASE",38:"SET.CRITERIA",39:"SORT",40:"DATA.SERIES",41:"TABLE",42:"FORMAT.NUMBER",43:"ALIGNMENT",44:"STYLE",45:"BORDER",46:"CELL.PROTECTION",47:"COLUMN.WIDTH",48:"UNDO",49:"CUT",50:"COPY",51:"PASTE",52:"CLEAR",53:"PASTE.SPECIAL",54:"EDIT.DELETE",55:"INSERT",56:"FILL.RIGHT",57:"FILL.DOWN",61:"DEFINE.NAME",62:"CREATE.NAMES",63:"FORMULA.GOTO",64:"FORMULA.FIND",65:"SELECT.LAST.CELL",66:"SHOW.ACTIVE.CELL",67:"GALLERY.AREA",68:"GALLERY.BAR",69:"GALLERY.COLUMN",70:"GALLERY.LINE",71:"GALLERY.PIE",72:"GALLERY.SCATTER",73:"COMBINATION",74:"PREFERRED",75:"ADD.OVERLAY",76:"GRIDLINES",77:"SET.PREFERRED",78:"AXES",79:"LEGEND",80:"ATTACH.TEXT",81:"ADD.ARROW",82:"SELECT.CHART",83:"SELECT.PLOT.AREA",84:"PATTERNS",85:"MAIN.CHART",86:"OVERLAY",87:"SCALE",88:"FORMAT.LEGEND",89:"FORMAT.TEXT",90:"EDIT.REPEAT",91:"PARSE",92:"JUSTIFY",93:"HIDE",94:"UNHIDE",95:"WORKSPACE",96:"FORMULA",97:"FORMULA.FILL",98:"FORMULA.ARRAY",99:"DATA.FIND.NEXT",100:"DATA.FIND.PREV",101:"FORMULA.FIND.NEXT",102:"FORMULA.FIND.PREV",103:"ACTIVATE",104:"ACTIVATE.NEXT",105:"ACTIVATE.PREV",106:"UNLOCKED.NEXT",107:"UNLOCKED.PREV",108:"COPY.PICTURE",109:"SELECT",110:"DELETE.NAME",111:"DELETE.FORMAT",112:"VLINE",113:"HLINE",114:"VPAGE",115:"HPAGE",116:"VSCROLL",117:"HSCROLL",118:"ALERT",119:"NEW",120:"CANCEL.COPY",121:"SHOW.CLIPBOARD",122:"MESSAGE",124:"PASTE.LINK",125:"APP.ACTIVATE",126:"DELETE.ARROW",127:"ROW.HEIGHT",128:"FORMAT.MOVE",129:"FORMAT.SIZE",130:"FORMULA.REPLACE",131:"SEND.KEYS",132:"SELECT.SPECIAL",133:"APPLY.NAMES",134:"REPLACE.FONT",135:"FREEZE.PANES",136:"SHOW.INFO",137:"SPLIT",138:"ON.WINDOW",139:"ON.DATA",140:"DISABLE.INPUT",142:"OUTLINE",143:"LIST.NAMES",144:"FILE.CLOSE",145:"SAVE.WORKBOOK",146:"DATA.FORM",147:"COPY.CHART",148:"ON.TIME",149:"WAIT",150:"FORMAT.FONT",151:"FILL.UP",152:"FILL.LEFT",153:"DELETE.OVERLAY",155:"SHORT.MENUS",159:"SET.UPDATE.STATUS",161:"COLOR.PALETTE",162:"DELETE.STYLE",163:"WINDOW.RESTORE",164:"WINDOW.MAXIMIZE",166:"CHANGE.LINK",167:"CALCULATE.DOCUMENT",168:"ON.KEY",169:"APP.RESTORE",170:"APP.MOVE",171:"APP.SIZE",172:"APP.MINIMIZE",173:"APP.MAXIMIZE",174:"BRING.TO.FRONT",175:"SEND.TO.BACK",185:"MAIN.CHART.TYPE",186:"OVERLAY.CHART.TYPE",187:"SELECT.END",188:"OPEN.MAIL",189:"SEND.MAIL",190:"STANDARD.FONT",191:"CONSOLIDATE",192:"SORT.SPECIAL",193:"GALLERY.3D.AREA",194:"GALLERY.3D.COLUMN",195:"GALLERY.3D.LINE",196:"GALLERY.3D.PIE",197:"VIEW.3D",198:"GOAL.SEEK",199:"WORKGROUP",200:"FILL.GROUP",201:"UPDATE.LINK",202:"PROMOTE",203:"DEMOTE",204:"SHOW.DETAIL",206:"UNGROUP",207:"OBJECT.PROPERTIES",208:"SAVE.NEW.OBJECT",209:"SHARE",210:"SHARE.NAME",211:"DUPLICATE",212:"APPLY.STYLE",213:"ASSIGN.TO.OBJECT",214:"OBJECT.PROTECTION",215:"HIDE.OBJECT",216:"SET.EXTRACT",217:"CREATE.PUBLISHER",218:"SUBSCRIBE.TO",219:"ATTRIBUTES",220:"SHOW.TOOLBAR",222:"PRINT.PREVIEW",223:"EDIT.COLOR",224:"SHOW.LEVELS",225:"FORMAT.MAIN",226:"FORMAT.OVERLAY",227:"ON.RECALC",228:"EDIT.SERIES",229:"DEFINE.STYLE",240:"LINE.PRINT",243:"ENTER.DATA",249:"GALLERY.RADAR",250:"MERGE.STYLES",251:"EDITION.OPTIONS",252:"PASTE.PICTURE",253:"PASTE.PICTURE.LINK",254:"SPELLING",256:"ZOOM",259:"INSERT.OBJECT",260:"WINDOW.MINIMIZE",265:"SOUND.NOTE",266:"SOUND.PLAY",267:"FORMAT.SHAPE",268:"EXTEND.POLYGON",269:"FORMAT.AUTO",272:"GALLERY.3D.BAR",273:"GALLERY.3D.SURFACE",274:"FILL.AUTO",276:"CUSTOMIZE.TOOLBAR",277:"ADD.TOOL",278:"EDIT.OBJECT",279:"ON.DOUBLECLICK",280:"ON.ENTRY",281:"WORKBOOK.ADD",282:"WORKBOOK.MOVE",283:"WORKBOOK.COPY",284:"WORKBOOK.OPTIONS",285:"SAVE.WORKSPACE",288:"CHART.WIZARD",289:"DELETE.TOOL",290:"MOVE.TOOL",291:"WORKBOOK.SELECT",292:"WORKBOOK.ACTIVATE",293:"ASSIGN.TO.TOOL",295:"COPY.TOOL",296:"RESET.TOOL",297:"CONSTRAIN.NUMERIC",298:"PASTE.TOOL",302:"WORKBOOK.NEW",305:"SCENARIO.CELLS",306:"SCENARIO.DELETE",307:"SCENARIO.ADD",308:"SCENARIO.EDIT",309:"SCENARIO.SHOW",310:"SCENARIO.SHOW.NEXT",311:"SCENARIO.SUMMARY",312:"PIVOT.TABLE.WIZARD",313:"PIVOT.FIELD.PROPERTIES",314:"PIVOT.FIELD",315:"PIVOT.ITEM",316:"PIVOT.ADD.FIELDS",318:"OPTIONS.CALCULATION",319:"OPTIONS.EDIT",320:"OPTIONS.VIEW",321:"ADDIN.MANAGER",322:"MENU.EDITOR",323:"ATTACH.TOOLBARS",324:"VBAActivate",325:"OPTIONS.CHART",328:"VBA.INSERT.FILE",330:"VBA.PROCEDURE.DEFINITION",336:"ROUTING.SLIP",338:"ROUTE.DOCUMENT",339:"MAIL.LOGON",342:"INSERT.PICTURE",343:"EDIT.TOOL",344:"GALLERY.DOUGHNUT",350:"CHART.TREND",352:"PIVOT.ITEM.PROPERTIES",354:"WORKBOOK.INSERT",355:"OPTIONS.TRANSITION",356:"OPTIONS.GENERAL",370:"FILTER.ADVANCED",373:"MAIL.ADD.MAILER",374:"MAIL.DELETE.MAILER",375:"MAIL.REPLY",376:"MAIL.REPLY.ALL",377:"MAIL.FORWARD",378:"MAIL.NEXT.LETTER",379:"DATA.LABEL",380:"INSERT.TITLE",381:"FONT.PROPERTIES",382:"MACRO.OPTIONS",383:"WORKBOOK.HIDE",384:"WORKBOOK.UNHIDE",385:"WORKBOOK.DELETE",386:"WORKBOOK.NAME",388:"GALLERY.CUSTOM",390:"ADD.CHART.AUTOFORMAT",391:"DELETE.CHART.AUTOFORMAT",392:"CHART.ADD.DATA",393:"AUTO.OUTLINE",394:"TAB.ORDER",395:"SHOW.DIALOG",396:"SELECT.ALL",397:"UNGROUP.SHEETS",398:"SUBTOTAL.CREATE",399:"SUBTOTAL.REMOVE",400:"RENAME.OBJECT",412:"WORKBOOK.SCROLL",413:"WORKBOOK.NEXT",414:"WORKBOOK.PREV",415:"WORKBOOK.TAB.SPLIT",416:"FULL.SCREEN",417:"WORKBOOK.PROTECT",420:"SCROLLBAR.PROPERTIES",421:"PIVOT.SHOW.PAGES",422:"TEXT.TO.COLUMNS",423:"FORMAT.CHARTTYPE",424:"LINK.FORMAT",425:"TRACER.DISPLAY",430:"TRACER.NAVIGATE",431:"TRACER.CLEAR",432:"TRACER.ERROR",433:"PIVOT.FIELD.GROUP",434:"PIVOT.FIELD.UNGROUP",435:"CHECKBOX.PROPERTIES",436:"LABEL.PROPERTIES",437:"LISTBOX.PROPERTIES",438:"EDITBOX.PROPERTIES",439:"PIVOT.REFRESH",440:"LINK.COMBO",441:"OPEN.TEXT",442:"HIDE.DIALOG",443:"SET.DIALOG.FOCUS",444:"ENABLE.OBJECT",445:"PUSHBUTTON.PROPERTIES",446:"SET.DIALOG.DEFAULT",447:"FILTER",448:"FILTER.SHOW.ALL",449:"CLEAR.OUTLINE",450:"FUNCTION.WIZARD",451:"ADD.LIST.ITEM",452:"SET.LIST.ITEM",453:"REMOVE.LIST.ITEM",454:"SELECT.LIST.ITEM",455:"SET.CONTROL.VALUE",456:"SAVE.COPY.AS",458:"OPTIONS.LISTS.ADD",459:"OPTIONS.LISTS.DELETE",460:"SERIES.AXES",461:"SERIES.X",462:"SERIES.Y",463:"ERRORBAR.X",464:"ERRORBAR.Y",465:"FORMAT.CHART",466:"SERIES.ORDER",467:"MAIL.LOGOFF",468:"CLEAR.ROUTING.SLIP",469:"APP.ACTIVATE.MICROSOFT",470:"MAIL.EDIT.MAILER",471:"ON.SHEET",472:"STANDARD.WIDTH",473:"SCENARIO.MERGE",474:"SUMMARY.INFO",475:"FIND.FILE",476:"ACTIVE.CELL.FONT",477:"ENABLE.TIPWIZARD",478:"VBA.MAKE.ADDIN",480:"INSERTDATATABLE",481:"WORKGROUP.OPTIONS",482:"MAIL.SEND.MAILER",485:"AUTOCORRECT",489:"POST.DOCUMENT",491:"PICKLIST",493:"VIEW.SHOW",494:"VIEW.DEFINE",495:"VIEW.DELETE",509:"SHEET.BACKGROUND",510:"INSERT.MAP.OBJECT",511:"OPTIONS.MENONO",517:"MSOCHECKS",518:"NORMAL",519:"LAYOUT",520:"RM.PRINT.AREA",521:"CLEAR.PRINT.AREA",522:"ADD.PRINT.AREA",523:"MOVE.BRK",545:"HIDECURR.NOTE",546:"HIDEALL.NOTES",547:"DELETE.NOTE",548:"TRAVERSE.NOTES",549:"ACTIVATE.NOTES",620:"PROTECT.REVISIONS",621:"UNPROTECT.REVISIONS",647:"OPTIONS.ME",653:"WEB.PUBLISH",667:"NEWWEBQUERY",673:"PIVOT.TABLE.CHART",753:"OPTIONS.SAVE",755:"OPTIONS.SPELL",808:"HIDEALL.INKANNOTS"},jo={0:"COUNT",1:"IF",2:"ISNA",3:"ISERROR",4:"SUM",5:"AVERAGE",6:"MIN",7:"MAX",8:"ROW",9:"COLUMN",10:"NA",11:"NPV",12:"STDEV",13:"DOLLAR",14:"FIXED",15:"SIN",16:"COS",17:"TAN",18:"ATAN",19:"PI",20:"SQRT",21:"EXP",22:"LN",23:"LOG10",24:"ABS",25:"INT",26:"SIGN",27:"ROUND",28:"LOOKUP",29:"INDEX",30:"REPT",31:"MID",32:"LEN",33:"VALUE",34:"TRUE",35:"FALSE",36:"AND",37:"OR",38:"NOT",39:"MOD",40:"DCOUNT",41:"DSUM",42:"DAVERAGE",43:"DMIN",44:"DMAX",45:"DSTDEV",46:"VAR",47:"DVAR",48:"TEXT",49:"LINEST",50:"TREND",51:"LOGEST",52:"GROWTH",53:"GOTO",54:"HALT",55:"RETURN",56:"PV",57:"FV",58:"NPER",59:"PMT",60:"RATE",61:"MIRR",62:"IRR",63:"RAND",64:"MATCH",65:"DATE",66:"TIME",67:"DAY",68:"MONTH",69:"YEAR",70:"WEEKDAY",71:"HOUR",72:"MINUTE",73:"SECOND",74:"NOW",75:"AREAS",76:"ROWS",77:"COLUMNS",78:"OFFSET",79:"ABSREF",80:"RELREF",81:"ARGUMENT",82:"SEARCH",83:"TRANSPOSE",84:"ERROR",85:"STEP",86:"TYPE",87:"ECHO",88:"SET.NAME",89:"CALLER",90:"DEREF",91:"WINDOWS",92:"SERIES",93:"DOCUMENTS",94:"ACTIVE.CELL",95:"SELECTION",96:"RESULT",97:"ATAN2",98:"ASIN",99:"ACOS",100:"CHOOSE",101:"HLOOKUP",102:"VLOOKUP",103:"LINKS",104:"INPUT",105:"ISREF",106:"GET.FORMULA",107:"GET.NAME",108:"SET.VALUE",109:"LOG",110:"EXEC",111:"CHAR",112:"LOWER",113:"UPPER",114:"PROPER",115:"LEFT",116:"RIGHT",117:"EXACT",118:"TRIM",119:"REPLACE",120:"SUBSTITUTE",121:"CODE",122:"NAMES",123:"DIRECTORY",124:"FIND",125:"CELL",126:"ISERR",127:"ISTEXT",128:"ISNUMBER",129:"ISBLANK",130:"T",131:"N",132:"FOPEN",133:"FCLOSE",134:"FSIZE",135:"FREADLN",136:"FREAD",137:"FWRITELN",138:"FWRITE",139:"FPOS",140:"DATEVALUE",141:"TIMEVALUE",142:"SLN",143:"SYD",144:"DDB",145:"GET.DEF",146:"REFTEXT",147:"TEXTREF",148:"INDIRECT",149:"REGISTER",150:"CALL",151:"ADD.BAR",152:"ADD.MENU",153:"ADD.COMMAND",154:"ENABLE.COMMAND",155:"CHECK.COMMAND",156:"RENAME.COMMAND",157:"SHOW.BAR",158:"DELETE.MENU",159:"DELETE.COMMAND",160:"GET.CHART.ITEM",161:"DIALOG.BOX",162:"CLEAN",163:"MDETERM",164:"MINVERSE",165:"MMULT",166:"FILES",167:"IPMT",168:"PPMT",169:"COUNTA",170:"CANCEL.KEY",171:"FOR",172:"WHILE",173:"BREAK",174:"NEXT",175:"INITIATE",176:"REQUEST",177:"POKE",178:"EXECUTE",179:"TERMINATE",180:"RESTART",181:"HELP",182:"GET.BAR",183:"PRODUCT",184:"FACT",185:"GET.CELL",186:"GET.WORKSPACE",187:"GET.WINDOW",188:"GET.DOCUMENT",189:"DPRODUCT",190:"ISNONTEXT",191:"GET.NOTE",192:"NOTE",193:"STDEVP",194:"VARP",195:"DSTDEVP",196:"DVARP",197:"TRUNC",198:"ISLOGICAL",199:"DCOUNTA",200:"DELETE.BAR",201:"UNREGISTER",204:"USDOLLAR",205:"FINDB",206:"SEARCHB",207:"REPLACEB",208:"LEFTB",209:"RIGHTB",210:"MIDB",211:"LENB",212:"ROUNDUP",213:"ROUNDDOWN",214:"ASC",215:"DBCS",216:"RANK",219:"ADDRESS",220:"DAYS360",221:"TODAY",222:"VDB",223:"ELSE",224:"ELSE.IF",225:"END.IF",226:"FOR.CELL",227:"MEDIAN",228:"SUMPRODUCT",229:"SINH",230:"COSH",231:"TANH",232:"ASINH",233:"ACOSH",234:"ATANH",235:"DGET",236:"CREATE.OBJECT",237:"VOLATILE",238:"LAST.ERROR",239:"CUSTOM.UNDO",240:"CUSTOM.REPEAT",241:"FORMULA.CONVERT",242:"GET.LINK.INFO",243:"TEXT.BOX",244:"INFO",245:"GROUP",246:"GET.OBJECT",247:"DB",248:"PAUSE",251:"RESUME",252:"FREQUENCY",253:"ADD.TOOLBAR",254:"DELETE.TOOLBAR",255:"User",256:"RESET.TOOLBAR",257:"EVALUATE",258:"GET.TOOLBAR",259:"GET.TOOL",260:"SPELLING.CHECK",261:"ERROR.TYPE",262:"APP.TITLE",263:"WINDOW.TITLE",264:"SAVE.TOOLBAR",265:"ENABLE.TOOL",266:"PRESS.TOOL",267:"REGISTER.ID",268:"GET.WORKBOOK",269:"AVEDEV",270:"BETADIST",271:"GAMMALN",272:"BETAINV",273:"BINOMDIST",274:"CHIDIST",275:"CHIINV",276:"COMBIN",277:"CONFIDENCE",278:"CRITBINOM",279:"EVEN",280:"EXPONDIST",281:"FDIST",282:"FINV",283:"FISHER",284:"FISHERINV",285:"FLOOR",286:"GAMMADIST",287:"GAMMAINV",288:"CEILING",289:"HYPGEOMDIST",290:"LOGNORMDIST",291:"LOGINV",292:"NEGBINOMDIST",293:"NORMDIST",294:"NORMSDIST",295:"NORMINV",296:"NORMSINV",297:"STANDARDIZE",298:"ODD",299:"PERMUT",300:"POISSON",301:"TDIST",302:"WEIBULL",303:"SUMXMY2",304:"SUMX2MY2",305:"SUMX2PY2",306:"CHITEST",307:"CORREL",308:"COVAR",309:"FORECAST",310:"FTEST",311:"INTERCEPT",312:"PEARSON",313:"RSQ",314:"STEYX",315:"SLOPE",316:"TTEST",317:"PROB",318:"DEVSQ",319:"GEOMEAN",320:"HARMEAN",321:"SUMSQ",322:"KURT",323:"SKEW",324:"ZTEST",325:"LARGE",326:"SMALL",327:"QUARTILE",328:"PERCENTILE",329:"PERCENTRANK",330:"MODE",331:"TRIMMEAN",332:"TINV",334:"MOVIE.COMMAND",335:"GET.MOVIE",336:"CONCATENATE",337:"POWER",338:"PIVOT.ADD.DATA",339:"GET.PIVOT.TABLE",340:"GET.PIVOT.FIELD",341:"GET.PIVOT.ITEM",342:"RADIANS",343:"DEGREES",344:"SUBTOTAL",345:"SUMIF",346:"COUNTIF",347:"COUNTBLANK",348:"SCENARIO.GET",349:"OPTIONS.LISTS.GET",350:"ISPMT",351:"DATEDIF",352:"DATESTRING",353:"NUMBERSTRING",354:"ROMAN",355:"OPEN.DIALOG",356:"SAVE.DIALOG",357:"VIEW.GET",358:"GETPIVOTDATA",359:"HYPERLINK",360:"PHONETIC",361:"AVERAGEA",362:"MAXA",363:"MINA",364:"STDEVPA",365:"VARPA",366:"STDEVA",367:"VARA",368:"BAHTTEXT",369:"THAIDAYOFWEEK",370:"THAIDIGIT",371:"THAIMONTHOFYEAR",372:"THAINUMSOUND",373:"THAINUMSTRING",374:"THAISTRINGLENGTH",375:"ISTHAIDIGIT",376:"ROUNDBAHTDOWN",377:"ROUNDBAHTUP",378:"THAIYEAR",379:"RTD",380:"CUBEVALUE",381:"CUBEMEMBER",382:"CUBEMEMBERPROPERTY",383:"CUBERANKEDMEMBER",384:"HEX2BIN",385:"HEX2DEC",386:"HEX2OCT",387:"DEC2BIN",388:"DEC2HEX",389:"DEC2OCT",390:"OCT2BIN",391:"OCT2HEX",392:"OCT2DEC",393:"BIN2DEC",394:"BIN2OCT",395:"BIN2HEX",396:"IMSUB",397:"IMDIV",398:"IMPOWER",399:"IMABS",400:"IMSQRT",401:"IMLN",402:"IMLOG2",403:"IMLOG10",404:"IMSIN",405:"IMCOS",406:"IMEXP",407:"IMARGUMENT",408:"IMCONJUGATE",409:"IMAGINARY",410:"IMREAL",411:"COMPLEX",412:"IMSUM",413:"IMPRODUCT",414:"SERIESSUM",415:"FACTDOUBLE",416:"SQRTPI",417:"QUOTIENT",418:"DELTA",419:"GESTEP",420:"ISEVEN",421:"ISODD",422:"MROUND",423:"ERF",424:"ERFC",425:"BESSELJ",426:"BESSELK",427:"BESSELY",428:"BESSELI",429:"XIRR",430:"XNPV",431:"PRICEMAT",432:"YIELDMAT",433:"INTRATE",434:"RECEIVED",435:"DISC",436:"PRICEDISC",437:"YIELDDISC",438:"TBILLEQ",439:"TBILLPRICE",440:"TBILLYIELD",441:"PRICE",442:"YIELD",443:"DOLLARDE",444:"DOLLARFR",445:"NOMINAL",446:"EFFECT",447:"CUMPRINC",448:"CUMIPMT",449:"EDATE",450:"EOMONTH",451:"YEARFRAC",452:"COUPDAYBS",453:"COUPDAYS",454:"COUPDAYSNC",455:"COUPNCD",456:"COUPNUM",457:"COUPPCD",458:"DURATION",459:"MDURATION",460:"ODDLPRICE",461:"ODDLYIELD",462:"ODDFPRICE",463:"ODDFYIELD",464:"RANDBETWEEN",465:"WEEKNUM",466:"AMORDEGRC",467:"AMORLINC",468:"CONVERT",724:"SHEETJS",469:"ACCRINT",470:"ACCRINTM",471:"WORKDAY",472:"NETWORKDAYS",473:"GCD",474:"MULTINOMIAL",475:"LCM",476:"FVSCHEDULE",477:"CUBEKPIMEMBER",478:"CUBESET",479:"CUBESETCOUNT",480:"IFERROR",481:"COUNTIFS",482:"SUMIFS",483:"AVERAGEIF",484:"AVERAGEIFS"},Zo={2:1,3:1,10:0,15:1,16:1,17:1,18:1,19:0,20:1,21:1,22:1,23:1,24:1,25:1,26:1,27:2,30:2,31:3,32:1,33:1,34:0,35:0,38:1,39:2,40:3,41:3,42:3,43:3,44:3,45:3,47:3,48:2,53:1,61:3,63:0,65:3,66:3,67:1,68:1,69:1,70:1,71:1,72:1,73:1,74:0,75:1,76:1,77:1,79:2,80:2,83:1,85:0,86:1,89:0,90:1,94:0,95:0,97:2,98:1,99:1,101:3,102:3,105:1,106:1,108:2,111:1,112:1,113:1,114:1,117:2,118:1,119:4,121:1,126:1,127:1,128:1,129:1,130:1,131:1,133:1,134:1,135:1,136:2,137:2,138:2,140:1,141:1,142:3,143:4,144:4,161:1,162:1,163:1,164:1,165:2,172:1,175:2,176:2,177:3,178:2,179:1,184:1,186:1,189:3,190:1,195:3,196:3,197:1,198:1,199:3,201:1,207:4,210:3,211:1,212:2,213:2,214:1,215:1,225:0,229:1,230:1,231:1,232:1,233:1,234:1,235:3,244:1,247:4,252:2,257:1,261:1,271:1,273:4,274:2,275:2,276:2,277:3,278:3,279:1,280:3,281:3,282:3,283:1,284:1,285:2,286:4,287:3,288:2,289:4,290:3,291:3,292:3,293:4,294:1,295:3,296:1,297:3,298:1,299:2,300:3,301:3,302:4,303:2,304:2,305:2,306:2,307:2,308:2,309:3,310:2,311:2,312:2,313:2,314:2,315:2,316:4,325:2,326:2,327:2,328:2,331:2,332:2,337:2,342:1,343:1,346:2,347:1,350:4,351:3,352:1,353:2,360:1,368:1,369:1,370:1,371:1,372:1,373:1,374:1,375:1,376:1,377:1,378:1,382:3,385:1,392:1,393:1,396:2,397:2,398:2,399:1,400:1,401:1,402:1,403:1,404:1,405:1,406:1,407:1,408:1,409:1,410:1,414:4,415:1,416:1,417:2,420:1,421:1,422:2,424:1,425:2,426:2,427:2,428:2,430:3,438:3,439:3,440:3,443:2,444:2,445:2,446:2,447:6,448:6,449:2,450:2,464:2,468:3,476:2,479:1,480:2,65535:0},zo={"_xlfn.ACOT":"ACOT","_xlfn.ACOTH":"ACOTH","_xlfn.AGGREGATE":"AGGREGATE","_xlfn.ARABIC":"ARABIC","_xlfn.AVERAGEIF":"AVERAGEIF","_xlfn.AVERAGEIFS":"AVERAGEIFS","_xlfn.BASE":"BASE","_xlfn.BETA.DIST":"BETA.DIST","_xlfn.BETA.INV":"BETA.INV","_xlfn.BINOM.DIST":"BINOM.DIST","_xlfn.BINOM.DIST.RANGE":"BINOM.DIST.RANGE","_xlfn.BINOM.INV":"BINOM.INV","_xlfn.BITAND":"BITAND","_xlfn.BITLSHIFT":"BITLSHIFT","_xlfn.BITOR":"BITOR","_xlfn.BITRSHIFT":"BITRSHIFT","_xlfn.BITXOR":"BITXOR","_xlfn.CEILING.MATH":"CEILING.MATH","_xlfn.CEILING.PRECISE":"CEILING.PRECISE","_xlfn.CHISQ.DIST":"CHISQ.DIST","_xlfn.CHISQ.DIST.RT":"CHISQ.DIST.RT","_xlfn.CHISQ.INV":"CHISQ.INV","_xlfn.CHISQ.INV.RT":"CHISQ.INV.RT","_xlfn.CHISQ.TEST":"CHISQ.TEST","_xlfn.COMBINA":"COMBINA","_xlfn.CONCAT":"CONCAT","_xlfn.CONFIDENCE.NORM":"CONFIDENCE.NORM","_xlfn.CONFIDENCE.T":"CONFIDENCE.T","_xlfn.COT":"COT","_xlfn.COTH":"COTH","_xlfn.COUNTIFS":"COUNTIFS","_xlfn.COVARIANCE.P":"COVARIANCE.P","_xlfn.COVARIANCE.S":"COVARIANCE.S","_xlfn.CSC":"CSC","_xlfn.CSCH":"CSCH","_xlfn.DAYS":"DAYS","_xlfn.DECIMAL":"DECIMAL","_xlfn.ECMA.CEILING":"ECMA.CEILING","_xlfn.ERF.PRECISE":"ERF.PRECISE","_xlfn.ERFC.PRECISE":"ERFC.PRECISE","_xlfn.EXPON.DIST":"EXPON.DIST","_xlfn.F.DIST":"F.DIST","_xlfn.F.DIST.RT":"F.DIST.RT","_xlfn.F.INV":"F.INV","_xlfn.F.INV.RT":"F.INV.RT","_xlfn.F.TEST":"F.TEST","_xlfn.FILTERXML":"FILTERXML","_xlfn.FLOOR.MATH":"FLOOR.MATH","_xlfn.FLOOR.PRECISE":"FLOOR.PRECISE","_xlfn.FORECAST.ETS":"FORECAST.ETS","_xlfn.FORECAST.ETS.CONFINT":"FORECAST.ETS.CONFINT","_xlfn.FORECAST.ETS.SEASONALITY":"FORECAST.ETS.SEASONALITY","_xlfn.FORECAST.ETS.STAT":"FORECAST.ETS.STAT","_xlfn.FORECAST.LINEAR":"FORECAST.LINEAR","_xlfn.FORMULATEXT":"FORMULATEXT","_xlfn.GAMMA":"GAMMA","_xlfn.GAMMA.DIST":"GAMMA.DIST","_xlfn.GAMMA.INV":"GAMMA.INV","_xlfn.GAMMALN.PRECISE":"GAMMALN.PRECISE","_xlfn.GAUSS":"GAUSS","_xlfn.HYPGEOM.DIST":"HYPGEOM.DIST","_xlfn.IFERROR":"IFERROR","_xlfn.IFNA":"IFNA","_xlfn.IFS":"IFS","_xlfn.IMCOSH":"IMCOSH","_xlfn.IMCOT":"IMCOT","_xlfn.IMCSC":"IMCSC","_xlfn.IMCSCH":"IMCSCH","_xlfn.IMSEC":"IMSEC","_xlfn.IMSECH":"IMSECH","_xlfn.IMSINH":"IMSINH","_xlfn.IMTAN":"IMTAN","_xlfn.ISFORMULA":"ISFORMULA","_xlfn.ISO.CEILING":"ISO.CEILING","_xlfn.ISOWEEKNUM":"ISOWEEKNUM","_xlfn.LOGNORM.DIST":"LOGNORM.DIST","_xlfn.LOGNORM.INV":"LOGNORM.INV","_xlfn.MAXIFS":"MAXIFS","_xlfn.MINIFS":"MINIFS","_xlfn.MODE.MULT":"MODE.MULT","_xlfn.MODE.SNGL":"MODE.SNGL","_xlfn.MUNIT":"MUNIT","_xlfn.NEGBINOM.DIST":"NEGBINOM.DIST","_xlfn.NETWORKDAYS.INTL":"NETWORKDAYS.INTL","_xlfn.NIGBINOM":"NIGBINOM","_xlfn.NORM.DIST":"NORM.DIST","_xlfn.NORM.INV":"NORM.INV","_xlfn.NORM.S.DIST":"NORM.S.DIST","_xlfn.NORM.S.INV":"NORM.S.INV","_xlfn.NUMBERVALUE":"NUMBERVALUE","_xlfn.PDURATION":"PDURATION","_xlfn.PERCENTILE.EXC":"PERCENTILE.EXC","_xlfn.PERCENTILE.INC":"PERCENTILE.INC","_xlfn.PERCENTRANK.EXC":"PERCENTRANK.EXC","_xlfn.PERCENTRANK.INC":"PERCENTRANK.INC","_xlfn.PERMUTATIONA":"PERMUTATIONA","_xlfn.PHI":"PHI","_xlfn.POISSON.DIST":"POISSON.DIST","_xlfn.QUARTILE.EXC":"QUARTILE.EXC","_xlfn.QUARTILE.INC":"QUARTILE.INC","_xlfn.QUERYSTRING":"QUERYSTRING","_xlfn.RANK.AVG":"RANK.AVG","_xlfn.RANK.EQ":"RANK.EQ","_xlfn.RRI":"RRI","_xlfn.SEC":"SEC","_xlfn.SECH":"SECH","_xlfn.SHEET":"SHEET","_xlfn.SHEETS":"SHEETS","_xlfn.SKEW.P":"SKEW.P","_xlfn.STDEV.P":"STDEV.P","_xlfn.STDEV.S":"STDEV.S","_xlfn.SUMIFS":"SUMIFS","_xlfn.SWITCH":"SWITCH","_xlfn.T.DIST":"T.DIST","_xlfn.T.DIST.2T":"T.DIST.2T","_xlfn.T.DIST.RT":"T.DIST.RT","_xlfn.T.INV":"T.INV","_xlfn.T.INV.2T":"T.INV.2T","_xlfn.T.TEST":"T.TEST","_xlfn.TEXTJOIN":"TEXTJOIN","_xlfn.UNICHAR":"UNICHAR","_xlfn.UNICODE":"UNICODE","_xlfn.VAR.P":"VAR.P","_xlfn.VAR.S":"VAR.S","_xlfn.WEBSERVICE":"WEBSERVICE","_xlfn.WEIBULL.DIST":"WEIBULL.DIST","_xlfn.WORKDAY.INTL":"WORKDAY.INTL","_xlfn.XOR":"XOR","_xlfn.Z.TEST":"Z.TEST"};function Ko(e){return"of:"==e.slice(0,3)&&(e=e.slice(3)),61==e.charCodeAt(0)&&61==(e=e.slice(1)).charCodeAt(0)&&(e=e.slice(1)),(e=(e=(e=e.replace(/COM\.MICROSOFT\./g,"")).replace(/\[((?:\.[A-Z]+[0-9]+)(?::\.[A-Z]+[0-9]+)?)\]/g,(function(e,t){return t.replace(/\./g,"")}))).replace(/\[.(#[A-Z]*[?!])\]/g,"$1")).replace(/[;~]/g,",").replace(/\|/g,";")}function Xo(e){var t=e.split(":");return[t[0].split(".")[0],t[0].split(".")[1]+(t.length>1?":"+(t[1].split(".")[1]||t[1].split(".")[0]):"")]}var Uo={},Yo={};Vn.WS=["http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet","http://purl.oclc.org/ooxml/officeDocument/relationships/worksheet"];var Jo="undefined"!=typeof Map;function Qo(e,t,n){var r=0,i=e.length;if(n){if(Jo?n.has(t):n.hasOwnProperty(t))for(var s=Jo?n.get(t):n[t];r-1?(n.width=os(r),n.customWidth=1):null!=t.width&&(n.width=t.width),t.hidden&&(n.hidden=!0),n}function ea(e,t){if(e){var n=[.7,.7,.75,.75,.3,.3];"xlml"==t&&(n=[1,1,1,1,.5,.5]),null==e.left&&(e.left=n[0]),null==e.right&&(e.right=n[1]),null==e.top&&(e.top=n[2]),null==e.bottom&&(e.bottom=n[3]),null==e.header&&(e.header=n[4]),null==e.footer&&(e.footer=n[5])}}function ta(e,t,n){var r=n.revssf[null!=t.z?t.z:"General"],i=60,s=e.length;if(null==r&&n.ssf)for(;i<392;++i)if(null==n.ssf[i]){T.load(t.z,i),n.ssf[i]=t.z,n.revssf[t.z]=r=i;break}for(i=0;i!=s;++i)if(e[i].numFmtId===r)return i;return e[s]={numFmtId:r,fontId:0,fillId:0,borderId:0,xfId:0,applyNumberFormat:1},s}function na(e,t,n,r,i,s){if("z"!==e.t){"d"===e.t&&"string"==typeof e.v&&(e.v=J(e.v));try{r.cellNF&&(e.z=T._table[t])}catch(El){if(r.WTF)throw El}if(!r||!1!==r.cellText)try{if(null==T._table[t]&&T.load(L[t]||"General",t),"e"===e.t)e.w=e.w||wn[e.v];else if(0===t)if("n"===e.t)e.w=(0|e.v)===e.v?T._general_int(e.v):T._general_num(e.v);else if("d"===e.t){var o=z(e.v);e.w=(0|o)===o?T._general_int(o):T._general_num(o)}else{if(void 0===e.v)return"";e.w=T._general(e.v,Yo)}else e.w=T.format(t,"d"===e.t?z(e.v):e.v,Yo)}catch(El){if(r.WTF)throw El}if(r.cellStyles&&null!=n)try{e.s=s.Fills[n],e.s.fgColor&&e.s.fgColor.theme&&!e.s.fgColor.rgb&&(e.s.fgColor.rgb=ns(i.themeElements.clrScheme[e.s.fgColor.theme].rgb,e.s.fgColor.tint||0),r.WTF&&(e.s.fgColor.raw_rgb=i.themeElements.clrScheme[e.s.fgColor.theme].rgb)),e.s.bgColor&&e.s.bgColor.theme&&(e.s.bgColor.rgb=ns(i.themeElements.clrScheme[e.s.bgColor.theme].rgb,e.s.bgColor.tint||0),r.WTF&&(e.s.bgColor.raw_rgb=i.themeElements.clrScheme[e.s.bgColor.theme].rgb))}catch(El){if(r.WTF&&s.Fills)throw El}}}function ra(e,t,n){if(e&&e["!ref"]){var r=Yt(e["!ref"]);if(r.e.c/g,sa=/<(?:\w+:)?sheetData>([\s\S]*)<\/(?:\w+:)?sheetData>/,oa=/<(?:\w:)?hyperlink [^>]*>/gm,aa=/"(\w*:\w*)"/,ca=/<(?:\w:)?col\b[^>]*[\/]?>/g,la=/<(?:\w:)?autoFilter[^>]*([\/]|>([\s\S]*)<\/(?:\w:)?autoFilter)>/g,ha=/<(?:\w:)?pageMargins[^>]*\/>/g,da=/<(?:\w:)?sheetPr\b(?:[^>a-z][^>]*)?\/>/,ua=/<(?:\w:)?sheetViews[^>]*(?:[\/]|>([\s\S]*)<\/(?:\w:)?sheetViews)>/;function fa(e,t,n,r){var i=me(e);n.Sheets[r]||(n.Sheets[r]={}),i.codeName&&(n.Sheets[r].CodeName=i.codeName)}var ga=/<(?:\w:)?sheetView(?:[^>a-z][^>]*)?\/>/;function pa(e,t,n,r){if(void 0===e.v&&void 0===e.f||"z"===e.t)return"";var i="",s=e.t,o=e.v;switch(e.t){case"b":i=e.v?"1":"0";break;case"n":i=""+e.v;break;case"e":i=wn[e.v];break;case"d":r.cellDates?i=J(e.v,-1).toISOString():((e=q(e)).t="n",i=""+(e.v=z(J(e.v)))),void 0===e.z&&(e.z=T._table[14]);break;default:i=e.v}var a=ze("v",xe(i)),c={r:t},l=ta(r.cellXfs,e,r);switch(0!==l&&(c.s=l),e.t){case"n":break;case"d":c.t="d";break;case"b":c.t="b";break;case"e":c.t="e";break;default:if(null==e.v){delete e.t;break}if(r.bookSST){a=ze("v",""+Qo(r.Strings,e.v,r.revStrings)),c.t="s";break}c.t="str"}if(e.t!=s&&(e.t=s,e.v=o),e.f){var h=e.F&&e.F.slice(0,t.length)==t?{t:"array",ref:e.F}:null;a=Xe("f",xe(e.f),h)+(null!=e.v?a:"")}return e.l&&n["!links"].push([t,e.l]),e.c&&n["!comments"].push([t,e.c]),Xe("c",a,c)}var ma,Ca,ba,va,Ia,Aa,ya,wa=(ma=/<(?:\w+:)?c[ >]/,Ca=/<\/(?:\w+:)?row>/,ba=/r=["']([^"']*)["']/,va=/<(?:\w+:)?is>([\S\s]*?)<\/(?:\w+:)?is>/,Ia=/ref=["']([^"']*)["']/,Aa=$e("v"),ya=$e("f"),function(e,t,n,r,i,s){for(var o,a,c,l,h,d=0,u="",f=[],g=[],p=0,m=0,C=0,b="",v=0,I=0,A=0,y=0,w=Array.isArray(s.CellXf),S=[],x=[],E=Array.isArray(t),k=[],_={},R=!1,B=e.split(Ca),O=0,L=B.length;O!=L;++O){var P=(u=B[O].trim()).length;if(0!==P){for(d=0;dv-1&&(r.s.r=v-1),r.e.r":"")+u,null!=g&&2===g.length){for(p=0,b=g[1],m=0;m!=b.length&&!((C=b.charCodeAt(m)-64)<1||C>26);++m)p=26*p+C;I=--p}else++I;for(m=0;m!=u.length&&62!==u.charCodeAt(m);++m);if(++m,(a=me(u.slice(0,m),!0)).r||(a.r=Kt({r:v-1,c:I})),o={t:""},null!=(g=(b=u.slice(m)).match(Aa))&&""!==g[1]&&(o.v=ye(g[1])),n.cellFormula){null!=(g=b.match(ya))&&""!==g[1]?(o.f=qs(ye(Be(g[1]))),g[0].indexOf('t="array"')>-1?(o.F=(b.match(Ia)||[])[1],o.F.indexOf(":")>-1&&S.push([Yt(o.F),o.F])):g[0].indexOf('t="shared"')>-1&&(l=me(g[0]),x[parseInt(l.si,10)]=[l,qs(ye(Be(g[1]))),a.r])):(g=b.match(/]*\/>/))&&x[(l=me(g[0])).si]&&(o.f=Qs(x[l.si][1],x[l.si][2],a.r));var F=zt(a.r);for(m=0;m=S[m][0].s.r&&F.r<=S[m][0].e.r&&F.c>=S[m][0].s.c&&F.c<=S[m][0].e.c&&(o.F=S[m][1])}if(null==a.t&&void 0===o.v)if(o.f||o.F)o.v=0,o.t="n";else{if(!n.sheetStubs)continue;o.t="z"}else o.t=a.t||"n";switch(r.s.c>I&&(r.s.c=I),r.e.c0&&(t["!rows"]=k)}),Sa=Xe("worksheet",null,{xmlns:Qe.main[0],"xmlns:r":Qe.r});function xa(e,t,n,r){var i,s=[de,Sa],o="",a=n.Sheets[n.SheetNames[e]];null==a&&(a={});var c=a["!ref"]||"A1",l=Yt(c);if(l.e.c>16383||l.e.r>1048575){if(t.WTF)throw new Error("Range "+c+" exceeds format limit A1:XFD1048576");l.e.c=Math.min(l.e.c,16383),l.e.r=Math.min(l.e.c,1048575),c=Ut(l)}if(r||(r={}),a["!comments"]=[],a["!drawing"]=[],"xlsx"!==t.bookType&&n.vbaraw){var h=n.SheetNames[e];try{n.Workbook&&(h=n.Workbook.Sheets[e].CodeName||h)}catch(El){}s[s.length]=Xe("sheetPr",null,{codeName:xe(h)})}s[s.length]=Xe("dimension",null,{ref:c}),s[s.length]=function(e,t,n,r){var i={workbookViewId:"0"};return(((r||{}).Workbook||{}).Views||[])[0]&&(i.rightToLeft=r.Workbook.Views[0].RTL?"1":"0"),Xe("sheetViews",Xe("sheetView",null,i),{})}(0,0,0,n),t.sheetFormat&&(s[s.length]=Xe("sheetFormatPr",null,{defaultRowHeight:t.sheetFormat.defaultRowHeight||"16",baseColWidth:t.sheetFormat.baseColWidth||"10",outlineLevelRow:t.sheetFormat.outlineLevelRow||"7"})),null!=a["!cols"]&&a["!cols"].length>0&&(s[s.length]=function(e,t){for(var n,r=[""],i=0;i!=t.length;++i)(n=t[i])&&(r[r.length]=Xe("col",null,qo(i,n)));return r[r.length]="",r.join("")}(0,a["!cols"])),s[i=s.length]="",a["!links"]=[],null!=a["!ref"]&&(o=function(e,t,n,r){var i,s,o=[],a=[],c=Yt(e["!ref"]),l="",h="",d=[],u=0,f=0,g=e["!rows"],p=Array.isArray(e),m={r:h},C=-1;for(f=c.s.c;f<=c.e.c;++f)d[f]=jt(f);for(u=c.s.r;u<=c.e.r;++u){for(a=[],h=Gt(u),f=c.s.c;f<=c.e.c;++f){i=d[f]+h;var b=p?(e[u]||[])[f]:e[i];void 0!==b&&null!=(l=pa(b,i,e,t))&&a.push(l)}(a.length>0||g&&g[u])&&(m={r:h},g&&g[u]&&((s=g[u]).hidden&&(m.hidden=1),C=-1,s.hpx?C=hs(s.hpx):s.hpt&&(C=s.hpt),C>-1&&(m.ht=C,m.customHeight=1),s.level&&(m.outlineLevel=s.level)),o[o.length]=Xe("row",a.join(""),m))}if(g)for(;u-1&&(m.ht=C,m.customHeight=1),s.level&&(m.outlineLevel=s.level),o[o.length]=Xe("row","",m));return o.join("")}(a,t)).length>0&&(s[s.length]=o),s.length>i+1&&(s[s.length]="",s[i]=s[i].replace("/>",">")),null!=a["!protect"]&&(s[s.length]=function(e){var t={sheet:1};return["objects","scenarios","selectLockedCells","selectUnlockedCells"].forEach((function(n){null!=e[n]&&e[n]&&(t[n]="1")})),["formatColumns","formatRows","formatCells","insertColumns","insertRows","insertHyperlinks","deleteColumns","deleteRows","sort","autoFilter","pivotTables"].forEach((function(n){null==e[n]||e[n]||(t[n]="0")})),e.password&&(t.password=Xi(e.password).toString(16).toUpperCase()),Xe("sheetProtection",null,t)}(a["!protect"])),null!=a["!autofilter"]&&(s[s.length]=function(e,t,n,r){var i="string"==typeof e.ref?e.ref:Ut(e.ref);n.Workbook||(n.Workbook={}),n.Workbook.Names||(n.Workbook.Names=[]);var s=n.Workbook.Names,o=Xt(i);o.s.r==o.e.r&&(o.e.r=Xt(t["!ref"]).e.r,i=Ut(o));for(var a=0;a0&&(s[s.length]=function(e){if(0===e.length)return"";for(var t='',n=0;n!=e.length;++n)t+='';return t+""}(a["!merges"]));var d,u,f=-1,g=-1;return a["!links"].length>0&&(s[s.length]="",a["!links"].forEach((function(e){e[1].Target&&(d={ref:e[0]},"#"!=e[1].Target.charAt(0)&&(g=Xn(r,-1,xe(e[1].Target).replace(/#.*$/,""),Vn.HLINK),d["r:id"]="rId"+g),(f=e[1].Target.indexOf("#"))>-1&&(d.location=xe(e[1].Target.slice(f+1))),e[1].Tooltip&&(d.tooltip=xe(e[1].Tooltip)),s[s.length]=Xe("hyperlink",null,d))})),s[s.length]=""),delete a["!links"],null!=a["!margins"]&&(s[s.length]=(ea(u=a["!margins"]),Xe("pageMargins",null,u))),s[s.length]="",t&&!t.ignoreEC&&null!=t.ignoreEC||(s[s.length]=ze("ignoredErrors",Xe("ignoredError",null,{numberStoredAsText:1,sqref:c}))),a["!drawing"].length>0?(g=Xn(r,-1,"../drawings/drawing"+(e+1)+".xml",Vn.DRAW),s[s.length]=Xe("drawing",null,{"r:id":"rId"+g})):delete a["!drawing"],a["!comments"].length>0&&(g=Xn(r,-1,"../drawings/vmlDrawing"+(e+1)+".vml",Vn.VML),s[s.length]=Xe("legacyDrawing",null,{"r:id":"rId"+g}),a["!legacy"]=g),s.length>2&&(s[s.length]="",s[1]=s[1].replace("/>",">")),s.join("")}function Ea(e,t,n,r){var i=function(e,t,n){var r=Lt(145),i=(n["!rows"]||[])[e]||{};r.write_shift(4,e),r.write_shift(4,0);var s=320;i.hpx?s=20*hs(i.hpx):i.hpt&&(s=20*i.hpt),r.write_shift(2,s),r.write_shift(1,0);var o=0;i.level&&(o|=i.level),i.hidden&&(o|=16),(i.hpx||i.hpt)&&(o|=32),r.write_shift(1,o),r.write_shift(1,0);var a=0,c=r.l;r.l+=4;for(var l={r:e,c:0},h=0;h<16;++h)if(!(t.s.c>h+1<<10||t.e.cr.l?r.slice(0,r.l):r}(r,n,t);(i.length>17||(t["!rows"]||[])[r])&&Nt(e,"BrtRowHdr",i)}var ka=vn,_a=In,Ta=vn,Ra=In,Ba=["left","right","top","bottom","header","footer"];function Oa(e,t,n,r,i,s){if(void 0===t.v)return"";var o="";switch(t.t){case"b":o=t.v?"1":"0";break;case"d":(t=q(t)).z=t.z||T._table[14],t.v=z(J(t.v)),t.t="n";break;case"n":case"e":o=""+t.v;break;default:o=t.v}var a={r:n,c:r};switch(a.s=ta(i.cellXfs,t,i),t.l&&s["!links"].push([Kt(a),t.l]),t.c&&s["!comments"].push([Kt(a),t.c]),t.t){case"s":case"str":return void(i.bookSST?(o=Qo(i.Strings,t.v,i.revStrings),a.t="s",a.v=o,Nt(e,"BrtCellIsst",function(e,t,n){return null==n&&(n=Lt(12)),ln(t,n),n.write_shift(4,t.v),n}(0,a))):(a.t="str",Nt(e,"BrtCellSt",function(e,t,n){return null==n&&(n=Lt(12+4*e.v.length)),ln(t,n),rn(e.v,n),n.length>n.l?n.slice(0,n.l):n}(t,a))));case"n":return void(t.v==(0|t.v)&&t.v>-1e3&&t.v<1e3?Nt(e,"BrtCellRk",function(e,t,n){return null==n&&(n=Lt(12)),ln(t,n),function(e,t){null==t&&(t=Lt(4));var n=0,r=0,i=100*e;if(e==(0|e)&&e>=-(1<<29)&&e<1<<29?r=1:i==(0|i)&&i>=-(1<<29)&&i<1<<29&&(r=1,n=1),!r)throw new Error("unsupported RkNumber "+e);t.write_shift(-4,((n?i:e)<<2)+(n+2))}(e.v,n),n}(t,a)):Nt(e,"BrtCellReal",function(e,t,n){return null==n&&(n=Lt(16)),ln(t,n),yn(e.v,n),n}(t,a)));case"b":return a.t="b",void Nt(e,"BrtCellBool",function(e,t,n){return null==n&&(n=Lt(9)),ln(t,n),n.write_shift(1,e.v?1:0),n}(t,a));case"e":a.t="e"}Nt(e,"BrtCellBlank",function(e,t,n){return null==n&&(n=Lt(8)),ln(t,n)}(0,a))}function La(e,t,n,r){var i=Ft(),s=n.SheetNames[e],o=n.Sheets[s]||{},a=s;try{n&&n.Workbook&&(a=n.Workbook.Sheets[e].CodeName||a)}catch(El){}var c=Yt(o["!ref"]||"A1");if(c.e.c>16383||c.e.r>1048575){if(t.WTF)throw new Error("Range "+(o["!ref"]||"A1")+" exceeds format limit A1:XFD1048576");c.e.c=Math.min(c.e.c,16383),c.e.r=Math.min(c.e.c,1048575)}return o["!links"]=[],o["!comments"]=[],Nt(i,"BrtBeginSheet"),n.vbaraw&&Nt(i,"BrtWsProp",function(e,t){null==t&&(t=Lt(84+4*e.length));for(var n=0;n<3;++n)t.write_shift(1,0);return xn({auto:1},t),t.write_shift(-4,-1),t.write_shift(-4,-1),dn(e,t),t.slice(0,t.l)}(a)),Nt(i,"BrtWsDim",_a(c)),function(e,t,n){Nt(e,"BrtBeginWsViews"),Nt(e,"BrtBeginWsView",function(e,t,n){null==n&&(n=Lt(30));var r=924;return(((t||{}).Views||[])[0]||{}).RTL&&(r|=32),n.write_shift(2,r),n.write_shift(4,0),n.write_shift(4,0),n.write_shift(4,0),n.write_shift(1,0),n.write_shift(1,0),n.write_shift(2,0),n.write_shift(2,100),n.write_shift(2,0),n.write_shift(2,0),n.write_shift(2,0),n.write_shift(4,0),n}(0,n)),Nt(e,"BrtEndWsView"),Nt(e,"BrtEndWsViews")}(i,0,n.Workbook),function(e,t){t&&t["!cols"]&&(Nt(e,"BrtBeginColInfos"),t["!cols"].forEach((function(t,n){t&&Nt(e,"BrtColInfo",function(e,t,n){null==n&&(n=Lt(18));var r=qo(e,t);n.write_shift(-4,e),n.write_shift(-4,e),n.write_shift(4,256*(r.width||10)),n.write_shift(4,0);var i=0;return t.hidden&&(i|=1),"number"==typeof r.width&&(i|=2),n.write_shift(1,i),n.write_shift(1,0),n}(n,t))})),Nt(e,"BrtEndColInfos"))}(i,o),function(e,t,n,r){var i=Yt(t["!ref"]||"A1"),s="",o=[];Nt(e,"BrtBeginSheetData");var a=Array.isArray(t),c=i.e.r;t["!rows"]&&(c=Math.max(i.e.r,t["!rows"].length-1));for(var l=i.s.r;l<=c;++l)if(s=Gt(l),Ea(e,t,i,l),l<=i.e.r)for(var h=i.s.c;h<=i.e.c;++h){l===i.s.r&&(o[h]=jt(h));var d=a?(t[l]||[])[h]:t[o[h]+s];d&&Oa(e,d,l,h,r,t)}Nt(e,"BrtEndSheetData")}(i,o,0,t),function(e,t){t["!protect"]&&Nt(e,"BrtSheetProtection",function(e,t){return null==t&&(t=Lt(66)),t.write_shift(2,e.password?Xi(e.password):0),t.write_shift(4,1),[["objects",!1],["scenarios",!1],["formatCells",!0],["formatColumns",!0],["formatRows",!0],["insertColumns",!0],["insertRows",!0],["insertHyperlinks",!0],["deleteColumns",!0],["deleteRows",!0],["selectLockedCells",!1],["sort",!0],["autoFilter",!0],["pivotTables",!0],["selectUnlockedCells",!1]].forEach((function(n){t.write_shift(4,n[1]?null==e[n[0]]||e[n[0]]?0:1:null!=e[n[0]]&&e[n[0]]?0:1)})),t}(t["!protect"]))}(i,o),function(e,t){t["!autofilter"]&&(Nt(e,"BrtBeginAFilter",In(Yt(t["!autofilter"].ref))),Nt(e,"BrtEndAFilter"))}(i,o),function(e,t){t&&t["!merges"]&&(Nt(e,"BrtBeginMergeCells",function(e,t){return null==t&&(t=Lt(4)),t.write_shift(4,e),t}(t["!merges"].length)),t["!merges"].forEach((function(t){Nt(e,"BrtMergeCell",Ra(t))})),Nt(e,"BrtEndMergeCells"))}(i,o),function(e,t,n){t["!links"].forEach((function(t){if(t[1].Target){var r=Xn(n,-1,t[1].Target.replace(/#.*$/,""),Vn.HLINK);Nt(e,"BrtHLink",function(e,t){var n=Lt(50+4*(e[1].Target.length+(e[1].Tooltip||"").length));In({s:zt(e[0]),e:zt(e[0])},n),mn("rId"+t,n);var r=e[1].Target.indexOf("#");return rn((-1==r?"":e[1].Target.slice(r+1))||"",n),rn(e[1].Tooltip||"",n),rn("",n),n.slice(0,n.l)}(t,r))}})),delete t["!links"]}(i,o,r),o["!margins"]&&Nt(i,"BrtMargins",function(e,t){return null==t&&(t=Lt(48)),ea(e),Ba.forEach((function(n){yn(e[n],t)})),t}(o["!margins"])),t&&!t.ignoreEC&&null!=t.ignoreEC||function(e,t){t&&t["!ref"]&&(Nt(e,"BrtBeginCellIgnoreECs"),Nt(e,"BrtCellIgnoreEC",function(e){var t=Lt(24);return t.write_shift(4,4),t.write_shift(4,1),In(e,t),t}(Yt(t["!ref"]))),Nt(e,"BrtEndCellIgnoreECs"))}(i,o),function(e,t,n,r){if(t["!comments"].length>0){var i=Xn(r,-1,"../drawings/vmlDrawing"+(n+1)+".vml",Vn.VML);Nt(e,"BrtLegacyDrawing",mn("rId"+i)),t["!legacy"]=i}}(i,o,e,r),Nt(i,"BrtEndSheet"),i.end()}Vn.CS="http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartsheet",Xe("chartsheet",null,{xmlns:Qe.main[0],"xmlns:r":Qe.r});var Pa=[["allowRefreshQuery",!1,"bool"],["autoCompressPictures",!0,"bool"],["backupFile",!1,"bool"],["checkCompatibility",!1,"bool"],["CodeName",""],["date1904",!1,"bool"],["defaultThemeVersion",0,"int"],["filterPrivacy",!1,"bool"],["hidePivotFieldList",!1,"bool"],["promptedSolutions",!1,"bool"],["publishItems",!1,"bool"],["refreshAllConnections",!1,"bool"],["saveExternalLinkValues",!0,"bool"],["showBorderUnselectedTables",!0,"bool"],["showInkAnnotation",!0,"bool"],["showObjects","all"],["showPivotChartFilter",!1,"bool"],["updateLinks","userSet"]],Fa=[["activeTab",0,"int"],["autoFilterDateGrouping",!0,"bool"],["firstSheet",0,"int"],["minimized",!1,"bool"],["showHorizontalScroll",!0,"bool"],["showSheetTabs",!0,"bool"],["showVerticalScroll",!0,"bool"],["tabRatio",600,"int"],["visibility","visible"]],Na=[],Ma=[["calcCompleted","true"],["calcMode","auto"],["calcOnSave","true"],["concurrentCalc","true"],["fullCalcOnLoad","false"],["fullPrecision","true"],["iterate","false"],["iterateCount","100"],["iterateDelta","0.001"],["refMode","A1"]];function Da(e,t){for(var n=0;n!=e.length;++n)for(var r=e[n],i=0;i!=t.length;++i){var s=t[i];if(null==r[s[0]])r[s[0]]=s[1];else switch(s[2]){case"bool":"string"==typeof r[s[0]]&&(r[s[0]]=Re(r[s[0]]));break;case"int":"string"==typeof r[s[0]]&&(r[s[0]]=parseInt(r[s[0]],10))}}}function $a(e,t){for(var n=0;n!=t.length;++n){var r=t[n];if(null==e[r[0]])e[r[0]]=r[1];else switch(r[2]){case"bool":"string"==typeof e[r[0]]&&(e[r[0]]=Re(e[r[0]]));break;case"int":"string"==typeof e[r[0]]&&(e[r[0]]=parseInt(e[r[0]],10))}}}function Wa(e){$a(e.WBProps,Pa),$a(e.CalcPr,Ma),Da(e.WBView,Fa),Da(e.Sheets,Na),Yo.date1904=Re(e.WBProps.date1904)}var Ha="][*?/\\".split("");function Ga(e,t){if(e.length>31){if(t)return!1;throw new Error("Sheet names cannot exceed 31 chars")}var n=!0;return Ha.forEach((function(r){if(-1!=e.indexOf(r)){if(!t)throw new Error("Sheet name cannot contain : \\ / ? * [ ]");n=!1}})),n}var Va=/<\w+:workbook/,ja=Xe("workbook",null,{xmlns:Qe.main[0],"xmlns:r":Qe.r});function Za(e){var t=[de];t[t.length]=ja;var n=e.Workbook&&(e.Workbook.Names||[]).length>0,r={codeName:"ThisWorkbook"};e.Workbook&&e.Workbook.WBProps&&(Pa.forEach((function(t){null!=e.Workbook.WBProps[t[0]]&&e.Workbook.WBProps[t[0]]!=t[1]&&(r[t[0]]=e.Workbook.WBProps[t[0]])})),e.Workbook.WBProps.CodeName&&(r.codeName=e.Workbook.WBProps.CodeName,delete r.CodeName)),t[t.length]=Xe("workbookPr",null,r);var i=e.Workbook&&e.Workbook.Sheets||[],s=0;for(t[t.length]="",s=0;s!=e.SheetNames.length;++s){var o={name:xe(e.SheetNames[s].slice(0,31))};if(o.sheetId=""+(s+1),o["r:id"]="rId"+(s+1),i[s])switch(i[s].Hidden){case 1:o.state="hidden";break;case 2:o.state="veryHidden"}t[t.length]=Xe("sheet",null,o)}return t[t.length]="",n&&(t[t.length]="",e.Workbook&&e.Workbook.Names&&e.Workbook.Names.forEach((function(e){var n={name:e.Name};e.Comment&&(n.comment=e.Comment),null!=e.Sheet&&(n.localSheetId=""+e.Sheet),e.Hidden&&(n.hidden="1"),e.Ref&&(t[t.length]=Xe("definedName",String(e.Ref).replace(//g,">"),n))})),t[t.length]=""),t.length>2&&(t[t.length]="",t[1]=t[1].replace("/>",">")),t.join("")}function za(e,t){return t||(t=Lt(127)),t.write_shift(4,e.Hidden),t.write_shift(4,e.iTabID),mn(e.strRelID,t),rn(e.name.slice(0,31),t),t.length>t.l?t.slice(0,t.l):t}function Ka(e,n){var r=Ft();return Nt(r,"BrtBeginBook"),Nt(r,"BrtFileVersion",function(e,n){n||(n=Lt(127));for(var r=0;4!=r;++r)n.write_shift(4,0);return rn("SheetJS",n),rn(t.version,n),rn(t.version,n),rn("7262",n),n.length=n.l,n.length>n.l?n.slice(0,n.l):n}()),Nt(r,"BrtWbProp",function(e,t){t||(t=Lt(72));var n=0;return e&&e.filterPrivacy&&(n|=8),t.write_shift(4,n),t.write_shift(4,0),dn(e&&e.CodeName||"ThisWorkbook",t),t.slice(0,t.l)}(e.Workbook&&e.Workbook.WBProps||null)),function(e,t){if(t.Workbook&&t.Workbook.Sheets){for(var n=t.Workbook.Sheets,r=0,i=-1,s=-1;ri||(Nt(e,"BrtBeginBookViews"),Nt(e,"BrtBookView",function(e,t){return t||(t=Lt(29)),t.write_shift(-4,0),t.write_shift(-4,460),t.write_shift(4,28800),t.write_shift(4,17600),t.write_shift(4,500),t.write_shift(4,e),t.write_shift(4,e),t.write_shift(1,120),t.length>t.l?t.slice(0,t.l):t}(i)),Nt(e,"BrtEndBookViews"))}}(r,e),function(e,t){Nt(e,"BrtBeginBundleShs");for(var n=0;n!=t.SheetNames.length;++n)Nt(e,"BrtBundleSh",za({Hidden:t.Workbook&&t.Workbook.Sheets&&t.Workbook.Sheets[n]&&t.Workbook.Sheets[n].Hidden||0,iTabID:n+1,strRelID:"rId"+(n+1),name:t.SheetNames[n]}));Nt(e,"BrtEndBundleShs")}(r,e),Nt(r,"BrtEndBook"),r.end()}function Xa(e,t,n){return".bin"===t.slice(-4)?function(e,t){var n=[],r=[],i={},s=!1;return Pt(e,(function(e,o,a){switch(a){case 632:r.push(e);break;case 635:i=e;break;case 637:i.t=e.t,i.h=e.h,i.r=e.r;break;case 636:if(i.author=r[i.iauthor],delete i.iauthor,t.sheetRows&&t.sheetRows<=i.rfx.r)break;i.t||(i.t=""),delete i.rfx,n.push(i);break;case 3072:break;case 35:s=!0;break;case 36:s=!1;break;case 37:case 38:break;default:if((o||"").indexOf("Begin")>0);else if((o||"").indexOf("End")>0);else if(!s||t.WTF)throw new Error("Unexpected record "+a+" "+o)}})),n}(e,n):function(e,t){if(e.match(/<(?:\w+:)?comments *\/>/))return[];var n=[],r=[],i=e.match(/<(?:\w+:)?authors>([\s\S]*)<\/(?:\w+:)?authors>/);i&&i[1]&&i[1].split(/<\/\w*:?author>/).forEach((function(e){if(""!==e&&""!==e.trim()){var t=e.match(/<(?:\w+:)?author[^>]*>(.*)/);t&&n.push(t[1])}}));var s=e.match(/<(?:\w+:)?commentList>([\s\S]*)<\/(?:\w+:)?commentList>/);return s&&s[1]&&s[1].split(/<\/\w*:?comment>/).forEach((function(e){if(""!==e&&""!==e.trim()){var i=e.match(/<(?:\w+:)?comment[^>]*>/);if(i){var s=me(i[0]),o={author:s.authorId&&n[s.authorId]||"sheetjsghost",ref:s.ref,guid:s.guid},a=zt(s.ref);if(!(t.sheetRows&&t.sheetRows<=a.r)){var c=e.match(/<(?:\w+:)?text>([\s\S]*)<\/(?:\w+:)?text>/),l=!!c&&!!c[1]&&Oi(c[1])||{r:"",t:"",h:""};o.r=l.r,""==l.r&&(l.t=l.h=""),o.t=l.t.replace(/\r\n/g,"\n").replace(/\r/g,"\n"),t.cellHTML&&(o.h=l.h),r.push(o)}}}})),r}(e,n)}function Ua(e,t,n){return(".bin"===t.slice(-4)?Ka:Za)(e,n)}function Ya(e,t,n,r,i){return(".bin"===t.slice(-4)?La:xa)(e,n,r,i)}function Ja(e,t,n){return(".bin"===t.slice(-4)?$i:Mi)(e,n)}function Qa(e,t,n){return(".bin"===t.slice(-4)?Ks:Zs)(e,n)}var qa=/([\w:]+)=((?:")([^"]*)(?:")|(?:')([^']*)(?:'))/g,ec=/([\w:]+)=((?:")(?:[^"]*)(?:")|(?:')(?:[^']*)(?:'))/,tc=function(e){return String.fromCharCode(e)};function nc(e,t){var n=e.split(/\s+/),r=[];if(t||(r[0]=n[0]),1===n.length)return r;var i,s,o,a=e.match(qa);if(a)for(o=0;o!=a.length;++o)-1===(s=(i=a[o].match(ec))[1].indexOf(":"))?r[i[1]]=i[2].slice(1,i[2].length-1):r["xmlns:"===i[1].slice(0,6)?"xmlns"+i[1].slice(6):i[1].slice(s+1)]=i[2].slice(1,i[2].length-1);return r}function rc(e){var t={};if(1===e.split(/\s+/).length)return t;var n,r,i,s=e.match(qa);if(s)for(i=0;i!=s.length;++i)-1===(r=(n=s[i].match(ec))[1].indexOf(":"))?t[n[1]]=n[2].slice(1,n[2].length-1):t["xmlns:"===n[1].slice(0,6)?"xmlns"+n[1].slice(6):n[1].slice(r+1)]=n[2].slice(1,n[2].length-1);return t}function ic(e,t,n,r){var i=r;switch((n[0].match(/dt:dt="([\w.]+)"/)||["",""])[1]){case"boolean":i=Re(r);break;case"i2":case"int":i=parseInt(r,10);break;case"r4":case"float":i=parseFloat(r);break;case"date":case"dateTime.tz":i=J(r);break;case"i8":case"string":case"fixed":case"uuid":case"bin.base64":break;default:throw new Error("bad custprop:"+n[0])}e[ye(t)]=i}function sc(e,t,n){if(n.cellStyles&&t.Interior){var r=t.Interior;r.Pattern&&(r.patternType=Cs[r.Pattern]||r.Pattern)}e[t.ID]=t}function oc(e,t,n,r,i,s,o,a,c,l){var h="General",d=r.StyleID,u={};l=l||{};var f=[],g=0;for(void 0===d&&a&&(d=a.StyleID),void 0===d&&o&&(d=o.StyleID);void 0!==s[d]&&(s[d].nf&&(h=s[d].nf),s[d].Interior&&f.push(s[d].Interior),s[d].Parent);)d=s[d].Parent;switch(n.Type){case"Boolean":r.t="b",r.v=Re(e);break;case"String":r.t="s",r.r=Te(ye(e)),r.v=e.indexOf("<")>-1?ye(t):r.r;break;case"DateTime":"Z"!=e.slice(-1)&&(e+="Z"),r.v=(J(e)-new Date(Date.UTC(1899,11,30)))/864e5,r.v!=r.v?r.v=ye(e):r.v<60&&(r.v=r.v-1),h&&"General"!=h||(h="yyyy-mm-dd");case"Number":void 0===r.v&&(r.v=+e),r.t||(r.t="n");break;case"Error":r.t="e",r.v=Sn[e],!1!==l.cellText&&(r.w=e);break;default:r.t="s",r.v=Te(t||e)}if(function(e,t,n){if("z"!==e.t){if(!n||!1!==n.cellText)try{e.w="e"===e.t?e.w||wn[e.v]:"General"===t?"n"===e.t?(0|e.v)===e.v?T._general_int(e.v):T._general_num(e.v):T._general(e.v):(i=e.v,"General"===(s=O[r=t||"General"]||ye(r))?T._general(i):T.format(s,i))}catch(El){if(n.WTF)throw El}var r,i,s;try{var o=O[t]||t||"General";if(n.cellNF&&(e.z=o),n.cellDates&&"n"==e.t&&T.is_date(o)){var a=T.parse_date_code(e.v);a&&(e.t="d",e.v=new Date(a.y,a.m-1,a.d,a.H,a.M,a.S,a.u))}}catch(El){if(n.WTF)throw El}}}(r,h,l),!1!==l.cellFormula)if(r.Formula){var p=ye(r.Formula);61==p.charCodeAt(0)&&(p=p.slice(1)),r.f=Us(p,i),delete r.Formula,"RC"==r.ArrayRange?r.F=Us("RC:RC",i):r.ArrayRange&&(r.F=Us(r.ArrayRange,i),c.push([Yt(r.F),r.F]))}else for(g=0;g=c[g][0].s.r&&i.r<=c[g][0].e.r&&i.c>=c[g][0].s.c&&i.c<=c[g][0].e.c&&(r.F=c[g][1]);l.cellStyles&&(f.forEach((function(e){!u.patternType&&e.patternType&&(u.patternType=e.patternType)})),r.s=u),void 0!==r.StyleID&&(r.ixfe=r.StyleID)}function ac(e){e.t=e.v||"",e.t=e.t.replace(/\r\n/g,"\n").replace(/\r/g,"\n"),e.v=e.w=e.ixfe=void 0}function cc(e){if(C&&Buffer.isBuffer(e))return e.toString("utf8");if("string"==typeof e)return e;if("undefined"!=typeof Uint8Array&&e instanceof Uint8Array)return Be(S(x(e)));throw new Error("Bad input format: expected Buffer or string")}var lc=/<(\/?)([^\s?>!\/:]*:|)([^\s?>:\/]+)[^>]*>/gm;function hc(e,t){var n=t||{};R(T);var r=u(cc(e));"binary"!=n.type&&"array"!=n.type&&"base64"!=n.type||(r="undefined"!=typeof cptable?cptable.utils.decode(65001,d(r)):Be(r));var i,s=r.slice(0,1024).toLowerCase(),o=!1;if(-1==s.indexOf("=0&&(o=!0)})),o)return Oc.to_workbook(r,n);var a,c,l=[],h={},f=[],g=n.dense?[]:{},p="",m={},C={},b=nc(''),v=0,I=0,A=0,y={s:{r:2e6,c:2e6},e:{r:0,c:0}},w={},S={},x="",E=0,k=[],_={},B={},L=0,P=[],F=[],N={},M=[],D=!1,$=[],W=[],H={},G=0,V=0,j={Sheets:[],WBProps:{date1904:!1}},Z={};for(lc.lastIndex=0,r=r.replace(//gm,"");i=lc.exec(r);)switch(i[3]){case"Data":if(l[l.length-1][1])break;"/"===i[1]?oc(r.slice(v,i.index),x,b,"Comment"==l[l.length-1][0]?N:m,{c:I,r:A},w,M[I],C,$,n):(x="",b=nc(i[0]),v=i.index+i[0].length);break;case"Cell":if("/"===i[1])if(F.length>0&&(m.c=F),(!n.sheetRows||n.sheetRows>A)&&void 0!==m.v&&(n.dense?(g[A]||(g[A]=[]),g[A][I]=m):g[jt(I)+Gt(A)]=m),m.HRef&&(m.l={Target:m.HRef},m.HRefScreenTip&&(m.l.Tooltip=m.HRefScreenTip),delete m.HRef,delete m.HRefScreenTip),(m.MergeAcross||m.MergeDown)&&(G=I+(0|parseInt(m.MergeAcross,10)),V=A+(0|parseInt(m.MergeDown,10)),k.push({s:{c:I,r:A},e:{c:G,r:V}})),n.sheetStubs)if(m.MergeAcross||m.MergeDown){for(var z=I;z<=G;++z)for(var K=A;K<=V;++K)(z>I||K>A)&&(n.dense?(g[K]||(g[K]=[]),g[K][z]={t:"z"}):g[jt(z)+Gt(K)]={t:"z"});I=G+1}else++I;else m.MergeAcross?I=G+1:++I;else(m=rc(i[0])).Index&&(I=+m.Index-1),Iy.e.c&&(y.e.c=I),"/>"===i[0].slice(-2)&&++I,F=[];break;case"Row":"/"===i[1]||"/>"===i[0].slice(-2)?(Ay.e.r&&(y.e.r=A),"/>"===i[0].slice(-2)&&(C=nc(i[0])).Index&&(A=+C.Index-1),I=0,++A):((C=nc(i[0])).Index&&(A=+C.Index-1),H={},("0"==C.AutoFitHeight||C.Height)&&(H.hpx=parseInt(C.Height,10),H.hpt=hs(H.hpx),W[A]=H),"1"==C.Hidden&&(H.hidden=!0,W[A]=H));break;case"Worksheet":if("/"===i[1]){if((a=l.pop())[0]!==i[3])throw new Error("Bad state: "+a.join("|"));f.push(p),y.s.r<=y.e.r&&y.s.c<=y.e.c&&(g["!ref"]=Ut(y),n.sheetRows&&n.sheetRows<=y.e.r&&(g["!fullref"]=g["!ref"],y.e.r=n.sheetRows-1,g["!ref"]=Ut(y))),k.length&&(g["!merges"]=k),M.length>0&&(g["!cols"]=M),W.length>0&&(g["!rows"]=W),h[p]=g}else y={s:{r:2e6,c:2e6},e:{r:0,c:0}},A=I=0,l.push([i[3],!1]),a=nc(i[0]),p=ye(a.Name),g=n.dense?[]:{},k=[],$=[],W=[],j.Sheets.push(Z={name:p,Hidden:0});break;case"Table":if("/"===i[1]){if((a=l.pop())[0]!==i[3])throw new Error("Bad state: "+a.join("|"))}else{if("/>"==i[0].slice(-2))break;nc(i[0]),l.push([i[3],!1]),M=[],D=!1}break;case"Style":"/"===i[1]?sc(w,S,n):S=nc(i[0]);break;case"NumberFormat":S.nf=ye(nc(i[0]).Format||"General"),O[S.nf]&&(S.nf=O[S.nf]);for(var X=0;392!=X&&T._table[X]!=S.nf;++X);if(392==X)for(X=57;392!=X;++X)if(null==T._table[X]){T.load(S.nf,X);break}break;case"Column":if("Table"!==l[l.length-1][0])break;if((c=nc(i[0])).Hidden&&(c.hidden=!0,delete c.Hidden),c.Width&&(c.wpx=parseInt(c.Width,10)),!D&&c.wpx>10){D=!0,rs=6;for(var U=0;U0&&(Q.Sheet=j.Sheets.length-1),j.Names.push(Q);break;case"NamedCell":case"B":case"I":case"U":case"S":case"Sub":case"Sup":case"Span":case"Border":case"Alignment":case"Borders":break;case"Font":if("/>"===i[0].slice(-2))break;"/"===i[1]?x+=r.slice(E,i.index):E=i.index+i[0].length;break;case"Interior":if(!n.cellStyles)break;S.Interior=nc(i[0]);break;case"Protection":break;case"Author":case"Title":case"Description":case"Created":case"Keywords":case"Subject":case"Category":case"Company":case"LastAuthor":case"LastSaved":case"LastPrinted":case"Version":case"Revision":case"TotalTime":case"HyperlinkBase":case"Manager":case"ContentStatus":case"Identifier":case"Language":case"AppName":if("/>"===i[0].slice(-2))break;"/"===i[1]?hr(_,i[3],r.slice(L,i.index)):L=i.index+i[0].length;break;case"Paragraphs":break;case"Styles":case"Workbook":if("/"===i[1]){if((a=l.pop())[0]!==i[3])throw new Error("Bad state: "+a.join("|"))}else l.push([i[3],!1]);break;case"Comment":if("/"===i[1]){if((a=l.pop())[0]!==i[3])throw new Error("Bad state: "+a.join("|"));ac(N),F.push(N)}else l.push([i[3],!1]),N={a:(a=nc(i[0])).Author};break;case"AutoFilter":if("/"===i[1]){if((a=l.pop())[0]!==i[3])throw new Error("Bad state: "+a.join("|"))}else if("/"!==i[0].charAt(i[0].length-2)){var ee=nc(i[0]);g["!autofilter"]={ref:Us(ee.Range).replace(/\$/g,"")},l.push([i[3],!0])}break;case"Name":break;case"ComponentOptions":case"DocumentProperties":case"CustomDocumentProperties":case"OfficeDocumentSettings":case"PivotTable":case"PivotCache":case"Names":case"MapInfo":case"PageBreaks":case"QueryTable":case"DataValidation":case"Sorting":case"Schema":case"data":case"ConditionalFormatting":case"SmartTagType":case"SmartTags":case"ExcelWorkbook":case"WorkbookOptions":case"WorksheetOptions":if("/"===i[1]){if((a=l.pop())[0]!==i[3])throw new Error("Bad state: "+a.join("|"))}else"/"!==i[0].charAt(i[0].length-2)&&l.push([i[3],!0]);break;default:if(0==l.length&&"document"==i[3])return Dc(r,n);if(0==l.length&&"UOF"==i[3])return Dc(r,n);var te=!0;switch(l[l.length-1][0]){case"OfficeDocumentSettings":switch(i[3]){case"AllowPNG":case"RemovePersonalInformation":case"DownloadComponents":case"LocationOfComponents":case"Colors":case"Color":case"Index":case"RGB":case"PixelsPerInch":case"TargetScreenSize":case"ReadOnlyRecommended":break;default:te=!1}break;case"ComponentOptions":switch(i[3]){case"Toolbar":case"HideOfficeLogo":case"SpreadsheetAutoFit":case"Label":case"Caption":case"MaxHeight":case"MaxWidth":case"NextSheetNumber":break;default:te=!1}break;case"ExcelWorkbook":switch(i[3]){case"Date1904":j.WBProps.date1904=!0;break;case"WindowHeight":case"WindowWidth":case"WindowTopX":case"WindowTopY":case"TabRatio":case"ProtectStructure":case"ProtectWindows":case"ActiveSheet":case"DisplayInkNotes":case"FirstVisibleSheet":case"SupBook":case"SheetName":case"SheetIndex":case"SheetIndexFirst":case"SheetIndexLast":case"Dll":case"AcceptLabelsInFormulas":case"DoNotSaveLinkValues":case"Iteration":case"MaxIterations":case"MaxChange":case"Path":case"Xct":case"Count":case"SelectedSheets":case"Calculation":case"Uncalced":case"StartupPrompt":case"Crn":case"ExternName":case"Formula":case"ColFirst":case"ColLast":case"WantAdvise":case"Boolean":case"Error":case"Text":case"OLE":case"NoAutoRecover":case"PublishObjects":case"DoNotCalculateBeforeSave":case"Number":case"RefModeR1C1":case"EmbedSaveSmartTags":break;default:te=!1}break;case"WorkbookOptions":switch(i[3]){case"OWCVersion":case"Height":case"Width":break;default:te=!1}break;case"WorksheetOptions":switch(i[3]){case"Visible":if("/>"===i[0].slice(-2));else if("/"===i[1])switch(r.slice(L,i.index)){case"SheetHidden":Z.Hidden=1;break;case"SheetVeryHidden":Z.Hidden=2}else L=i.index+i[0].length;break;case"Header":g["!margins"]||ea(g["!margins"]={},"xlml"),g["!margins"].header=me(i[0]).Margin;break;case"Footer":g["!margins"]||ea(g["!margins"]={},"xlml"),g["!margins"].footer=me(i[0]).Margin;break;case"PageMargins":var ne=me(i[0]);g["!margins"]||ea(g["!margins"]={},"xlml"),ne.Top&&(g["!margins"].top=ne.Top),ne.Left&&(g["!margins"].left=ne.Left),ne.Right&&(g["!margins"].right=ne.Right),ne.Bottom&&(g["!margins"].bottom=ne.Bottom);break;case"DisplayRightToLeft":j.Views||(j.Views=[]),j.Views[0]||(j.Views[0]={}),j.Views[0].RTL=!0;break;case"Unsynced":case"Print":case"Panes":case"Scale":case"Pane":case"Number":case"Layout":case"PageSetup":case"Selected":case"ProtectObjects":case"EnableSelection":case"ProtectScenarios":case"ValidPrinterInfo":case"HorizontalResolution":case"VerticalResolution":case"NumberofCopies":case"ActiveRow":case"ActiveCol":case"ActivePane":case"TopRowVisible":case"TopRowBottomPane":case"LeftColumnVisible":case"LeftColumnRightPane":case"FitToPage":case"RangeSelection":case"PaperSizeIndex":case"PageLayoutZoom":case"PageBreakZoom":case"FilterOn":case"DoNotDisplayGridlines":case"SplitHorizontal":case"SplitVertical":case"FreezePanes":case"FrozenNoSplit":case"FitWidth":case"FitHeight":case"CommentsLayout":case"Zoom":case"LeftToRight":case"Gridlines":case"AllowSort":case"AllowFilter":case"AllowInsertRows":case"AllowDeleteRows":case"AllowInsertCols":case"AllowDeleteCols":case"AllowInsertHyperlinks":case"AllowFormatCells":case"AllowSizeCols":case"AllowSizeRows":case"NoSummaryRowsBelowDetail":case"TabColorIndex":case"DoNotDisplayHeadings":case"ShowPageLayoutZoom":case"NoSummaryColumnsRightDetail":case"BlackAndWhite":case"DoNotDisplayZeros":case"DisplayPageBreak":case"RowColHeadings":case"DoNotDisplayOutline":case"NoOrientation":case"AllowUsePivotTables":case"ZeroHeight":case"ViewableRange":case"Selection":case"ProtectContents":break;default:te=!1}break;case"PivotTable":case"PivotCache":switch(i[3]){case"ImmediateItemsOnDrop":case"ShowPageMultipleItemLabel":case"CompactRowIndent":case"Location":case"PivotField":case"Orientation":case"LayoutForm":case"LayoutSubtotalLocation":case"LayoutCompactRow":case"Position":case"PivotItem":case"DataType":case"DataField":case"SourceName":case"ParentField":case"PTLineItems":case"PTLineItem":case"CountOfSameItems":case"Item":case"ItemType":case"PTSource":case"CacheIndex":case"ConsolidationReference":case"FileName":case"Reference":case"NoColumnGrand":case"NoRowGrand":case"BlankLineAfterItems":case"Hidden":case"Subtotal":case"BaseField":case"MapChildItems":case"Function":case"RefreshOnFileOpen":case"PrintSetTitles":case"MergeLabels":case"DefaultVersion":case"RefreshName":case"RefreshDate":case"RefreshDateCopy":case"VersionLastRefresh":case"VersionLastUpdate":case"VersionUpdateableMin":case"VersionRefreshableMin":case"Calculation":break;default:te=!1}break;case"PageBreaks":switch(i[3]){case"ColBreaks":case"ColBreak":case"RowBreaks":case"RowBreak":case"ColStart":case"ColEnd":case"RowEnd":break;default:te=!1}break;case"AutoFilter":switch(i[3]){case"AutoFilterColumn":case"AutoFilterCondition":case"AutoFilterAnd":case"AutoFilterOr":break;default:te=!1}break;case"QueryTable":switch(i[3]){case"Id":case"AutoFormatFont":case"AutoFormatPattern":case"QuerySource":case"QueryType":case"EnableRedirections":case"RefreshedInXl9":case"URLString":case"HTMLTables":case"Connection":case"CommandText":case"RefreshInfo":case"NoTitles":case"NextId":case"ColumnInfo":case"OverwriteCells":case"DoNotPromptForFile":case"TextWizardSettings":case"Source":case"Number":case"Decimal":case"ThousandSeparator":case"TrailingMinusNumbers":case"FormatSettings":case"FieldType":case"Delimiters":case"Tab":case"Comma":case"AutoFormatName":case"VersionLastEdit":case"VersionLastRefresh":break;default:te=!1}break;case"Sorting":case"ConditionalFormatting":case"DataValidation":switch(i[3]){case"Range":case"Type":case"Min":case"Max":case"Sort":case"Descending":case"Order":case"CaseSensitive":case"Value":case"ErrorStyle":case"ErrorMessage":case"ErrorTitle":case"CellRangeList":case"InputMessage":case"InputTitle":case"ComboHide":case"InputHide":case"Condition":case"Qualifier":case"UseBlank":case"Value1":case"Value2":case"Format":break;default:te=!1}break;case"MapInfo":case"Schema":case"data":switch(i[3]){case"Map":case"Entry":case"Range":case"XPath":case"Field":case"XSDType":case"FilterOn":case"Aggregate":case"ElementType":case"AttributeType":break;case"schema":case"element":case"complexType":case"datatype":case"all":case"attribute":case"extends":case"row":break;default:te=!1}break;case"SmartTags":break;default:te=!1}if(te)break;if(!l[l.length-1][1])throw"Unrecognized tag: "+i[3]+"|"+l.join("|");if("CustomDocumentProperties"===l[l.length-1][0]){if("/>"===i[0].slice(-2))break;"/"===i[1]?ic(B,i[3],P,r.slice(L,i.index)):(P=i,L=i.index+i[0].length);break}if(n.WTF)throw"Unrecognized tag: "+i[3]+"|"+l.join("|")}var re={};return n.bookSheets||n.bookProps||(re.Sheets=h),re.SheetNames=f,re.Workbook=j,re.SSF=T.get_table(),re.Props=_,re.Custprops=B,re}function dc(e,t){switch(qc(t=t||{}),t.type||"base64"){case"base64":return hc(m.decode(e),t);case"binary":case"buffer":case"file":return hc(e,t);case"array":return hc(S(e),t)}}function uc(e){return Xe("NamedRange",null,{"ss:Name":e.Name,"ss:RefersTo":"="+Js(e.Ref,{r:0,c:0})})}function fc(e,t,n,r,i,s,o){if(!e||null==e.v&&null==e.f)return"";var a={};if(e.f&&(a["ss:Formula"]="="+xe(Js(e.f,o))),e.F&&e.F.slice(0,t.length)==t){var c=zt(e.F.slice(t.length+1));a["ss:ArrayRange"]="RC:R"+(c.r==o.r?"":"["+(c.r-o.r)+"]")+"C"+(c.c==o.c?"":"["+(c.c-o.c)+"]")}if(e.l&&e.l.Target&&(a["ss:HRef"]=xe(e.l.Target),e.l.Tooltip&&(a["x:HRefScreenTip"]=xe(e.l.Tooltip))),n["!merges"])for(var l=n["!merges"],h=0;h!=l.length;++h)l[h].s.c==o.c&&l[h].s.r==o.r&&(l[h].e.c>l[h].s.c&&(a["ss:MergeAcross"]=l[h].e.c-l[h].s.c),l[h].e.r>l[h].s.r&&(a["ss:MergeDown"]=l[h].e.r-l[h].s.r));var d="",u="";switch(e.t){case"z":return"";case"n":d="Number",u=String(e.v);break;case"b":d="Boolean",u=e.v?"1":"0";break;case"e":d="Error",u=wn[e.v];break;case"d":d="DateTime",u=new Date(e.v).toISOString(),null==e.z&&(e.z=e.z||T._table[14]);break;case"s":d="String",u=((e.v||"")+"").replace(we,(function(e){return Ae[e]})).replace(ke,(function(e){return"&#x"+e.charCodeAt(0).toString(16).toUpperCase()+";"}))}var f=ta(r.cellXfs,e,r);a["ss:StyleID"]="s"+(21+f),a["ss:Index"]=o.c+1;var g=''+(null!=e.v?u:"")+"";return(e.c||[]).length>0&&(g+=e.c.map((function(e){var t=Xe("ss:Data",(e.t||"").replace(/(\r\n|[\r\n])/g," "),{xmlns:"http://www.w3.org/TR/REC-html40"});return Xe("Comment",t,{"ss:Author":e.a})})).join("")),Xe("Cell",g,a)}function gc(e,t){var n='"}function pc(e,t,n){var r=[],i=n.Sheets[n.SheetNames[e]],s=i?function(e,t,n,r){if(!e)return"";if(!((r||{}).Workbook||{}).Names)return"";for(var i=r.Workbook.Names,s=[],o=0;o0&&r.push(""+s+""),(s=i?function(e,t,n,r){if(!e["!ref"])return"";var i=Yt(e["!ref"]),s=e["!merges"]||[],o=0,a=[];e["!cols"]&&e["!cols"].forEach((function(e,t){ls(e);var n=!!e.width,r=qo(t,e),i={"ss:Index":t+1};n&&(i["ss:Width"]=is(r.width)),e.hidden&&(i["ss:Hidden"]="1"),a.push(Xe("Column",null,i))}));for(var c=Array.isArray(e),l=i.s.r;l<=i.e.r;++l){for(var h=[gc(l,(e["!rows"]||[])[l])],d=i.s.c;d<=i.e.c;++d){var u=!1;for(o=0;o!=s.length;++o)if(!(s[o].s.c>d||s[o].s.r>l||s[o].e.c"),h.length>2&&a.push(h.join(""))}return a.join("")}(i,t):"").length>0&&r.push(""+s+"
"),r.push(function(e,t,n,r){if(!e)return"";var i=[];if(e["!margins"]&&(i.push(""),e["!margins"].header&&i.push(Xe("Header",null,{"x:Margin":e["!margins"].header})),e["!margins"].footer&&i.push(Xe("Footer",null,{"x:Margin":e["!margins"].footer})),i.push(Xe("PageMargins",null,{"x:Bottom":e["!margins"].bottom||"0.75","x:Left":e["!margins"].left||"0.7","x:Right":e["!margins"].right||"0.7","x:Top":e["!margins"].top||"0.75"})),i.push("")),r&&r.Workbook&&r.Workbook.Sheets&&r.Workbook.Sheets[n])if(r.Workbook.Sheets[n].Hidden)i.push(Xe("Visible",1==r.Workbook.Sheets[n].Hidden?"SheetHidden":"SheetVeryHidden",{}));else{for(var s=0;s")}return((((r||{}).Workbook||{}).Views||[])[0]||{}).RTL&&i.push(""),e["!protect"]&&(i.push(ze("ProtectContents","True")),e["!protect"].objects&&i.push(ze("ProtectObjects","True")),e["!protect"].scenarios&&i.push(ze("ProtectScenarios","True")),null==e["!protect"].selectLockedCells||e["!protect"].selectLockedCells?null==e["!protect"].selectUnlockedCells||e["!protect"].selectUnlockedCells||i.push(ze("EnableSelection","UnlockedCells")):i.push(ze("EnableSelection","NoSelection")),[["formatCells","AllowFormatCells"],["formatColumns","AllowSizeCols"],["formatRows","AllowSizeRows"],["insertColumns","AllowInsertCols"],["insertRows","AllowInsertRows"],["insertHyperlinks","AllowInsertHyperlinks"],["deleteColumns","AllowDeleteCols"],["deleteRows","AllowDeleteRows"],["sort","AllowSort"],["autoFilter","AllowFilter"],["pivotTables","AllowUsePivotTables"]].forEach((function(t){e["!protect"][t[0]]&&i.push("<"+t[1]+"/>")}))),0==i.length?"":Xe("WorksheetOptions",i.join(""),{xmlns:et})}(i,0,e,n)),r.join("")}function mc(e,t,n,r){var i=n,s=[],o=t.slice(t.l,t.l+i);if(r&&r.enc&&r.enc.insitu)switch(e.n){case"BOF":case"FilePass":case"FileLock":case"InterfaceHdr":case"RRDInfo":case"RRDHead":case"UsrExcl":break;default:if(0===o.length)break;r.enc.insitu(o)}s.push(o),t.l+=i;for(var a=Sc[yt(t,t.l)],c=0;null!=a&&"Continue"===a.n.slice(0,8);)i=yt(t,t.l+2),c=t.l+4,"ContinueFrt"==a.n?c+=4:"ContinueFrt"==a.n.slice(0,11)&&(c+=12),s.push(t.slice(c,t.l+4+i)),t.l+=4+i,a=Sc[yt(t,t.l)];var l=E(s);Bt(l,0);var h=0;l.lens=[];for(var d=0;d40||(n.l-=4,t.Reserved1=n.read_shift(0,"lpstr-ansi"),n.length-n.l<=4||1907505652!==(r=n.read_shift(4))||(t.UnicodeClipboardFormat=function(e){return En(e,2)}(n),0==(r=n.read_shift(4))||r>40||(n.l-=4,t.Reserved2=n.read_shift(0,"lpwstr"))))}(n),t.bookProps&&!t.bookSheets)i={};else{var o=C?"buffer":"array";if(r&&r.content)i=function(e,t){var n,r,i,s,o,a,c,h={opts:{}},d={},u=t.dense?[]:{},f={},g={},p=null,m=[],C="",b={},v="",I={},A=[],y=!0,w=[],S=[],x={Sheets:[],WBProps:{date1904:!1},Views:[{}]},E={},k=function(e){return e<8?Mn[e]:e<64&&S[e-8]||Mn[e]},_=function(e,t,r){if(!($>1)&&(r.sheetRows&&e.r>=r.sheetRows&&(y=!1),y)){if(r.cellStyles&&t.XF&&t.XF.data&&function(e,t,n){var r,i=t.XF.data;i&&i.patternType&&n&&n.cellStyles&&(t.s={},t.s.patternType=i.patternType,(r=ts(k(i.icvFore)))&&(t.s.fgColor={rgb:r}),(r=ts(k(i.icvBack)))&&(t.s.bgColor={rgb:r}))}(0,t,r),delete t.ixfe,delete t.XF,n=e,v=Kt(e),g&&g.s&&g.e||(g={s:{r:0,c:0},e:{r:0,c:0}}),e.rg.e.r&&(g.e.r=e.r+1),e.c+1>g.e.c&&(g.e.c=e.c+1),r.cellFormula&&t.f)for(var i=0;ie.c||A[i][0].s.r>e.r||A[i][0].e.c>8)!==z)throw new Error("rt mismatch: "+U+"!="+z);12==X.r&&(e.l+=10,K-=10)}var Y;Y="EOF"===X.n?X.f(e,K,R):mc(X,e,K,R);var J=X.n;if(0==$&&"BOF"!=J)continue;switch(J){case"Date1904":h.opts.Date1904=x.WBProps.date1904=Y;break;case"WriteProtect":h.opts.WriteProtect=!0;break;case"FilePass":if(R.enc||(e.l=0),R.enc=Y,!t.password)throw new Error("File is password-protected");if(null==Y.valid)throw new Error("Encryption scheme unsupported");if(!Y.valid)throw new Error("Password is incorrect");break;case"WriteAccess":R.lastuser=Y;break;case"FileSharing":break;case"CodePage":switch(Y){case 21010:Y=1200;break;case 32768:Y=1e4;break;case 32769:Y=1252}l(R.codepage=Y),j=!0;break;case"RRTabId":R.rrtabid=Y;break;case"WinProtect":R.winlocked=Y;break;case"Template":case"BookBool":case"UsesELFs":case"MTRSettings":break;case"RefreshAll":case"CalcCount":case"CalcDelta":case"CalcIter":case"CalcMode":case"CalcPrecision":case"CalcSaveRecalc":h.opts[J]=Y;break;case"CalcRefMode":R.CalcRefMode=Y;break;case"Uncalced":break;case"ForceFullCalculation":h.opts.FullCalc=Y;break;case"WsBool":Y.fDialog&&(u["!type"]="dialog");break;case"XF":w.push(Y);break;case"ExtSST":case"BookExt":case"RichTextStream":case"BkHim":break;case"SupBook":N.push([Y]),N[N.length-1].XTI=[];break;case"ExternName":N[N.length-1].push(Y);break;case"Index":break;case"Lbl":M={Name:Y.Name,Ref:Po(Y.rgce,0,null,N,R)},Y.itab>0&&(M.Sheet=Y.itab-1),N.names.push(M),N[0]||(N[0]=[],N[0].XTI=[]),N[N.length-1].push(Y),"_xlnm._FilterDatabase"==Y.Name&&Y.itab>0&&Y.rgce&&Y.rgce[0]&&Y.rgce[0][0]&&"PtgArea3d"==Y.rgce[0][0][0]&&(V[Y.itab-1]={ref:Ut(Y.rgce[0][0][1][2])});break;case"ExternCount":R.ExternCount=Y;break;case"ExternSheet":0==N.length&&(N[0]=[],N[0].XTI=[]),N[N.length-1].XTI=N[N.length-1].XTI.concat(Y),N.XTI=N.XTI.concat(Y);break;case"NameCmt":if(R.biff<8)break;null!=M&&(M.Comment=Y[1]);break;case"Protect":u["!protect"]=Y;break;case"Password":0!==Y&&R.WTF&&console.error("Password verifier: "+Y);break;case"Prot4Rev":case"Prot4RevPass":break;case"BoundSheet8":f[Y.pos]=Y,R.snames.push(Y.name);break;case"EOF":if(--$)break;if(g.e){if(g.e.r>0&&g.e.c>0){if(g.e.r--,g.e.c--,u["!ref"]=Ut(g),t.sheetRows&&t.sheetRows<=g.e.r){var Q=g.e.r;g.e.r=t.sheetRows-1,u["!fullref"]=u["!ref"],u["!ref"]=Ut(g),g.e.r=Q}g.e.r++,g.e.c++}B.length>0&&(u["!merges"]=B),O.length>0&&(u["!objects"]=O),L.length>0&&(u["!cols"]=L),P.length>0&&(u["!rows"]=P),x.Sheets.push(E)}""===C?b=u:d[C]=u,u=t.dense?[]:{};break;case"BOF":if(8===R.biff&&(R.biff={9:2,521:3,1033:4}[z]||{512:2,768:3,1024:4,1280:5,1536:8,2:2,7:2}[Y.BIFFVer]||8),8==R.biff&&0==Y.BIFFVer&&16==Y.dt&&(R.biff=2),$++)break;if(y=!0,u=t.dense?[]:{},R.biff<8&&!j&&(j=!0,l(R.codepage=t.codepage||1252)),R.biff<5){""===C&&(C="Sheet1"),g={s:{r:0,c:0},e:{r:0,c:0}};var q={pos:e.l-K,name:C};f[q.pos]=q,R.snames.push(C)}else C=(f[Z]||{name:""}).name;32==Y.dt&&(u["!type"]="chart"),64==Y.dt&&(u["!type"]="macro"),B=[],O=[],R.arrayf=A=[],L=[],P=[],F=!1,E={Hidden:(f[Z]||{hs:0}).hs,name:C};break;case"Number":case"BIFF2NUM":case"BIFF2INT":"chart"==u["!type"]&&(t.dense?(u[Y.r]||[])[Y.c]:u[Kt({c:Y.c,r:Y.r})])&&++Y.c,o={ixfe:Y.ixfe,XF:w[Y.ixfe]||{},v:Y.val,t:"n"},H>0&&(o.z=G[o.ixfe>>8&31]),Cc(o,t,h.opts.Date1904),_({c:Y.c,r:Y.r},o,t);break;case"BoolErr":o={ixfe:Y.ixfe,XF:w[Y.ixfe],v:Y.val,t:Y.t},H>0&&(o.z=G[o.ixfe>>8&31]),Cc(o,t,h.opts.Date1904),_({c:Y.c,r:Y.r},o,t);break;case"RK":o={ixfe:Y.ixfe,XF:w[Y.ixfe],v:Y.rknum,t:"n"},H>0&&(o.z=G[o.ixfe>>8&31]),Cc(o,t,h.opts.Date1904),_({c:Y.c,r:Y.r},o,t);break;case"MulRk":for(var ee=Y.c;ee<=Y.C;++ee){var te=Y.rkrec[ee-Y.c][0];o={ixfe:te,XF:w[te],v:Y.rkrec[ee-Y.c][1],t:"n"},H>0&&(o.z=G[o.ixfe>>8&31]),Cc(o,t,h.opts.Date1904),_({c:ee,r:Y.r},o,t)}break;case"Formula":if("String"==Y.val){p=Y;break}if((o=bc(Y.val,Y.cell.ixfe,Y.tt)).XF=w[o.ixfe],t.cellFormula){var ne=Y.formula;if(ne&&ne[0]&&ne[0][0]&&"PtgExp"==ne[0][0][0]){var re=ne[0][0][1][0],ie=ne[0][0][1][1],se=Kt({r:re,c:ie});I[se]?o.f=""+Po(Y.formula,0,Y.cell,N,R):o.F=((t.dense?(u[re]||[])[ie]:u[se])||{}).F}else o.f=""+Po(Y.formula,0,Y.cell,N,R)}H>0&&(o.z=G[o.ixfe>>8&31]),Cc(o,t,h.opts.Date1904),_(Y.cell,o,t),p=Y;break;case"String":if(!p)throw new Error("String record expects Formula");p.val=Y,(o=bc(Y,p.cell.ixfe,"s")).XF=w[o.ixfe],t.cellFormula&&(o.f=""+Po(p.formula,0,p.cell,N,R)),H>0&&(o.z=G[o.ixfe>>8&31]),Cc(o,t,h.opts.Date1904),_(p.cell,o,t),p=null;break;case"Array":A.push(Y);var oe=Kt(Y[0].s);if(r=t.dense?(u[Y[0].s.r]||[])[Y[0].s.c]:u[oe],t.cellFormula&&r){if(!p)break;if(!oe||!r)break;r.f=""+Po(Y[1],0,Y[0],N,R),r.F=Ut(Y[0])}break;case"ShrFmla":if(!y)break;if(!t.cellFormula)break;if(v){if(!p)break;I[Kt(p.cell)]=Y[0],((r=t.dense?(u[p.cell.r]||[])[p.cell.c]:u[Kt(p.cell)])||{}).f=""+Po(Y[0],0,n,N,R)}break;case"LabelSst":(o=bc(m[Y.isst].t,Y.ixfe,"s")).XF=w[o.ixfe],H>0&&(o.z=G[o.ixfe>>8&31]),Cc(o,t,h.opts.Date1904),_({c:Y.c,r:Y.r},o,t);break;case"Blank":t.sheetStubs&&(o={ixfe:Y.ixfe,XF:w[Y.ixfe],t:"z"},H>0&&(o.z=G[o.ixfe>>8&31]),Cc(o,t,h.opts.Date1904),_({c:Y.c,r:Y.r},o,t));break;case"MulBlank":if(t.sheetStubs)for(var ae=Y.c;ae<=Y.C;++ae){var ce=Y.ixfe[ae-Y.c];o={ixfe:ce,XF:w[ce],t:"z"},H>0&&(o.z=G[o.ixfe>>8&31]),Cc(o,t,h.opts.Date1904),_({c:ae,r:Y.r},o,t)}break;case"RString":case"Label":case"BIFF2STR":(o=bc(Y.val,Y.ixfe,"s")).XF=w[o.ixfe],H>0&&(o.z=G[o.ixfe>>8&31]),Cc(o,t,h.opts.Date1904),_({c:Y.c,r:Y.r},o,t);break;case"Dimensions":1===$&&(g=Y);break;case"SST":m=Y;break;case"Format":if(4==R.biff){G[H++]=Y[1];for(var le=0;le=163&&T.load(Y[1],H+163)}else T.load(Y[1],Y[0]);break;case"BIFF2FORMAT":G[H++]=Y;for(var he=0;he=163&&T.load(Y,H+163);break;case"MergeCells":B=B.concat(Y);break;case"Obj":O[Y.cmo[0]]=R.lastobj=Y;break;case"TxO":R.lastobj.TxO=Y;break;case"ImData":R.lastobj.ImData=Y;break;case"HLink":for(s=Y[0].s.r;s<=Y[0].e.r;++s)for(i=Y[0].s.c;i<=Y[0].e.c;++i)(r=t.dense?(u[s]||[])[i]:u[Kt({c:i,r:s})])&&(r.l=Y[1]);break;case"HLinkTooltip":for(s=Y[0].s.r;s<=Y[0].e.r;++s)for(i=Y[0].s.c;i<=Y[0].e.c;++i)(r=t.dense?(u[s]||[])[i]:u[Kt({c:i,r:s})])&&r.l&&(r.l.Tooltip=Y[1]);break;case"Note":if(R.biff<=5&&R.biff>=2)break;r=t.dense?(u[Y[0].r]||[])[Y[0].c]:u[Kt(Y[0])];var de=O[Y[2]];r||(t.dense?(u[Y[0].r]||(u[Y[0].r]=[]),r=u[Y[0].r][Y[0].c]={t:"z"}):r=u[Kt(Y[0])]={t:"z"},g.e.r=Math.max(g.e.r,Y[0].r),g.s.r=Math.min(g.s.r,Y[0].r),g.e.c=Math.max(g.e.c,Y[0].c),g.s.c=Math.min(g.s.c,Y[0].c)),r.c||(r.c=[]),r.c.push({a:Y[1],t:de.TxO.t});break;default:switch(X.n){case"ClrtClient":break;case"XFExt":Y.ext.forEach((function(e){}));break;case"DefColWidth":case"DefaultRowHeight":break;case"ColInfo":if(!R.cellStyles)break;for(;Y.e>=Y.s;)L[Y.e--]={width:Y.w/256},F||(F=!0,cs(Y.w/256)),ls(L[Y.e+1]);break;case"Row":var ue={};null!=Y.level&&(P[Y.r]=ue,ue.level=Y.level),Y.hidden&&(P[Y.r]=ue,ue.hidden=!0),Y.hpt&&(P[Y.r]=ue,ue.hpt=Y.hpt,ue.hpx=ds(Y.hpt));break;case"LeftMargin":case"RightMargin":case"TopMargin":case"BottomMargin":u["!margins"]||ea(u["!margins"]={}),u["!margins"][J.slice(0,-6).toLowerCase()]=Y;break;case"Setup":u["!margins"]||ea(u["!margins"]={}),u["!margins"].header=Y.header,u["!margins"].footer=Y.footer;break;case"Window2":Y.RTL&&(x.Views[0].RTL=!0);break;case"Header":case"Footer":case"HCenter":case"VCenter":case"Pls":case"GCW":case"LHRecord":case"DBCell":case"EntExU2":case"SxView":case"Sxvd":case"SXVI":case"SXVDEx":case"SxIvd":case"SXString":case"Sync":case"Addin":case"SXDI":case"SXLI":case"SXEx":case"QsiSXTag":case"Selection":case"Feat":break;case"FeatHdr":case"FeatHdr11":break;case"Feature11":case"Feature12":case"List12":break;case"Country":a=Y;break;case"RecalcId":case"DxGCol":break;case"Fbi":case"Fbi2":case"GelFrame":case"Font":case"XFCRC":case"Style":case"StyleExt":break;case"Palette":S=Y;break;case"Theme":c=Y;break;case"ScenarioProtect":case"ObjProtect":case"CondFmt12":case"Table":case"TableStyles":case"TableStyle":case"TableStyleElement":case"SXStreamID":case"SXVS":case"DConRef":case"SXAddl":case"DConBin":case"DConName":case"SXPI":case"SxFormat":case"SxSelect":case"SxRule":case"SxFilt":case"SxItm":case"SxDXF":case"ScenMan":case"DCon":case"CellWatch":case"PrintRowCol":case"PrintGrid":case"PrintSize":case"XCT":case"CRN":case"Scl":case"SheetExt":case"SheetExtOptional":case"ObNoMacros":case"ObProj":break;case"CodeName":C?E.CodeName=Y||E.name:x.WBProps.CodeName=Y||"ThisWorkbook";break;case"GUIDTypeLib":case"WOpt":case"PhoneticInfo":case"OleObjectSize":break;case"DXF":case"DXFN":case"DXFN12":case"DXFN12List":case"DXFN12NoCB":break;case"Dv":case"DVal":break;case"BRAI":case"Series":case"SeriesText":case"DConn":case"DbOrParamQry":case"DBQueryExt":case"OleDbConn":case"ExtString":case"IFmtRecord":break;case"CondFmt":case"CF":case"CF12":case"CFEx":case"Excel9File":case"Units":break;case"InterfaceHdr":case"Mms":case"InterfaceEnd":case"DSF":case"BuiltInFnGroupCount":break;case"Window1":case"HideObj":case"GridSet":case"Guts":case"UserBView":case"UserSViewBegin":case"UserSViewEnd":case"Pane":break;default:switch(X.n){case"Dat":case"Begin":case"End":case"StartBlock":case"EndBlock":case"Frame":case"Area":case"Axis":case"AxisLine":case"Tick":break;case"AxesUsed":case"CrtLayout12":case"CrtLayout12A":case"CrtLink":case"CrtLine":case"CrtMlFrt":case"CrtMlFrtContinue":break;case"LineFormat":case"AreaFormat":case"Chart":case"Chart3d":case"Chart3DBarShape":case"ChartFormat":case"ChartFrtInfo":break;case"PlotArea":case"PlotGrowth":break;case"SeriesList":case"SerParent":case"SerAuxTrend":break;case"DataFormat":case"SerToCrt":case"FontX":break;case"CatSerRange":case"AxcExt":case"SerFmt":case"ShtProps":break;case"DefaultText":case"Text":case"CatLab":case"DataLabExtContents":break;case"Legend":case"LegendException":break;case"Pie":case"Scatter":break;case"PieFormat":case"MarkerFormat":break;case"StartObject":case"EndObject":break;case"AlRuns":case"ObjectLink":case"SIIndex":break;case"AttachedLabel":case"YMult":break;case"Line":case"Bar":case"Surf":case"AxisParent":case"Pos":case"ValueRange":case"SXViewEx9":case"SXViewLink":case"PivotChartBits":case"SBaseRef":case"TextPropsStream":case"LnExt":case"MkrExt":case"CrtCoopt":break;case"Qsi":case"Qsif":case"Qsir":case"QsiSXTag":case"TxtQry":case"FilterMode":break;case"AutoFilter":case"AutoFilterInfo":case"AutoFilter12":case"DropDownObjIds":case"Sort":case"SortData":case"ShapePropsStream":break;case"MsoDrawing":case"MsoDrawingGroup":case"MsoDrawingSelection":break;case"WebPub":case"AutoWebPub":break;case"HeaderFooter":case"HFPicture":case"PLV":case"HorizontalPageBreaks":case"VerticalPageBreaks":break;case"Backup":case"CompressPictures":case"Compat12":break;case"Continue":case"ContinueFrt12":break;case"FrtFontList":case"FrtWrapper":break;default:switch(X.n){case"TabIdConf":case"Radar":case"RadarArea":case"DropBar":case"Intl":case"CoordList":case"SerAuxErrBar":break;case"BIFF2FONTCLR":case"BIFF2FMTCNT":case"BIFF2FONTXTRA":break;case"BIFF2XF":case"BIFF3XF":case"BIFF4XF":break;case"BIFF4FMTCNT":case"BIFF2ROW":case"BIFF2WINDOW2":break;case"SCENARIO":case"DConBin":case"PicF":case"DataLabExt":case"Lel":case"BopPop":case"BopPopCustom":case"RealTimeData":case"Name":break;case"LHNGraph":case"FnGroupName":case"AddMenu":case"LPr":break;case"ListObj":case"ListField":case"RRSort":case"BigName":break;case"ToolbarHdr":case"ToolbarEnd":case"DDEObjName":case"FRTArchId$":break;default:if(t.WTF)throw"Unrecognized Record "+X.n}}}}}else e.l+=K}return h.SheetNames=W(f).sort((function(e,t){return Number(e)-Number(t)})).map((function(e){return f[e].name})),t.bookSheets||(h.Sheets=d),h.Sheets&&V.forEach((function(e,t){h.Sheets[h.SheetNames[t]]["!autofilter"]=e})),h.Preamble=b,h.Strings=m,h.SSF=T.get_table(),R.enc&&(h.Encryption=R.enc),c&&(h.Themes=c),h.Metadata={},void 0!==a&&(h.Metadata.Country=a),N.names.length>0&&(x.Names=N.names),h.Workbook=x,h}(r.content,t);else if((s=N.find(e,"PerfectOffice_MAIN"))&&s.content)i=ki.to_workbook(s.content,(t.type=o,t));else{if(!(s=N.find(e,"NativeContent_MAIN"))||!s.content)throw new Error("Cannot find Workbook stream");i=ki.to_workbook(s.content,(t.type=o,t))}t.bookVBA&&e.FullPaths&&N.find(e,"/_VBA_PROJECT_CUR/VBA/dir")&&(i.vbaraw=function(e){var t=N.utils.cfb_new({root:"R"});return e.FullPaths.forEach((function(n,r){if("/"!==n.slice(-1)&&n.match(/_VBA_PROJECT_CUR/)){var i=n.replace(/^[^\/]*/,"R").replace(/\/_VBA_PROJECT_CUR\u0000*/,"");N.utils.cfb_add(t,i,e.FileIndex[r].content)}})),N.write(t)}(e))}var a={};return e.FullPaths&&function(e,t,n){var r=N.find(e,"!DocumentSummaryInformation");if(r&&r.size>0)try{var i=xr(r,Tn,Ic);for(var s in i)t[s]=i[s]}catch(El){if(n.WTF)throw El}var o=N.find(e,"!SummaryInformation");if(o&&o.size>0)try{var a=xr(o,Rn,vc);for(var c in a)null==t[c]&&(t[c]=a[c])}catch(El){if(n.WTF)throw El}t.HeadingPairs&&t.TitlesOfParts&&(ir(t.HeadingPairs,t.TitlesOfParts,t,n),delete t.HeadingPairs,delete t.TitlesOfParts)}(e,a,t),i.Props=i.Custprops=a,t.bookFiles&&(i.cfb=e),i}var yc={0:{n:"BrtRowHdr",f:function(e,t){var n={},r=e.l+t;n.r=e.read_shift(4),e.l+=4;var i=e.read_shift(2);e.l+=1;var s=e.read_shift(1);return e.l=r,7&s&&(n.level=7&s),16&s&&(n.hidden=!0),32&s&&(n.hpt=i/20),n}},1:{n:"BrtCellBlank",f:function(e){return[cn(e)]}},2:{n:"BrtCellRk",f:function(e){return[cn(e),Cn(e),"n"]}},3:{n:"BrtCellError",f:function(e){return[cn(e),e.read_shift(1),"e"]}},4:{n:"BrtCellBool",f:function(e){return[cn(e),e.read_shift(1),"b"]}},5:{n:"BrtCellReal",f:function(e){return[cn(e),An(e),"n"]}},6:{n:"BrtCellSt",f:function(e){return[cn(e),nn(e),"str"]}},7:{n:"BrtCellIsst",f:function(e){return[cn(e),e.read_shift(4),"s"]}},8:{n:"BrtFmlaString",f:function(e,t,n){var r=e.l+t,i=cn(e);i.r=n["!row"];var s=[i,nn(e),"str"];if(n.cellFormula){e.l+=2;var o=Wo(e,r-e.l,n);s[3]=Po(o,0,i,n.supbooks,n)}else e.l=r;return s}},9:{n:"BrtFmlaNum",f:function(e,t,n){var r=e.l+t,i=cn(e);i.r=n["!row"];var s=[i,An(e),"n"];if(n.cellFormula){e.l+=2;var o=Wo(e,r-e.l,n);s[3]=Po(o,0,i,n.supbooks,n)}else e.l=r;return s}},10:{n:"BrtFmlaBool",f:function(e,t,n){var r=e.l+t,i=cn(e);i.r=n["!row"];var s=[i,e.read_shift(1),"b"];if(n.cellFormula){e.l+=2;var o=Wo(e,r-e.l,n);s[3]=Po(o,0,i,n.supbooks,n)}else e.l=r;return s}},11:{n:"BrtFmlaError",f:function(e,t,n){var r=e.l+t,i=cn(e);i.r=n["!row"];var s=[i,e.read_shift(1),"e"];if(n.cellFormula){e.l+=2;var o=Wo(e,r-e.l,n);s[3]=Po(o,0,i,n.supbooks,n)}else e.l=r;return s}},16:{n:"BrtFRTArchID$",f:function(e,t){var n={};return e.read_shift(4),n.ArchID=e.read_shift(4),e.l+=t-8,n}},19:{n:"BrtSSTItem",f:on},20:{n:"BrtPCDIMissing"},21:{n:"BrtPCDINumber"},22:{n:"BrtPCDIBoolean"},23:{n:"BrtPCDIError"},24:{n:"BrtPCDIString"},25:{n:"BrtPCDIDatetime"},26:{n:"BrtPCDIIndex"},27:{n:"BrtPCDIAMissing"},28:{n:"BrtPCDIANumber"},29:{n:"BrtPCDIABoolean"},30:{n:"BrtPCDIAError"},31:{n:"BrtPCDIAString"},32:{n:"BrtPCDIADatetime"},33:{n:"BrtPCRRecord"},34:{n:"BrtPCRRecordDt"},35:{n:"BrtFRTBegin"},36:{n:"BrtFRTEnd"},37:{n:"BrtACBegin"},38:{n:"BrtACEnd"},39:{n:"BrtName",f:function(e,t,n){var r=e.l+t;e.l+=4,e.l+=1;var i=e.read_shift(4),s=gn(e),o=Ho(e,0,n),a=un(e);e.l=r;var c={Name:s,Ptg:o};return i<268435455&&(c.Sheet=i),a&&(c.Comment=a),c}},40:{n:"BrtIndexRowBlock"},42:{n:"BrtIndexBlock"},43:{n:"BrtFont",f:function(e,t,n){var r={};r.sz=e.read_shift(2)/20;var i=function(e){var t=e.read_shift(1);return e.l++,{fItalic:2&t,fStrikeout:8&t,fOutline:16&t,fShadow:32&t,fCondense:64&t,fExtend:128&t}}(e);switch(i.fCondense&&(r.condense=1),i.fExtend&&(r.extend=1),i.fShadow&&(r.shadow=1),i.fOutline&&(r.outline=1),i.fStrikeout&&(r.strike=1),i.fItalic&&(r.italic=1),700===e.read_shift(2)&&(r.bold=1),e.read_shift(2)){case 1:r.vertAlign="superscript";break;case 2:r.vertAlign="subscript"}var s=e.read_shift(1);0!=s&&(r.underline=s);var o=e.read_shift(1);o>0&&(r.family=o);var a=e.read_shift(1);switch(a>0&&(r.charset=a),e.l++,r.color=function(e){var t={},n=e.read_shift(1)>>>1,r=e.read_shift(1),i=e.read_shift(2,"i"),s=e.read_shift(1),o=e.read_shift(1),a=e.read_shift(1);switch(e.l++,n){case 0:t.auto=1;break;case 1:t.index=r;var c=Mn[r];c&&(t.rgb=ts(c));break;case 2:t.rgb=ts([s,o,a]);break;case 3:t.theme=r}return 0!=i&&(t.tint=i>0?i/32767:i/32768),t}(e),e.read_shift(1)){case 1:r.scheme="major";break;case 2:r.scheme="minor"}return r.name=nn(e),r}},44:{n:"BrtFmt",f:function(e,t){return[e.read_shift(2),nn(e)]}},45:{n:"BrtFill",f:xs},46:{n:"BrtBorder",f:Ts},47:{n:"BrtXF",f:function(e,t){var n=e.l+t,r=e.read_shift(2),i=e.read_shift(2);return e.l=n,{ixfe:r,numFmtId:i}}},48:{n:"BrtStyle"},49:{n:"BrtCellMeta"},50:{n:"BrtValueMeta"},51:{n:"BrtMdb"},52:{n:"BrtBeginFmd"},53:{n:"BrtEndFmd"},54:{n:"BrtBeginMdx"},55:{n:"BrtEndMdx"},56:{n:"BrtBeginMdxTuple"},57:{n:"BrtEndMdxTuple"},58:{n:"BrtMdxMbrIstr"},59:{n:"BrtStr"},60:{n:"BrtColInfo",f:bi},62:{n:"BrtCellRString"},63:{n:"BrtCalcChainItem$",f:function(e){var t={};t.i=e.read_shift(4);var n={};n.r=e.read_shift(4),n.c=e.read_shift(4),t.r=Kt(n);var r=e.read_shift(1);return 2&r&&(t.l="1"),8&r&&(t.a="1"),t}},64:{n:"BrtDVal"},65:{n:"BrtSxvcellNum"},66:{n:"BrtSxvcellStr"},67:{n:"BrtSxvcellBool"},68:{n:"BrtSxvcellErr"},69:{n:"BrtSxvcellDate"},70:{n:"BrtSxvcellNil"},128:{n:"BrtFileVersion"},129:{n:"BrtBeginSheet"},130:{n:"BrtEndSheet"},131:{n:"BrtBeginBook",f:Ot,p:0},132:{n:"BrtEndBook"},133:{n:"BrtBeginWsViews"},134:{n:"BrtEndWsViews"},135:{n:"BrtBeginBookViews"},136:{n:"BrtEndBookViews"},137:{n:"BrtBeginWsView",f:function(e){var t=e.read_shift(2);return e.l+=28,{RTL:32&t}}},138:{n:"BrtEndWsView"},139:{n:"BrtBeginCsViews"},140:{n:"BrtEndCsViews"},141:{n:"BrtBeginCsView"},142:{n:"BrtEndCsView"},143:{n:"BrtBeginBundleShs"},144:{n:"BrtEndBundleShs"},145:{n:"BrtBeginSheetData"},146:{n:"BrtEndSheetData"},147:{n:"BrtWsProp",f:function(e,t){var n={};return e.l+=19,n.name=hn(e,t-19),n}},148:{n:"BrtWsDim",f:ka,p:16},151:{n:"BrtPane"},152:{n:"BrtSel"},153:{n:"BrtWbProp",f:function(e,t){var n={},r=e.read_shift(4);n.defaultThemeVersion=e.read_shift(4);var i=t>8?nn(e):"";return i.length>0&&(n.CodeName=i),n.autoCompressPictures=!!(65536&r),n.backupFile=!!(64&r),n.checkCompatibility=!!(4096&r),n.date1904=!!(1&r),n.filterPrivacy=!!(8&r),n.hidePivotFieldList=!!(1024&r),n.promptedSolutions=!!(16&r),n.publishItems=!!(2048&r),n.refreshAllConnections=!!(262144&r),n.saveExternalLinkValues=!!(128&r),n.showBorderUnselectedTables=!!(4&r),n.showInkAnnotation=!!(32&r),n.showObjects=["all","placeholders","none"][r>>13&3],n.showPivotChartFilter=!!(32768&r),n.updateLinks=["userSet","never","always"][r>>8&3],n}},154:{n:"BrtWbFactoid"},155:{n:"BrtFileRecover"},156:{n:"BrtBundleSh",f:function(e,t){var n={};return n.Hidden=e.read_shift(4),n.iTabID=e.read_shift(4),n.strRelID=pn(e,t-8),n.name=nn(e),n}},157:{n:"BrtCalcProp"},158:{n:"BrtBookView"},159:{n:"BrtBeginSst",f:function(e){return[e.read_shift(4),e.read_shift(4)]}},160:{n:"BrtEndSst"},161:{n:"BrtBeginAFilter",f:vn},162:{n:"BrtEndAFilter"},163:{n:"BrtBeginFilterColumn"},164:{n:"BrtEndFilterColumn"},165:{n:"BrtBeginFilters"},166:{n:"BrtEndFilters"},167:{n:"BrtFilter"},168:{n:"BrtColorFilter"},169:{n:"BrtIconFilter"},170:{n:"BrtTop10Filter"},171:{n:"BrtDynamicFilter"},172:{n:"BrtBeginCustomFilters"},173:{n:"BrtEndCustomFilters"},174:{n:"BrtCustomFilter"},175:{n:"BrtAFilterDateGroupItem"},176:{n:"BrtMergeCell",f:Ta},177:{n:"BrtBeginMergeCells"},178:{n:"BrtEndMergeCells"},179:{n:"BrtBeginPivotCacheDef"},180:{n:"BrtEndPivotCacheDef"},181:{n:"BrtBeginPCDFields"},182:{n:"BrtEndPCDFields"},183:{n:"BrtBeginPCDField"},184:{n:"BrtEndPCDField"},185:{n:"BrtBeginPCDSource"},186:{n:"BrtEndPCDSource"},187:{n:"BrtBeginPCDSRange"},188:{n:"BrtEndPCDSRange"},189:{n:"BrtBeginPCDFAtbl"},190:{n:"BrtEndPCDFAtbl"},191:{n:"BrtBeginPCDIRun"},192:{n:"BrtEndPCDIRun"},193:{n:"BrtBeginPivotCacheRecords"},194:{n:"BrtEndPivotCacheRecords"},195:{n:"BrtBeginPCDHierarchies"},196:{n:"BrtEndPCDHierarchies"},197:{n:"BrtBeginPCDHierarchy"},198:{n:"BrtEndPCDHierarchy"},199:{n:"BrtBeginPCDHFieldsUsage"},200:{n:"BrtEndPCDHFieldsUsage"},201:{n:"BrtBeginExtConnection"},202:{n:"BrtEndExtConnection"},203:{n:"BrtBeginECDbProps"},204:{n:"BrtEndECDbProps"},205:{n:"BrtBeginECOlapProps"},206:{n:"BrtEndECOlapProps"},207:{n:"BrtBeginPCDSConsol"},208:{n:"BrtEndPCDSConsol"},209:{n:"BrtBeginPCDSCPages"},210:{n:"BrtEndPCDSCPages"},211:{n:"BrtBeginPCDSCPage"},212:{n:"BrtEndPCDSCPage"},213:{n:"BrtBeginPCDSCPItem"},214:{n:"BrtEndPCDSCPItem"},215:{n:"BrtBeginPCDSCSets"},216:{n:"BrtEndPCDSCSets"},217:{n:"BrtBeginPCDSCSet"},218:{n:"BrtEndPCDSCSet"},219:{n:"BrtBeginPCDFGroup"},220:{n:"BrtEndPCDFGroup"},221:{n:"BrtBeginPCDFGItems"},222:{n:"BrtEndPCDFGItems"},223:{n:"BrtBeginPCDFGRange"},224:{n:"BrtEndPCDFGRange"},225:{n:"BrtBeginPCDFGDiscrete"},226:{n:"BrtEndPCDFGDiscrete"},227:{n:"BrtBeginPCDSDTupleCache"},228:{n:"BrtEndPCDSDTupleCache"},229:{n:"BrtBeginPCDSDTCEntries"},230:{n:"BrtEndPCDSDTCEntries"},231:{n:"BrtBeginPCDSDTCEMembers"},232:{n:"BrtEndPCDSDTCEMembers"},233:{n:"BrtBeginPCDSDTCEMember"},234:{n:"BrtEndPCDSDTCEMember"},235:{n:"BrtBeginPCDSDTCQueries"},236:{n:"BrtEndPCDSDTCQueries"},237:{n:"BrtBeginPCDSDTCQuery"},238:{n:"BrtEndPCDSDTCQuery"},239:{n:"BrtBeginPCDSDTCSets"},240:{n:"BrtEndPCDSDTCSets"},241:{n:"BrtBeginPCDSDTCSet"},242:{n:"BrtEndPCDSDTCSet"},243:{n:"BrtBeginPCDCalcItems"},244:{n:"BrtEndPCDCalcItems"},245:{n:"BrtBeginPCDCalcItem"},246:{n:"BrtEndPCDCalcItem"},247:{n:"BrtBeginPRule"},248:{n:"BrtEndPRule"},249:{n:"BrtBeginPRFilters"},250:{n:"BrtEndPRFilters"},251:{n:"BrtBeginPRFilter"},252:{n:"BrtEndPRFilter"},253:{n:"BrtBeginPNames"},254:{n:"BrtEndPNames"},255:{n:"BrtBeginPName"},256:{n:"BrtEndPName"},257:{n:"BrtBeginPNPairs"},258:{n:"BrtEndPNPairs"},259:{n:"BrtBeginPNPair"},260:{n:"BrtEndPNPair"},261:{n:"BrtBeginECWebProps"},262:{n:"BrtEndECWebProps"},263:{n:"BrtBeginEcWpTables"},264:{n:"BrtEndECWPTables"},265:{n:"BrtBeginECParams"},266:{n:"BrtEndECParams"},267:{n:"BrtBeginECParam"},268:{n:"BrtEndECParam"},269:{n:"BrtBeginPCDKPIs"},270:{n:"BrtEndPCDKPIs"},271:{n:"BrtBeginPCDKPI"},272:{n:"BrtEndPCDKPI"},273:{n:"BrtBeginDims"},274:{n:"BrtEndDims"},275:{n:"BrtBeginDim"},276:{n:"BrtEndDim"},277:{n:"BrtIndexPartEnd"},278:{n:"BrtBeginStyleSheet"},279:{n:"BrtEndStyleSheet"},280:{n:"BrtBeginSXView"},281:{n:"BrtEndSXVI"},282:{n:"BrtBeginSXVI"},283:{n:"BrtBeginSXVIs"},284:{n:"BrtEndSXVIs"},285:{n:"BrtBeginSXVD"},286:{n:"BrtEndSXVD"},287:{n:"BrtBeginSXVDs"},288:{n:"BrtEndSXVDs"},289:{n:"BrtBeginSXPI"},290:{n:"BrtEndSXPI"},291:{n:"BrtBeginSXPIs"},292:{n:"BrtEndSXPIs"},293:{n:"BrtBeginSXDI"},294:{n:"BrtEndSXDI"},295:{n:"BrtBeginSXDIs"},296:{n:"BrtEndSXDIs"},297:{n:"BrtBeginSXLI"},298:{n:"BrtEndSXLI"},299:{n:"BrtBeginSXLIRws"},300:{n:"BrtEndSXLIRws"},301:{n:"BrtBeginSXLICols"},302:{n:"BrtEndSXLICols"},303:{n:"BrtBeginSXFormat"},304:{n:"BrtEndSXFormat"},305:{n:"BrtBeginSXFormats"},306:{n:"BrtEndSxFormats"},307:{n:"BrtBeginSxSelect"},308:{n:"BrtEndSxSelect"},309:{n:"BrtBeginISXVDRws"},310:{n:"BrtEndISXVDRws"},311:{n:"BrtBeginISXVDCols"},312:{n:"BrtEndISXVDCols"},313:{n:"BrtEndSXLocation"},314:{n:"BrtBeginSXLocation"},315:{n:"BrtEndSXView"},316:{n:"BrtBeginSXTHs"},317:{n:"BrtEndSXTHs"},318:{n:"BrtBeginSXTH"},319:{n:"BrtEndSXTH"},320:{n:"BrtBeginISXTHRws"},321:{n:"BrtEndISXTHRws"},322:{n:"BrtBeginISXTHCols"},323:{n:"BrtEndISXTHCols"},324:{n:"BrtBeginSXTDMPS"},325:{n:"BrtEndSXTDMPs"},326:{n:"BrtBeginSXTDMP"},327:{n:"BrtEndSXTDMP"},328:{n:"BrtBeginSXTHItems"},329:{n:"BrtEndSXTHItems"},330:{n:"BrtBeginSXTHItem"},331:{n:"BrtEndSXTHItem"},332:{n:"BrtBeginMetadata"},333:{n:"BrtEndMetadata"},334:{n:"BrtBeginEsmdtinfo"},335:{n:"BrtMdtinfo"},336:{n:"BrtEndEsmdtinfo"},337:{n:"BrtBeginEsmdb"},338:{n:"BrtEndEsmdb"},339:{n:"BrtBeginEsfmd"},340:{n:"BrtEndEsfmd"},341:{n:"BrtBeginSingleCells"},342:{n:"BrtEndSingleCells"},343:{n:"BrtBeginList"},344:{n:"BrtEndList"},345:{n:"BrtBeginListCols"},346:{n:"BrtEndListCols"},347:{n:"BrtBeginListCol"},348:{n:"BrtEndListCol"},349:{n:"BrtBeginListXmlCPr"},350:{n:"BrtEndListXmlCPr"},351:{n:"BrtListCCFmla"},352:{n:"BrtListTrFmla"},353:{n:"BrtBeginExternals"},354:{n:"BrtEndExternals"},355:{n:"BrtSupBookSrc",f:pn},357:{n:"BrtSupSelf"},358:{n:"BrtSupSame"},359:{n:"BrtSupTabs"},360:{n:"BrtBeginSupBook"},361:{n:"BrtPlaceholderName"},362:{n:"BrtExternSheet",f:fi},363:{n:"BrtExternTableStart"},364:{n:"BrtExternTableEnd"},366:{n:"BrtExternRowHdr"},367:{n:"BrtExternCellBlank"},368:{n:"BrtExternCellReal"},369:{n:"BrtExternCellBool"},370:{n:"BrtExternCellError"},371:{n:"BrtExternCellString"},372:{n:"BrtBeginEsmdx"},373:{n:"BrtEndEsmdx"},374:{n:"BrtBeginMdxSet"},375:{n:"BrtEndMdxSet"},376:{n:"BrtBeginMdxMbrProp"},377:{n:"BrtEndMdxMbrProp"},378:{n:"BrtBeginMdxKPI"},379:{n:"BrtEndMdxKPI"},380:{n:"BrtBeginEsstr"},381:{n:"BrtEndEsstr"},382:{n:"BrtBeginPRFItem"},383:{n:"BrtEndPRFItem"},384:{n:"BrtBeginPivotCacheIDs"},385:{n:"BrtEndPivotCacheIDs"},386:{n:"BrtBeginPivotCacheID"},387:{n:"BrtEndPivotCacheID"},388:{n:"BrtBeginISXVIs"},389:{n:"BrtEndISXVIs"},390:{n:"BrtBeginColInfos"},391:{n:"BrtEndColInfos"},392:{n:"BrtBeginRwBrk"},393:{n:"BrtEndRwBrk"},394:{n:"BrtBeginColBrk"},395:{n:"BrtEndColBrk"},396:{n:"BrtBrk"},397:{n:"BrtUserBookView"},398:{n:"BrtInfo"},399:{n:"BrtCUsr"},400:{n:"BrtUsr"},401:{n:"BrtBeginUsers"},403:{n:"BrtEOF"},404:{n:"BrtUCR"},405:{n:"BrtRRInsDel"},406:{n:"BrtRREndInsDel"},407:{n:"BrtRRMove"},408:{n:"BrtRREndMove"},409:{n:"BrtRRChgCell"},410:{n:"BrtRREndChgCell"},411:{n:"BrtRRHeader"},412:{n:"BrtRRUserView"},413:{n:"BrtRRRenSheet"},414:{n:"BrtRRInsertSh"},415:{n:"BrtRRDefName"},416:{n:"BrtRRNote"},417:{n:"BrtRRConflict"},418:{n:"BrtRRTQSIF"},419:{n:"BrtRRFormat"},420:{n:"BrtRREndFormat"},421:{n:"BrtRRAutoFmt"},422:{n:"BrtBeginUserShViews"},423:{n:"BrtBeginUserShView"},424:{n:"BrtEndUserShView"},425:{n:"BrtEndUserShViews"},426:{n:"BrtArrFmla",f:function(e,t,n){var r=e.l+t,i=bn(e),s=e.read_shift(1),o=[i];if(o[2]=s,n.cellFormula){var a=$o(e,r-e.l,n);o[1]=a}else e.l=r;return o}},427:{n:"BrtShrFmla",f:function(e,t,n){var r=e.l+t,i=[vn(e,16)];if(n.cellFormula){var s=Go(e,r-e.l,n);i[1]=s,e.l=r}else e.l=r;return i}},428:{n:"BrtTable"},429:{n:"BrtBeginExtConnections"},430:{n:"BrtEndExtConnections"},431:{n:"BrtBeginPCDCalcMems"},432:{n:"BrtEndPCDCalcMems"},433:{n:"BrtBeginPCDCalcMem"},434:{n:"BrtEndPCDCalcMem"},435:{n:"BrtBeginPCDHGLevels"},436:{n:"BrtEndPCDHGLevels"},437:{n:"BrtBeginPCDHGLevel"},438:{n:"BrtEndPCDHGLevel"},439:{n:"BrtBeginPCDHGLGroups"},440:{n:"BrtEndPCDHGLGroups"},441:{n:"BrtBeginPCDHGLGroup"},442:{n:"BrtEndPCDHGLGroup"},443:{n:"BrtBeginPCDHGLGMembers"},444:{n:"BrtEndPCDHGLGMembers"},445:{n:"BrtBeginPCDHGLGMember"},446:{n:"BrtEndPCDHGLGMember"},447:{n:"BrtBeginQSI"},448:{n:"BrtEndQSI"},449:{n:"BrtBeginQSIR"},450:{n:"BrtEndQSIR"},451:{n:"BrtBeginDeletedNames"},452:{n:"BrtEndDeletedNames"},453:{n:"BrtBeginDeletedName"},454:{n:"BrtEndDeletedName"},455:{n:"BrtBeginQSIFs"},456:{n:"BrtEndQSIFs"},457:{n:"BrtBeginQSIF"},458:{n:"BrtEndQSIF"},459:{n:"BrtBeginAutoSortScope"},460:{n:"BrtEndAutoSortScope"},461:{n:"BrtBeginConditionalFormatting"},462:{n:"BrtEndConditionalFormatting"},463:{n:"BrtBeginCFRule"},464:{n:"BrtEndCFRule"},465:{n:"BrtBeginIconSet"},466:{n:"BrtEndIconSet"},467:{n:"BrtBeginDatabar"},468:{n:"BrtEndDatabar"},469:{n:"BrtBeginColorScale"},470:{n:"BrtEndColorScale"},471:{n:"BrtCFVO"},472:{n:"BrtExternValueMeta"},473:{n:"BrtBeginColorPalette"},474:{n:"BrtEndColorPalette"},475:{n:"BrtIndexedColor"},476:{n:"BrtMargins",f:function(e){var t={};return Ba.forEach((function(n){t[n]=An(e)})),t}},477:{n:"BrtPrintOptions"},478:{n:"BrtPageSetup"},479:{n:"BrtBeginHeaderFooter"},480:{n:"BrtEndHeaderFooter"},481:{n:"BrtBeginSXCrtFormat"},482:{n:"BrtEndSXCrtFormat"},483:{n:"BrtBeginSXCrtFormats"},484:{n:"BrtEndSXCrtFormats"},485:{n:"BrtWsFmtInfo",f:function(){}},486:{n:"BrtBeginMgs"},487:{n:"BrtEndMGs"},488:{n:"BrtBeginMGMaps"},489:{n:"BrtEndMGMaps"},490:{n:"BrtBeginMG"},491:{n:"BrtEndMG"},492:{n:"BrtBeginMap"},493:{n:"BrtEndMap"},494:{n:"BrtHLink",f:function(e,t){var n=e.l+t,r=vn(e,16),i=un(e),s=nn(e),o=nn(e),a=nn(e);e.l=n;var c={rfx:r,relId:i,loc:s,display:a};return o&&(c.Tooltip=o),c}},495:{n:"BrtBeginDCon"},496:{n:"BrtEndDCon"},497:{n:"BrtBeginDRefs"},498:{n:"BrtEndDRefs"},499:{n:"BrtDRef"},500:{n:"BrtBeginScenMan"},501:{n:"BrtEndScenMan"},502:{n:"BrtBeginSct"},503:{n:"BrtEndSct"},504:{n:"BrtSlc"},505:{n:"BrtBeginDXFs"},506:{n:"BrtEndDXFs"},507:{n:"BrtDXF"},508:{n:"BrtBeginTableStyles"},509:{n:"BrtEndTableStyles"},510:{n:"BrtBeginTableStyle"},511:{n:"BrtEndTableStyle"},512:{n:"BrtTableStyleElement"},513:{n:"BrtTableStyleClient"},514:{n:"BrtBeginVolDeps"},515:{n:"BrtEndVolDeps"},516:{n:"BrtBeginVolType"},517:{n:"BrtEndVolType"},518:{n:"BrtBeginVolMain"},519:{n:"BrtEndVolMain"},520:{n:"BrtBeginVolTopic"},521:{n:"BrtEndVolTopic"},522:{n:"BrtVolSubtopic"},523:{n:"BrtVolRef"},524:{n:"BrtVolNum"},525:{n:"BrtVolErr"},526:{n:"BrtVolStr"},527:{n:"BrtVolBool"},528:{n:"BrtBeginCalcChain$"},529:{n:"BrtEndCalcChain$"},530:{n:"BrtBeginSortState"},531:{n:"BrtEndSortState"},532:{n:"BrtBeginSortCond"},533:{n:"BrtEndSortCond"},534:{n:"BrtBookProtection"},535:{n:"BrtSheetProtection"},536:{n:"BrtRangeProtection"},537:{n:"BrtPhoneticInfo"},538:{n:"BrtBeginECTxtWiz"},539:{n:"BrtEndECTxtWiz"},540:{n:"BrtBeginECTWFldInfoLst"},541:{n:"BrtEndECTWFldInfoLst"},542:{n:"BrtBeginECTwFldInfo"},548:{n:"BrtFileSharing"},549:{n:"BrtOleSize"},550:{n:"BrtDrawing",f:pn},551:{n:"BrtLegacyDrawing"},552:{n:"BrtLegacyDrawingHF"},553:{n:"BrtWebOpt"},554:{n:"BrtBeginWebPubItems"},555:{n:"BrtEndWebPubItems"},556:{n:"BrtBeginWebPubItem"},557:{n:"BrtEndWebPubItem"},558:{n:"BrtBeginSXCondFmt"},559:{n:"BrtEndSXCondFmt"},560:{n:"BrtBeginSXCondFmts"},561:{n:"BrtEndSXCondFmts"},562:{n:"BrtBkHim"},564:{n:"BrtColor"},565:{n:"BrtBeginIndexedColors"},566:{n:"BrtEndIndexedColors"},569:{n:"BrtBeginMRUColors"},570:{n:"BrtEndMRUColors"},572:{n:"BrtMRUColor"},573:{n:"BrtBeginDVals"},574:{n:"BrtEndDVals"},577:{n:"BrtSupNameStart"},578:{n:"BrtSupNameValueStart"},579:{n:"BrtSupNameValueEnd"},580:{n:"BrtSupNameNum"},581:{n:"BrtSupNameErr"},582:{n:"BrtSupNameSt"},583:{n:"BrtSupNameNil"},584:{n:"BrtSupNameBool"},585:{n:"BrtSupNameFmla"},586:{n:"BrtSupNameBits"},587:{n:"BrtSupNameEnd"},588:{n:"BrtEndSupBook"},589:{n:"BrtCellSmartTagProperty"},590:{n:"BrtBeginCellSmartTag"},591:{n:"BrtEndCellSmartTag"},592:{n:"BrtBeginCellSmartTags"},593:{n:"BrtEndCellSmartTags"},594:{n:"BrtBeginSmartTags"},595:{n:"BrtEndSmartTags"},596:{n:"BrtSmartTagType"},597:{n:"BrtBeginSmartTagTypes"},598:{n:"BrtEndSmartTagTypes"},599:{n:"BrtBeginSXFilters"},600:{n:"BrtEndSXFilters"},601:{n:"BrtBeginSXFILTER"},602:{n:"BrtEndSXFilter"},603:{n:"BrtBeginFills"},604:{n:"BrtEndFills"},605:{n:"BrtBeginCellWatches"},606:{n:"BrtEndCellWatches"},607:{n:"BrtCellWatch"},608:{n:"BrtBeginCRErrs"},609:{n:"BrtEndCRErrs"},610:{n:"BrtCrashRecErr"},611:{n:"BrtBeginFonts"},612:{n:"BrtEndFonts"},613:{n:"BrtBeginBorders"},614:{n:"BrtEndBorders"},615:{n:"BrtBeginFmts"},616:{n:"BrtEndFmts"},617:{n:"BrtBeginCellXFs"},618:{n:"BrtEndCellXFs"},619:{n:"BrtBeginStyles"},620:{n:"BrtEndStyles"},625:{n:"BrtBigName"},626:{n:"BrtBeginCellStyleXFs"},627:{n:"BrtEndCellStyleXFs"},628:{n:"BrtBeginComments"},629:{n:"BrtEndComments"},630:{n:"BrtBeginCommentAuthors"},631:{n:"BrtEndCommentAuthors"},632:{n:"BrtCommentAuthor",f:zs},633:{n:"BrtBeginCommentList"},634:{n:"BrtEndCommentList"},635:{n:"BrtBeginComment",f:function(e){var t={};t.iauthor=e.read_shift(4);var n=vn(e,16);return t.rfx=n.s,t.ref=Kt(n.s),e.l+=16,t}},636:{n:"BrtEndComment"},637:{n:"BrtCommentText",f:an},638:{n:"BrtBeginOleObjects"},639:{n:"BrtOleObject"},640:{n:"BrtEndOleObjects"},641:{n:"BrtBeginSxrules"},642:{n:"BrtEndSxRules"},643:{n:"BrtBeginActiveXControls"},644:{n:"BrtActiveX"},645:{n:"BrtEndActiveXControls"},646:{n:"BrtBeginPCDSDTCEMembersSortBy"},648:{n:"BrtBeginCellIgnoreECs"},649:{n:"BrtCellIgnoreEC"},650:{n:"BrtEndCellIgnoreECs"},651:{n:"BrtCsProp",f:function(e,t){return e.l+=10,{name:nn(e)}}},652:{n:"BrtCsPageSetup"},653:{n:"BrtBeginUserCsViews"},654:{n:"BrtEndUserCsViews"},655:{n:"BrtBeginUserCsView"},656:{n:"BrtEndUserCsView"},657:{n:"BrtBeginPcdSFCIEntries"},658:{n:"BrtEndPCDSFCIEntries"},659:{n:"BrtPCDSFCIEntry"},660:{n:"BrtBeginListParts"},661:{n:"BrtListPart"},662:{n:"BrtEndListParts"},663:{n:"BrtSheetCalcProp"},664:{n:"BrtBeginFnGroup"},665:{n:"BrtFnGroup"},666:{n:"BrtEndFnGroup"},667:{n:"BrtSupAddin"},668:{n:"BrtSXTDMPOrder"},669:{n:"BrtCsProtection"},671:{n:"BrtBeginWsSortMap"},672:{n:"BrtEndWsSortMap"},673:{n:"BrtBeginRRSort"},674:{n:"BrtEndRRSort"},675:{n:"BrtRRSortItem"},676:{n:"BrtFileSharingIso"},677:{n:"BrtBookProtectionIso"},678:{n:"BrtSheetProtectionIso"},679:{n:"BrtCsProtectionIso"},680:{n:"BrtRangeProtectionIso"},1024:{n:"BrtRwDescent"},1025:{n:"BrtKnownFonts"},1026:{n:"BrtBeginSXTupleSet"},1027:{n:"BrtEndSXTupleSet"},1028:{n:"BrtBeginSXTupleSetHeader"},1029:{n:"BrtEndSXTupleSetHeader"},1030:{n:"BrtSXTupleSetHeaderItem"},1031:{n:"BrtBeginSXTupleSetData"},1032:{n:"BrtEndSXTupleSetData"},1033:{n:"BrtBeginSXTupleSetRow"},1034:{n:"BrtEndSXTupleSetRow"},1035:{n:"BrtSXTupleSetRowItem"},1036:{n:"BrtNameExt"},1037:{n:"BrtPCDH14"},1038:{n:"BrtBeginPCDCalcMem14"},1039:{n:"BrtEndPCDCalcMem14"},1040:{n:"BrtSXTH14"},1041:{n:"BrtBeginSparklineGroup"},1042:{n:"BrtEndSparklineGroup"},1043:{n:"BrtSparkline"},1044:{n:"BrtSXDI14"},1045:{n:"BrtWsFmtInfoEx14"},1046:{n:"BrtBeginConditionalFormatting14"},1047:{n:"BrtEndConditionalFormatting14"},1048:{n:"BrtBeginCFRule14"},1049:{n:"BrtEndCFRule14"},1050:{n:"BrtCFVO14"},1051:{n:"BrtBeginDatabar14"},1052:{n:"BrtBeginIconSet14"},1053:{n:"BrtDVal14"},1054:{n:"BrtBeginDVals14"},1055:{n:"BrtColor14"},1056:{n:"BrtBeginSparklines"},1057:{n:"BrtEndSparklines"},1058:{n:"BrtBeginSparklineGroups"},1059:{n:"BrtEndSparklineGroups"},1061:{n:"BrtSXVD14"},1062:{n:"BrtBeginSXView14"},1063:{n:"BrtEndSXView14"},1064:{n:"BrtBeginSXView16"},1065:{n:"BrtEndSXView16"},1066:{n:"BrtBeginPCD14"},1067:{n:"BrtEndPCD14"},1068:{n:"BrtBeginExtConn14"},1069:{n:"BrtEndExtConn14"},1070:{n:"BrtBeginSlicerCacheIDs"},1071:{n:"BrtEndSlicerCacheIDs"},1072:{n:"BrtBeginSlicerCacheID"},1073:{n:"BrtEndSlicerCacheID"},1075:{n:"BrtBeginSlicerCache"},1076:{n:"BrtEndSlicerCache"},1077:{n:"BrtBeginSlicerCacheDef"},1078:{n:"BrtEndSlicerCacheDef"},1079:{n:"BrtBeginSlicersEx"},1080:{n:"BrtEndSlicersEx"},1081:{n:"BrtBeginSlicerEx"},1082:{n:"BrtEndSlicerEx"},1083:{n:"BrtBeginSlicer"},1084:{n:"BrtEndSlicer"},1085:{n:"BrtSlicerCachePivotTables"},1086:{n:"BrtBeginSlicerCacheOlapImpl"},1087:{n:"BrtEndSlicerCacheOlapImpl"},1088:{n:"BrtBeginSlicerCacheLevelsData"},1089:{n:"BrtEndSlicerCacheLevelsData"},1090:{n:"BrtBeginSlicerCacheLevelData"},1091:{n:"BrtEndSlicerCacheLevelData"},1092:{n:"BrtBeginSlicerCacheSiRanges"},1093:{n:"BrtEndSlicerCacheSiRanges"},1094:{n:"BrtBeginSlicerCacheSiRange"},1095:{n:"BrtEndSlicerCacheSiRange"},1096:{n:"BrtSlicerCacheOlapItem"},1097:{n:"BrtBeginSlicerCacheSelections"},1098:{n:"BrtSlicerCacheSelection"},1099:{n:"BrtEndSlicerCacheSelections"},1100:{n:"BrtBeginSlicerCacheNative"},1101:{n:"BrtEndSlicerCacheNative"},1102:{n:"BrtSlicerCacheNativeItem"},1103:{n:"BrtRangeProtection14"},1104:{n:"BrtRangeProtectionIso14"},1105:{n:"BrtCellIgnoreEC14"},1111:{n:"BrtList14"},1112:{n:"BrtCFIcon"},1113:{n:"BrtBeginSlicerCachesPivotCacheIDs"},1114:{n:"BrtEndSlicerCachesPivotCacheIDs"},1115:{n:"BrtBeginSlicers"},1116:{n:"BrtEndSlicers"},1117:{n:"BrtWbProp14"},1118:{n:"BrtBeginSXEdit"},1119:{n:"BrtEndSXEdit"},1120:{n:"BrtBeginSXEdits"},1121:{n:"BrtEndSXEdits"},1122:{n:"BrtBeginSXChange"},1123:{n:"BrtEndSXChange"},1124:{n:"BrtBeginSXChanges"},1125:{n:"BrtEndSXChanges"},1126:{n:"BrtSXTupleItems"},1128:{n:"BrtBeginSlicerStyle"},1129:{n:"BrtEndSlicerStyle"},1130:{n:"BrtSlicerStyleElement"},1131:{n:"BrtBeginStyleSheetExt14"},1132:{n:"BrtEndStyleSheetExt14"},1133:{n:"BrtBeginSlicerCachesPivotCacheID"},1134:{n:"BrtEndSlicerCachesPivotCacheID"},1135:{n:"BrtBeginConditionalFormattings"},1136:{n:"BrtEndConditionalFormattings"},1137:{n:"BrtBeginPCDCalcMemExt"},1138:{n:"BrtEndPCDCalcMemExt"},1139:{n:"BrtBeginPCDCalcMemsExt"},1140:{n:"BrtEndPCDCalcMemsExt"},1141:{n:"BrtPCDField14"},1142:{n:"BrtBeginSlicerStyles"},1143:{n:"BrtEndSlicerStyles"},1144:{n:"BrtBeginSlicerStyleElements"},1145:{n:"BrtEndSlicerStyleElements"},1146:{n:"BrtCFRuleExt"},1147:{n:"BrtBeginSXCondFmt14"},1148:{n:"BrtEndSXCondFmt14"},1149:{n:"BrtBeginSXCondFmts14"},1150:{n:"BrtEndSXCondFmts14"},1152:{n:"BrtBeginSortCond14"},1153:{n:"BrtEndSortCond14"},1154:{n:"BrtEndDVals14"},1155:{n:"BrtEndIconSet14"},1156:{n:"BrtEndDatabar14"},1157:{n:"BrtBeginColorScale14"},1158:{n:"BrtEndColorScale14"},1159:{n:"BrtBeginSxrules14"},1160:{n:"BrtEndSxrules14"},1161:{n:"BrtBeginPRule14"},1162:{n:"BrtEndPRule14"},1163:{n:"BrtBeginPRFilters14"},1164:{n:"BrtEndPRFilters14"},1165:{n:"BrtBeginPRFilter14"},1166:{n:"BrtEndPRFilter14"},1167:{n:"BrtBeginPRFItem14"},1168:{n:"BrtEndPRFItem14"},1169:{n:"BrtBeginCellIgnoreECs14"},1170:{n:"BrtEndCellIgnoreECs14"},1171:{n:"BrtDxf14"},1172:{n:"BrtBeginDxF14s"},1173:{n:"BrtEndDxf14s"},1177:{n:"BrtFilter14"},1178:{n:"BrtBeginCustomFilters14"},1180:{n:"BrtCustomFilter14"},1181:{n:"BrtIconFilter14"},1182:{n:"BrtPivotCacheConnectionName"},2048:{n:"BrtBeginDecoupledPivotCacheIDs"},2049:{n:"BrtEndDecoupledPivotCacheIDs"},2050:{n:"BrtDecoupledPivotCacheID"},2051:{n:"BrtBeginPivotTableRefs"},2052:{n:"BrtEndPivotTableRefs"},2053:{n:"BrtPivotTableRef"},2054:{n:"BrtSlicerCacheBookPivotTables"},2055:{n:"BrtBeginSxvcells"},2056:{n:"BrtEndSxvcells"},2057:{n:"BrtBeginSxRow"},2058:{n:"BrtEndSxRow"},2060:{n:"BrtPcdCalcMem15"},2067:{n:"BrtQsi15"},2068:{n:"BrtBeginWebExtensions"},2069:{n:"BrtEndWebExtensions"},2070:{n:"BrtWebExtension"},2071:{n:"BrtAbsPath15"},2072:{n:"BrtBeginPivotTableUISettings"},2073:{n:"BrtEndPivotTableUISettings"},2075:{n:"BrtTableSlicerCacheIDs"},2076:{n:"BrtTableSlicerCacheID"},2077:{n:"BrtBeginTableSlicerCache"},2078:{n:"BrtEndTableSlicerCache"},2079:{n:"BrtSxFilter15"},2080:{n:"BrtBeginTimelineCachePivotCacheIDs"},2081:{n:"BrtEndTimelineCachePivotCacheIDs"},2082:{n:"BrtTimelineCachePivotCacheID"},2083:{n:"BrtBeginTimelineCacheIDs"},2084:{n:"BrtEndTimelineCacheIDs"},2085:{n:"BrtBeginTimelineCacheID"},2086:{n:"BrtEndTimelineCacheID"},2087:{n:"BrtBeginTimelinesEx"},2088:{n:"BrtEndTimelinesEx"},2089:{n:"BrtBeginTimelineEx"},2090:{n:"BrtEndTimelineEx"},2091:{n:"BrtWorkBookPr15"},2092:{n:"BrtPCDH15"},2093:{n:"BrtBeginTimelineStyle"},2094:{n:"BrtEndTimelineStyle"},2095:{n:"BrtTimelineStyleElement"},2096:{n:"BrtBeginTimelineStylesheetExt15"},2097:{n:"BrtEndTimelineStylesheetExt15"},2098:{n:"BrtBeginTimelineStyles"},2099:{n:"BrtEndTimelineStyles"},2100:{n:"BrtBeginTimelineStyleElements"},2101:{n:"BrtEndTimelineStyleElements"},2102:{n:"BrtDxf15"},2103:{n:"BrtBeginDxfs15"},2104:{n:"brtEndDxfs15"},2105:{n:"BrtSlicerCacheHideItemsWithNoData"},2106:{n:"BrtBeginItemUniqueNames"},2107:{n:"BrtEndItemUniqueNames"},2108:{n:"BrtItemUniqueName"},2109:{n:"BrtBeginExtConn15"},2110:{n:"BrtEndExtConn15"},2111:{n:"BrtBeginOledbPr15"},2112:{n:"BrtEndOledbPr15"},2113:{n:"BrtBeginDataFeedPr15"},2114:{n:"BrtEndDataFeedPr15"},2115:{n:"BrtTextPr15"},2116:{n:"BrtRangePr15"},2117:{n:"BrtDbCommand15"},2118:{n:"BrtBeginDbTables15"},2119:{n:"BrtEndDbTables15"},2120:{n:"BrtDbTable15"},2121:{n:"BrtBeginDataModel"},2122:{n:"BrtEndDataModel"},2123:{n:"BrtBeginModelTables"},2124:{n:"BrtEndModelTables"},2125:{n:"BrtModelTable"},2126:{n:"BrtBeginModelRelationships"},2127:{n:"BrtEndModelRelationships"},2128:{n:"BrtModelRelationship"},2129:{n:"BrtBeginECTxtWiz15"},2130:{n:"BrtEndECTxtWiz15"},2131:{n:"BrtBeginECTWFldInfoLst15"},2132:{n:"BrtEndECTWFldInfoLst15"},2133:{n:"BrtBeginECTWFldInfo15"},2134:{n:"BrtFieldListActiveItem"},2135:{n:"BrtPivotCacheIdVersion"},2136:{n:"BrtSXDI15"},2137:{n:"BrtBeginModelTimeGroupings"},2138:{n:"BrtEndModelTimeGroupings"},2139:{n:"BrtBeginModelTimeGrouping"},2140:{n:"BrtEndModelTimeGrouping"},2141:{n:"BrtModelTimeGroupingCalcCol"},3072:{n:"BrtUid"},3073:{n:"BrtRevisionPtr"},5095:{n:"BrtBeginCalcFeatures"},5096:{n:"BrtEndCalcFeatures"},5097:{n:"BrtCalcFeature"},65535:{n:""}},wc=H(yc,"n"),Sc={3:{n:"BIFF2NUM",f:function(e){var t=Vr(e);++e.l;var n=An(e);return t.t="n",t.val=n,t}},4:{n:"BIFF2STR",f:function(e,t,n){var r=Vr(e);++e.l;var i=Mr(e,0,n);return r.t="str",r.val=i,r}},6:{n:"Formula",f:Mo},9:{n:"BOF",f:ei},10:{n:"EOF",f:kr},12:{n:"CalcCount",f:Rr},13:{n:"CalcMode",f:Rr},14:{n:"CalcPrecision",f:_r},15:{n:"CalcRefMode",f:_r},16:{n:"CalcDelta",f:An},17:{n:"CalcIter",f:_r},18:{n:"Protect",f:_r},19:{n:"Password",f:Rr},20:{n:"Header",f:li},21:{n:"Footer",f:li},23:{n:"ExternSheet",f:fi},24:{n:"Lbl",f:ui},25:{n:"WinProtect",f:_r},26:{n:"VerticalPageBreaks"},27:{n:"HorizontalPageBreaks"},28:{n:"Note",f:function(e,t,n){return function(e,t,n){if(!(n.biff<8)){var r=e.read_shift(2),i=e.read_shift(2),s=e.read_shift(2),o=e.read_shift(2),a=Mr(e,0,n);return n.biff<8&&e.read_shift(1),[{r:r,c:i},a,o,s]}}(e,0,n)}},29:{n:"Selection"},34:{n:"Date1904",f:_r},35:{n:"ExternName",f:hi},38:{n:"LeftMargin",f:An},39:{n:"RightMargin",f:An},40:{n:"TopMargin",f:An},41:{n:"BottomMargin",f:An},42:{n:"PrintRowCol",f:_r},43:{n:"PrintGrid",f:_r},47:{n:"FilePass",f:function(e,t,n){var r={Type:n.biff>=8?e.read_shift(2):0};return r.Type?function(e,t,n){var r=n||{};r.Info=e.read_shift(2),e.l-=2,r.Data=1===r.Info?function(e){var t={},n=t.EncryptionVersionInfo=Hi(e,4);if(1!=n.Major||1!=n.Minor)throw"unrecognized version code "+n.Major+" : "+n.Minor;return t.Salt=e.read_shift(16),t.EncryptedVerifier=e.read_shift(16),t.EncryptedVerifierHash=e.read_shift(16),t}(e):function(e,t){var n={},r=n.EncryptionVersionInfo=Hi(e,4);if(t-=4,2!=r.Minor)throw new Error("unrecognized minor version code: "+r.Minor);if(r.Major>4||r.Major<2)throw new Error("unrecognized major version code: "+r.Major);n.Flags=e.read_shift(4),t-=4;var i=e.read_shift(4);return t-=4,n.EncryptionHeader=Vi(e,i),n.EncryptionVerifier=ji(e,t-=i),n}(e,t)}(e,t-2,r):function(e,t,n,r){var i,s,o={key:Rr(e),verificationBytes:Rr(e)};n.password&&(o.verifier=Xi(n.password)),r.valid=o.verificationBytes===o.verifier,r.valid&&(r.insitu=(i=0,s=qi(n.password),function(e){var t=function(e,t,n,r,i){var s,o;for(i||(i=t),r||(r=qi("")),s=0;s!=t.length;++s)o=t[s],i[s]=o=255&((o^=r[n])>>5|o<<3),++n;return[i,n,r]}(0,e,i,s);return i=t[1],t[0]}))}(e,0,n,r),r}},49:{n:"Font",f:function(e,t,n){var r={dyHeight:e.read_shift(2),fl:e.read_shift(2)};switch(n&&n.biff||8){case 2:break;case 3:case 4:e.l+=2;break;default:e.l+=10}return r.name=Lr(e,0,n),r}},51:{n:"PrintSize",f:Rr},60:{n:"Continue"},61:{n:"Window1",f:function(e){return{Pos:[e.read_shift(2),e.read_shift(2)],Dim:[e.read_shift(2),e.read_shift(2)],Flags:e.read_shift(2),CurTab:e.read_shift(2),FirstTab:e.read_shift(2),Selected:e.read_shift(2),TabRatio:e.read_shift(2)}}},64:{n:"Backup",f:_r},65:{n:"Pane"},66:{n:"CodePage",f:Rr},77:{n:"Pls"},80:{n:"DCon"},81:{n:"DConRef"},82:{n:"DConName"},85:{n:"DefColWidth",f:Rr},89:{n:"XCT"},90:{n:"CRN"},91:{n:"FileSharing"},92:{n:"WriteAccess",f:function(e,t,n){if(n.enc)return e.l+=t,"";var r=e.l,i=Mr(e,0,n);return e.read_shift(t+r-e.l),i}},93:{n:"Obj",f:function(e,t,n){return n&&n.biff<8?function(e,t,n){e.l+=4;var r=e.read_shift(2),i=e.read_shift(2),s=e.read_shift(2);e.l+=2,e.l+=2,e.l+=2,e.l+=2,e.l+=2,e.l+=2,e.l+=2,e.l+=2,e.l+=2,e.l+=6;var o=[];return o.push((pi[r]||Ot)(e,t-=36,n)),{cmo:[i,r,s],ft:o}}(e,t,n):{cmo:Jr(e),ft:function(e,t){for(var n=e.l+t,r=[];e.l7||t[1]>7)throw new Error("Bad Gutters: "+t.join("|"));return t}},129:{n:"WsBool",f:function(e,t,n){return{fDialog:16&(n&&8==n.biff||2==t?e.read_shift(2):(e.l+=t,0))}}},130:{n:"GridSet",f:Rr},131:{n:"HCenter",f:_r},132:{n:"VCenter",f:_r},133:{n:"BoundSheet8",f:function(e,t,n){var r=e.read_shift(4),i=3&e.read_shift(1),s=e.read_shift(1);switch(s){case 0:s="Worksheet";break;case 1:s="Macrosheet";break;case 2:s="Chartsheet";break;case 6:s="VBAModule"}var o=Lr(e,0,n);return 0===o.length&&(o="Sheet1"),{pos:r,hs:i,dt:s,name:o}}},134:{n:"WriteProtect"},140:{n:"Country",f:function(e){var t,n=[0,0];return t=e.read_shift(2),n[0]=Fn[t]||t,t=e.read_shift(2),n[1]=Fn[t]||t,n}},141:{n:"HideObj",f:Rr},144:{n:"Sort"},146:{n:"Palette",f:function(e){for(var t=e.read_shift(2),n=[];t-- >0;)n.push(Gr(e));return n}},151:{n:"Sync"},152:{n:"LPr"},153:{n:"DxGCol"},154:{n:"FnGroupName"},155:{n:"FilterMode"},156:{n:"BuiltInFnGroupCount",f:Rr},157:{n:"AutoFilterInfo"},158:{n:"AutoFilter"},160:{n:"Scl",f:Ii},161:{n:"Setup",f:function(e,t){var n={};return t<32||(e.l+=16,n.header=An(e),n.footer=An(e),e.l+=2),n}},174:{n:"ScenMan"},175:{n:"SCENARIO"},176:{n:"SxView"},177:{n:"Sxvd"},178:{n:"SXVI"},180:{n:"SxIvd"},181:{n:"SXLI"},182:{n:"SXPI"},184:{n:"DocRoute"},185:{n:"RecipName"},189:{n:"MulRk",f:function(e,t){for(var n=e.l+t-2,r=e.read_shift(2),i=e.read_shift(2),s=[];e.l>2&1,r.data=function(e,t,n,r){var i={},s=e.read_shift(4),o=e.read_shift(4),a=e.read_shift(4),c=e.read_shift(2);return i.patternType=Nn[a>>26],r.cellStyles?(i.alc=7&s,i.fWrap=s>>3&1,i.alcV=s>>4&7,i.fJustLast=s>>7&1,i.trot=s>>8&255,i.cIndent=s>>16&15,i.fShrinkToFit=s>>20&1,i.iReadOrder=s>>22&2,i.fAtrNum=s>>26&1,i.fAtrFnt=s>>27&1,i.fAtrAlc=s>>28&1,i.fAtrBdr=s>>29&1,i.fAtrPat=s>>30&1,i.fAtrProt=s>>31&1,i.dgLeft=15&o,i.dgRight=o>>4&15,i.dgTop=o>>8&15,i.dgBottom=o>>12&15,i.icvLeft=o>>16&127,i.icvRight=o>>23&127,i.grbitDiag=o>>30&3,i.icvTop=127&a,i.icvBottom=a>>7&127,i.icvDiag=a>>14&127,i.dgDiag=a>>21&15,i.icvFore=127&c,i.icvBack=c>>7&127,i.fsxButton=c>>14&1,i):i}(e,0,0,n),r}},225:{n:"InterfaceHdr",f:function(e,t){return 0===t||e.read_shift(2),1200}},226:{n:"InterfaceEnd",f:kr},227:{n:"SXVS"},229:{n:"MergeCells",f:function(e,t){for(var n=[],r=e.read_shift(2);r--;)n.push(Kr(e));return n}},233:{n:"BkHim"},235:{n:"MsoDrawingGroup"},236:{n:"MsoDrawing"},237:{n:"MsoDrawingSelection"},239:{n:"PhoneticInfo"},240:{n:"SxRule"},241:{n:"SXEx"},242:{n:"SxFilt"},244:{n:"SxDXF"},245:{n:"SxItm"},246:{n:"SxName"},247:{n:"SxSelect"},248:{n:"SXPair"},249:{n:"SxFmla"},251:{n:"SxFormat"},252:{n:"SST",f:function(e,t){for(var n=e.l+t,r=e.read_shift(4),i=e.read_shift(4),s=[],o=0;o!=i&&e.l255)throw new Error("Unexpected SupBook type: "+s);for(var o=Fr(e,s),a=[];r>e.l;)a.push(Nr(e));return[s,i,o,a]}},431:{n:"Prot4Rev",f:_r},432:{n:"CondFmt"},433:{n:"CF"},434:{n:"DVal"},437:{n:"DConBin"},438:{n:"TxO",f:function(e,t,n){var r=e.l,i="";try{e.l+=4,-1==[0,5,7,11,12,14].indexOf((n.lastobj||{cmo:[0,0]}).cmo[1])?e.l+=6:function(e){e.read_shift(1);e.l++;e.read_shift(2);e.l+=2}(e);var s=e.read_shift(2);e.read_shift(2),Rr(e);var o=e.read_shift(2);e.l+=o;for(var a=1;a=(c?s:2*s))break}if(i.length!==s&&i.length!==2*s)throw new Error("cchText: "+s+" != "+i.length);return e.l=r+t,{t:i}}catch(El){return e.l=r+t,{t:i}}}},439:{n:"RefreshAll",f:_r},440:{n:"HLink",f:function(e,t){var n=Kr(e);return e.l+=16,[n,function(e,t){var n=e.l+t,r=e.read_shift(4);if(2!==r)throw new Error("Unrecognized streamVersion: "+r);var i=e.read_shift(2);e.l+=2;var s,o,a,c,l,h,d="";16&i&&(s=$r(e)),128&i&&(o=$r(e)),257==(257&i)&&(a=$r(e)),1==(257&i)&&(c=function(e,t){var n=e.read_shift(16);switch(n){case"e0c9ea79f9bace118c8200aa004ba90b":return function(e){var t=e.read_shift(4),n=e.l,r=!1;t>24&&(e.l+=t-24,"795881f43b1d7f48af2c825dc4852763"===e.read_shift(16)&&(r=!0),e.l=n);var i=e.read_shift((r?t-24:t)>>1,"utf16le").replace(k,"");return r&&(e.l+=24),i}(e);case"0303000000000000c000000000000046":return function(e){e.l+=2;var t=e.read_shift(0,"lpstr-ansi");if(e.l+=2,57005!=e.read_shift(2))throw new Error("Bad FileMoniker");if(0===e.read_shift(4))return t.replace(/\\/g,"/");var n=e.read_shift(4);if(3!=e.read_shift(2))throw new Error("Bad FileMoniker");return e.read_shift(n>>1,"utf16le").replace(k,"")}(e);default:throw new Error("Unsupported Moniker "+n)}}(e)),8&i&&(d=$r(e)),32&i&&(l=e.read_shift(16)),64&i&&(h=dr(e)),e.l=n;var u=o||a||c||"";u&&d&&(u+="#"+d),u||(u="#"+d);var f={Target:u};return l&&(f.guid=l),h&&(f.time=h),s&&(f.Tooltip=s),f}(e,t-24)]}},441:{n:"Lel"},442:{n:"CodeName",f:Nr},443:{n:"SXFDBType"},444:{n:"Prot4RevPass",f:Rr},445:{n:"ObNoMacros"},446:{n:"Dv"},448:{n:"Excel9File",f:kr},449:{n:"RecalcId",f:function(e){return e.read_shift(2),e.read_shift(4)},r:2},450:{n:"EntExU2",f:kr},512:{n:"Dimensions",f:oi},513:{n:"Blank",f:vi},515:{n:"Number",f:function(e){var t=Vr(e),n=An(e);return t.val=n,t}},516:{n:"Label",f:function(e,t,n){var r=Vr(e);2==n.biff&&e.l++;var i=Nr(e,0,n);return r.val=i,r}},517:{n:"BoolErr",f:ci},518:{n:"Formula",f:Mo},519:{n:"String",f:Ai},520:{n:"Row",f:function(e){var t={};t.r=e.read_shift(2),t.c=e.read_shift(2),t.cnt=e.read_shift(2)-t.c;var n=e.read_shift(2);e.l+=4;var r=e.read_shift(1);return e.l+=3,7&r&&(t.level=7&r),32&r&&(t.hidden=!0),64&r&&(t.hpt=n/20),t}},523:{n:"Index"},545:{n:"Array",f:gi},549:{n:"DefaultRowHeight",f:ri},566:{n:"Table"},574:{n:"Window2",f:function(e,t,n){return n&&n.biff>=2&&n.biff<8?{}:{RTL:64&e.read_shift(2)}}},638:{n:"RK",f:function(e){var t=e.read_shift(2),n=e.read_shift(2),r=zr(e);return{r:t,c:n,ixfe:r[0],rknum:r[1]}}},659:{n:"Style"},1030:{n:"Formula",f:Mo},1048:{n:"BigName"},1054:{n:"Format",f:function(e,t,n){return[e.read_shift(2),Mr(e,0,n)]}},1084:{n:"ContinueBigName"},1212:{n:"ShrFmla",f:function(e,t,n){var r=Ur(e);e.l++;var i=e.read_shift(1);return[No(e,t-=8,n),i,r]}},2048:{n:"HLinkTooltip",f:function(e,t){e.read_shift(2);var n=Kr(e),r=e.read_shift((t-10)/2,"dbcs-cont");return[n,r=r.replace(k,"")]}},2049:{n:"WebPub"},2050:{n:"QsiSXTag"},2051:{n:"DBQueryExt"},2052:{n:"ExtString"},2053:{n:"TxtQry"},2054:{n:"Qsir"},2055:{n:"Qsif"},2056:{n:"RRDTQSIF"},2057:{n:"BOF",f:ei},2058:{n:"OleDbConn"},2059:{n:"WOpt"},2060:{n:"SXViewEx"},2061:{n:"SXTH"},2062:{n:"SXPIEx"},2063:{n:"SXVDTEx"},2064:{n:"SXViewEx9"},2066:{n:"ContinueFrt"},2067:{n:"RealTimeData"},2128:{n:"ChartFrtInfo"},2129:{n:"FrtWrapper"},2130:{n:"StartBlock"},2131:{n:"EndBlock"},2132:{n:"StartObject"},2133:{n:"EndObject"},2134:{n:"CatLab"},2135:{n:"YMult"},2136:{n:"SXViewLink"},2137:{n:"PivotChartBits"},2138:{n:"FrtFontList"},2146:{n:"SheetExt"},2147:{n:"BookExt",r:12},2148:{n:"SXAddl"},2149:{n:"CrErr"},2150:{n:"HFPicture"},2151:{n:"FeatHdr",f:kr},2152:{n:"Feat"},2154:{n:"DataLabExt"},2155:{n:"DataLabExtContents"},2156:{n:"CellWatch"},2161:{n:"FeatHdr11"},2162:{n:"Feature11"},2164:{n:"DropDownObjIds"},2165:{n:"ContinueFrt11"},2166:{n:"DConn"},2167:{n:"List12"},2168:{n:"Feature12"},2169:{n:"CondFmt12"},2170:{n:"CF12"},2171:{n:"CFEx"},2172:{n:"XFCRC",f:function(e){e.l+=2;var t={cxfs:0,crc:0};return t.cxfs=e.read_shift(2),t.crc=e.read_shift(4),t},r:12},2173:{n:"XFExt",f:function(e,t){e.l+=2;var n=e.read_shift(2);e.l+=2;for(var r=e.read_shift(2),i=[];r-- >0;)i.push(Ws(e));return{ixfe:n,ext:i}},r:12},2174:{n:"AutoFilter12"},2175:{n:"ContinueFrt12"},2180:{n:"MDTInfo"},2181:{n:"MDXStr"},2182:{n:"MDXTuple"},2183:{n:"MDXSet"},2184:{n:"MDXProp"},2185:{n:"MDXKPI"},2186:{n:"MDB"},2187:{n:"PLV"},2188:{n:"Compat12",f:_r,r:12},2189:{n:"DXF"},2190:{n:"TableStyles",r:12},2191:{n:"TableStyle"},2192:{n:"TableStyleElement"},2194:{n:"StyleExt"},2195:{n:"NamePublish"},2196:{n:"NameCmt",f:function(e,t,n){if(!(n.biff<8)){var r=e.read_shift(2),i=e.read_shift(2);return[Fr(e,r,n),Fr(e,i,n)]}e.l+=t},r:12},2197:{n:"SortData"},2198:{n:"Theme",f:function(e,t,n){var r=e.l+t;if(124226!==e.read_shift(4))if(n.cellStyles&&re){var i,s=e.slice(e.l);e.l=r;try{i=new re(s)}catch(El){return}var o=le(i,"theme/theme/theme1.xml",!0);if(o)return Ds(o,n)}else e.l=r},r:12},2199:{n:"GUIDTypeLib"},2200:{n:"FnGrp12"},2201:{n:"NameFnGrp12"},2202:{n:"MTRSettings",f:function(e){return[0!==e.read_shift(4),0!==e.read_shift(4),e.read_shift(4)]},r:12},2203:{n:"CompressPictures",f:kr},2204:{n:"HeaderFooter"},2205:{n:"CrtLayout12"},2206:{n:"CrtMlFrt"},2207:{n:"CrtMlFrtContinue"},2211:{n:"ForceFullCalculation",f:function(e){var t=function(e){var t=e.read_shift(2),n=e.read_shift(2);return e.l+=8,{type:t,flags:n}}(e);if(2211!=t.type)throw new Error("Invalid Future Record "+t.type);return 0!==e.read_shift(4)}},2212:{n:"ShapePropsStream"},2213:{n:"TextPropsStream"},2214:{n:"RichTextStream"},2215:{n:"CrtLayout12A"},4097:{n:"Units"},4098:{n:"Chart"},4099:{n:"Series"},4102:{n:"DataFormat"},4103:{n:"LineFormat"},4105:{n:"MarkerFormat"},4106:{n:"AreaFormat"},4107:{n:"PieFormat"},4108:{n:"AttachedLabel"},4109:{n:"SeriesText"},4116:{n:"ChartFormat"},4117:{n:"Legend"},4118:{n:"SeriesList"},4119:{n:"Bar"},4120:{n:"Line"},4121:{n:"Pie"},4122:{n:"Area"},4123:{n:"Scatter"},4124:{n:"CrtLine"},4125:{n:"Axis"},4126:{n:"Tick"},4127:{n:"ValueRange"},4128:{n:"CatSerRange"},4129:{n:"AxisLine"},4130:{n:"CrtLink"},4132:{n:"DefaultText"},4133:{n:"Text"},4134:{n:"FontX",f:Rr},4135:{n:"ObjectLink"},4146:{n:"Frame"},4147:{n:"Begin"},4148:{n:"End"},4149:{n:"PlotArea"},4154:{n:"Chart3d"},4156:{n:"PicF"},4157:{n:"DropBar"},4158:{n:"Radar"},4159:{n:"Surf"},4160:{n:"RadarArea"},4161:{n:"AxisParent"},4163:{n:"LegendException"},4164:{n:"ShtProps",f:function(e,t,n){var r={area:!1};if(5!=n.biff)return e.l+=t,r;var i=e.read_shift(1);return e.l+=3,16&i&&(r.area=!0),r}},4165:{n:"SerToCrt"},4166:{n:"AxesUsed"},4168:{n:"SBaseRef"},4170:{n:"SerParent"},4171:{n:"SerAuxTrend"},4174:{n:"IFmtRecord"},4175:{n:"Pos"},4176:{n:"AlRuns"},4177:{n:"BRAI"},4187:{n:"SerAuxErrBar"},4188:{n:"ClrtClient",f:function(e){for(var t=e.read_shift(2),n=[];t-- >0;)n.push(Gr(e));return n}},4189:{n:"SerFmt"},4191:{n:"Chart3DBarShape"},4192:{n:"Fbi"},4193:{n:"BopPop"},4194:{n:"AxcExt"},4195:{n:"Dat"},4196:{n:"PlotGrowth"},4197:{n:"SIIndex"},4198:{n:"GelFrame"},4199:{n:"BopPopCustom"},4200:{n:"Fbi2"},0:{n:"Dimensions",f:oi},2:{n:"BIFF2INT",f:function(e){var t=Vr(e);++e.l;var n=e.read_shift(2);return t.t="n",t.val=n,t}},5:{n:"BoolErr",f:ci},7:{n:"String",f:function(e){var t=e.read_shift(1);return 0===t?(e.l++,""):e.read_shift(t,"sbcs-cont")}},8:{n:"BIFF2ROW"},11:{n:"Index"},22:{n:"ExternCount",f:Rr},30:{n:"BIFF2FORMAT",f:si},31:{n:"BIFF2FMTCNT"},32:{n:"BIFF2COLINFO"},33:{n:"Array",f:gi},37:{n:"DefaultRowHeight",f:ri},50:{n:"BIFF2FONTXTRA",f:function(e,t){e.l+=6,e.l+=2,e.l+=1,e.l+=3,e.l+=1,e.l+=t-13}},52:{n:"DDEObjName"},62:{n:"BIFF2WINDOW2"},67:{n:"BIFF2XF"},69:{n:"BIFF2FONTCLR"},86:{n:"BIFF4FMTCNT"},126:{n:"RK"},127:{n:"ImData",f:function(e){var t=e.read_shift(2),n=e.read_shift(2),r=e.read_shift(4),i={fmt:t,env:n,len:r,data:e.slice(e.l,e.l+r)};return e.l+=r,i}},135:{n:"Addin"},136:{n:"Edg"},137:{n:"Pub"},145:{n:"Sub"},148:{n:"LHRecord"},149:{n:"LHNGraph"},150:{n:"Sound"},169:{n:"CoordList"},171:{n:"GCW"},188:{n:"ShrFmla"},191:{n:"ToolbarHdr"},192:{n:"ToolbarEnd"},194:{n:"AddMenu"},195:{n:"DelMenu"},214:{n:"RString",f:function(e,t,n){var r=e.l+t,i=Vr(e),s=e.read_shift(2),o=Fr(e,s,n);return e.l=r,i.t="str",i.val=o,i}},223:{n:"UDDesc"},234:{n:"TabIdConf"},354:{n:"XL5Modify"},421:{n:"FileSharing2"},521:{n:"BOF",f:ei},536:{n:"Lbl",f:ui},547:{n:"ExternName",f:hi},561:{n:"Font"},579:{n:"BIFF3XF"},1033:{n:"BOF",f:ei},1091:{n:"BIFF4XF"},2157:{n:"FeatInfo"},2163:{n:"FeatInfo11"},2177:{n:"SXAddl12"},2240:{n:"AutoWebPub"},2241:{n:"ListObj"},2242:{n:"ListField"},2243:{n:"ListDV"},2244:{n:"ListCondFmt"},2245:{n:"ListCF"},2246:{n:"FMQry"},2247:{n:"FMSQry"},2248:{n:"PLV"},2249:{n:"LnExt"},2250:{n:"MkrExt"},2251:{n:"CrtCoopt"},2262:{n:"FRTArchId$",r:12},29282:{}},xc=H(Sc,"n");function Ec(e,t,n,r){var i=+t||+xc[t];if(!isNaN(i)){var s=r||(n||[]).length||0,o=e.next(4);o.write_shift(2,i),o.write_shift(2,s),s>0&&It(n)&&e.push(n)}}function kc(e,t,n){return e||(e=Lt(7)),e.write_shift(2,t),e.write_shift(2,n),e.write_shift(2,0),e.write_shift(1,0),e}function _c(e,t,n,r){if(null!=t.v)switch(t.t){case"d":case"n":var i="d"==t.t?z(J(t.v)):t.v;return void(i==(0|i)&&i>=0&&i<65536?Ec(e,2,(s=n,o=r,a=i,c=Lt(9),kc(c,s,o),c.write_shift(2,a),c)):Ec(e,3,function(e,t,n){var r=Lt(15);return kc(r,e,t),r.write_shift(8,n,"f"),r}(n,r,i)));case"b":case"e":return void Ec(e,5,function(e,t,n,r){var i=Lt(9);return kc(i,e,t),"e"==r?(i.write_shift(1,n),i.write_shift(1,1)):(i.write_shift(1,n?1:0),i.write_shift(1,0)),i}(n,r,t.v,t.t));case"s":case"str":return void Ec(e,4,function(e,t,n){var r=Lt(8+2*n.length);return kc(r,e,t),r.write_shift(1,n.length),r.write_shift(n.length,n,"sbcs"),r.l255||f.e.r>=g){if(t.WTF)throw new Error("Range "+(o["!ref"]||"A1")+" exceeds format limit A1:IV16384");f.e.c=Math.min(f.e.c,255),f.e.r=Math.min(f.e.c,g-1)}Ec(i,2057,ti(0,16,t)),Ec(i,"CalcMode",Br(1)),Ec(i,"CalcCount",Br(100)),Ec(i,"CalcRefMode",Tr(!0)),Ec(i,"CalcIter",Tr(!1)),Ec(i,"CalcDelta",yn(.001)),Ec(i,"CalcSaveRecalc",Tr(!0)),Ec(i,"PrintRowCol",Tr(!1)),Ec(i,"PrintGrid",Tr(!1)),Ec(i,"GridSet",Br(1)),Ec(i,"Guts",function(e){var t=Lt(8);return t.write_shift(4,0),t.write_shift(2,e[0]?e[0]+1:0),t.write_shift(2,e[1]?e[1]+1:0),t}([0,0])),Ec(i,"HCenter",Tr(!1)),Ec(i,"VCenter",Tr(!1)),Ec(i,512,function(e,t){var n=8!=t.biff&&t.biff?2:4,r=Lt(2*n+6);return r.write_shift(n,e.s.r),r.write_shift(n,e.e.r+1),r.write_shift(2,e.s.c),r.write_shift(2,e.e.c+1),r.write_shift(2,0),r}(f,t)),h&&(o["!links"]=[]);for(var p=f.s.r;p<=f.e.r;++p){d=Gt(p);for(var m=f.s.c;m<=f.e.c;++m){p===f.s.r&&(u[m]=jt(m)),r=u[m]+d;var C=l?(o[p]||[])[m]:o[r];C&&(Tc(i,C,p,m,t),h&&C.l&&o["!links"].push([r,C.l]))}}var b=c.CodeName||c.name||s;return h&&a.Views&&Ec(i,"Window2",function(e){var t=Lt(18),n=1718;return e&&e.RTL&&(n|=64),t.write_shift(2,n),t.write_shift(4,0),t.write_shift(4,64),t.write_shift(4,0),t.write_shift(4,0),t}(a.Views[0])),h&&(o["!merges"]||[]).length&&Ec(i,"MergeCells",function(e){var t=Lt(2+8*e.length);t.write_shift(2,e.length);for(var n=0;n255||o.e.r>16383){if(r.WTF)throw new Error("Range "+(t["!ref"]||"A1")+" exceeds format limit A1:IV16384");o.e.c=Math.min(o.e.c,255),o.e.r=Math.min(o.e.c,16383),i=Ut(o)}for(var l=o.s.r;l<=o.e.r;++l){a=Gt(l);for(var h=o.s.c;h<=o.e.c;++h){l===o.s.r&&(c[h]=jt(h)),i=c[h]+a;var d=s?(t[l]||[])[h]:t[i];d&&_c(e,d,l,h)}}}(r,e.Sheets[e.SheetNames[i]],0,n),Ec(r,10),r.end()}(e,t)}throw new Error("invalid type "+n.bookType+" for BIFF")}var Oc=function(){function e(e,t){var n=t||{},r=n.dense?[]:{},i=e.match(/");var s=e.match(/<\/table/i),o=i.index,a=s&&s.index||e.length,c=function(e,t,n){if(ie||"string"==typeof t)return e.split(t);for(var r=e.split(t),i=[r[0]],s=1;s"),i.push(r[s]);return i}(e.slice(o,a),/(:?]*>)/i),l=-1,h=0,d=0,u=0,f={s:{r:1e7,c:1e7},e:{r:0,c:0}},g=[];for(o=0;o/i);for(a=0;a"))>-1;)v=v.slice(I+1);var A=me(b.slice(0,b.indexOf(">")));u=A.colspan?+A.colspan:1,((d=+A.rowspan)>1||u>1)&&g.push({s:{r:l,c:h},e:{r:l+(d||1)-1,c:h+u-1}});var y=A.t||"";if(v.length){if(v=We(v),f.s.r>l&&(f.s.r=l),f.e.rh&&(f.s.c=h),f.e.cn||i[l].s.c>o||i[l].e.r1&&(u.rowspan=a),c>1&&(u.colspan=c);var f=d&&null!=d.v&&(d.h||_e(d.w||(Jt(d),d.w)||""))||"";u.t=d&&d.t||"z",r.editable&&(f=''+f+""),u.id="sjs-"+h,s.push(Xe("td",f,u))}}return""+s.join("")+""}function n(e,t,n){return[].join("")+""}var r='SheetJS Table Export',i="";return{to_workbook:function(t,n){return Qt(e(t,n),n)},to_sheet:e,_row:t,BEGIN:r,END:i,_preamble:n,from_sheet:function(e,s){var o=s||{},a=null!=o.footer?o.footer:i,c=[null!=o.header?o.header:r],l=Xt(e["!ref"]);o.dense=Array.isArray(e),c.push(n(0,0,o));for(var h=l.s.r;h<=l.e.r;++h)c.push(t(e,l,h,o));return c.push("
"+a),c.join("")}}}();function Lc(e,t){for(var n,r,i,s,o=t||{},a=o.dense?[]:{},c=e.getElementsByTagName("tr"),l=o.sheetRows||1e7,h={s:{r:0,c:0},e:{r:0,c:0}},d=[],u=0,f=[],g=0,p=0;g0||s>1)&&d.push({s:{r:p,c:r},e:{r:p+(i||1)-1,c:r+s-1}});var A={t:"s",v:v},y=b.getAttribute("t")||"";null!=v&&(0==v.length?A.t=y||"z":o.raw||0==v.trim().length||"s"==y||("TRUE"===v?A={t:"b",v:!0}:"FALSE"===v?A={t:"b",v:!1}:isNaN(te(v))?isNaN(ne(v).getDate())||(A={t:"d",v:J(v)},o.cellDates||(A={t:"n",v:z(A.v)}),A.z=o.dateNF||T._table[14]):A={t:"n",v:te(v)})),o.dense?(a[p]||(a[p]=[]),a[p][r]=A):a[Kt({c:r,r:p})]=A,h.e.c=l&&(a["!fullref"]=Ut((h.e.r=c.length-g+p-1,h))),a}function Pc(e){var t="",n=function(e){return e.ownerDocument.defaultView&&"function"==typeof e.ownerDocument.defaultView.getComputedStyle?e.ownerDocument.defaultView.getComputedStyle:"function"==typeof getComputedStyle?getComputedStyle:null}(e);return n&&(t=n(e).getPropertyValue("display")),t||(t=e.style.display),"none"===t}var Fc,Nc=(Fc={day:["d","dd"],month:["m","mm"],year:["y","yy"],hours:["h","hh"],minutes:["m","mm"],seconds:["s","ss"],"am-pm":["A/P","AM/PM"],"day-of-week":["ddd","dddd"],era:["e","ee"],quarter:["\\Qm",'m\\"th quarter"']},function(e,t){var n,r,i,s,o,a,c,l=t||{},h=cc(e),d=[],u={name:""},f="",g=0,p={},m=[],C=l.dense?[]:{},b={value:""},v="",I=0,A=[],y=-1,w=-1,S={s:{r:1e6,c:1e7},e:{r:0,c:0}},x=0,E={},k=[],_={},T=0,R=0,B=[],O=1,L=1,P=[],F={Names:[]},N={},M=["",""],D=[],$={},W="",H=0,G=!1,V=!1,j=0;for(lc.lastIndex=0,h=h.replace(//gm,"").replace(//gm,"");o=lc.exec(h);)switch(o[3]=o[3].replace(/_.*$/,"")){case"table":case"\u5de5\u4f5c\u8868":"/"===o[1]?(S.e.c>=S.s.c&&S.e.r>=S.s.r&&(C["!ref"]=Ut(S)),l.sheetRows>0&&l.sheetRows<=S.e.r&&(C["!fullref"]=C["!ref"],S.e.r=l.sheetRows-1,C["!ref"]=Ut(S)),k.length&&(C["!merges"]=k),B.length&&(C["!rows"]=B),i.name=i["\u540d\u79f0"]||i.name,"undefined"!=typeof JSON&&JSON.stringify(i),m.push(i.name),p[i.name]=C,V=!1):"/"!==o[0].charAt(o[0].length-2)&&(i=me(o[0],!1),y=w=-1,S.s.r=S.s.c=1e7,S.e.r=S.e.c=0,C=l.dense?[]:{},k=[],B=[],V=!0);break;case"table-row-group":"/"===o[1]?--x:++x;break;case"table-row":case"\u884c":if("/"===o[1]){y+=O,O=1;break}if((s=me(o[0],!1))["\u884c\u53f7"]?y=s["\u884c\u53f7"]-1:-1==y&&(y=0),(O=+s["number-rows-repeated"]||1)<10)for(j=0;j0&&(B[y+j]={level:x});w=-1;break;case"covered-table-cell":"/"!==o[1]&&++w,l.sheetStubs&&(l.dense?(C[y]||(C[y]=[]),C[y][w]={t:"z"}):C[Kt({r:y,c:w})]={t:"z"}),v="",A=[];break;case"table-cell":case"\u6570\u636e":if("/"===o[0].charAt(o[0].length-2))++w,b=me(o[0],!1),L=parseInt(b["number-columns-repeated"]||"1",10),a={t:"z",v:null},b.formula&&0!=l.cellFormula&&(a.f=Ko(ye(b.formula))),"string"==(b["\u6570\u636e\u7c7b\u578b"]||b["value-type"])&&(a.t="s",a.v=ye(b["string-value"]||""),l.dense?(C[y]||(C[y]=[]),C[y][w]=a):C[Kt({r:y,c:w})]=a),w+=L-1;else if("/"!==o[1]){L=1;var Z=O?y+O-1:y;if(++w>S.e.c&&(S.e.c=w),wS.e.r&&(S.e.r=Z),D=[],$={},a={t:(b=me(o[0],!1))["\u6570\u636e\u7c7b\u578b"]||b["value-type"],v:null},l.cellFormula)if(b.formula&&(b.formula=ye(b.formula)),b["number-matrix-columns-spanned"]&&b["number-matrix-rows-spanned"]&&(T=parseInt(b["number-matrix-rows-spanned"],10)||0,R=parseInt(b["number-matrix-columns-spanned"],10)||0,a.F=Ut(_={s:{r:y,c:w},e:{r:y+T-1,c:w+R-1}}),P.push([_,a.F])),b.formula)a.f=Ko(b.formula);else for(j=0;j=P[j][0].s.r&&y<=P[j][0].e.r&&w>=P[j][0].s.c&&w<=P[j][0].e.c&&(a.F=P[j][1]);switch((b["number-columns-spanned"]||b["number-rows-spanned"])&&(T=parseInt(b["number-rows-spanned"],10)||0,R=parseInt(b["number-columns-spanned"],10)||0,k.push(_={s:{r:y,c:w},e:{r:y+T-1,c:w+R-1}})),b["number-columns-repeated"]&&(L=parseInt(b["number-columns-repeated"],10)),a.t){case"boolean":a.t="b",a.v=Re(b["boolean-value"]);break;case"float":case"percentage":case"currency":a.t="n",a.v=parseFloat(b.value);break;case"date":a.t="d",a.v=J(b["date-value"]),l.cellDates||(a.t="n",a.v=z(a.v)),a.z="m/d/yy";break;case"time":a.t="n",a.v=X(b["time-value"])/86400;break;case"number":a.t="n",a.v=parseFloat(b["\u6570\u636e\u6570\u503c"]);break;default:if("string"!==a.t&&"text"!==a.t&&a.t)throw new Error("Unsupported value type "+a.t);a.t="s",null!=b["string-value"]&&(v=ye(b["string-value"]),A=[])}}else{if(G=!1,"s"===a.t&&(a.v=v||"",A.length&&(a.R=A),G=0==I),N.Target&&(a.l=N),D.length>0&&(a.c=D,D=[]),v&&!1!==l.cellText&&(a.w=v),(!G||l.sheetStubs)&&!(l.sheetRows&&l.sheetRows<=y))for(var K=0;K0;)C[y+K][w+L]=q(a);else for(C[Kt({r:y+K,c:w})]=a;--L>0;)C[Kt({r:y+K,c:w+L})]=q(a);S.e.c<=w&&(S.e.c=w)}w+=(L=parseInt(b["number-columns-repeated"]||"1",10))-1,L=0,a={},v="",A=[]}N={};break;case"document":case"document-content":case"\u7535\u5b50\u8868\u683c\u6587\u6863":case"spreadsheet":case"\u4e3b\u4f53":case"scripts":case"styles":case"font-face-decls":if("/"===o[1]){if((n=d.pop())[0]!==o[3])throw"Bad state: "+n}else"/"!==o[0].charAt(o[0].length-2)&&d.push([o[3],!0]);break;case"annotation":if("/"===o[1]){if((n=d.pop())[0]!==o[3])throw"Bad state: "+n;$.t=v,A.length&&($.R=A),$.a=W,D.push($)}else"/"!==o[0].charAt(o[0].length-2)&&d.push([o[3],!1]);W="",H=0,v="",I=0,A=[];break;case"creator":"/"===o[1]?W=h.slice(H,o.index):H=o.index+o[0].length;break;case"meta":case"\u5143\u6570\u636e":case"settings":case"config-item-set":case"config-item-map-indexed":case"config-item-map-entry":case"config-item-map-named":case"shapes":case"frame":case"text-box":case"image":case"data-pilot-tables":case"list-style":case"form":case"dde-links":case"event-listeners":case"chart":if("/"===o[1]){if((n=d.pop())[0]!==o[3])throw"Bad state: "+n}else"/"!==o[0].charAt(o[0].length-2)&&d.push([o[3],!1]);v="",I=0,A=[];break;case"scientific-number":case"currency-symbol":case"currency-style":break;case"number-style":case"percentage-style":case"date-style":case"time-style":if("/"===o[1]){if(E[u.name]=f,(n=d.pop())[0]!==o[3])throw"Bad state: "+n}else"/"!==o[0].charAt(o[0].length-2)&&(f="",u=me(o[0],!1),d.push([o[3],!0]));break;case"script":case"libraries":case"automatic-styles":case"master-styles":break;case"default-style":case"page-layout":case"style":case"map":case"font-face":case"paragraph-properties":case"table-properties":case"table-column-properties":case"table-row-properties":case"table-cell-properties":break;case"number":switch(d[d.length-1][0]){case"time-style":case"date-style":r=me(o[0],!1),f+=Fc[o[3]]["long"===r.style?1:0]}break;case"fraction":break;case"day":case"month":case"year":case"era":case"day-of-week":case"week-of-year":case"quarter":case"hours":case"minutes":case"seconds":case"am-pm":switch(d[d.length-1][0]){case"time-style":case"date-style":r=me(o[0],!1),f+=Fc[o[3]]["long"===r.style?1:0]}break;case"boolean-style":case"boolean":case"text-style":break;case"text":if("/>"===o[0].slice(-2))break;if("/"===o[1])switch(d[d.length-1][0]){case"number-style":case"date-style":case"time-style":f+=h.slice(g,o.index)}else g=o.index+o[0].length;break;case"named-range":M=Xo((r=me(o[0],!1))["cell-range-address"]);var U={Name:r.name,Ref:M[0]+"!"+M[1]};V&&(U.Sheet=m.length),F.Names.push(U);break;case"text-content":case"text-properties":case"embedded-text":break;case"body":case"\u7535\u5b50\u8868\u683c":case"forms":case"table-column":case"table-header-rows":case"table-rows":case"table-column-group":case"table-header-columns":case"table-columns":case"null-date":case"graphic-properties":case"calculation-settings":case"named-expressions":case"label-range":case"label-ranges":case"named-expression":case"sort":case"sort-by":case"sort-groups":case"tab":case"line-break":case"span":break;case"p":case"\u6587\u672c\u4e32":if("/"!==o[1]||b&&b["string-value"])me(o[0],!1),I=o.index+o[0].length;else{var Y=(c=void 0,c=h.slice(I,o.index).replace(/[\t\r\n]/g," ").trim().replace(/ +/g," ").replace(//g," ").replace(//g,(function(e,t){return Array(parseInt(t,10)+1).join(" ")})).replace(/]*\/>/g,"\t").replace(//g,"\n"),[ye(c.replace(/<[^>]*>/g,""))]);v=(v.length>0?v+"\n":"")+Y[0]}break;case"s":break;case"database-range":if("/"===o[1])break;try{p[(M=Xo(me(o[0])["target-range-address"]))[0]]["!autofilter"]={ref:M[1]}}catch(El){}break;case"date":case"object":break;case"title":case"\u6807\u9898":case"desc":case"binary-data":case"table-source":case"scenario":case"iteration":case"content-validations":case"content-validation":case"help-message":case"error-message":case"database-ranges":case"filter":case"filter-and":case"filter-or":case"filter-condition":case"list-level-style-bullet":case"list-level-style-number":case"list-level-properties":break;case"sender-firstname":case"sender-lastname":case"sender-initials":case"sender-title":case"sender-position":case"sender-email":case"sender-phone-private":case"sender-fax":case"sender-company":case"sender-phone-work":case"sender-street":case"sender-city":case"sender-postal-code":case"sender-country":case"sender-state-or-province":case"author-name":case"author-initials":case"chapter":case"file-name":case"template-name":case"sheet-name":case"event-listener":break;case"initial-creator":case"creation-date":case"print-date":case"generator":case"document-statistic":case"user-defined":case"editing-duration":case"editing-cycles":case"config-item":case"page-number":case"page-count":case"time":case"cell-range-source":case"detective":case"operation":case"highlighted-range":break;case"data-pilot-table":case"source-cell-range":case"source-service":case"data-pilot-field":case"data-pilot-level":case"data-pilot-subtotals":case"data-pilot-subtotal":case"data-pilot-members":case"data-pilot-member":case"data-pilot-display-info":case"data-pilot-sort-info":case"data-pilot-layout-info":case"data-pilot-field-reference":case"data-pilot-groups":case"data-pilot-group":case"data-pilot-group-member":case"rect":break;case"dde-connection-decls":case"dde-connection-decl":case"dde-link":case"dde-source":case"properties":case"property":break;case"a":if("/"!==o[1]){if(!(N=me(o[0],!1)).href)break;N.Target=N.href,delete N.href,"#"==N.Target.charAt(0)&&N.Target.indexOf(".")>-1&&(M=Xo(N.Target.slice(1)),N.Target="#"+M[0]+"!"+M[1])}break;case"table-protection":case"data-pilot-grand-total":case"office-document-common-attrs":break;default:switch(o[2]){case"dc:":case"calcext:":case"loext:":case"ooo:":case"chartooo:":case"draw:":case"style:":case"chart:":case"form:":case"uof:":case"\u8868:":case"\u5b57:":break;default:if(l.WTF)throw new Error(o)}}var Q={Sheets:p,SheetNames:m,Workbook:F};return l.bookSheets&&delete Q.Sheets,Q});function Mc(e,t){t=t||{};var n=!!oe(e,"objectdata");n&&function(e,t){for(var n,r,i=cc(e);n=lc.exec(i);)switch(n[3]){case"manifest":break;case"file-entry":if("/"==(r=me(n[0],!1)).path&&"application/vnd.oasis.opendocument.spreadsheet"!==r.type)throw new Error("This OpenDocument is not a spreadsheet");break;case"encryption-data":case"algorithm":case"start-key-generation":case"key-derivation":throw new Error("Unsupported ODS Encryption");default:if(t&&t.WTF)throw n}}(ce(e,"META-INF/manifest.xml"),t);var r=le(e,"content.xml");if(!r)throw new Error("Missing content.xml in "+(n?"ODS":"UOF")+" file");var i=Nc(n?r:Be(r),t);return oe(e,"meta.xml")&&(i.Props=er(ce(e,"meta.xml"))),i}function Dc(e,t){return Nc(e,t)}var $c=function(){var e="";return function(){return de+e}}(),Wc=function(){var e=" \n",t=function(t,n,r){var i=[];i.push(' \n');var s=0,o=0,a=Xt(t["!ref"]),c=t["!merges"]||[],l=0,h=Array.isArray(t);for(s=0;s\n");for(;s<=a.e.r;++s){for(i.push(" \n"),o=0;oo||c[l].s.r>s||c[l].e.c\n");else{var g=Kt({r:s,c:o}),p=h?(t[s]||[])[o]:t[g];if(p&&p.f&&(u["table:formula"]=xe(("of:="+p.f.replace(Ys,"$1[.$2$3$4$5]").replace(/\]:\[/g,":")).replace(/;/g,"|").replace(/,/g,";")),p.F&&p.F.slice(0,g.length)==g)){var m=Xt(p.F);u["table:number-matrix-columns-spanned"]=m.e.c-m.s.c+1,u["table:number-matrix-rows-spanned"]=m.e.r-m.s.r+1}if(p){switch(p.t){case"b":f=p.v?"TRUE":"FALSE",u["office:value-type"]="boolean",u["office:boolean-value"]=p.v?"true":"false";break;case"n":f=p.w||String(p.v||0),u["office:value-type"]="float",u["office:value"]=p.v||0;break;case"s":case"str":f=p.v,u["office:value-type"]="string";break;case"d":f=p.w||J(p.v).toISOString(),u["office:value-type"]="date",u["office:date-value"]=J(p.v).toISOString(),u["table:style-name"]="ce1";break;default:i.push(e);continue}var C=xe(f).replace(/ +/g,(function(e){return''})).replace(/\t/g,"").replace(/\n/g,"").replace(/^ /,"").replace(/ $/,"");if(p.l&&p.l.Target){var b=p.l.Target;C=Xe("text:a",C,{"xlink:href":b="#"==b.charAt(0)?"#"+b.slice(1).replace(/\./,"!"):b})}i.push(" "+Xe("table:table-cell",Xe("text:p",C,{}),u)+"\n")}else i.push(e)}}i.push(" \n")}return i.push(" \n"),i.join("")};return function(e,n){var r=[de],i=Ke({"xmlns:office":"urn:oasis:names:tc:opendocument:xmlns:office:1.0","xmlns:table":"urn:oasis:names:tc:opendocument:xmlns:table:1.0","xmlns:style":"urn:oasis:names:tc:opendocument:xmlns:style:1.0","xmlns:text":"urn:oasis:names:tc:opendocument:xmlns:text:1.0","xmlns:draw":"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0","xmlns:fo":"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0","xmlns:xlink":"http://www.w3.org/1999/xlink","xmlns:dc":"http://purl.org/dc/elements/1.1/","xmlns:meta":"urn:oasis:names:tc:opendocument:xmlns:meta:1.0","xmlns:number":"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0","xmlns:presentation":"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0","xmlns:svg":"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0","xmlns:chart":"urn:oasis:names:tc:opendocument:xmlns:chart:1.0","xmlns:dr3d":"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0","xmlns:math":"http://www.w3.org/1998/Math/MathML","xmlns:form":"urn:oasis:names:tc:opendocument:xmlns:form:1.0","xmlns:script":"urn:oasis:names:tc:opendocument:xmlns:script:1.0","xmlns:ooo":"http://openoffice.org/2004/office","xmlns:ooow":"http://openoffice.org/2004/writer","xmlns:oooc":"http://openoffice.org/2004/calc","xmlns:dom":"http://www.w3.org/2001/xml-events","xmlns:xforms":"http://www.w3.org/2002/xforms","xmlns:xsd":"http://www.w3.org/2001/XMLSchema","xmlns:xsi":"http://www.w3.org/2001/XMLSchema-instance","xmlns:sheet":"urn:oasis:names:tc:opendocument:sh33tjs:1.0","xmlns:rpt":"http://openoffice.org/2005/report","xmlns:of":"urn:oasis:names:tc:opendocument:xmlns:of:1.2","xmlns:xhtml":"http://www.w3.org/1999/xhtml","xmlns:grddl":"http://www.w3.org/2003/g/data-view#","xmlns:tableooo":"http://openoffice.org/2009/table","xmlns:drawooo":"http://openoffice.org/2010/draw","xmlns:calcext":"urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0","xmlns:loext":"urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0","xmlns:field":"urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0","xmlns:formx":"urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0","xmlns:css3t":"http://www.w3.org/TR/css3-text/","office:version":"1.2"}),s=Ke({"xmlns:config":"urn:oasis:names:tc:opendocument:xmlns:config:1.0","office:mimetype":"application/vnd.oasis.opendocument.spreadsheet"});r.push("fods"==n.bookType?"\n":"\n"),function(e){e.push(" \n"),e.push(' \n'),e.push(' \n'),e.push(" /\n"),e.push(' \n'),e.push(" /\n"),e.push(" \n"),e.push(" \n"),e.push(' \n'),e.push(" \n")}(r),r.push(" \n"),r.push(" \n");for(var o=0;o!=e.SheetNames.length;++o)r.push(t(e.Sheets[e.SheetNames[o]],e,o));return r.push(" \n"),r.push(" \n"),r.push("fods"==n.bookType?"":""),r.join("")}}();function Hc(e,t){if("fods"==t.bookType)return Wc(e,t);var n=new re,r="",i=[],s=[];return n.file(r="mimetype","application/vnd.oasis.opendocument.spreadsheet"),n.file(r="content.xml",Wc(e,t)),i.push([r,"text/xml"]),s.push([r,"ContentFile"]),n.file(r="styles.xml",$c(e,t)),i.push([r,"text/xml"]),s.push([r,"StylesFile"]),n.file(r="meta.xml",Jn()),i.push([r,"text/xml"]),s.push([r,"MetadataFile"]),n.file(r="manifest.rdf",function(e){var t=[de];t.push('\n');for(var n=0;n!=e.length;++n)t.push(Un(e[n][0],e[n][1])),t.push([' \n',' \n'," \n"].join(""));return t.push(Un("","Document","pkg")),t.push(""),t.join("")}(s)),i.push([r,"application/rdf+xml"]),n.file(r="META-INF/manifest.xml",function(e){var t=[de];t.push('\n'),t.push(' \n');for(var n=0;n\n');return t.push(""),t.join("")}(i)),n}function Gc(e){return function(t,n){var r=function(e,t){if(!t)return 0;var n=e.SheetNames.indexOf(t);if(-1==n)throw new Error("Sheet not found: "+t);return n}(t,n.sheet);return e.from_sheet(t.Sheets[t.SheetNames[r]],n,t)}}var Vc=Gc(Oc),jc=Gc({from_sheet:Il}),Zc=Gc(wi),zc=Gc(Si),Kc=Gc(Ei),Xc=Gc(es),Uc=Gc({from_sheet:Al}),Yc=Gc(yi),Jc=Gc(xi);function Qc(e){return function(t){for(var n=0;n!=e.length;++n){var r=e[n];void 0===t[r[0]]&&(t[r[0]]=r[1]),"n"===r[2]&&(t[r[0]]=Number(t[r[0]]))}}}var qc=Qc([["cellNF",!1],["cellHTML",!0],["cellFormula",!0],["cellStyles",!1],["cellText",!0],["cellDates",!1],["sheetStubs",!1],["sheetRows",0,"n"],["bookDeps",!1],["bookSheets",!1],["bookProps",!1],["bookFiles",!1],["bookVBA",!1],["password",""],["WTF",!1]]),el=Qc([["cellDates",!1],["bookSST",!1],["bookType","xlsx"],["compression",!1],["WTF",!1]]);function tl(e,t,n,r,i,s,o,a,c,l,h,d){try{s[r]=Zn(le(e,n,!0),t);var u,f=ce(e,t);switch(a){case"sheet":u=function(e,t,n,r,i,s,o,a){return".bin"===t.slice(-4)?function(e,t,n,r,i,s,o){if(!e)return e;var a=t||{};r||(r={"!id":{}});var c,l,h,d,u,f,g,p,m,C,b=a.dense?[]:{},v={s:{r:2e6,c:2e6},e:{r:0,c:0}},I=!1,A=!1,y=[];a.biff=12,a["!row"]=0;var w=0,S=!1,x=[],E={},k=a.supbooks||i.supbooks||[[]];if(k.sharedf=E,k.arrayf=x,k.SheetNames=i.SheetNames||i.Sheets.map((function(e){return e.name})),!a.supbooks&&(a.supbooks=k,i.Names))for(var _=0;_=L[0].s.r&&l.r<=L[0].e.r&&f>=L[0].s.c&&f<=L[0].e.c&&(h.F=Ut(L[0]),S=!0)}!S&&e.length>3&&(h.f=e[3])}if(v.s.r>l.r&&(v.s.r=l.r),v.s.c>f&&(v.s.c=f),v.e.rl.r&&(v.s.r=l.r),v.s.c>f&&(v.s.c=f),v.e.r=e.s;)R[e.e--]={width:e.w/256,hidden:!!(1&e.flags)},O||(O=!0,cs(e.w/256)),ls(R[e.e+1]);break;case 161:b["!autofilter"]={ref:Ut(e)};break;case 476:b["!margins"]=e;break;case 147:i.Sheets[n]||(i.Sheets[n]={}),e.name&&(i.Sheets[n].CodeName=e.name);break;case 137:i.Views||(i.Views=[{}]),i.Views[0]||(i.Views[0]={}),e.RTL&&(i.Views[0].RTL=!0);break;case 485:break;case 175:case 644:case 625:case 562:case 396:case 1112:case 1146:case 471:case 1050:case 649:case 1105:case 49:case 589:case 607:case 564:case 1055:case 168:case 174:case 1180:case 499:case 64:case 1053:case 550:case 171:case 167:case 1177:case 169:case 1181:case 551:case 552:case 661:case 639:case 478:case 151:case 537:case 477:case 536:case 1103:case 680:case 1104:case 1024:case 152:case 663:case 535:case 678:case 504:case 1043:case 428:case 170:case 3072:case 50:case 2070:case 1045:break;case 35:I=!0;break;case 36:I=!1;break;case 37:case 38:break;default:if((t||"").indexOf("Begin")>0);else if((t||"").indexOf("End")>0);else if(!I||a.WTF)throw new Error("Unexpected record "+_+" "+t)}}),a),delete a.supbooks,delete a["!row"],!b["!ref"]&&(v.s.r<2e6||c&&(c.e.r>0||c.e.c>0||c.s.r>0||c.s.c>0))&&(b["!ref"]=Ut(c||v)),a.sheetRows&&b["!ref"]){var L=Yt(b["!ref"]);a.sheetRows<=+L.e.r&&(L.e.r=a.sheetRows-1,L.e.r>v.e.r&&(L.e.r=v.e.r),L.e.rv.e.c&&(L.e.c=v.e.c),L.e.c0&&(b["!merges"]=y),R.length>0&&(b["!cols"]=R),B.length>0&&(b["!rows"]=B),b}(e,r,n,i,s,o,a):function(e,t,n,r,i,s,o){if(!e)return e;var a=t.dense?[]:{},c={s:{r:2e6,c:2e6},e:{r:0,c:0}},l="",h="",d=e.match(sa);d?(l=e.slice(0,d.index),h=e.slice(d.index+d[0].length)):l=h=e;var u=l.match(da);u&&fa(u[0],0,i,n);var f=(l.match(/<(?:\w*:)?dimension/)||{index:-1}).index;if(f>0){var g=l.slice(f,f+50).match(aa);g&&function(e,t){var n=Yt(t);n.s.r<=n.e.r&&n.s.c<=n.e.c&&n.s.r>=0&&n.s.c>=0&&(e["!ref"]=Ut(n))}(a,g[1])}var p=l.match(ua);p&&p[1]&&function(e,t){(e.match(ga)||[]).forEach((function(e){Re(me(e).rightToLeft)&&(t.Views||(t.Views=[{}]),t.Views[0]||(t.Views[0]={}),t.Views[0].RTL=!0)}))}(p[1],i);var m=[];if(t.cellStyles){var C=l.match(ca);C&&function(e,t){for(var n=!1,r=0;r!=t.length;++r){var i=me(t[r],!0);i.hidden&&(i.hidden=Re(i.hidden));var s=parseInt(i.min,10)-1,o=parseInt(i.max,10)-1;for(delete i.min,delete i.max,i.width=+i.width,!n&&i.width&&(n=!0,cs(i.width)),ls(i);s<=o;)e[s++]=q(i)}}(m,C)}d&&wa(d[1],a,t,c,s,o);var b=h.match(la);b&&(a["!autofilter"]=function(e){return{ref:(e.match(/ref="([^"]*)"/)||[])[1]}}(b[0]));var v=[],I=h.match(ia);if(I)for(f=0;f!=I.length;++f)v[f]=Yt(I[f].slice(I[f].indexOf('"')+1));var A=h.match(oa);A&&function(e,t,n){for(var r=Array.isArray(e),i=0;i!=t.length;++i){var s=me(Be(t[i]),!0);if(!s.ref)return;var o=((n||{})["!id"]||[])[s.id];o?(s.Target=o.Target,s.location&&(s.Target+="#"+s.location)):(s.Target="#"+s.location,o={Target:s.Target,TargetMode:"Internal"}),s.Rel=o,s.tooltip&&(s.Tooltip=s.tooltip,delete s.tooltip);for(var a=Yt(s.ref),c=a.s.r;c<=a.e.r;++c)for(var l=a.s.c;l<=a.e.c;++l){var h=Kt({c:l,r:c});r?(e[c]||(e[c]=[]),e[c][l]||(e[c][l]={t:"z",v:void 0}),e[c][l].l=s):(e[h]||(e[h]={t:"z",v:void 0}),e[h].l=s)}}}(a,A,r);var y=h.match(ha);if(y&&(a["!margins"]=function(e){var t={};return["left","right","top","bottom","header","footer"].forEach((function(n){e[n]&&(t[n]=parseFloat(e[n]))})),t}(me(y[0]))),!a["!ref"]&&c.e.c>=c.s.c&&c.e.r>=c.s.r&&(a["!ref"]=Ut(c)),t.sheetRows>0&&a["!ref"]){var w=Yt(a["!ref"]);t.sheetRows<=+w.e.r&&(w.e.r=t.sheetRows-1,w.e.r>c.e.r&&(w.e.r=c.e.r),w.e.rc.e.c&&(w.e.c=c.e.c),w.e.c0&&(a["!cols"]=m),v.length>0&&(a["!merges"]=v),a}(e,r,n,i,s,o,a)}(f,t,i,c,s[r],l,h,d);break;case"chart":if(!(u=function(e,t,n,r,i,s,o,a){return".bin"===t.slice(-4)?function(e,t,n,r,i){if(!e)return e;r||(r={"!id":{}});var s={"!type":"chart","!chart":null,"!rel":""},o=[],a=!1;return Pt(e,(function(e,r,c){switch(c){case 550:s["!rel"]=e;break;case 651:i.Sheets[n]||(i.Sheets[n]={}),e.name&&(i.Sheets[n].CodeName=e.name);break;case 562:case 652:case 669:case 679:case 551:case 552:case 476:case 3072:break;case 35:a=!0;break;case 36:a=!1;break;case 37:o.push(r);break;case 38:o.pop();break;default:if((r||"").indexOf("Begin")>0)o.push(r);else if((r||"").indexOf("End")>0)o.pop();else if(!a||t.WTF)throw new Error("Unexpected record "+c+" "+r)}}),t),r["!id"][s["!rel"]]&&(s["!chart"]=r["!id"][s["!rel"]]),s}(e,r,n,i,s):function(e,t,n,r,i){if(!e)return e;r||(r={"!id":{}});var s,o={"!type":"chart","!chart":null,"!rel":""},a=e.match(da);return a&&fa(a[0],0,i,n),(s=e.match(/drawing r:id="(.*?)"/))&&(o["!rel"]=s[1]),r["!id"][o["!rel"]]&&(o["!chart"]=r["!id"][o["!rel"]]),o}(e,0,n,i,s)}(f,t,i,c,s[r],l))||!u["!chart"])break;var g=he(u["!chart"].Target,t),p=jn(g),m=he(function(e,t){if(!e)return"??";var n=(e.match(/]*r:id="([^"]*)"/)||["",""])[1];return t["!id"][n].Target}(le(e,g,!0),Zn(le(e,p,!0),g)),g),C=jn(m);u=function(e,t,n,r,i,s){var o=s||{"!type":"chart"};if(!e)return s;var a=0,c=0,l="A",h={s:{r:2e6,c:2e6},e:{r:0,c:0}};return(e.match(/[\s\S]*?<\/c:numCache>/gm)||[]).forEach((function(e){var t=function(e){var t=[];(e.match(/(.*?)<\/c:pt>/gm)||[]).forEach((function(e){var n=e.match(/(.*)<\/c:v><\/c:pt>/);n&&(t[+n[1]]=+n[2])}));var n=ye((e.match(/([\s\S]*?)<\/c:formatCode>/)||["","General"])[1]);return[t,n]}(e);h.s.r=h.s.c=0,h.e.c=a,l=jt(a),t[0].forEach((function(e,n){o[l+Gt(n)]={t:"n",v:e,z:t[1]},c=n})),h.e.r0&&(o["!ref"]=Ut(h)),o}(le(e,m,!0),0,0,Zn(le(e,C,!0),m),0,u);break;case"macro":t.slice(-4),u={"!type":"macro"};break;case"dialog":t.slice(-4),u={"!type":"dialog"}}o[r]=u}catch(El){if(c.WTF)throw El}}function nl(e){return"/"==e.charAt(0)?e.slice(1):e}function rl(e,t){if(R(T),qc(t=t||{}),oe(e,"META-INF/manifest.xml"))return Mc(e,t);if(oe(e,"objectdata.xml"))return Mc(e,t);if(oe(e,"Index/Document.iwa"))throw new Error("Unsupported NUMBERS file");var n,r,i=function(e){for(var t=W(e.files),n=[],r=0;r0?t.calcchains[0]:"",t.sst=t.strs.length>0?t.strs[0]:"",t.style=t.styles.length>0?t.styles[0]:"",t.defaults=n,delete t.calcchains,t}(le(e,"[Content_Types].xml")),o=!1;if(0===s.workbooks.length&&ce(e,r="xl/workbook.xml",!0)&&s.workbooks.push(r),0===s.workbooks.length){if(!ce(e,r="xl/workbook.bin",!0))throw new Error("Could not find workbook");s.workbooks.push(r),o=!0}"bin"==s.workbooks[0].slice(-3)&&(o=!0);var a={},c={};if(!t.bookSheets&&!t.bookProps){if(Uo=[],s.sst)try{Uo=function(e,t,n){return".bin"===t.slice(-4)?function(e,t){var n=[],r=!1;return Pt(e,(function(e,i,s){switch(s){case 159:n.Count=e[0],n.Unique=e[1];break;case 19:n.push(e);break;case 160:return!0;case 35:r=!0;break;case 36:r=!1;break;default:if(i.indexOf("Begin")>0||i.indexOf("End"),!r||t.WTF)throw new Error("Unexpected record "+s+" "+i)}})),n}(e,n):function(e,t){var n=[],r="";if(!e)return n;var i=e.match(Li);if(i){r=i[2].replace(Pi,"").split(Fi);for(var s=0;s!=r.length;++s){var o=Oi(r[s].trim(),t);null!=o&&(n[n.length]=o)}i=me(i[1]),n.Count=i.count,n.Unique=i.uniqueCount}return n}(e,n)}(ce(e,nl(s.sst)),s.sst,t)}catch(El){if(t.WTF)throw El}t.cellStyles&&s.themes.length&&(a=function(e,t,n){return Ds(e,n)}(le(e,s.themes[0].replace(/^\//,""),!0)||"",0,t)),s.style&&(c=function(e,t,n,r){return".bin"===t.slice(-4)?function(e,t,n){var r={NumberFmt:[]};for(var i in T._table)r.NumberFmt[i]=T._table[i];r.CellXf=[],r.Fonts=[];var s=[],o=!1;return Pt(e,(function(e,i,a){switch(a){case 44:r.NumberFmt[e[0]]=e[1],T.load(e[1],e[0]);break;case 43:r.Fonts.push(e),null!=e.color.theme&&t&&t.themeElements&&t.themeElements.clrScheme&&(e.color.rgb=ns(t.themeElements.clrScheme[e.color.theme].rgb,e.color.tint||0));break;case 1025:case 45:case 46:break;case 47:"BrtBeginCellXFs"==s[s.length-1]&&r.CellXf.push(e);break;case 48:case 507:case 572:case 475:break;case 1171:case 2102:case 1130:case 512:case 2095:case 3072:break;case 35:o=!0;break;case 36:o=!1;break;case 37:s.push(i);break;case 38:s.pop();break;default:if((i||"").indexOf("Begin")>0)s.push(i);else if((i||"").indexOf("End")>0)s.pop();else if(!o||n.WTF)throw new Error("Unexpected record "+a+" "+i)}})),r}(e,n,r):Is(e,n,r)}(ce(e,nl(s.style)),s.style,a,t))}s.links.map((function(n){return function(e,t,n){if(".bin"===t.slice(-4))return function(e,t,n){if(!e)return e;var r=n||{},i=!1;Pt(e,(function(e,t,n){switch(n){case 359:case 363:case 364:case 366:case 367:case 368:case 369:case 370:case 371:case 472:case 577:case 578:case 579:case 580:case 581:case 582:case 583:case 584:case 585:case 586:case 587:break;case 35:i=!0;break;case 36:i=!1;break;default:if((t||"").indexOf("Begin")>0);else if((t||"").indexOf("End")>0);else if(!i||r.WTF)throw new Error("Unexpected record "+n.toString(16)+" "+t)}}),r)}(e,0,n)}(ce(e,nl(n)),n,t)}));var l=function(e,t,n){return".bin"===t.slice(-4)?function(e,t){var n={AppVersion:{},WBProps:{},WBView:[],Sheets:[],CalcPr:{},xmlns:""},r=[],i=!1;t||(t={}),t.biff=12;var s=[],o=[[]];return o.SheetNames=[],o.XTI=[],Pt(e,(function(e,a,c){switch(c){case 156:o.SheetNames.push(e.name),n.Sheets.push(e);break;case 153:n.WBProps=e;break;case 39:null!=e.Sheet&&(t.SID=e.Sheet),e.Ref=Po(e.Ptg,0,null,o,t),delete t.SID,delete e.Ptg,s.push(e);break;case 1036:break;case 357:case 358:case 355:case 667:o[0].length?o.push([c,e]):o[0]=[c,e],o[o.length-1].XTI=[];break;case 362:0===o.length&&(o[0]=[],o[0].XTI=[]),o[o.length-1].XTI=o[o.length-1].XTI.concat(e),o.XTI=o.XTI.concat(e);break;case 361:break;case 3072:case 3073:case 2071:case 534:case 677:case 158:case 157:case 610:case 2050:case 155:case 548:case 676:case 128:case 665:case 2128:case 2125:case 549:case 2053:case 596:case 2076:case 2075:case 2082:case 397:case 154:case 1117:case 553:case 2091:break;case 35:r.push(a),i=!0;break;case 36:r.pop(),i=!1;break;case 37:r.push(a),i=!0;break;case 38:r.pop(),i=!1;break;case 16:break;default:if((a||"").indexOf("Begin")>0);else if((a||"").indexOf("End")>0);else if(!i||t.WTF&&"BrtACBegin"!=r[r.length-1]&&"BrtFRTBegin"!=r[r.length-1])throw new Error("Unexpected record "+c+" "+a)}}),t),Wa(n),n.Names=s,n.supbooks=o,n}(e,n):function(e,t){if(!e)throw new Error("Could not find file");var n={AppVersion:{},WBProps:{},WBView:[],Sheets:[],CalcPr:{},Names:[],xmlns:""},r=!1,i="xmlns",s={},o=0;if(e.replace(fe,(function(a,c){var l=me(a);switch(Ce(l[0])){case"":break;case"":case"":break;case"":break;case"":Pa.forEach((function(e){if(null!=l[e[0]])switch(e[2]){case"bool":n.WBProps[e[0]]=Re(l[e[0]]);break;case"int":n.WBProps[e[0]]=parseInt(l[e[0]],10);break;default:n.WBProps[e[0]]=l[e[0]]}})),l.codeName&&(n.WBProps.CodeName=l.codeName);break;case"":case"":break;case"":case"":break;case"":delete l[0],n.WBView.push(l);break;case"":break;case"":case"":break;case"":break;case"":case"":case"":case"":break;case"":case"":r=!1;break;case"":s.Ref=ye(Be(e.slice(o,c))),n.Names.push(s);break;case"":break;case"":delete l[0],n.CalcPr=l;break;case"":case"":case"":case"":break;case"":case"":case"":break;case"":case"":case"":break;case"":break;case"":case"":case"":case"":case"":break;case"":r=!1;break;case"":r=!0;break;case"":r=!1;break;case"]*>([\\s\\S]*?)"));i&&i.length>0&&(r[n[1]]=i[1])}})),r.HeadingPairs&&r.TitlesOfParts&&ir(r.HeadingPairs,r.TitlesOfParts,t,n)}(d,h,t));var u={};t.bookSheets&&!t.bookProps||0!==s.custprops.length&&(d=le(e,nl(s.custprops[0]),!0))&&(u=function(e,t){var n={},r="",i=e.match(or);if(i)for(var s=0;s!=i.length;++s){var o=i[s],a=me(o);switch(a[0]){case"":r=null;break;default:if(0===o.indexOf(""),l=c[0].slice(4),h=c[1];switch(l){case"lpstr":case"bstr":case"lpwstr":n[r]=ye(h);break;case"bool":n[r]=Re(h);break;case"i1":case"i2":case"i4":case"i8":case"int":case"uint":n[r]=parseInt(h,10);break;case"r4":case"r8":case"decimal":n[r]=parseFloat(h);break;case"filetime":case"date":n[r]=J(h);break;case"cy":case"error":n[r]=ye(h);break;default:if("/"==l.slice(-1))break;t.WTF&&"undefined"!=typeof console&&console.warn("Unexpected",o,l,c)}}else if("0&&(n=h.SheetNames),t.bookProps&&(f.Props=h,f.Custprops=u),t.bookSheets&&void 0!==n&&(f.SheetNames=n),t.bookSheets?f.SheetNames:t.bookProps))return f;n={};var g,p={};t.bookDeps&&s.calcchain&&(g=ce(e,nl(s.calcchain)),p=".bin"===s.calcchain.slice(-4)?function(e,t,n){var r=[];return Pt(e,(function(e,t,n){switch(n){case 63:r.push(e);break;default:if((t||"").indexOf("Begin")>0);else if(!((t||"").indexOf("End")>0))throw new Error("Unexpected record "+n+" "+t)}})),r}(g):function(e){var t=[];if(!e)return t;var n=1;return(e.match(fe)||[]).forEach((function(e){var r=me(e);switch(r[0]){case"":case"":break;case"-1?"sheet":Vn.CS&&n==Vn.CS?"chart":Vn.DS&&n==Vn.DS?"dialog":Vn.MS&&n==Vn.MS?"macro":n&&n.length?n:"sheet")];var n}))}catch(El){return null}return e&&0!==e.length?e:null}(x,l.Sheets));var E=ce(e,"xl/worksheets/sheet.xml",!0)?1:0;for(b=0;b!=h.Worksheets;++b){var k="sheet";x&&x[b]?(m="xl/"+x[b][1].replace(/[\/]?xl\//,""),oe(e,m)||(m=x[b][1]),oe(e,m)||(m=S.replace(/_rels\/.*$/,"")+x[b][1]),k=x[b][2]):m=(m="xl/worksheets/sheet"+(b+1-E)+"."+y).replace(/sheet0\./,"sheet."),C=m.replace(/^(.*)(\/)([^\/]*)$/,"$1/_rels/$3.rels"),tl(e,m,C,h.SheetNames[b],b,v,n,k,t,l,a,c)}return s.comments&&function(e,t,n,r,i){for(var s=0;s!=t.length;++s){var o=t[s],a=Xa(ce(e,o.replace(/^\//,""),!0),o,i);if(a&&a.length)for(var c=W(n),l=0;l!=c.length;++l){var h=c[l],d=r[h];d&&d[o]&&Vs(0,n[h],a)}}}(e,s.comments,n,v,t),f={Directory:s,Workbook:l,Props:h,Custprops:u,Deps:p,Sheets:n,SheetNames:h.SheetNames,Strings:Uo,Styles:c,Themes:a,SSF:T.get_table()},t.bookFiles&&(f.keys=i,f.files=e.files),t.bookVBA&&(s.vba.length>0?f.vbaraw=ce(e,nl(s.vba[0]),!0):s.defaults&&"application/vnd.ms-office.vbaProject"===s.defaults.bin&&(f.vbaraw=ce(e,"xl/vbaProject.bin",!0))),f}function il(e,t){if(Hs=1024,"ods"==t.bookType)return Hc(e,t);e&&!e.SSF&&(e.SSF=T.get_table()),e&&e.SSF&&(R(T),T.load_table(e.SSF),t.revssf=V(e.SSF),t.revssf[e.SSF[65535]]=0,t.ssf=e.SSF),t.rels={},t.wbrels={},t.Strings=[],t.Strings.Count=0,t.Strings.Unique=0,Jo?t.revStrings=new Map:(t.revStrings={},t.revStrings.foo=[],delete t.revStrings.foo);var n="xlsb"==t.bookType?"bin":"xml",r=Xs.indexOf(t.bookType)>-1,i={workbooks:[],sheets:[],charts:[],dialogs:[],macros:[],rels:[],strs:[],comments:[],links:[],coreprops:[],extprops:[],custprops:[],themes:[],styles:[],calcchains:[],vba:[],drawings:[],TODO:[],xmlns:""};el(t=t||{});var s=new re,o="",a=0;if(t.cellXfs=[],ta(t.cellXfs,{},{revssf:{General:0}}),e.Props||(e.Props={}),s.file(o="docProps/core.xml",function(e,t){var n=t||{},r=[de,tr],i={};if(!e&&!n.Props)return r.join("");e&&(null!=e.CreatedDate&&nr("dcterms:created","string"==typeof e.CreatedDate?e.CreatedDate:Ue(e.CreatedDate,n.WTF),{"xsi:type":"dcterms:W3CDTF"},r,i),null!=e.ModifiedDate&&nr("dcterms:modified","string"==typeof e.ModifiedDate?e.ModifiedDate:Ue(e.ModifiedDate,n.WTF),{"xsi:type":"dcterms:W3CDTF"},r,i));for(var s=0;s!=Qn.length;++s){var o=Qn[s],a=n.Props&&null!=n.Props[o[1]]?n.Props[o[1]]:e?e[o[1]]:null;!0===a?a="1":!1===a?a="0":"number"==typeof a&&(a=String(a)),null!=a&&nr(o[0],a,null,r,i)}return r.length>2&&(r[r.length]="",r[1]=r[1].replace("/>",">")),r.join("")}(e.Props,t)),i.coreprops.push(o),Xn(t.rels,2,o,Vn.CORE_PROPS),o="docProps/app.xml",e.Props&&e.Props.SheetNames);else if(e.Workbook&&e.Workbook.Sheets){for(var c=[],l=0;lWorksheets")+n("vt:variant",n("vt:i4",String(e.Worksheets))),{size:2,baseType:"variant"})),t[t.length]=n("TitlesOfParts",n("vt:vector",e.SheetNames.map((function(e){return""+xe(e)+""})).join(""),{size:e.Worksheets,baseType:"lpstr"})),t.length>2&&(t[t.length]="",t[1]=t[1].replace("/>",">")),t.join("")}(e.Props)),i.extprops.push(o),Xn(t.rels,3,o,Vn.EXT_PROPS),e.Custprops!==e.Props&&W(e.Custprops||{}).length>0&&(s.file(o="docProps/custom.xml",function(e){var t=[de,ar];if(!e)return t.join("");var n=1;return W(e).forEach((function(r){++n,t[t.length]=Xe("property",function(e){switch(typeof e){case"string":return Xe("vt:lpwstr",e);case"number":return Xe((0|e)==e?"vt:i4":"vt:r8",String(e));case"boolean":return Xe("vt:bool",e?"true":"false")}if(e instanceof Date)return Xe("vt:filetime",Ue(e));throw new Error("Unable to serialize "+e)}(e[r]),{fmtid:"{D5CDD505-2E9C-101B-9397-08002B2CF9AE}",pid:n,name:r})})),t.length>2&&(t[t.length]="",t[1]=t[1].replace("/>",">")),t.join("")}(e.Custprops)),i.custprops.push(o),Xn(t.rels,4,o,Vn.CUST_PROPS)),a=1;a<=e.SheetNames.length;++a){var h={"!id":{}},d=e.Sheets[e.SheetNames[a-1]];switch((d||{})["!type"]||"sheet"){case"chart":default:s.file(o="xl/worksheets/sheet"+a+"."+n,Ya(a-1,o,t,e,h)),i.sheets.push(o),Xn(t.wbrels,-1,"worksheets/sheet"+a+"."+n,Vn.WS[0])}if(d){var u=d["!comments"],f=!1;if(u&&u.length>0){var g="xl/comments"+a+"."+n;s.file(g,Qa(u,g,t)),i.comments.push(g),Xn(h,-1,"../comments"+a+"."+n,Vn.CMNT),f=!0}d["!legacy"]&&f&&s.file("xl/drawings/vmlDrawing"+a+".vml",Gs(a,d["!comments"])),delete d["!comments"],delete d["!legacy"]}h["!id"].rId1&&s.file(jn(o),Kn(h))}return null!=t.Strings&&t.Strings.length>0&&(s.file(o="xl/sharedStrings."+n,Ja(t.Strings,o,t)),i.strs.push(o),Xn(t.wbrels,-1,"sharedStrings."+n,Vn.SST)),s.file(o="xl/workbook."+n,Ua(e,o,t)),i.workbooks.push(o),Xn(t.rels,1,o,Vn.WB),s.file(o="xl/theme/theme1.xml",$s(0,t)),i.themes.push(o),Xn(t.wbrels,-1,"theme/theme1.xml",Vn.THEME),s.file(o="xl/styles."+n,function(e,t,n){return(".bin"===t.slice(-4)?Rs:ys)(e,n)}(e,o,t)),i.styles.push(o),Xn(t.wbrels,-1,"styles."+n,Vn.STY),e.vbaraw&&r&&(s.file(o="xl/vbaProject.bin",e.vbaraw),i.vba.push(o),Xn(t.wbrels,-1,"vbaProject.bin",Vn.VBA)),s.file("[Content_Types].xml",function(e,t){var n,r=[];r[r.length]=de,r[r.length]=Hn,r=r.concat(Gn);var i=function(i){e[i]&&e[i].length>0&&(r[r.length]=Xe("Override",null,{PartName:("/"==(n=e[i][0])[0]?"":"/")+n,ContentType:$n[i][t.bookType||"xlsx"]}))},s=function(n){(e[n]||[]).forEach((function(e){r[r.length]=Xe("Override",null,{PartName:("/"==e[0]?"":"/")+e,ContentType:$n[n][t.bookType||"xlsx"]})}))},o=function(t){(e[t]||[]).forEach((function(e){r[r.length]=Xe("Override",null,{PartName:("/"==e[0]?"":"/")+e,ContentType:Wn[t][0]})}))};return i("workbooks"),s("sheets"),s("charts"),o("themes"),["strs","styles"].forEach(i),["coreprops","extprops","custprops"].forEach(o),o("vba"),o("comments"),o("drawings"),r.length>2&&(r[r.length]="",r[1]=r[1].replace("/>",">")),r.join("")}(i,t)),s.file("_rels/.rels",Kn(t.rels)),s.file("xl/_rels/workbook."+n+".rels",Kn(t.wbrels)),delete t.revssf,delete t.ssf,s}function sl(e,t){var n="";switch((t||{}).type||"base64"){case"buffer":return[e[0],e[1],e[2],e[3]];case"base64":n=m.decode(e.slice(0,24));break;case"binary":n=e;break;case"array":return[e[0],e[1],e[2],e[3]];default:throw new Error("Unrecognized type "+(t&&t.type||"undefined"))}return[n.charCodeAt(0),n.charCodeAt(1),n.charCodeAt(2),n.charCodeAt(3)]}function ol(e,t){var n=0;e:for(;n0;)t.push(Gi(e));return t}(i.content);if(1!==s.length||1!==s[0].comps.length||0!==s[0].comps[0].t||"StrongEncryptionDataSpace"!==s[0].name||"EncryptedPackage"!==s[0].comps[0].v)throw new Error("ECMA-376 Encrypted file bad "+r);if(!(i=N.find(e,r="/!DataSpaces/DataSpaceInfo/StrongEncryptionDataSpace"))||!i.content)throw new Error("ECMA-376 Encrypted file missing "+r);var o=function(e){var t=[];e.l+=4;for(var n=e.read_shift(4);n-- >0;)t.push(e.read_shift(0,"lpp4"));return t}(i.content);if(1!=o.length||"StrongEncryptionTransform"!=o[0])throw new Error("ECMA-376 Encrypted file bad "+r);if(!(i=N.find(e,r="/!DataSpaces/TransformInfo/StrongEncryptionTransform/!Primary"))||!i.content)throw new Error("ECMA-376 Encrypted file missing "+r);!function(e){var t=function(e){var t={};return e.read_shift(4),e.l+=4,t.id=e.read_shift(0,"lpp4"),t.name=e.read_shift(0,"lpp4"),t.R=Hi(e,4),t.U=Hi(e,4),t.W=Hi(e,4),t}(e);if(t.ename=e.read_shift(0,"8lpp4"),t.blksz=e.read_shift(4),t.cmode=e.read_shift(4),4!=e.read_shift(4))throw new Error("Bad !Primary record")}(i.content)}catch(El){}if(!(i=N.find(e,r="/EncryptionInfo"))||!i.content)throw new Error("ECMA-376 Encrypted file missing "+r);var a=function(e){var t=Hi(e);switch(t.Minor){case 2:return[t.Minor,Zi(e)];case 3:return[t.Minor,zi()];case 4:return[t.Minor,Ki(e)]}throw new Error("ECMA-376 Encrypted file unrecognized Version: "+t.Minor)}(i.content);if(!(i=N.find(e,r="/EncryptedPackage"))||!i.content)throw new Error("ECMA-376 Encrypted file missing "+r);if(4==a[0]&&"undefined"!=typeof decrypt_agile)return decrypt_agile(a[1],i.content,n.password||"",n);if(2==a[0]&&"undefined"!=typeof decrypt_std76)return decrypt_std76(a[1],i.content,n.password||"",n);throw new Error("File is password-protected")}(e,t):Ac(e,t)}(N.read(r,s),s);case 9:return Ac(r,s);case 60:return dc(r,s);case 73:if(68===n[1])return function(e,t){var n=t||{},r=!!n.WTF;n.WTF=!0;try{var i=wi.to_workbook(e,n);return n.WTF=r,i}catch(El){if(n.WTF=r,!El.message.match(/SYLK bad record ID/)&&r)throw El;return Ei.to_workbook(e,t)}}(r,s);break;case 84:if(65===n[1]&&66===n[2]&&76===n[3])return Si.to_workbook(r,s);break;case 80:return 75===n[1]&&n[2]<9&&n[3]<9?function(e,t){var n,r=e,i=t||{};switch(i.type||(i.type=C&&Buffer.isBuffer(e)?"buffer":"base64"),i.type){case"base64":n=new re(r,{base64:!0});break;case"binary":case"array":n=new re(r,{base64:!1});break;case"buffer":n=new re(r);break;default:throw new Error("Unrecognized type "+i.type)}return rl(n,i)}(r,s):al(e,r,s,i);case 239:return 60===n[3]?dc(r,s):al(e,r,s,i);case 255:if(254===n[1])return function(e,t){var n=e;return"base64"==t.type&&(n=m.decode(n)),n=cptable.utils.decode(1200,n.slice(2),"str"),t.type="binary",ol(n,t)}(r,s);break;case 0:if(0===n[1]&&n[2]>=2&&0===n[3])return ki.to_workbook(r,s);break;case 3:case 131:case 139:case 140:return yi.to_workbook(r,s);case 123:if(92===n[1]&&114===n[2]&&116===n[3])return es.to_workbook(r,s);break;case 10:case 13:case 32:return function(e,t){var n="",r=sl(e,t);switch(t.type){case"base64":n=m.decode(e);break;case"binary":n=e;break;case"buffer":n=e.toString("binary");break;case"array":n=Q(e);break;default:throw new Error("Unrecognized type "+t.type)}return 239==r[0]&&187==r[1]&&191==r[2]&&(n=Be(n)),ol(n,t)}(r,s)}return n[2]<=12&&n[3]<=31?yi.to_workbook(r,s):al(e,r,s,i)}function ll(e,t){var n=t||{};return n.type="file",cl(e,n)}function hl(e,t){switch(t.type){case"base64":case"binary":break;case"buffer":case"array":t.type="";break;case"file":return D(t.file,N.write(e,{type:C?"buffer":""}));case"string":throw new Error("'string' output type invalid for '"+t.bookType+"' files");default:throw new Error("Unrecognized type "+t.type)}return N.write(e,t)}function dl(e,t,n){n||(n="");var r=n+e;switch(t.type){case"base64":return m.encode(Oe(r));case"binary":return Oe(r);case"string":return e;case"file":return D(t.file,r,"utf8");case"buffer":return C?b(r,"utf8"):dl(r,{type:"binary"}).split("").map((function(e){return e.charCodeAt(0)}))}throw new Error("Unrecognized type "+t.type)}function ul(e,t){switch(t.type){case"string":case"base64":case"binary":for(var n="",r=0;r22)throw new Error("Bad Code Name: Worksheet"+o)}}));for(var i=0;i'+i.join("")+""}(e.Props,e.Custprops)),n.join("")}(e,t)),n.push(""),n.push(""),n.push("");for(var r=0;r'];return t.cellXfs.forEach((function(e,t){var r=[];r.push(Xe("NumberFormat",null,{"ss:Format":xe(T._table[e.numFmtId])})),n.push(Xe("Style",r.join(""),{"ss:ID":"s"+(21+t)}))})),Xe("Styles",n.join(""))}(0,t),n[3]=function(e){if(!((e||{}).Workbook||{}).Names)return"";for(var t=e.Workbook.Names,n=[],r=0;r-1||null!=s[o][1]&&a.push(s[o]);i.length&&N.utils.cfb_add(t,"/\x05SummaryInformation",Er(i,vc,Pn,Rn)),(r.length||a.length)&&N.utils.cfb_add(t,"/\x05DocumentSummaryInformation",Er(r,Ic,Ln,Tn,a.length?a:null,"05d5cdd59c2e1b10939708002b2cf9ae"))}(e,r),8==n.biff&&e.vbaraw&&function(e,t){t.FullPaths.forEach((function(n,r){if(0!=r){var i=n.replace(/[^\/]*[\/]/,"/_VBA_PROJECT_CUR/");"/"!==i.slice(-1)&&N.utils.cfb_add(e,i,t.FileIndex[r].content)}}))}(r,N.read(e.vbaraw,{type:"string"==typeof e.vbaraw?"binary":"buffer"})),r}(e,n),n)}(e,n);case"xlsx":case"xlsm":case"xlam":case"xlsb":case"ods":return function(e,t){var n=t||{},r=il(e,n),i={};if(n.compression&&(i.compression="DEFLATE"),n.password)i.type=C?"nodebuffer":"string";else switch(n.type){case"base64":i.type="base64";break;case"binary":i.type="string";break;case"string":throw new Error("'string' output type invalid for '"+n.bookType+"' files");case"buffer":case"file":i.type=C?"nodebuffer":"string";break;default:throw new Error("Unrecognized type "+n.type)}var s=r.generate(i);return n.password&&"undefined"!=typeof encrypt_agile?hl(encrypt_agile(s,n.password),n):"file"===n.type?D(n.file,s):"string"==n.type?Be(s):s}(e,n);default:throw new Error("Unrecognized bookType |"+n.bookType+"|")}}function gl(e){if(!e.bookType){var t=e.file.slice(e.file.lastIndexOf(".")).toLowerCase();t.match(/^\.[a-z]+$/)&&(e.bookType=t.slice(1)),e.bookType={xls:"biff8",htm:"html",slk:"sylk",socialcalc:"eth",Sh33tJS:"WTF"}[e.bookType]||e.bookType}}function pl(e,t,n){var r=n||{};return r.type="file",r.file=t,gl(r),fl(e,r)}function ml(e,t,n,r,i,s,o,a){var c=Gt(n),l=a.defval,h=a.raw||!a.hasOwnProperty("raw"),d=!0,u=1===i?[]:{};if(1!==i)if(Object.defineProperty)try{Object.defineProperty(u,"__rowNum__",{value:n,enumerable:!1})}catch(El){u.__rowNum__=n}else u.__rowNum__=n;if(!o||e[n])for(var f=t.s.c;f<=t.e.c;++f){var g=o?e[n][f]:e[r[f]+c];if(void 0!==g&&void 0!==g.t){var p=g.v;switch(g.t){case"z":if(null==p)break;continue;case"e":p=void 0;break;case"s":case"d":case"b":case"n":break;default:throw new Error("unrecognized type "+g.t)}if(null!=s[f]){if(null==p)if(void 0!==l)u[s[f]]=l;else{if(!h||null!==p)continue;u[s[f]]=null}else u[s[f]]=h?p:Jt(g,p,a);null!=p&&(d=!1)}}else{if(void 0===l)continue;null!=s[f]&&(u[s[f]]=l)}}return{row:u,isempty:d}}function Cl(e,t){if(null==e||null==e["!ref"])return[];var n={t:"n",v:0},r=0,i=1,s=[],o=0,a="",c={s:{r:0,c:0},e:{r:0,c:0}},l=t||{},h=null!=l.range?l.range:e["!ref"];switch(1===l.header?r=1:"A"===l.header?r=2:Array.isArray(l.header)&&(r=3),typeof h){case"string":c=Yt(h);break;case"number":(c=Yt(e["!ref"])).s.r=h;break;default:c=h}r>0&&(i=0);var d=Gt(c.s.r),u=[],f=[],g=0,p=0,m=Array.isArray(e),C=c.s.r,b=0,v=0;for(m&&!e[C]&&(e[C]=[]),b=c.s.c;b<=c.e.c;++b)switch(u[b]=jt(b),n=m?e[C][b]:e[u[b]+d],r){case 1:s[b]=b-c.s.c;break;case 2:s[b]=u[b];break;case 3:s[b]=l.header[b-c.s.c];break;default:for(null==n&&(n={w:"__EMPTY",t:"s"}),a=o=Jt(n,null,l),p=0,v=0;v=0&&(h='"'+h.replace(bl,'""')+'"'));l.push(h)}return!1===a.blankrows&&c?null:l.join(o)}function Il(e,t){var n=[],r=null==t?{}:t;if(null==e||null==e["!ref"])return"";var i=Yt(e["!ref"]),s=void 0!==r.FS?r.FS:",",o=s.charCodeAt(0),a=void 0!==r.RS?r.RS:"\n",c=a.charCodeAt(0),l=new RegExp(("|"==s?"\\|":s)+"+$"),h="",d=[];r.dense=Array.isArray(e);for(var u=r.skipHidden&&e["!cols"]||[],f=r.skipHidden&&e["!rows"]||[],g=i.s.c;g<=i.e.c;++g)(u[g]||{}).hidden||(d[g]=jt(g));for(var p=i.s.r;p<=i.e.r;++p)(f[p]||{}).hidden||null!=(h=vl(e,i,p,d,o,c,s,r))&&(r.strip&&(h=h.replace(l,"")),n.push(h+a));return delete r.dense,n.join("")}function Al(e,t){t||(t={}),t.FS="\t",t.RS="\n";var n=Il(e,t);if("undefined"==typeof cptable||"string"==t.type)return n;var r=cptable.utils.encode(1200,n,"str");return String.fromCharCode(255)+String.fromCharCode(254)+r}function yl(e){var t,n="",r="";if(null==e||null==e["!ref"])return[];var i,s=Yt(e["!ref"]),o="",a=[],c=[],l=Array.isArray(e);for(i=s.s.c;i<=s.e.c;++i)a[i]=jt(i);for(var h=s.s.r;h<=s.e.r;++h)for(o=Gt(h),i=s.s.c;i<=s.e.c;++i)if(n=a[i]+o,r="",void 0!==(t=l?(e[h]||[])[i]:e[n])){if(null!=t.F){if(n=t.F,!t.f)continue;r=t.f,-1==n.indexOf(":")&&(n=n+":"+n)}if(null!=t.f)r=t.f;else{if("z"==t.t)continue;if("n"==t.t&&null!=t.v)r=""+t.v;else if("b"==t.t)r=t.v?"TRUE":"FALSE";else if(void 0!==t.w)r="'"+t.w;else{if(void 0===t.v)continue;r="s"==t.t?"'"+t.v:""+t.v}}c[c.length]=n+"="+r}return c}function wl(e,t,n){var r,i=n||{},s=+!i.skipHeader,o=e||{},a=0,c=0;if(o&&null!=i.origin)if("number"==typeof i.origin)a=i.origin;else{var l="string"==typeof i.origin?zt(i.origin):i.origin;a=l.r,c=l.c}var h={s:{c:0,r:0},e:{c:c,r:a+t.length-1+s}};if(o["!ref"]){var d=Yt(o["!ref"]);h.e.c=Math.max(h.e.c,d.e.c),h.e.r=Math.max(h.e.r,d.e.r),-1==a&&(h.e.r=(a=h.e.r+1)+t.length-1+s)}var u=i.header||[],f=0;t.forEach((function(e,t){W(e).forEach((function(n){-1==(f=u.indexOf(n))&&(u[f=u.length]=n);var l=e[n],h="z",d="";!l||"object"!=typeof l||l instanceof Date?("number"==typeof l?h="n":"boolean"==typeof l?h="b":"string"==typeof l?h="s":l instanceof Date&&(h="d",i.cellDates||(h="n",l=z(l)),d=i.dateNF||T._table[14]),o[Kt({c:c+f,r:a+t+s})]=r={t:h,v:l},d&&(r.z=d)):o[Kt({c:c+f,r:a+t+s})]=l}))})),h.e.c=Math.max(h.e.c,c+u.length-1);var g=Gt(a);if(s)for(f=0;f=0)throw new Error("Worksheet with name |"+n+"| already exists!");e.SheetNames.push(n),e.Sheets[n]=t},e.book_set_sheet_visibility=function(e,n,r){t(e,"Workbook",{}),t(e.Workbook,"Sheets",[]);var i=function(e,t){if("number"==typeof t){if(t>=0&&e.SheetNames.length>t)return t;throw new Error("Cannot find sheet # "+t)}if("string"==typeof t){var n=e.SheetNames.indexOf(t);if(n>-1)return n;throw new Error("Cannot find sheet name |"+t+"|")}throw new Error("Cannot find sheet |"+t+"|")}(e,n);switch(t(e.Workbook.Sheets,i,{}),r){case 0:case 1:case 2:break;default:throw new Error("Bad sheet visibility setting "+r)}e.Workbook.Sheets[i].Hidden=r},[["SHEET_VISIBLE",0],["SHEET_HIDDEN",1],["SHEET_VERY_HIDDEN",2]].forEach((function(t){e.consts[t[0]]=t[1]})),e.cell_set_number_format=function(e,t){return e.z=t,e},e.cell_set_hyperlink=function(e,t,n){return t?(e.l={Target:t},n&&(e.l.Tooltip=n)):delete e.l,e},e.cell_set_internal_link=function(t,n,r){return e.cell_set_hyperlink(t,"#"+n,r)},e.cell_add_comment=function(e,t,n){e.c||(e.c=[]),e.c.push({t:t,a:n||"SheetJS"})},e.sheet_set_array_formula=function(e,t,r){for(var i="string"!=typeof t?t:Yt(t),s="string"==typeof t?t:Ut(t),o=i.s.r;o<=i.e.r;++o)for(var a=i.s.c;a<=i.e.c;++a){var c=n(e,o,a);c.t="n",c.F=s,delete c.v,o==i.s.r&&a==i.s.c&&(c.f=r)}return e}}(xl),C&&(Sl=n(5).Readable,t.stream={to_json:function(e,t){var n=Sl({objectMode:!0});if(null==e||null==e["!ref"])return n.push(null),n;var r={t:"n",v:0},i=0,s=1,o=[],a=0,c="",l={s:{r:0,c:0},e:{r:0,c:0}},h=t||{},d=null!=h.range?h.range:e["!ref"];switch(1===h.header?i=1:"A"===h.header?i=2:Array.isArray(h.header)&&(i=3),typeof d){case"string":l=Yt(d);break;case"number":(l=Yt(e["!ref"])).s.r=d;break;default:l=d}i>0&&(s=0);var u=Gt(l.s.r),f=[],g=0,p=Array.isArray(e),m=l.s.r,C=0,b=0;for(p&&!e[m]&&(e[m]=[]),C=l.s.c;C<=l.e.c;++C)switch(f[C]=jt(C),r=p?e[m][C]:e[f[C]+u],i){case 1:o[C]=C-l.s.c;break;case 2:o[C]=f[C];break;case 3:o[C]=h.header[C-l.s.c];break;default:for(null==r&&(r={w:"__EMPTY",t:"s"}),c=a=Jt(r,null,h),g=0,b=0;bl.e.r)return n.push(null);for(;m<=l.e.r;){var t=ml(e,l,m,f,i,o,p,h);if(++m,!1===t.isempty||(1===i?!1!==h.blankrows:h.blankrows)){n.push(t.row);break}}},n},to_html:function(e,t){var n=Sl(),r=t||{},i=null!=r.footer?r.footer:Oc.END;n.push(null!=r.header?r.header:Oc.BEGIN);var s=Xt(e["!ref"]);r.dense=Array.isArray(e),n.push(Oc._preamble(e,s,r));var o=s.s.r,a=!1;return n._read=function(){if(o>s.e.r)return a||(a=!0,n.push(""+i)),n.push(null);for(;o<=s.e.r;){n.push(Oc._row(e,s,o,r)),++o;break}},n},to_csv:function(e,t){var n=Sl(),r=null==t?{}:t;if(null==e||null==e["!ref"])return n.push(null),n;var i=Yt(e["!ref"]),s=void 0!==r.FS?r.FS:",",o=s.charCodeAt(0),a=void 0!==r.RS?r.RS:"\n",c=a.charCodeAt(0),l=new RegExp(("|"==s?"\\|":s)+"+$"),h="",d=[];r.dense=Array.isArray(e);for(var u=r.skipHidden&&e["!cols"]||[],f=r.skipHidden&&e["!rows"]||[],g=i.s.c;g<=i.e.c;++g)(u[g]||{}).hidden||(d[g]=jt(g));var p=i.s.r,m=!1;return n._read=function(){if(!m)return m=!0,n.push("\ufeff");for(;p<=i.e.r;)if(++p,!(f[p-1]||{}).hidden&&null!=(h=vl(e,i,p-1,d,o,c,s,r))){r.strip&&(h=h.replace(l,"")),n.push(h+a);break}return p>i.e.r?n.push(null):void 0},n}}),t.parse_xlscfb=Ac,t.parse_ods=Mc,t.parse_fods=Dc,t.write_ods=Hc,t.parse_zip=rl,t.read=cl,t.readFile=ll,t.readFileSync=ll,t.write=fl,t.writeFile=pl,t.writeFileSync=pl,t.writeFileAsync=function(e,t,n,r){var i=n||{};i.type="file",i.file=e,gl(i),i.type="buffer";var s=r;return s instanceof Function||(s=n),F.writeFile(e,fl(t,i),s)},t.utils=xl,t.SSF=T,t.CFB=N}(t)},FaQm:function(e,t,n){var r,i,s;!function(n){if("undefined"==typeof DO_NOT_EXPORT_JSZIP)e.exports=n();else if("undefined"==typeof DO_NOT_EXPORT_JSZIP)JSZipSync=n(),i=[],void 0===(s="function"==typeof(r=n)?r.apply(t,i):r)||(e.exports=s);else{var o;"undefined"!=typeof window?o=window:"undefined"!=typeof global?o=global:"undefined"!=typeof $&&$.global?o=$.global:"undefined"!=typeof self&&(o=self),o.JSZipSync=n()}}((function(){return function e(t,n,r){function i(o,a){if(!n[o]){if(!t[o]){if(s)return s(o,!0);throw new Error("Cannot find module '"+o+"'")}var c=n[o]={exports:{}};t[o][0].call(c.exports,(function(e){return i(t[o][1][e]||e)}),c,c.exports,e,t,n,r)}return n[o].exports}for(var s=!1,o=0;o>2,a=(3&n)<<4|(i=e.charCodeAt(d++))>>4,c=(15&i)<<2|(s=e.charCodeAt(d++))>>6,l=63&s,isNaN(i)?c=l=64:isNaN(s)&&(l=64),h=h+r.charAt(o)+r.charAt(a)+r.charAt(c)+r.charAt(l);return h},n.decode=function(e,t){var n,i,s,o,a,c,l="",h=0;for(e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");h>2,i=(3&a)<<6|(c=r.indexOf(e.charAt(h++))),l+=String.fromCharCode(s<<2|o>>4),64!=a&&(l+=String.fromCharCode(n)),64!=c&&(l+=String.fromCharCode(i));return l}},{}],2:[function(e,t,n){"use strict";function r(){this.compressedSize=0,this.uncompressedSize=0,this.crc32=0,this.compressionMethod=null,this.compressedContent=null}r.prototype={getContent:function(){return null},getCompressedContent:function(){return null}},t.exports=r},{}],3:[function(e,t,n){"use strict";n.STORE={magic:"\0\0",compress:function(e){return e},uncompress:function(e){return e},compressInputType:null,uncompressInputType:null},n.DEFLATE=e("./flate")},{"./flate":8}],4:[function(e,t,n){"use strict";var r=e("./utils"),i=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];t.exports=function(e,t){if(void 0===e||!e.length)return 0;var n="string"!==r.getTypeOf(e);void 0===t&&(t=0);var s=0;t^=-1;for(var o=0,a=e.length;o>>8^i[255&(t^s)];return-1^t}},{"./utils":21}],5:[function(e,t,n){"use strict";var r=e("./utils");function i(e){this.data=null,this.length=0,this.index=0}i.prototype={checkOffset:function(e){this.checkIndex(this.index+e)},checkIndex:function(e){if(this.length=this.index;t--)n=(n<<8)+this.byteAt(t);return this.index+=e,n},readString:function(e){return r.transformTo("string",this.readData(e))},readData:function(e){},lastIndexOfSignature:function(e){},readDate:function(){var e=this.readInt(4);return new Date(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1)}},t.exports=i},{"./utils":21}],6:[function(e,t,n){"use strict";n.base64=!1,n.binary=!1,n.dir=!1,n.createFolders=!1,n.date=null,n.compression=null,n.comment=null},{}],7:[function(e,t,n){"use strict";var r=e("./utils");n.string2binary=function(e){return r.string2binary(e)},n.string2Uint8Array=function(e){return r.transformTo("uint8array",e)},n.uint8Array2String=function(e){return r.transformTo("string",e)},n.string2Blob=function(e){var t=r.transformTo("arraybuffer",e);return r.arrayBuffer2Blob(t)},n.arrayBuffer2Blob=function(e){return r.arrayBuffer2Blob(e)},n.transformTo=function(e,t){return r.transformTo(e,t)},n.getTypeOf=function(e){return r.getTypeOf(e)},n.checkSupport=function(e){return r.checkSupport(e)},n.MAX_VALUE_16BITS=r.MAX_VALUE_16BITS,n.MAX_VALUE_32BITS=r.MAX_VALUE_32BITS,n.pretty=function(e){return r.pretty(e)},n.findCompression=function(e){return r.findCompression(e)},n.isRegExp=function(e){return r.isRegExp(e)}},{"./utils":21}],8:[function(e,t,n){"use strict";var r="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,i=e("pako");n.uncompressInputType=r?"uint8array":"array",n.compressInputType=r?"uint8array":"array",n.magic="\b\0",n.compress=function(e){return i.deflateRaw(e)},n.uncompress=function(e){return i.inflateRaw(e)}},{pako:24}],9:[function(e,t,n){"use strict";var r=e("./base64");function i(e,t){if(!(this instanceof i))return new i(e,t);this.files={},this.comment=null,this.root="",e&&this.load(e,t),this.clone=function(){var e=new i;for(var t in this)"function"!=typeof this[t]&&(e[t]=this[t]);return e}}(i.prototype=e("./object")).load=e("./load"),i.support=e("./support"),i.defaults=e("./defaults"),i.utils=e("./deprecatedPublicUtils"),i.base64={encode:function(e){return r.encode(e)},decode:function(e){return r.decode(e)}},i.compressions=e("./compressions"),t.exports=i},{"./base64":1,"./compressions":3,"./defaults":6,"./deprecatedPublicUtils":7,"./load":10,"./object":13,"./support":17}],10:[function(e,t,n){"use strict";var r=e("./base64"),i=e("./zipEntries");t.exports=function(e,t){var n,s,o,a;for((t=t||{}).base64&&(e=r.decode(e)),n=(s=new i(e,t)).files,o=0;o>>=8;return r},I=function(){var e,t,n={};for(e=0;e0?e.substring(0,t):""},w=function(e,t){return"/"!=e.slice(-1)&&(e+="/"),t=void 0!==t&&t,this.files[e]||A.call(this,e,null,{dir:!0,createFolders:t}),this.files[e]},S=function(e,t){var n,r=new h;return e._data instanceof h?(r.uncompressedSize=e._data.uncompressedSize,r.crc32=e._data.crc32,0===r.uncompressedSize||e.dir?(t=l.STORE,r.compressedContent="",r.crc32=0):e._data.compressionMethod===t.magic?r.compressedContent=e._data.getCompressedContent():(n=e._data.getContent(),r.compressedContent=t.compress(i.transformTo(t.compressInputType,n)))):((n=m(e))&&0!==n.length&&!e.dir||(t=l.STORE,n=""),r.uncompressedSize=n.length,r.crc32=s(n),r.compressedContent=t.compress(i.transformTo(t.compressInputType,n))),r.compressedSize=r.compressedContent.length,r.compressionMethod=t.magic,r},x=function(e,t,n,r){var a,c,l,h,d=i.transformTo("string",u.utf8encode(t.name)),f=t.comment||"",g=i.transformTo("string",u.utf8encode(f)),p=d.length!==t.name.length,m=g.length!==f.length,C=t.options,b="",I="",A="";l=t._initialMetadata.dir!==t.dir?t.dir:C.dir,a=(h=t._initialMetadata.date!==t.date?t.date:C.date).getHours(),a<<=6,a|=h.getMinutes(),a<<=5,a|=h.getSeconds()/2,c=h.getFullYear()-1980,c<<=4,c|=h.getMonth()+1,c<<=5,c|=h.getDate(),p&&(I=v(1,1)+v(s(d),4)+d,b+="up"+v(I.length,2)+I),m&&(A=v(1,1)+v(this.crc32(g),4)+g,b+="uc"+v(A.length,2)+A);var y="";return y+="\n\0",y+=p||m?"\0\b":"\0\0",y+=n.compressionMethod,y+=v(a,2),y+=v(c,2),y+=v(n.crc32,4),y+=v(n.compressedSize,4),y+=v(n.uncompressedSize,4),y+=v(d.length,2),y+=v(b.length,2),{fileRecord:o.LOCAL_FILE_HEADER+y+d+b,dirRecord:o.CENTRAL_FILE_HEADER+"\x14\0"+y+v(g.length,2)+"\0\0\0\0"+(!0===l?"\x10\0\0\0":"\0\0\0\0")+v(r,4)+d+b+g,compressedObject:n}},E={load:function(e,t){throw new Error("Load method is not defined. Is the file jszip-load.js included ?")},filter:function(e){var t,n,r,i,s=[];for(t in this.files)this.files.hasOwnProperty(t)&&(i=new b((r=this.files[t]).name,r._data,I(r.options)),n=t.slice(this.root.length,t.length),t.slice(0,this.root.length)===this.root&&e(n,i)&&s.push(i));return s},file:function(e,t,n){if(1===arguments.length){if(i.isRegExp(e)){var r=e;return this.filter((function(e,t){return!t.dir&&r.test(e)}))}return this.filter((function(t,n){return!n.dir&&t===e}))[0]||null}return A.call(this,e=this.root+e,t,n),this},folder:function(e){if(!e)return this;if(i.isRegExp(e))return this.filter((function(t,n){return n.dir&&e.test(t)}));var t=w.call(this,this.root+e),n=this.clone();return n.root=t.name,n},remove:function(e){var t=this.files[e=this.root+e];if(t||("/"!=e.slice(-1)&&(e+="/"),t=this.files[e]),t&&!t.dir)delete this.files[e];else for(var n=this.filter((function(t,n){return n.name.slice(0,e.length)===e})),r=0;r=0;--s)if(this.data[s]===t&&this.data[s+1]===n&&this.data[s+2]===r&&this.data[s+3]===i)return s;return-1},i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.index,this.index+e);return this.index+=e,t},t.exports=i},{"./dataReader":5}],19:[function(e,t,n){"use strict";var r=e("./utils"),i=function(e){this.data=new Uint8Array(e),this.index=0};i.prototype={append:function(e){0!==e.length&&(e=r.transformTo("uint8array",e),this.data.set(e,this.index),this.index+=e.length)},finalize:function(){return this.data}},t.exports=i},{"./utils":21}],20:[function(e,t,n){"use strict";for(var r=e("./utils"),i=e("./support"),s=e("./nodeBuffer"),o=new Array(256),a=0;a<256;a++)o[a]=a>=252?6:a>=248?5:a>=240?4:a>=224?3:a>=192?2:1;o[254]=o[254]=1;var c=function(e,t){var n;for((t=t||e.length)>e.length&&(t=e.length),n=t-1;n>=0&&128==(192&e[n]);)n--;return n<0||0===n?t:n+o[e[n]]>t?n:t},l=function(e){var t,n,i,s,a=e.length,c=new Array(2*a);for(n=0,t=0;t4)c[n++]=65533,t+=s-1;else{for(i&=2===s?31:3===s?15:7;s>1&&t1?c[n++]=65533:i<65536?c[n++]=i:(c[n++]=55296|(i-=65536)>>10&1023,c[n++]=56320|1023&i)}return c.length!==n&&(c.subarray?c=c.subarray(0,n):c.length=n),r.applyFromCharCode(c)};n.utf8encode=function(e){return i.nodebuffer?s(e,"utf-8"):function(e){var t,n,r,s,o,a=e.length,c=0;for(s=0;s>>6,t[o++]=128|63&n):n<65536?(t[o++]=224|n>>>12,t[o++]=128|n>>>6&63,t[o++]=128|63&n):(t[o++]=240|n>>>18,t[o++]=128|n>>>12&63,t[o++]=128|n>>>6&63,t[o++]=128|63&n);return t}(e)},n.utf8decode=function(e){if(i.nodebuffer)return r.transformTo("nodebuffer",e).toString("utf-8");for(var t=[],n=0,s=(e=r.transformTo(i.uint8array?"uint8array":"array",e)).length;n1;)try{r.push(String.fromCharCode.apply(null,"array"===o||"nodebuffer"===o?e.slice(a,Math.min(a+t,i)):e.subarray(a,Math.min(a+t,i)))),a+=t}catch(d){t=Math.floor(t/2)}return r.join("")}function l(e,t){for(var n=0;n1)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var e,t;for(e=0;e0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new a,this.strm.avail_out=0;var n=r.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(0!==n)throw new Error(o[n]);t.header&&r.deflateSetHeader(this.strm,t.header)};function l(e,t){var n=new c(t);if(n.push(e,!0),n.err)throw n.msg;return n.result}c.prototype.push=function(e,t){var n,o,a=this.strm,c=this.options.chunkSize;if(this.ended)return!1;o=t===~~t?t:!0===t?4:0,a.input="string"==typeof e?s.string2buf(e):e,a.next_in=0,a.avail_in=a.input.length;do{if(0===a.avail_out&&(a.output=new i.Buf8(c),a.next_out=0,a.avail_out=c),1!==(n=r.deflate(a,o))&&0!==n)return this.onEnd(n),this.ended=!0,!1;(0===a.avail_out||0===a.avail_in&&4===o)&&this.onData("string"===this.options.to?s.buf2binstring(i.shrinkBuf(a.output,a.next_out)):i.shrinkBuf(a.output,a.next_out))}while((a.avail_in>0||0===a.avail_out)&&1!==n);return 4!==o||(n=r.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,0===n)},c.prototype.onData=function(e){this.chunks.push(e)},c.prototype.onEnd=function(e){0===e&&(this.result="string"===this.options.to?this.chunks.join(""):i.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},n.Deflate=c,n.deflate=l,n.deflateRaw=function(e,t){return(t=t||{}).raw=!0,l(e,t)},n.gzip=function(e,t){return(t=t||{}).gzip=!0,l(e,t)}},{"./utils/common":27,"./utils/strings":28,"./zlib/deflate.js":32,"./zlib/messages":37,"./zlib/zstream":39}],26:[function(e,t,n){"use strict";var r=e("./zlib/inflate.js"),i=e("./utils/common"),s=e("./utils/strings"),o=e("./zlib/constants"),a=e("./zlib/messages"),c=e("./zlib/zstream"),l=e("./zlib/gzheader"),h=function(e){this.options=i.assign({chunkSize:16384,windowBits:0,to:""},e||{});var t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new c,this.strm.avail_out=0;var n=r.inflateInit2(this.strm,t.windowBits);if(n!==o.Z_OK)throw new Error(a[n]);this.header=new l,r.inflateGetHeader(this.strm,this.header)};function d(e,t){var n=new h(t);if(n.push(e,!0),n.err)throw n.msg;return n.result}h.prototype.push=function(e,t){var n,a,c,l,h,d=this.strm,u=this.options.chunkSize;if(this.ended)return!1;a=t===~~t?t:!0===t?o.Z_FINISH:o.Z_NO_FLUSH,d.input="string"==typeof e?s.binstring2buf(e):e,d.next_in=0,d.avail_in=d.input.length;do{if(0===d.avail_out&&(d.output=new i.Buf8(u),d.next_out=0,d.avail_out=u),(n=r.inflate(d,o.Z_NO_FLUSH))!==o.Z_STREAM_END&&n!==o.Z_OK)return this.onEnd(n),this.ended=!0,!1;d.next_out&&(0===d.avail_out||n===o.Z_STREAM_END||0===d.avail_in&&a===o.Z_FINISH)&&("string"===this.options.to?(c=s.utf8border(d.output,d.next_out),l=d.next_out-c,h=s.buf2string(d.output,c),d.next_out=l,d.avail_out=u-l,l&&i.arraySet(d.output,d.output,c,l,0),this.onData(h)):this.onData(i.shrinkBuf(d.output,d.next_out)))}while(d.avail_in>0&&n!==o.Z_STREAM_END);return n===o.Z_STREAM_END&&(a=o.Z_FINISH),a!==o.Z_FINISH||(n=r.inflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===o.Z_OK)},h.prototype.onData=function(e){this.chunks.push(e)},h.prototype.onEnd=function(e){e===o.Z_OK&&(this.result="string"===this.options.to?this.chunks.join(""):i.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},n.Inflate=h,n.inflate=d,n.inflateRaw=function(e,t){return(t=t||{}).raw=!0,d(e,t)},n.ungzip=d},{"./utils/common":27,"./utils/strings":28,"./zlib/constants":30,"./zlib/gzheader":33,"./zlib/inflate.js":35,"./zlib/messages":37,"./zlib/zstream":39}],27:[function(e,t,n){"use strict";var r="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;n.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var n=t.shift();if(n){if("object"!=typeof n)throw new TypeError(n+"must be non-object");for(var r in n)n.hasOwnProperty(r)&&(e[r]=n[r])}}return e},n.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var i={arraySet:function(e,t,n,r,i){if(t.subarray&&e.subarray)e.set(t.subarray(n,n+r),i);else for(var s=0;s=252?6:a>=248?5:a>=240?4:a>=224?3:a>=192?2:1;function c(e,t){if(t<65537&&(e.subarray&&s||!e.subarray&&i))return String.fromCharCode.apply(null,r.shrinkBuf(e,t));for(var n="",o=0;o>>6,t[o++]=128|63&n):n<65536?(t[o++]=224|n>>>12,t[o++]=128|n>>>6&63,t[o++]=128|63&n):(t[o++]=240|n>>>18,t[o++]=128|n>>>12&63,t[o++]=128|n>>>6&63,t[o++]=128|63&n);return t},n.buf2binstring=function(e){return c(e,e.length)},n.binstring2buf=function(e){for(var t=new r.Buf8(e.length),n=0,i=t.length;n4)l[r++]=65533,n+=s-1;else{for(i&=2===s?31:3===s?15:7;s>1&&n1?l[r++]=65533:i<65536?l[r++]=i:(l[r++]=55296|(i-=65536)>>10&1023,l[r++]=56320|1023&i)}return c(l,r)},n.utf8border=function(e,t){var n;for((t=t||e.length)>e.length&&(t=e.length),n=t-1;n>=0&&128==(192&e[n]);)n--;return n<0||0===n?t:n+o[e[n]]>t?n:t}},{"./common":27}],29:[function(e,t,n){"use strict";t.exports=function(e,t,n,r){for(var i=65535&e|0,s=e>>>16&65535|0,o=0;0!==n;){n-=o=n>2e3?2e3:n;do{s=s+(i=i+t[r++]|0)|0}while(--o);i%=65521,s%=65521}return i|s<<16|0}},{}],30:[function(e,t,n){t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],31:[function(e,t,n){"use strict";var r=function(){for(var e,t=[],n=0;n<256;n++){e=n;for(var r=0;r<8;r++)e=1&e?3988292384^e>>>1:e>>>1;t[n]=e}return t}();t.exports=function(e,t,n,i){var s=r,o=i+n;e^=-1;for(var a=i;a>>8^s[255&(e^t[a])];return-1^e}},{}],32:[function(e,t,n){"use strict";var r=e("../utils/common"),i=e("./trees"),s=e("./adler32"),o=e("./crc32"),a=e("./messages"),c=-2,l=258,h=262,d=103,u=113,f=666;function g(e,t){return e.msg=a[t],t}function p(e){return(e<<1)-(e>4?9:0)}function m(e){for(var t=e.length;--t>=0;)e[t]=0}function C(e){var t=e.state,n=t.pending;n>e.avail_out&&(n=e.avail_out),0!==n&&(r.arraySet(e.output,t.pending_buf,t.pending_out,n,e.next_out),e.next_out+=n,t.pending_out+=n,e.total_out+=n,e.avail_out-=n,t.pending-=n,0===t.pending&&(t.pending_out=0))}function b(e,t){i._tr_flush_block(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,C(e.strm)}function v(e,t){e.pending_buf[e.pending++]=t}function I(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function A(e,t){var n,r,i=e.max_chain_length,s=e.strstart,o=e.prev_length,a=e.nice_match,c=e.strstart>e.w_size-h?e.strstart-(e.w_size-h):0,d=e.window,u=e.w_mask,f=e.prev,g=e.strstart+l,p=d[s+o-1],m=d[s+o];e.prev_length>=e.good_match&&(i>>=2),a>e.lookahead&&(a=e.lookahead);do{if(d[(n=t)+o]===m&&d[n+o-1]===p&&d[n]===d[s]&&d[++n]===d[s+1]){s+=2,n++;do{}while(d[++s]===d[++n]&&d[++s]===d[++n]&&d[++s]===d[++n]&&d[++s]===d[++n]&&d[++s]===d[++n]&&d[++s]===d[++n]&&d[++s]===d[++n]&&d[++s]===d[++n]&&so){if(e.match_start=t,o=r,r>=a)break;p=d[s+o-1],m=d[s+o]}}}while((t=f[t&u])>c&&0!=--i);return o<=e.lookahead?o:e.lookahead}function y(e){var t,n,i,a,c,l,d,u,f,g,p=e.w_size;do{if(a=e.window_size-e.lookahead-e.strstart,e.strstart>=p+(p-h)){r.arraySet(e.window,e.window,p,p,0),e.match_start-=p,e.strstart-=p,e.block_start-=p,t=n=e.hash_size;do{i=e.head[--t],e.head[t]=i>=p?i-p:0}while(--n);t=n=p;do{i=e.prev[--t],e.prev[t]=i>=p?i-p:0}while(--n);a+=p}if(0===e.strm.avail_in)break;if(d=e.window,u=e.strstart+e.lookahead,g=void 0,(g=(l=e.strm).avail_in)>(f=a)&&(g=f),n=0===g?0:(l.avail_in-=g,r.arraySet(d,l.input,l.next_in,g,u),1===l.state.wrap?l.adler=s(l.adler,d,g,u):2===l.state.wrap&&(l.adler=o(l.adler,d,g,u)),l.next_in+=g,l.total_in+=g,g),e.lookahead+=n,e.lookahead+e.insert>=3)for(e.ins_h=e.window[c=e.strstart-e.insert],e.ins_h=(e.ins_h<=3&&(e.ins_h=(e.ins_h<=3)if(r=i._tr_tally(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=(e.ins_h<=3&&(e.ins_h=(e.ins_h<4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){s=e.strstart+e.lookahead-3,r=i._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=s&&(e.ins_h=(e.ins_h<15&&(a=2,i-=16),s<1||s>9||8!==n||i<8||i>15||t<0||t>9||o<0||o>4)return g(e,c);8===i&&(i=9);var l=new k;return e.state=l,l.strm=e,l.wrap=a,l.gzhead=null,l.w_bits=i,l.w_size=1<>1,l.l_buf=3*l.lit_bufsize,l.level=t,l.strategy=o,l.method=n,T(e)}x=[new E(0,0,0,0,(function(e,t){var n=65535;for(n>e.pending_buf_size-5&&(n=e.pending_buf_size-5);;){if(e.lookahead<=1){if(y(e),0===e.lookahead&&0===t)return 1;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var r=e.block_start+n;if((0===e.strstart||e.strstart>=r)&&(e.lookahead=e.strstart-r,e.strstart=r,b(e,!1),0===e.strm.avail_out))return 1;if(e.strstart-e.block_start>=e.w_size-h&&(b(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(b(e,!0),0===e.strm.avail_out?3:4):(e.strstart>e.block_start&&b(e,!1),1)})),new E(4,4,8,4,w),new E(4,5,16,8,w),new E(4,6,32,32,w),new E(4,4,16,16,S),new E(8,16,32,32,S),new E(8,16,128,128,S),new E(8,32,128,256,S),new E(32,128,258,1024,S),new E(32,258,258,4096,S)],n.deflateInit=function(e,t){return R(e,t,8,15,8,0)},n.deflateInit2=R,n.deflateReset=T,n.deflateResetKeep=_,n.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?c:(e.state.gzhead=t,0):c},n.deflate=function(e,t){var n,r,s,a;if(!e||!e.state||t>5||t<0)return e?g(e,c):c;if(r=e.state,!e.output||!e.input&&0!==e.avail_in||r.status===f&&4!==t)return g(e,0===e.avail_out?-5:c);if(r.strm=e,n=r.last_flush,r.last_flush=t,42===r.status)if(2===r.wrap)e.adler=0,v(r,31),v(r,139),v(r,8),r.gzhead?(v(r,(r.gzhead.text?1:0)+(r.gzhead.hcrc?2:0)+(r.gzhead.extra?4:0)+(r.gzhead.name?8:0)+(r.gzhead.comment?16:0)),v(r,255&r.gzhead.time),v(r,r.gzhead.time>>8&255),v(r,r.gzhead.time>>16&255),v(r,r.gzhead.time>>24&255),v(r,9===r.level?2:r.strategy>=2||r.level<2?4:0),v(r,255&r.gzhead.os),r.gzhead.extra&&r.gzhead.extra.length&&(v(r,255&r.gzhead.extra.length),v(r,r.gzhead.extra.length>>8&255)),r.gzhead.hcrc&&(e.adler=o(e.adler,r.pending_buf,r.pending,0)),r.gzindex=0,r.status=69):(v(r,0),v(r,0),v(r,0),v(r,0),v(r,0),v(r,9===r.level?2:r.strategy>=2||r.level<2?4:0),v(r,3),r.status=u);else{var h=8+(r.w_bits-8<<4)<<8;h|=(r.strategy>=2||r.level<2?0:r.level<6?1:6===r.level?2:3)<<6,0!==r.strstart&&(h|=32),h+=31-h%31,r.status=u,I(r,h),0!==r.strstart&&(I(r,e.adler>>>16),I(r,65535&e.adler)),e.adler=1}if(69===r.status)if(r.gzhead.extra){for(s=r.pending;r.gzindex<(65535&r.gzhead.extra.length)&&(r.pending!==r.pending_buf_size||(r.gzhead.hcrc&&r.pending>s&&(e.adler=o(e.adler,r.pending_buf,r.pending-s,s)),C(e),s=r.pending,r.pending!==r.pending_buf_size));)v(r,255&r.gzhead.extra[r.gzindex]),r.gzindex++;r.gzhead.hcrc&&r.pending>s&&(e.adler=o(e.adler,r.pending_buf,r.pending-s,s)),r.gzindex===r.gzhead.extra.length&&(r.gzindex=0,r.status=73)}else r.status=73;if(73===r.status)if(r.gzhead.name){s=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>s&&(e.adler=o(e.adler,r.pending_buf,r.pending-s,s)),C(e),s=r.pending,r.pending===r.pending_buf_size)){a=1;break}a=r.gzindexs&&(e.adler=o(e.adler,r.pending_buf,r.pending-s,s)),0===a&&(r.gzindex=0,r.status=91)}else r.status=91;if(91===r.status)if(r.gzhead.comment){s=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>s&&(e.adler=o(e.adler,r.pending_buf,r.pending-s,s)),C(e),s=r.pending,r.pending===r.pending_buf_size)){a=1;break}a=r.gzindexs&&(e.adler=o(e.adler,r.pending_buf,r.pending-s,s)),0===a&&(r.status=d)}else r.status=d;if(r.status===d&&(r.gzhead.hcrc?(r.pending+2>r.pending_buf_size&&C(e),r.pending+2<=r.pending_buf_size&&(v(r,255&e.adler),v(r,e.adler>>8&255),e.adler=0,r.status=u)):r.status=u),0!==r.pending){if(C(e),0===e.avail_out)return r.last_flush=-1,0}else if(0===e.avail_in&&p(t)<=p(n)&&4!==t)return g(e,-5);if(r.status===f&&0!==e.avail_in)return g(e,-5);if(0!==e.avail_in||0!==r.lookahead||0!==t&&r.status!==f){var A=2===r.strategy?function(e,t){for(var n;;){if(0===e.lookahead&&(y(e),0===e.lookahead)){if(0===t)return 1;break}if(e.match_length=0,n=i._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(b(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(b(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(b(e,!1),0===e.strm.avail_out)?1:2}(r,t):3===r.strategy?function(e,t){for(var n,r,s,o,a=e.window;;){if(e.lookahead<=l){if(y(e),e.lookahead<=l&&0===t)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(r=a[s=e.strstart-1])===a[++s]&&r===a[++s]&&r===a[++s]){o=e.strstart+l;do{}while(r===a[++s]&&r===a[++s]&&r===a[++s]&&r===a[++s]&&r===a[++s]&&r===a[++s]&&r===a[++s]&&r===a[++s]&&se.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(n=i._tr_tally(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=i._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(b(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(b(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(b(e,!1),0===e.strm.avail_out)?1:2}(r,t):x[r.level].func(r,t);if(3!==A&&4!==A||(r.status=f),1===A||3===A)return 0===e.avail_out&&(r.last_flush=-1),0;if(2===A&&(1===t?i._tr_align(r):5!==t&&(i._tr_stored_block(r,0,0,!1),3===t&&(m(r.head),0===r.lookahead&&(r.strstart=0,r.block_start=0,r.insert=0))),C(e),0===e.avail_out))return r.last_flush=-1,0}return 4!==t?0:r.wrap<=0?1:(2===r.wrap?(v(r,255&e.adler),v(r,e.adler>>8&255),v(r,e.adler>>16&255),v(r,e.adler>>24&255),v(r,255&e.total_in),v(r,e.total_in>>8&255),v(r,e.total_in>>16&255),v(r,e.total_in>>24&255)):(I(r,e.adler>>>16),I(r,65535&e.adler)),C(e),r.wrap>0&&(r.wrap=-r.wrap),0!==r.pending?0:1)},n.deflateEnd=function(e){var t;return e&&e.state?42!==(t=e.state.status)&&69!==t&&73!==t&&91!==t&&t!==d&&t!==u&&t!==f?g(e,c):(e.state=null,t===u?g(e,-3):0):c},n.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":27,"./adler32":29,"./crc32":31,"./messages":37,"./trees":38}],33:[function(e,t,n){"use strict";t.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},{}],34:[function(e,t,n){"use strict";t.exports=function(e,t){var n,r,i,s,o,a,c,l,h,d,u,f,g,p,m,C,b,v,I,A,y,w,S,x,E;x=e.input,i=(r=e.next_in)+(e.avail_in-5),E=e.output,o=(s=e.next_out)-(t-e.avail_out),a=s+(e.avail_out-257),c=(n=e.state).dmax,l=n.wsize,h=n.whave,d=n.wnext,u=n.window,f=n.hold,g=n.bits,p=n.lencode,m=n.distcode,C=(1<>>=I=v>>>24,g-=I,0==(I=v>>>16&255))E[s++]=65535&v;else{if(!(16&I)){if(0==(64&I)){v=p[(65535&v)+(f&(1<>>=I,g-=I),g<15&&(f+=x[r++]<>>=I=v>>>24,g-=I,!(16&(I=v>>>16&255))){if(0==(64&I)){v=m[(65535&v)+(f&(1<c){e.msg="invalid distance too far back",n.mode=30;break e}if(f>>>=I,g-=I,y>(I=s-o)){if((I=y-I)>h&&n.sane){e.msg="invalid distance too far back",n.mode=30;break e}if(w=0,S=u,0===d){if(w+=l-I,I2;)E[s++]=S[w++],E[s++]=S[w++],E[s++]=S[w++],A-=3;A&&(E[s++]=S[w++],A>1&&(E[s++]=S[w++]))}else{w=s-y;do{E[s++]=E[w++],E[s++]=E[w++],E[s++]=E[w++],A-=3}while(A>2);A&&(E[s++]=E[w++],A>1&&(E[s++]=E[w++]))}break}}break}}while(r>3)<<3))-1,e.next_in=r-=A,e.next_out=s,e.avail_in=r>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function u(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new r.Buf16(320),this.work=new r.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function f(e){var t;return e&&e.state?(e.total_in=e.total_out=(t=e.state).total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=1,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new r.Buf32(852),t.distcode=t.distdyn=new r.Buf32(592),t.sane=1,t.back=-1,0):c}function g(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,f(e)):c}function p(e,t){var n,r;return e&&e.state?(t<0?(n=0,t=-t):(n=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?c:(null!==(r=e.state).window&&r.wbits!==t&&(r.window=null),r.wrap=n,r.wbits=t,g(e))):c}function m(e,t){var n,r;return e?(r=new u,e.state=r,r.window=null,0!==(n=p(e,t))&&(e.state=null),n):c}var C,b,v=!0;function I(e){if(v){var t;for(C=new r.Buf32(512),b=new r.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(a(1,e.lens,0,288,C,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;a(2,e.lens,0,32,b,0,e.work,{bits:5}),v=!1}e.lencode=C,e.lenbits=9,e.distcode=b,e.distbits=5}n.inflateReset=g,n.inflateReset2=p,n.inflateResetKeep=f,n.inflateInit=function(e){return m(e,15)},n.inflateInit2=m,n.inflate=function(e,t){var n,u,f,g,p,m,C,b,v,A,y,w,S,x,E,k,_,T,R,B,O,L,P,F,N=0,M=new r.Buf8(4),D=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&0!==e.avail_in)return c;(n=e.state).mode===l&&(n.mode=13),p=e.next_out,f=e.output,g=e.next_in,u=e.input,b=n.hold,v=n.bits,A=m=e.avail_in,y=C=e.avail_out,L=0;e:for(;;)switch(n.mode){case 1:if(0===n.wrap){n.mode=13;break}for(;v<16;){if(0===m)break e;m--,b+=u[g++]<>>8&255,n.check=s(n.check,M,2,0),b=0,v=0,n.mode=2;break}if(n.flags=0,n.head&&(n.head.done=!1),!(1&n.wrap)||(((255&b)<<8)+(b>>8))%31){e.msg="incorrect header check",n.mode=h;break}if(8!=(15&b)){e.msg="unknown compression method",n.mode=h;break}if(v-=4,O=8+(15&(b>>>=4)),0===n.wbits)n.wbits=O;else if(O>n.wbits){e.msg="invalid window size",n.mode=h;break}n.dmax=1<>8&1),512&n.flags&&(M[0]=255&b,M[1]=b>>>8&255,n.check=s(n.check,M,2,0)),b=0,v=0,n.mode=3;case 3:for(;v<32;){if(0===m)break e;m--,b+=u[g++]<>>8&255,M[2]=b>>>16&255,M[3]=b>>>24&255,n.check=s(n.check,M,4,0)),b=0,v=0,n.mode=4;case 4:for(;v<16;){if(0===m)break e;m--,b+=u[g++]<>8),512&n.flags&&(M[0]=255&b,M[1]=b>>>8&255,n.check=s(n.check,M,2,0)),b=0,v=0,n.mode=5;case 5:if(1024&n.flags){for(;v<16;){if(0===m)break e;m--,b+=u[g++]<>>8&255,n.check=s(n.check,M,2,0)),b=0,v=0}else n.head&&(n.head.extra=null);n.mode=6;case 6:if(1024&n.flags&&((w=n.length)>m&&(w=m),w&&(n.head&&(O=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Array(n.head.extra_len)),r.arraySet(n.head.extra,u,g,w,O)),512&n.flags&&(n.check=s(n.check,u,w,g)),m-=w,g+=w,n.length-=w),n.length))break e;n.length=0,n.mode=7;case 7:if(2048&n.flags){if(0===m)break e;w=0;do{O=u[g+w++],n.head&&O&&n.length<65536&&(n.head.name+=String.fromCharCode(O))}while(O&&w>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=l;break;case 10:for(;v<32;){if(0===m)break e;m--,b+=u[g++]<>>=7&v,v-=7&v,n.mode=27;break}for(;v<3;){if(0===m)break e;m--,b+=u[g++]<>>=1)){case 0:n.mode=14;break;case 1:if(I(n),n.mode=20,6===t){b>>>=2,v-=2;break e}break;case 2:n.mode=17;break;case 3:e.msg="invalid block type",n.mode=h}b>>>=2,v-=2;break;case 14:for(b>>>=7&v,v-=7&v;v<32;){if(0===m)break e;m--,b+=u[g++]<>>16^65535)){e.msg="invalid stored block lengths",n.mode=h;break}if(n.length=65535&b,b=0,v=0,n.mode=15,6===t)break e;case 15:n.mode=16;case 16:if(w=n.length){if(w>m&&(w=m),w>C&&(w=C),0===w)break e;r.arraySet(f,u,g,w,p),m-=w,g+=w,C-=w,p+=w,n.length-=w;break}n.mode=l;break;case 17:for(;v<14;){if(0===m)break e;m--,b+=u[g++]<>>=5)),v-=5,n.ncode=4+(15&(b>>>=5)),b>>>=4,v-=4,n.nlen>286||n.ndist>30){e.msg="too many length or distance symbols",n.mode=h;break}n.have=0,n.mode=18;case 18:for(;n.have>>=3,v-=3}for(;n.have<19;)n.lens[D[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,L=a(0,n.lens,0,19,n.lencode,0,n.work,P={bits:n.lenbits}),n.lenbits=P.bits,L){e.msg="invalid code lengths set",n.mode=h;break}n.have=0,n.mode=19;case 19:for(;n.have>>16&255,_=65535&N,!((E=N>>>24)<=v);){if(0===m)break e;m--,b+=u[g++]<>>=E,v-=E,n.lens[n.have++]=_;else{if(16===_){for(F=E+2;v>>=E,v-=E,0===n.have){e.msg="invalid bit length repeat",n.mode=h;break}O=n.lens[n.have-1],w=3+(3&b),b>>>=2,v-=2}else if(17===_){for(F=E+3;v>>=E)),b>>>=3,v-=3}else{for(F=E+7;v>>=E)),b>>>=7,v-=7}if(n.have+w>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=h;break}for(;w--;)n.lens[n.have++]=O}}if(n.mode===h)break;if(0===n.lens[256]){e.msg="invalid code -- missing end-of-block",n.mode=h;break}if(n.lenbits=9,L=a(1,n.lens,0,n.nlen,n.lencode,0,n.work,P={bits:n.lenbits}),n.lenbits=P.bits,L){e.msg="invalid literal/lengths set",n.mode=h;break}if(n.distbits=6,n.distcode=n.distdyn,L=a(2,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,P={bits:n.distbits}),n.distbits=P.bits,L){e.msg="invalid distances set",n.mode=h;break}if(n.mode=20,6===t)break e;case 20:n.mode=21;case 21:if(m>=6&&C>=258){e.next_out=p,e.avail_out=C,e.next_in=g,e.avail_in=m,n.hold=b,n.bits=v,o(e,y),p=e.next_out,f=e.output,C=e.avail_out,g=e.next_in,u=e.input,m=e.avail_in,b=n.hold,v=n.bits,n.mode===l&&(n.back=-1);break}for(n.back=0;k=(N=n.lencode[b&(1<>>16&255,_=65535&N,!((E=N>>>24)<=v);){if(0===m)break e;m--,b+=u[g++]<>T)])>>>16&255,_=65535&N,!(T+(E=N>>>24)<=v);){if(0===m)break e;m--,b+=u[g++]<>>=T,v-=T,n.back+=T}if(b>>>=E,v-=E,n.back+=E,n.length=_,0===k){n.mode=26;break}if(32&k){n.back=-1,n.mode=l;break}if(64&k){e.msg="invalid literal/length code",n.mode=h;break}n.extra=15&k,n.mode=22;case 22:if(n.extra){for(F=n.extra;v>>=n.extra,v-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=23;case 23:for(;k=(N=n.distcode[b&(1<>>16&255,_=65535&N,!((E=N>>>24)<=v);){if(0===m)break e;m--,b+=u[g++]<>T)])>>>16&255,_=65535&N,!(T+(E=N>>>24)<=v);){if(0===m)break e;m--,b+=u[g++]<>>=T,v-=T,n.back+=T}if(b>>>=E,v-=E,n.back+=E,64&k){e.msg="invalid distance code",n.mode=h;break}n.offset=_,n.extra=15&k,n.mode=24;case 24:if(n.extra){for(F=n.extra;v>>=n.extra,v-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=h;break}n.mode=25;case 25:if(0===C)break e;if(n.offset>(w=y-C)){if((w=n.offset-w)>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=h;break}S=w>n.wnext?n.wsize-(w-=n.wnext):n.wnext-w,w>n.length&&(w=n.length),x=n.window}else x=f,S=p-n.offset,w=n.length;w>C&&(w=C),C-=w,n.length-=w;do{f[p++]=x[S++]}while(--w);0===n.length&&(n.mode=21);break;case 26:if(0===C)break e;f[p++]=n.length,C--,n.mode=21;break;case 27:if(n.wrap){for(;v<32;){if(0===m)break e;m--,b|=u[g++]<=o.wsize?(r.arraySet(o.window,t,n-o.wsize,o.wsize,0),o.wnext=0,o.whave=o.wsize):((s=o.wsize-o.wnext)>i&&(s=i),r.arraySet(o.window,t,n-i,s,o.wnext),(i-=s)?(r.arraySet(o.window,t,n-i,i,0),o.wnext=i,o.whave=o.wsize):(o.wnext+=s,o.wnext===o.wsize&&(o.wnext=0),o.whave=1&&0===F[E];E--);if(k>E&&(k=E),0===E)return l[h++]=20971520,l[h++]=20971520,u.bits=1,0;for(x=1;x0&&(0===e||1!==E))return-1;for(N[1]=0,w=1;w<15;w++)N[w+1]=N[w]+F[w];for(S=0;S852||2===e&&B>592)return 1;for(;;){v=w-T,d[S]b?(I=M[D+d[S]],A=L[P+d[S]]):(I=96,A=0),f=1<>T)+(g-=f)]=v<<24|I<<16|A|0}while(0!==g);for(f=1<>=1;if(0!==f?(O&=f-1,O+=f):O=0,S++,0==--F[w]){if(w===E)break;w=t[n+d[S]]}if(w>k&&(O&m)!==p){for(0===T&&(T=k),C+=x,R=1<<(_=w-T);_+T852||2===e&&B>592)return 1;l[p=O&m]=k<<24|_<<16|C-h|0}}return 0!==O&&(l[C+O]=w-T<<24|64<<16|0),u.bits=k,0}},{"../utils/common":27}],37:[function(e,t,n){"use strict";t.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],38:[function(e,t,n){"use strict";var r=e("../utils/common");function i(e){for(var t=e.length;--t>=0;)e[t]=0}var s=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],o=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],c=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],l=new Array(576);i(l);var h=new Array(60);i(h);var d=new Array(512);i(d);var u=new Array(256);i(u);var f=new Array(29);i(f);var g=new Array(30);i(g);var p,m,C,b=function(e,t,n,r,i){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=r,this.max_length=i,this.has_stree=e&&e.length},v=function(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t};function I(e){return e<256?d[e]:d[256+(e>>>7)]}function A(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function y(e,t,n){e.bi_valid>16-n?(e.bi_buf|=t<>16-e.bi_valid,e.bi_valid+=n-16):(e.bi_buf|=t<>>=1,n<<=1}while(--t>0);return n>>>1}function x(e,t,n){var r,i,s=new Array(16),o=0;for(r=1;r<=15;r++)s[r]=o=o+n[r-1]<<1;for(i=0;i<=t;i++){var a=e[2*i+1];0!==a&&(e[2*i]=S(s[a]++,a))}}function E(e){var t;for(t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function k(e){e.bi_valid>8?A(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function _(e,t,n,r){var i=2*t,s=2*n;return e[i]>1;n>=1;n--)T(e,s,n);i=c;do{n=e.heap[1],e.heap[1]=e.heap[e.heap_len--],T(e,s,1),r=e.heap[1],e.heap[--e.heap_max]=n,e.heap[--e.heap_max]=r,s[2*i]=s[2*n]+s[2*r],e.depth[i]=(e.depth[n]>=e.depth[r]?e.depth[n]:e.depth[r])+1,s[2*n+1]=s[2*r+1]=i,e.heap[1]=i++,T(e,s,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],function(e,t){var n,r,i,s,o,a,c=t.dyn_tree,l=t.max_code,h=t.stat_desc.static_tree,d=t.stat_desc.has_stree,u=t.stat_desc.extra_bits,f=t.stat_desc.extra_base,g=t.stat_desc.max_length,p=0;for(s=0;s<=15;s++)e.bl_count[s]=0;for(c[2*e.heap[e.heap_max]+1]=0,n=e.heap_max+1;n<573;n++)(s=c[2*c[2*(r=e.heap[n])+1]+1]+1)>g&&(s=g,p++),c[2*r+1]=s,r>l||(e.bl_count[s]++,o=0,r>=f&&(o=u[r-f]),e.opt_len+=(a=c[2*r])*(s+o),d&&(e.static_len+=a*(h[2*r+1]+o)));if(0!==p){do{for(s=g-1;0===e.bl_count[s];)s--;e.bl_count[s]--,e.bl_count[s+1]+=2,e.bl_count[g]--,p-=2}while(p>0);for(s=g;0!==s;s--)for(r=e.bl_count[s];0!==r;)(i=e.heap[--n])>l||(c[2*i+1]!==s&&(e.opt_len+=(s-c[2*i+1])*c[2*i],c[2*i+1]=s),r--)}}(e,t),x(s,l,e.bl_count)}function O(e,t,n){var r,i,s=-1,o=t[1],a=0,c=7,l=4;for(0===o&&(c=138,l=3),t[2*(n+1)+1]=65535,r=0;r<=n;r++)i=o,o=t[2*(r+1)+1],++a>=7;r<30;r++)for(g[r]=i<<7,e=0;e<1<0?(2===e.strm.data_type&&(e.strm.data_type=function(e){var t,n=4093624447;for(t=0;t<=31;t++,n>>>=1)if(1&n&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<256;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0}(e)),B(e,e.l_desc),B(e,e.d_desc),o=function(e){var t;for(O(e,e.dyn_ltree,e.l_desc.max_code),O(e,e.dyn_dtree,e.d_desc.max_code),B(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*c[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),(s=e.static_len+3+7>>>3)<=(i=e.opt_len+3+7>>>3)&&(i=s)):i=s=n+5,n+4<=i&&-1!==t?F(e,t,n,r):4===e.strategy||s===i?(y(e,2+(r?1:0),3),R(e,l,h)):(y(e,4+(r?1:0),3),function(e,t,n,r){var i;for(y(e,t-257,5),y(e,n-1,5),y(e,r-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&n,e.last_lit++,0===t?e.dyn_ltree[2*n]++:(e.matches++,t--,e.dyn_ltree[2*(u[n]+256+1)]++,e.dyn_dtree[2*I(t)]++),e.last_lit===e.lit_bufsize-1},n._tr_align=function(e){y(e,2,3),w(e,256,l),function(e){16===e.bi_valid?(A(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{"../utils/common":27}],39:[function(e,t,n){"use strict";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}]},{},[9])(9)}))},Iab2:function(e,t,n){var r,i;void 0===(i="function"==typeof(r=function(){"use strict";function t(e,t,n){var r=new XMLHttpRequest;r.open("GET",e),r.responseType="blob",r.onload=function(){o(r.response,t,n)},r.onerror=function(){console.error("could not download file")},r.send()}function n(e){var t=new XMLHttpRequest;t.open("HEAD",e,!1);try{t.send()}catch(e){}return 200<=t.status&&299>=t.status}function r(e){try{e.dispatchEvent(new MouseEvent("click"))}catch(t){var n=document.createEvent("MouseEvents");n.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(n)}}var i="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof global&&global.global===global?global:void 0,s=i.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),o=i.saveAs||("object"!=typeof window||window!==i?function(){}:"download"in HTMLAnchorElement.prototype&&!s?function(e,s,o){var a=i.URL||i.webkitURL,c=document.createElement("a");c.download=s=s||e.name||"download",c.rel="noopener","string"==typeof e?(c.href=e,c.origin===location.origin?r(c):n(c.href)?t(e,s,o):r(c,c.target="_blank")):(c.href=a.createObjectURL(e),setTimeout((function(){a.revokeObjectURL(c.href)}),4e4),setTimeout((function(){r(c)}),0))}:"msSaveOrOpenBlob"in navigator?function(e,i,s){if(i=i||e.name||"download","string"!=typeof e)navigator.msSaveOrOpenBlob(function(e,t){return void 0===t?t={autoBom:!1}:"object"!=typeof t&&(console.warn("Deprecated: Expected third argument to be a object"),t={autoBom:!t}),t.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob(["\ufeff",e],{type:e.type}):e}(e,s),i);else if(n(e))t(e,i,s);else{var o=document.createElement("a");o.href=e,o.target="_blank",setTimeout((function(){r(o)}))}}:function(e,n,r,o){if((o=o||open("","_blank"))&&(o.document.title=o.document.body.innerText="downloading..."),"string"==typeof e)return t(e,n,r);var a="application/octet-stream"===e.type,c=/constructor/i.test(i.HTMLElement)||i.safari,l=/CriOS\/[\d]+/.test(navigator.userAgent);if((l||a&&c||s)&&"undefined"!=typeof FileReader){var h=new FileReader;h.onloadend=function(){var e=h.result;e=l?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),o?o.location.href=e:location=e,o=null},h.readAsDataURL(e)}else{var d=i.URL||i.webkitURL,u=d.createObjectURL(e);o?o.location=u:location.href=u,o=null,setTimeout((function(){d.revokeObjectURL(u)}),4e4)}});i.saveAs=o.saveAs=o,e.exports=o})?r.apply(t,[]):r)||(e.exports=i)},IkRI:function(e,t,n){var r={version:"1.14.0"};r[437]=function(){for(var e="\0\x01\x02\x03\x04\x05\x06\x07\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\xc7\xfc\xe9\xe2\xe4\xe0\xe5\xe7\xea\xeb\xe8\xef\xee\xec\xc4\xc5\xc9\xe6\xc6\xf4\xf6\xf2\xfb\xf9\xff\xd6\xdc\xa2\xa3\xa5\u20a7\u0192\xe1\xed\xf3\xfa\xf1\xd1\xaa\xba\xbf\u2310\xac\xbd\xbc\xa1\xab\xbb\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255d\u255c\u255b\u2510\u2514\u2534\u252c\u251c\u2500\u253c\u255e\u255f\u255a\u2554\u2569\u2566\u2560\u2550\u256c\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256b\u256a\u2518\u250c\u2588\u2584\u258c\u2590\u2580\u03b1\xdf\u0393\u03c0\u03a3\u03c3\xb5\u03c4\u03a6\u0398\u03a9\u03b4\u221e\u03c6\u03b5\u2229\u2261\xb1\u2265\u2264\u2320\u2321\xf7\u2248\xb0\u2219\xb7\u221a\u207f\xb2\u25a0\xa0",t=[],n={},r=0;r!=e.length;++r)65533!==e.charCodeAt(r)&&(n[e.charAt(r)]=r),t[r]=e.charAt(r);return{enc:n,dec:t}}(),r[620]=function(){for(var e="\0\x01\x02\x03\x04\x05\x06\x07\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\xc7\xfc\xe9\xe2\xe4\xe0\u0105\xe7\xea\xeb\xe8\xef\xee\u0107\xc4\u0104\u0118\u0119\u0142\xf4\xf6\u0106\xfb\xf9\u015a\xd6\xdc\xa2\u0141\xa5\u015b\u0192\u0179\u017b\xf3\xd3\u0144\u0143\u017a\u017c\xbf\u2310\xac\xbd\xbc\xa1\xab\xbb\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255d\u255c\u255b\u2510\u2514\u2534\u252c\u251c\u2500\u253c\u255e\u255f\u255a\u2554\u2569\u2566\u2560\u2550\u256c\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256b\u256a\u2518\u250c\u2588\u2584\u258c\u2590\u2580\u03b1\xdf\u0393\u03c0\u03a3\u03c3\xb5\u03c4\u03a6\u0398\u03a9\u03b4\u221e\u03c6\u03b5\u2229\u2261\xb1\u2265\u2264\u2320\u2321\xf7\u2248\xb0\u2219\xb7\u221a\u207f\xb2\u25a0\xa0",t=[],n={},r=0;r!=e.length;++r)65533!==e.charCodeAt(r)&&(n[e.charAt(r)]=r),t[r]=e.charAt(r);return{enc:n,dec:t}}(),r[737]=function(){for(var e="\0\x01\x02\x03\x04\x05\x06\x07\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039a\u039b\u039c\u039d\u039e\u039f\u03a0\u03a1\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9\u03b1\u03b2\u03b3\u03b4\u03b5\u03b6\u03b7\u03b8\u03b9\u03ba\u03bb\u03bc\u03bd\u03be\u03bf\u03c0\u03c1\u03c3\u03c2\u03c4\u03c5\u03c6\u03c7\u03c8\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255d\u255c\u255b\u2510\u2514\u2534\u252c\u251c\u2500\u253c\u255e\u255f\u255a\u2554\u2569\u2566\u2560\u2550\u256c\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256b\u256a\u2518\u250c\u2588\u2584\u258c\u2590\u2580\u03c9\u03ac\u03ad\u03ae\u03ca\u03af\u03cc\u03cd\u03cb\u03ce\u0386\u0388\u0389\u038a\u038c\u038e\u038f\xb1\u2265\u2264\u03aa\u03ab\xf7\u2248\xb0\u2219\xb7\u221a\u207f\xb2\u25a0\xa0",t=[],n={},r=0;r!=e.length;++r)65533!==e.charCodeAt(r)&&(n[e.charAt(r)]=r),t[r]=e.charAt(r);return{enc:n,dec:t}}(),r[850]=function(){for(var e="\0\x01\x02\x03\x04\x05\x06\x07\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\xc7\xfc\xe9\xe2\xe4\xe0\xe5\xe7\xea\xeb\xe8\xef\xee\xec\xc4\xc5\xc9\xe6\xc6\xf4\xf6\xf2\xfb\xf9\xff\xd6\xdc\xf8\xa3\xd8\xd7\u0192\xe1\xed\xf3\xfa\xf1\xd1\xaa\xba\xbf\xae\xac\xbd\xbc\xa1\xab\xbb\u2591\u2592\u2593\u2502\u2524\xc1\xc2\xc0\xa9\u2563\u2551\u2557\u255d\xa2\xa5\u2510\u2514\u2534\u252c\u251c\u2500\u253c\xe3\xc3\u255a\u2554\u2569\u2566\u2560\u2550\u256c\xa4\xf0\xd0\xca\xcb\xc8\u0131\xcd\xce\xcf\u2518\u250c\u2588\u2584\xa6\xcc\u2580\xd3\xdf\xd4\xd2\xf5\xd5\xb5\xfe\xde\xda\xdb\xd9\xfd\xdd\xaf\xb4\xad\xb1\u2017\xbe\xb6\xa7\xf7\xb8\xb0\xa8\xb7\xb9\xb3\xb2\u25a0\xa0",t=[],n={},r=0;r!=e.length;++r)65533!==e.charCodeAt(r)&&(n[e.charAt(r)]=r),t[r]=e.charAt(r);return{enc:n,dec:t}}(),r[852]=function(){for(var e="\0\x01\x02\x03\x04\x05\x06\x07\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\xc7\xfc\xe9\xe2\xe4\u016f\u0107\xe7\u0142\xeb\u0150\u0151\xee\u0179\xc4\u0106\xc9\u0139\u013a\xf4\xf6\u013d\u013e\u015a\u015b\xd6\xdc\u0164\u0165\u0141\xd7\u010d\xe1\xed\xf3\xfa\u0104\u0105\u017d\u017e\u0118\u0119\xac\u017a\u010c\u015f\xab\xbb\u2591\u2592\u2593\u2502\u2524\xc1\xc2\u011a\u015e\u2563\u2551\u2557\u255d\u017b\u017c\u2510\u2514\u2534\u252c\u251c\u2500\u253c\u0102\u0103\u255a\u2554\u2569\u2566\u2560\u2550\u256c\xa4\u0111\u0110\u010e\xcb\u010f\u0147\xcd\xce\u011b\u2518\u250c\u2588\u2584\u0162\u016e\u2580\xd3\xdf\xd4\u0143\u0144\u0148\u0160\u0161\u0154\xda\u0155\u0170\xfd\xdd\u0163\xb4\xad\u02dd\u02db\u02c7\u02d8\xa7\xf7\xb8\xb0\xa8\u02d9\u0171\u0158\u0159\u25a0\xa0",t=[],n={},r=0;r!=e.length;++r)65533!==e.charCodeAt(r)&&(n[e.charAt(r)]=r),t[r]=e.charAt(r);return{enc:n,dec:t}}(),r[857]=function(){for(var e="\0\x01\x02\x03\x04\x05\x06\x07\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\xc7\xfc\xe9\xe2\xe4\xe0\xe5\xe7\xea\xeb\xe8\xef\xee\u0131\xc4\xc5\xc9\xe6\xc6\xf4\xf6\xf2\xfb\xf9\u0130\xd6\xdc\xf8\xa3\xd8\u015e\u015f\xe1\xed\xf3\xfa\xf1\xd1\u011e\u011f\xbf\xae\xac\xbd\xbc\xa1\xab\xbb\u2591\u2592\u2593\u2502\u2524\xc1\xc2\xc0\xa9\u2563\u2551\u2557\u255d\xa2\xa5\u2510\u2514\u2534\u252c\u251c\u2500\u253c\xe3\xc3\u255a\u2554\u2569\u2566\u2560\u2550\u256c\xa4\xba\xaa\xca\xcb\xc8\ufffd\xcd\xce\xcf\u2518\u250c\u2588\u2584\xa6\xcc\u2580\xd3\xdf\xd4\xd2\xf5\xd5\xb5\ufffd\xd7\xda\xdb\xd9\xec\xff\xaf\xb4\xad\xb1\ufffd\xbe\xb6\xa7\xf7\xb8\xb0\xa8\xb7\xb9\xb3\xb2\u25a0\xa0",t=[],n={},r=0;r!=e.length;++r)65533!==e.charCodeAt(r)&&(n[e.charAt(r)]=r),t[r]=e.charAt(r);return{enc:n,dec:t}}(),r[861]=function(){for(var e="\0\x01\x02\x03\x04\x05\x06\x07\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\xc7\xfc\xe9\xe2\xe4\xe0\xe5\xe7\xea\xeb\xe8\xd0\xf0\xde\xc4\xc5\xc9\xe6\xc6\xf4\xf6\xfe\xfb\xdd\xfd\xd6\xdc\xf8\xa3\xd8\u20a7\u0192\xe1\xed\xf3\xfa\xc1\xcd\xd3\xda\xbf\u2310\xac\xbd\xbc\xa1\xab\xbb\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255d\u255c\u255b\u2510\u2514\u2534\u252c\u251c\u2500\u253c\u255e\u255f\u255a\u2554\u2569\u2566\u2560\u2550\u256c\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256b\u256a\u2518\u250c\u2588\u2584\u258c\u2590\u2580\u03b1\xdf\u0393\u03c0\u03a3\u03c3\xb5\u03c4\u03a6\u0398\u03a9\u03b4\u221e\u03c6\u03b5\u2229\u2261\xb1\u2265\u2264\u2320\u2321\xf7\u2248\xb0\u2219\xb7\u221a\u207f\xb2\u25a0\xa0",t=[],n={},r=0;r!=e.length;++r)65533!==e.charCodeAt(r)&&(n[e.charAt(r)]=r),t[r]=e.charAt(r);return{enc:n,dec:t}}(),r[865]=function(){for(var e="\0\x01\x02\x03\x04\x05\x06\x07\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\xc7\xfc\xe9\xe2\xe4\xe0\xe5\xe7\xea\xeb\xe8\xef\xee\xec\xc4\xc5\xc9\xe6\xc6\xf4\xf6\xf2\xfb\xf9\xff\xd6\xdc\xf8\xa3\xd8\u20a7\u0192\xe1\xed\xf3\xfa\xf1\xd1\xaa\xba\xbf\u2310\xac\xbd\xbc\xa1\xab\xa4\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255d\u255c\u255b\u2510\u2514\u2534\u252c\u251c\u2500\u253c\u255e\u255f\u255a\u2554\u2569\u2566\u2560\u2550\u256c\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256b\u256a\u2518\u250c\u2588\u2584\u258c\u2590\u2580\u03b1\xdf\u0393\u03c0\u03a3\u03c3\xb5\u03c4\u03a6\u0398\u03a9\u03b4\u221e\u03c6\u03b5\u2229\u2261\xb1\u2265\u2264\u2320\u2321\xf7\u2248\xb0\u2219\xb7\u221a\u207f\xb2\u25a0\xa0",t=[],n={},r=0;r!=e.length;++r)65533!==e.charCodeAt(r)&&(n[e.charAt(r)]=r),t[r]=e.charAt(r);return{enc:n,dec:t}}(),r[866]=function(){for(var e="\0\x01\x02\x03\x04\x05\x06\x07\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041a\u041b\u041c\u041d\u041e\u041f\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042a\u042b\u042c\u042d\u042e\u042f\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043a\u043b\u043c\u043d\u043e\u043f\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255d\u255c\u255b\u2510\u2514\u2534\u252c\u251c\u2500\u253c\u255e\u255f\u255a\u2554\u2569\u2566\u2560\u2550\u256c\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256b\u256a\u2518\u250c\u2588\u2584\u258c\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044a\u044b\u044c\u044d\u044e\u044f\u0401\u0451\u0404\u0454\u0407\u0457\u040e\u045e\xb0\u2219\xb7\u221a\u2116\xa4\u25a0\xa0",t=[],n={},r=0;r!=e.length;++r)65533!==e.charCodeAt(r)&&(n[e.charAt(r)]=r),t[r]=e.charAt(r);return{enc:n,dec:t}}(),r[874]=function(){for(var e="\0\x01\x02\x03\x04\x05\x06\x07\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\u20ac\ufffd\ufffd\ufffd\ufffd\u2026\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u2018\u2019\u201c\u201d\u2022\u2013\u2014\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\xa0\u0e01\u0e02\u0e03\u0e04\u0e05\u0e06\u0e07\u0e08\u0e09\u0e0a\u0e0b\u0e0c\u0e0d\u0e0e\u0e0f\u0e10\u0e11\u0e12\u0e13\u0e14\u0e15\u0e16\u0e17\u0e18\u0e19\u0e1a\u0e1b\u0e1c\u0e1d\u0e1e\u0e1f\u0e20\u0e21\u0e22\u0e23\u0e24\u0e25\u0e26\u0e27\u0e28\u0e29\u0e2a\u0e2b\u0e2c\u0e2d\u0e2e\u0e2f\u0e30\u0e31\u0e32\u0e33\u0e34\u0e35\u0e36\u0e37\u0e38\u0e39\u0e3a\ufffd\ufffd\ufffd\ufffd\u0e3f\u0e40\u0e41\u0e42\u0e43\u0e44\u0e45\u0e46\u0e47\u0e48\u0e49\u0e4a\u0e4b\u0e4c\u0e4d\u0e4e\u0e4f\u0e50\u0e51\u0e52\u0e53\u0e54\u0e55\u0e56\u0e57\u0e58\u0e59\u0e5a\u0e5b\ufffd\ufffd\ufffd\ufffd",t=[],n={},r=0;r!=e.length;++r)65533!==e.charCodeAt(r)&&(n[e.charAt(r)]=r),t[r]=e.charAt(r);return{enc:n,dec:t}}(),r[895]=function(){for(var e="\0\x01\x02\x03\x04\x05\x06\x07\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\u010c\xfc\xe9\u010f\xe4\u010e\u0164\u010d\u011b\u011a\u0139\xcd\u013e\u01ea\xc4\xc1\xc9\u017e\u017d\xf4\xf6\xd3\u016f\xda\xfd\xd6\xdc\u0160\u013d\xdd\u0158\u0165\xe1\xed\xf3\xfa\u0148\u0147\u016e\xd4\u0161\u0159\u0155\u0154\xbc\xa7\xab\xbb\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255d\u255c\u255b\u2510\u2514\u2534\u252c\u251c\u2500\u253c\u255e\u255f\u255a\u2554\u2569\u2566\u2560\u2550\u256c\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256b\u256a\u2518\u250c\u2588\u2584\u258c\u2590\u2580\u03b1\xdf\u0393\u03c0\u03a3\u03c3\xb5\u03c4\u03a6\u0398\u03a9\u03b4\u221e\u03c6\u03b5\u2229\u2261\xb1\u2265\u2264\u2320\u2321\xf7\u2248\xb0\u2219\xb7\u221a\u207f\xb2\u25a0\xa0",t=[],n={},r=0;r!=e.length;++r)65533!==e.charCodeAt(r)&&(n[e.charAt(r)]=r),t[r]=e.charAt(r);return{enc:n,dec:t}}(),r[932]=function(){var e,t=[],n={},r=[];for(r[0]="\0\x01\x02\x03\x04\x05\x06\x07\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uff61\uff62\uff63\uff64\uff65\uff66\uff67\uff68\uff69\uff6a\uff6b\uff6c\uff6d\uff6e\uff6f\uff70\uff71\uff72\uff73\uff74\uff75\uff76\uff77\uff78\uff79\uff7a\uff7b\uff7c\uff7d\uff7e\uff7f\uff80\uff81\uff82\uff83\uff84\uff85\uff86\uff87\uff88\uff89\uff8a\uff8b\uff8c\uff8d\uff8e\uff8f\uff90\uff91\uff92\uff93\uff94\uff95\uff96\uff97\uff98\uff99\uff9a\uff9b\uff9c\uff9d\uff9e\uff9f\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[0].length;++e)65533!==r[0][e].charCodeAt(0)&&(n[r[0][e]]=0+e,t[0+e]=r[0][e]);for(r[129]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u3000\u3001\u3002\uff0c\uff0e\u30fb\uff1a\uff1b\uff1f\uff01\u309b\u309c\xb4\uff40\xa8\uff3e\uffe3\uff3f\u30fd\u30fe\u309d\u309e\u3003\u4edd\u3005\u3006\u3007\u30fc\u2015\u2010\uff0f\uff3c\uff5e\u2225\uff5c\u2026\u2025\u2018\u2019\u201c\u201d\uff08\uff09\u3014\u3015\uff3b\uff3d\uff5b\uff5d\u3008\u3009\u300a\u300b\u300c\u300d\u300e\u300f\u3010\u3011\uff0b\uff0d\xb1\xd7\ufffd\xf7\uff1d\u2260\uff1c\uff1e\u2266\u2267\u221e\u2234\u2642\u2640\xb0\u2032\u2033\u2103\uffe5\uff04\uffe0\uffe1\uff05\uff03\uff06\uff0a\uff20\xa7\u2606\u2605\u25cb\u25cf\u25ce\u25c7\u25c6\u25a1\u25a0\u25b3\u25b2\u25bd\u25bc\u203b\u3012\u2192\u2190\u2191\u2193\u3013\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u2208\u220b\u2286\u2287\u2282\u2283\u222a\u2229\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u2227\u2228\uffe2\u21d2\u21d4\u2200\u2203\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u2220\u22a5\u2312\u2202\u2207\u2261\u2252\u226a\u226b\u221a\u223d\u221d\u2235\u222b\u222c\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u212b\u2030\u266f\u266d\u266a\u2020\u2021\xb6\ufffd\ufffd\ufffd\ufffd\u25ef\ufffd\ufffd\ufffd".split(""),e=0;e!=r[129].length;++e)65533!==r[129][e].charCodeAt(0)&&(n[r[129][e]]=33024+e,t[33024+e]=r[129][e]);for(r[130]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uff10\uff11\uff12\uff13\uff14\uff15\uff16\uff17\uff18\uff19\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uff21\uff22\uff23\uff24\uff25\uff26\uff27\uff28\uff29\uff2a\uff2b\uff2c\uff2d\uff2e\uff2f\uff30\uff31\uff32\uff33\uff34\uff35\uff36\uff37\uff38\uff39\uff3a\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uff41\uff42\uff43\uff44\uff45\uff46\uff47\uff48\uff49\uff4a\uff4b\uff4c\uff4d\uff4e\uff4f\uff50\uff51\uff52\uff53\uff54\uff55\uff56\uff57\uff58\uff59\uff5a\ufffd\ufffd\ufffd\ufffd\u3041\u3042\u3043\u3044\u3045\u3046\u3047\u3048\u3049\u304a\u304b\u304c\u304d\u304e\u304f\u3050\u3051\u3052\u3053\u3054\u3055\u3056\u3057\u3058\u3059\u305a\u305b\u305c\u305d\u305e\u305f\u3060\u3061\u3062\u3063\u3064\u3065\u3066\u3067\u3068\u3069\u306a\u306b\u306c\u306d\u306e\u306f\u3070\u3071\u3072\u3073\u3074\u3075\u3076\u3077\u3078\u3079\u307a\u307b\u307c\u307d\u307e\u307f\u3080\u3081\u3082\u3083\u3084\u3085\u3086\u3087\u3088\u3089\u308a\u308b\u308c\u308d\u308e\u308f\u3090\u3091\u3092\u3093\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[130].length;++e)65533!==r[130][e].charCodeAt(0)&&(n[r[130][e]]=33280+e,t[33280+e]=r[130][e]);for(r[131]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u30a1\u30a2\u30a3\u30a4\u30a5\u30a6\u30a7\u30a8\u30a9\u30aa\u30ab\u30ac\u30ad\u30ae\u30af\u30b0\u30b1\u30b2\u30b3\u30b4\u30b5\u30b6\u30b7\u30b8\u30b9\u30ba\u30bb\u30bc\u30bd\u30be\u30bf\u30c0\u30c1\u30c2\u30c3\u30c4\u30c5\u30c6\u30c7\u30c8\u30c9\u30ca\u30cb\u30cc\u30cd\u30ce\u30cf\u30d0\u30d1\u30d2\u30d3\u30d4\u30d5\u30d6\u30d7\u30d8\u30d9\u30da\u30db\u30dc\u30dd\u30de\u30df\ufffd\u30e0\u30e1\u30e2\u30e3\u30e4\u30e5\u30e6\u30e7\u30e8\u30e9\u30ea\u30eb\u30ec\u30ed\u30ee\u30ef\u30f0\u30f1\u30f2\u30f3\u30f4\u30f5\u30f6\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039a\u039b\u039c\u039d\u039e\u039f\u03a0\u03a1\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u03b1\u03b2\u03b3\u03b4\u03b5\u03b6\u03b7\u03b8\u03b9\u03ba\u03bb\u03bc\u03bd\u03be\u03bf\u03c0\u03c1\u03c3\u03c4\u03c5\u03c6\u03c7\u03c8\u03c9\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[131].length;++e)65533!==r[131][e].charCodeAt(0)&&(n[r[131][e]]=33536+e,t[33536+e]=r[131][e]);for(r[132]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0410\u0411\u0412\u0413\u0414\u0415\u0401\u0416\u0417\u0418\u0419\u041a\u041b\u041c\u041d\u041e\u041f\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042a\u042b\u042c\u042d\u042e\u042f\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0430\u0431\u0432\u0433\u0434\u0435\u0451\u0436\u0437\u0438\u0439\u043a\u043b\u043c\u043d\ufffd\u043e\u043f\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044a\u044b\u044c\u044d\u044e\u044f\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u2500\u2502\u250c\u2510\u2518\u2514\u251c\u252c\u2524\u2534\u253c\u2501\u2503\u250f\u2513\u251b\u2517\u2523\u2533\u252b\u253b\u254b\u2520\u252f\u2528\u2537\u253f\u251d\u2530\u2525\u2538\u2542\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[132].length;++e)65533!==r[132][e].charCodeAt(0)&&(n[r[132][e]]=33792+e,t[33792+e]=r[132][e]);for(r[135]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u2460\u2461\u2462\u2463\u2464\u2465\u2466\u2467\u2468\u2469\u246a\u246b\u246c\u246d\u246e\u246f\u2470\u2471\u2472\u2473\u2160\u2161\u2162\u2163\u2164\u2165\u2166\u2167\u2168\u2169\ufffd\u3349\u3314\u3322\u334d\u3318\u3327\u3303\u3336\u3351\u3357\u330d\u3326\u3323\u332b\u334a\u333b\u339c\u339d\u339e\u338e\u338f\u33c4\u33a1\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u337b\ufffd\u301d\u301f\u2116\u33cd\u2121\u32a4\u32a5\u32a6\u32a7\u32a8\u3231\u3232\u3239\u337e\u337d\u337c\u2252\u2261\u222b\u222e\u2211\u221a\u22a5\u2220\u221f\u22bf\u2235\u2229\u222a\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[135].length;++e)65533!==r[135][e].charCodeAt(0)&&(n[r[135][e]]=34560+e,t[34560+e]=r[135][e]);for(r[136]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u4e9c\u5516\u5a03\u963f\u54c0\u611b\u6328\u59f6\u9022\u8475\u831c\u7a50\u60aa\u63e1\u6e25\u65ed\u8466\u82a6\u9bf5\u6893\u5727\u65a1\u6271\u5b9b\u59d0\u867b\u98f4\u7d62\u7dbe\u9b8e\u6216\u7c9f\u88b7\u5b89\u5eb5\u6309\u6697\u6848\u95c7\u978d\u674f\u4ee5\u4f0a\u4f4d\u4f9d\u5049\u56f2\u5937\u59d4\u5a01\u5c09\u60df\u610f\u6170\u6613\u6905\u70ba\u754f\u7570\u79fb\u7dad\u7def\u80c3\u840e\u8863\u8b02\u9055\u907a\u533b\u4e95\u4ea5\u57df\u80b2\u90c1\u78ef\u4e00\u58f1\u6ea2\u9038\u7a32\u8328\u828b\u9c2f\u5141\u5370\u54bd\u54e1\u56e0\u59fb\u5f15\u98f2\u6deb\u80e4\u852d\ufffd\ufffd\ufffd".split(""),e=0;e!=r[136].length;++e)65533!==r[136][e].charCodeAt(0)&&(n[r[136][e]]=34816+e,t[34816+e]=r[136][e]);for(r[137]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9662\u9670\u96a0\u97fb\u540b\u53f3\u5b87\u70cf\u7fbd\u8fc2\u96e8\u536f\u9d5c\u7aba\u4e11\u7893\u81fc\u6e26\u5618\u5504\u6b1d\u851a\u9c3b\u59e5\u53a9\u6d66\u74dc\u958f\u5642\u4e91\u904b\u96f2\u834f\u990c\u53e1\u55b6\u5b30\u5f71\u6620\u66f3\u6804\u6c38\u6cf3\u6d29\u745b\u76c8\u7a4e\u9834\u82f1\u885b\u8a60\u92ed\u6db2\u75ab\u76ca\u99c5\u60a6\u8b01\u8d8a\u95b2\u698e\u53ad\u5186\ufffd\u5712\u5830\u5944\u5bb4\u5ef6\u6028\u63a9\u63f4\u6cbf\u6f14\u708e\u7114\u7159\u71d5\u733f\u7e01\u8276\u82d1\u8597\u9060\u925b\u9d1b\u5869\u65bc\u6c5a\u7525\u51f9\u592e\u5965\u5f80\u5fdc\u62bc\u65fa\u6a2a\u6b27\u6bb4\u738b\u7fc1\u8956\u9d2c\u9d0e\u9ec4\u5ca1\u6c96\u837b\u5104\u5c4b\u61b6\u81c6\u6876\u7261\u4e59\u4ffa\u5378\u6069\u6e29\u7a4f\u97f3\u4e0b\u5316\u4eee\u4f55\u4f3d\u4fa1\u4f73\u52a0\u53ef\u5609\u590f\u5ac1\u5bb6\u5be1\u79d1\u6687\u679c\u67b6\u6b4c\u6cb3\u706b\u73c2\u798d\u79be\u7a3c\u7b87\u82b1\u82db\u8304\u8377\u83ef\u83d3\u8766\u8ab2\u5629\u8ca8\u8fe6\u904e\u971e\u868a\u4fc4\u5ce8\u6211\u7259\u753b\u81e5\u82bd\u86fe\u8cc0\u96c5\u9913\u99d5\u4ecb\u4f1a\u89e3\u56de\u584a\u58ca\u5efb\u5feb\u602a\u6094\u6062\u61d0\u6212\u62d0\u6539\ufffd\ufffd\ufffd".split(""),e=0;e!=r[137].length;++e)65533!==r[137][e].charCodeAt(0)&&(n[r[137][e]]=35072+e,t[35072+e]=r[137][e]);for(r[138]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9b41\u6666\u68b0\u6d77\u7070\u754c\u7686\u7d75\u82a5\u87f9\u958b\u968e\u8c9d\u51f1\u52be\u5916\u54b3\u5bb3\u5d16\u6168\u6982\u6daf\u788d\u84cb\u8857\u8a72\u93a7\u9ab8\u6d6c\u99a8\u86d9\u57a3\u67ff\u86ce\u920e\u5283\u5687\u5404\u5ed3\u62e1\u64b9\u683c\u6838\u6bbb\u7372\u78ba\u7a6b\u899a\u89d2\u8d6b\u8f03\u90ed\u95a3\u9694\u9769\u5b66\u5cb3\u697d\u984d\u984e\u639b\u7b20\u6a2b\ufffd\u6a7f\u68b6\u9c0d\u6f5f\u5272\u559d\u6070\u62ec\u6d3b\u6e07\u6ed1\u845b\u8910\u8f44\u4e14\u9c39\u53f6\u691b\u6a3a\u9784\u682a\u515c\u7ac3\u84b2\u91dc\u938c\u565b\u9d28\u6822\u8305\u8431\u7ca5\u5208\u82c5\u74e6\u4e7e\u4f83\u51a0\u5bd2\u520a\u52d8\u52e7\u5dfb\u559a\u582a\u59e6\u5b8c\u5b98\u5bdb\u5e72\u5e79\u60a3\u611f\u6163\u61be\u63db\u6562\u67d1\u6853\u68fa\u6b3e\u6b53\u6c57\u6f22\u6f97\u6f45\u74b0\u7518\u76e3\u770b\u7aff\u7ba1\u7c21\u7de9\u7f36\u7ff0\u809d\u8266\u839e\u89b3\u8acc\u8cab\u9084\u9451\u9593\u9591\u95a2\u9665\u97d3\u9928\u8218\u4e38\u542b\u5cb8\u5dcc\u73a9\u764c\u773c\u5ca9\u7feb\u8d0b\u96c1\u9811\u9854\u9858\u4f01\u4f0e\u5371\u559c\u5668\u57fa\u5947\u5b09\u5bc4\u5c90\u5e0c\u5e7e\u5fcc\u63ee\u673a\u65d7\u65e2\u671f\u68cb\u68c4\ufffd\ufffd\ufffd".split(""),e=0;e!=r[138].length;++e)65533!==r[138][e].charCodeAt(0)&&(n[r[138][e]]=35328+e,t[35328+e]=r[138][e]);for(r[139]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6a5f\u5e30\u6bc5\u6c17\u6c7d\u757f\u7948\u5b63\u7a00\u7d00\u5fbd\u898f\u8a18\u8cb4\u8d77\u8ecc\u8f1d\u98e2\u9a0e\u9b3c\u4e80\u507d\u5100\u5993\u5b9c\u622f\u6280\u64ec\u6b3a\u72a0\u7591\u7947\u7fa9\u87fb\u8abc\u8b70\u63ac\u83ca\u97a0\u5409\u5403\u55ab\u6854\u6a58\u8a70\u7827\u6775\u9ecd\u5374\u5ba2\u811a\u8650\u9006\u4e18\u4e45\u4ec7\u4f11\u53ca\u5438\u5bae\u5f13\u6025\u6551\ufffd\u673d\u6c42\u6c72\u6ce3\u7078\u7403\u7a76\u7aae\u7b08\u7d1a\u7cfe\u7d66\u65e7\u725b\u53bb\u5c45\u5de8\u62d2\u62e0\u6319\u6e20\u865a\u8a31\u8ddd\u92f8\u6f01\u79a6\u9b5a\u4ea8\u4eab\u4eac\u4f9b\u4fa0\u50d1\u5147\u7af6\u5171\u51f6\u5354\u5321\u537f\u53eb\u55ac\u5883\u5ce1\u5f37\u5f4a\u602f\u6050\u606d\u631f\u6559\u6a4b\u6cc1\u72c2\u72ed\u77ef\u80f8\u8105\u8208\u854e\u90f7\u93e1\u97ff\u9957\u9a5a\u4ef0\u51dd\u5c2d\u6681\u696d\u5c40\u66f2\u6975\u7389\u6850\u7c81\u50c5\u52e4\u5747\u5dfe\u9326\u65a4\u6b23\u6b3d\u7434\u7981\u79bd\u7b4b\u7dca\u82b9\u83cc\u887f\u895f\u8b39\u8fd1\u91d1\u541f\u9280\u4e5d\u5036\u53e5\u533a\u72d7\u7396\u77e9\u82e6\u8eaf\u99c6\u99c8\u99d2\u5177\u611a\u865e\u55b0\u7a7a\u5076\u5bd3\u9047\u9685\u4e32\u6adb\u91e7\u5c51\u5c48\ufffd\ufffd\ufffd".split(""),e=0;e!=r[139].length;++e)65533!==r[139][e].charCodeAt(0)&&(n[r[139][e]]=35584+e,t[35584+e]=r[139][e]);for(r[140]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6398\u7a9f\u6c93\u9774\u8f61\u7aaa\u718a\u9688\u7c82\u6817\u7e70\u6851\u936c\u52f2\u541b\u85ab\u8a13\u7fa4\u8ecd\u90e1\u5366\u8888\u7941\u4fc2\u50be\u5211\u5144\u5553\u572d\u73ea\u578b\u5951\u5f62\u5f84\u6075\u6176\u6167\u61a9\u63b2\u643a\u656c\u666f\u6842\u6e13\u7566\u7a3d\u7cfb\u7d4c\u7d99\u7e4b\u7f6b\u830e\u834a\u86cd\u8a08\u8a63\u8b66\u8efd\u981a\u9d8f\u82b8\u8fce\u9be8\ufffd\u5287\u621f\u6483\u6fc0\u9699\u6841\u5091\u6b20\u6c7a\u6f54\u7a74\u7d50\u8840\u8a23\u6708\u4ef6\u5039\u5026\u5065\u517c\u5238\u5263\u55a7\u570f\u5805\u5acc\u5efa\u61b2\u61f8\u62f3\u6372\u691c\u6a29\u727d\u72ac\u732e\u7814\u786f\u7d79\u770c\u80a9\u898b\u8b19\u8ce2\u8ed2\u9063\u9375\u967a\u9855\u9a13\u9e78\u5143\u539f\u53b3\u5e7b\u5f26\u6e1b\u6e90\u7384\u73fe\u7d43\u8237\u8a00\u8afa\u9650\u4e4e\u500b\u53e4\u547c\u56fa\u59d1\u5b64\u5df1\u5eab\u5f27\u6238\u6545\u67af\u6e56\u72d0\u7cca\u88b4\u80a1\u80e1\u83f0\u864e\u8a87\u8de8\u9237\u96c7\u9867\u9f13\u4e94\u4e92\u4f0d\u5348\u5449\u543e\u5a2f\u5f8c\u5fa1\u609f\u68a7\u6a8e\u745a\u7881\u8a9e\u8aa4\u8b77\u9190\u4e5e\u9bc9\u4ea4\u4f7c\u4faf\u5019\u5016\u5149\u516c\u529f\u52b9\u52fe\u539a\u53e3\u5411\ufffd\ufffd\ufffd".split(""),e=0;e!=r[140].length;++e)65533!==r[140][e].charCodeAt(0)&&(n[r[140][e]]=35840+e,t[35840+e]=r[140][e]);for(r[141]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u540e\u5589\u5751\u57a2\u597d\u5b54\u5b5d\u5b8f\u5de5\u5de7\u5df7\u5e78\u5e83\u5e9a\u5eb7\u5f18\u6052\u614c\u6297\u62d8\u63a7\u653b\u6602\u6643\u66f4\u676d\u6821\u6897\u69cb\u6c5f\u6d2a\u6d69\u6e2f\u6e9d\u7532\u7687\u786c\u7a3f\u7ce0\u7d05\u7d18\u7d5e\u7db1\u8015\u8003\u80af\u80b1\u8154\u818f\u822a\u8352\u884c\u8861\u8b1b\u8ca2\u8cfc\u90ca\u9175\u9271\u783f\u92fc\u95a4\u964d\ufffd\u9805\u9999\u9ad8\u9d3b\u525b\u52ab\u53f7\u5408\u58d5\u62f7\u6fe0\u8c6a\u8f5f\u9eb9\u514b\u523b\u544a\u56fd\u7a40\u9177\u9d60\u9ed2\u7344\u6f09\u8170\u7511\u5ffd\u60da\u9aa8\u72db\u8fbc\u6b64\u9803\u4eca\u56f0\u5764\u58be\u5a5a\u6068\u61c7\u660f\u6606\u6839\u68b1\u6df7\u75d5\u7d3a\u826e\u9b42\u4e9b\u4f50\u53c9\u5506\u5d6f\u5de6\u5dee\u67fb\u6c99\u7473\u7802\u8a50\u9396\u88df\u5750\u5ea7\u632b\u50b5\u50ac\u518d\u6700\u54c9\u585e\u59bb\u5bb0\u5f69\u624d\u63a1\u683d\u6b73\u6e08\u707d\u91c7\u7280\u7815\u7826\u796d\u658e\u7d30\u83dc\u88c1\u8f09\u969b\u5264\u5728\u6750\u7f6a\u8ca1\u51b4\u5742\u962a\u583a\u698a\u80b4\u54b2\u5d0e\u57fc\u7895\u9dfa\u4f5c\u524a\u548b\u643e\u6628\u6714\u67f5\u7a84\u7b56\u7d22\u932f\u685c\u9bad\u7b39\u5319\u518a\u5237\ufffd\ufffd\ufffd".split(""),e=0;e!=r[141].length;++e)65533!==r[141][e].charCodeAt(0)&&(n[r[141][e]]=36096+e,t[36096+e]=r[141][e]);for(r[142]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5bdf\u62f6\u64ae\u64e6\u672d\u6bba\u85a9\u96d1\u7690\u9bd6\u634c\u9306\u9bab\u76bf\u6652\u4e09\u5098\u53c2\u5c71\u60e8\u6492\u6563\u685f\u71e6\u73ca\u7523\u7b97\u7e82\u8695\u8b83\u8cdb\u9178\u9910\u65ac\u66ab\u6b8b\u4ed5\u4ed4\u4f3a\u4f7f\u523a\u53f8\u53f2\u55e3\u56db\u58eb\u59cb\u59c9\u59ff\u5b50\u5c4d\u5e02\u5e2b\u5fd7\u601d\u6307\u652f\u5b5c\u65af\u65bd\u65e8\u679d\u6b62\ufffd\u6b7b\u6c0f\u7345\u7949\u79c1\u7cf8\u7d19\u7d2b\u80a2\u8102\u81f3\u8996\u8a5e\u8a69\u8a66\u8a8c\u8aee\u8cc7\u8cdc\u96cc\u98fc\u6b6f\u4e8b\u4f3c\u4f8d\u5150\u5b57\u5bfa\u6148\u6301\u6642\u6b21\u6ecb\u6cbb\u723e\u74bd\u75d4\u78c1\u793a\u800c\u8033\u81ea\u8494\u8f9e\u6c50\u9e7f\u5f0f\u8b58\u9d2b\u7afa\u8ef8\u5b8d\u96eb\u4e03\u53f1\u57f7\u5931\u5ac9\u5ba4\u6089\u6e7f\u6f06\u75be\u8cea\u5b9f\u8500\u7be0\u5072\u67f4\u829d\u5c61\u854a\u7e1e\u820e\u5199\u5c04\u6368\u8d66\u659c\u716e\u793e\u7d17\u8005\u8b1d\u8eca\u906e\u86c7\u90aa\u501f\u52fa\u5c3a\u6753\u707c\u7235\u914c\u91c8\u932b\u82e5\u5bc2\u5f31\u60f9\u4e3b\u53d6\u5b88\u624b\u6731\u6b8a\u72e9\u73e0\u7a2e\u816b\u8da3\u9152\u9996\u5112\u53d7\u546a\u5bff\u6388\u6a39\u7dac\u9700\u56da\u53ce\u5468\ufffd\ufffd\ufffd".split(""),e=0;e!=r[142].length;++e)65533!==r[142][e].charCodeAt(0)&&(n[r[142][e]]=36352+e,t[36352+e]=r[142][e]);for(r[143]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5b97\u5c31\u5dde\u4fee\u6101\u62fe\u6d32\u79c0\u79cb\u7d42\u7e4d\u7fd2\u81ed\u821f\u8490\u8846\u8972\u8b90\u8e74\u8f2f\u9031\u914b\u916c\u96c6\u919c\u4ec0\u4f4f\u5145\u5341\u5f93\u620e\u67d4\u6c41\u6e0b\u7363\u7e26\u91cd\u9283\u53d4\u5919\u5bbf\u6dd1\u795d\u7e2e\u7c9b\u587e\u719f\u51fa\u8853\u8ff0\u4fca\u5cfb\u6625\u77ac\u7ae3\u821c\u99ff\u51c6\u5faa\u65ec\u696f\u6b89\u6df3\ufffd\u6e96\u6f64\u76fe\u7d14\u5de1\u9075\u9187\u9806\u51e6\u521d\u6240\u6691\u66d9\u6e1a\u5eb6\u7dd2\u7f72\u66f8\u85af\u85f7\u8af8\u52a9\u53d9\u5973\u5e8f\u5f90\u6055\u92e4\u9664\u50b7\u511f\u52dd\u5320\u5347\u53ec\u54e8\u5546\u5531\u5617\u5968\u59be\u5a3c\u5bb5\u5c06\u5c0f\u5c11\u5c1a\u5e84\u5e8a\u5ee0\u5f70\u627f\u6284\u62db\u638c\u6377\u6607\u660c\u662d\u6676\u677e\u68a2\u6a1f\u6a35\u6cbc\u6d88\u6e09\u6e58\u713c\u7126\u7167\u75c7\u7701\u785d\u7901\u7965\u79f0\u7ae0\u7b11\u7ca7\u7d39\u8096\u83d6\u848b\u8549\u885d\u88f3\u8a1f\u8a3c\u8a54\u8a73\u8c61\u8cde\u91a4\u9266\u937e\u9418\u969c\u9798\u4e0a\u4e08\u4e1e\u4e57\u5197\u5270\u57ce\u5834\u58cc\u5b22\u5e38\u60c5\u64fe\u6761\u6756\u6d44\u72b6\u7573\u7a63\u84b8\u8b72\u91b8\u9320\u5631\u57f4\u98fe\ufffd\ufffd\ufffd".split(""),e=0;e!=r[143].length;++e)65533!==r[143][e].charCodeAt(0)&&(n[r[143][e]]=36608+e,t[36608+e]=r[143][e]);for(r[144]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u62ed\u690d\u6b96\u71ed\u7e54\u8077\u8272\u89e6\u98df\u8755\u8fb1\u5c3b\u4f38\u4fe1\u4fb5\u5507\u5a20\u5bdd\u5be9\u5fc3\u614e\u632f\u65b0\u664b\u68ee\u699b\u6d78\u6df1\u7533\u75b9\u771f\u795e\u79e6\u7d33\u81e3\u82af\u85aa\u89aa\u8a3a\u8eab\u8f9b\u9032\u91dd\u9707\u4eba\u4ec1\u5203\u5875\u58ec\u5c0b\u751a\u5c3d\u814e\u8a0a\u8fc5\u9663\u976d\u7b25\u8acf\u9808\u9162\u56f3\u53a8\ufffd\u9017\u5439\u5782\u5e25\u63a8\u6c34\u708a\u7761\u7c8b\u7fe0\u8870\u9042\u9154\u9310\u9318\u968f\u745e\u9ac4\u5d07\u5d69\u6570\u67a2\u8da8\u96db\u636e\u6749\u6919\u83c5\u9817\u96c0\u88fe\u6f84\u647a\u5bf8\u4e16\u702c\u755d\u662f\u51c4\u5236\u52e2\u59d3\u5f81\u6027\u6210\u653f\u6574\u661f\u6674\u68f2\u6816\u6b63\u6e05\u7272\u751f\u76db\u7cbe\u8056\u58f0\u88fd\u897f\u8aa0\u8a93\u8acb\u901d\u9192\u9752\u9759\u6589\u7a0e\u8106\u96bb\u5e2d\u60dc\u621a\u65a5\u6614\u6790\u77f3\u7a4d\u7c4d\u7e3e\u810a\u8cac\u8d64\u8de1\u8e5f\u78a9\u5207\u62d9\u63a5\u6442\u6298\u8a2d\u7a83\u7bc0\u8aac\u96ea\u7d76\u820c\u8749\u4ed9\u5148\u5343\u5360\u5ba3\u5c02\u5c16\u5ddd\u6226\u6247\u64b0\u6813\u6834\u6cc9\u6d45\u6d17\u67d3\u6f5c\u714e\u717d\u65cb\u7a7f\u7bad\u7dda\ufffd\ufffd\ufffd".split(""),e=0;e!=r[144].length;++e)65533!==r[144][e].charCodeAt(0)&&(n[r[144][e]]=36864+e,t[36864+e]=r[144][e]);for(r[145]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7e4a\u7fa8\u817a\u821b\u8239\u85a6\u8a6e\u8cce\u8df5\u9078\u9077\u92ad\u9291\u9583\u9bae\u524d\u5584\u6f38\u7136\u5168\u7985\u7e55\u81b3\u7cce\u564c\u5851\u5ca8\u63aa\u66fe\u66fd\u695a\u72d9\u758f\u758e\u790e\u7956\u79df\u7c97\u7d20\u7d44\u8607\u8a34\u963b\u9061\u9f20\u50e7\u5275\u53cc\u53e2\u5009\u55aa\u58ee\u594f\u723d\u5b8b\u5c64\u531d\u60e3\u60f3\u635c\u6383\u633f\u63bb\ufffd\u64cd\u65e9\u66f9\u5de3\u69cd\u69fd\u6f15\u71e5\u4e89\u75e9\u76f8\u7a93\u7cdf\u7dcf\u7d9c\u8061\u8349\u8358\u846c\u84bc\u85fb\u88c5\u8d70\u9001\u906d\u9397\u971c\u9a12\u50cf\u5897\u618e\u81d3\u8535\u8d08\u9020\u4fc3\u5074\u5247\u5373\u606f\u6349\u675f\u6e2c\u8db3\u901f\u4fd7\u5c5e\u8cca\u65cf\u7d9a\u5352\u8896\u5176\u63c3\u5b58\u5b6b\u5c0a\u640d\u6751\u905c\u4ed6\u591a\u592a\u6c70\u8a51\u553e\u5815\u59a5\u60f0\u6253\u67c1\u8235\u6955\u9640\u99c4\u9a28\u4f53\u5806\u5bfe\u8010\u5cb1\u5e2f\u5f85\u6020\u614b\u6234\u66ff\u6cf0\u6ede\u80ce\u817f\u82d4\u888b\u8cb8\u9000\u902e\u968a\u9edb\u9bdb\u4ee3\u53f0\u5927\u7b2c\u918d\u984c\u9df9\u6edd\u7027\u5353\u5544\u5b85\u6258\u629e\u62d3\u6ca2\u6fef\u7422\u8a17\u9438\u6fc1\u8afe\u8338\u51e7\u86f8\u53ea\ufffd\ufffd\ufffd".split(""),e=0;e!=r[145].length;++e)65533!==r[145][e].charCodeAt(0)&&(n[r[145][e]]=37120+e,t[37120+e]=r[145][e]);for(r[146]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u53e9\u4f46\u9054\u8fb0\u596a\u8131\u5dfd\u7aea\u8fbf\u68da\u8c37\u72f8\u9c48\u6a3d\u8ab0\u4e39\u5358\u5606\u5766\u62c5\u63a2\u65e6\u6b4e\u6de1\u6e5b\u70ad\u77ed\u7aef\u7baa\u7dbb\u803d\u80c6\u86cb\u8a95\u935b\u56e3\u58c7\u5f3e\u65ad\u6696\u6a80\u6bb5\u7537\u8ac7\u5024\u77e5\u5730\u5f1b\u6065\u667a\u6c60\u75f4\u7a1a\u7f6e\u81f4\u8718\u9045\u99b3\u7bc9\u755c\u7af9\u7b51\u84c4\ufffd\u9010\u79e9\u7a92\u8336\u5ae1\u7740\u4e2d\u4ef2\u5b99\u5fe0\u62bd\u663c\u67f1\u6ce8\u866b\u8877\u8a3b\u914e\u92f3\u99d0\u6a17\u7026\u732a\u82e7\u8457\u8caf\u4e01\u5146\u51cb\u558b\u5bf5\u5e16\u5e33\u5e81\u5f14\u5f35\u5f6b\u5fb4\u61f2\u6311\u66a2\u671d\u6f6e\u7252\u753a\u773a\u8074\u8139\u8178\u8776\u8abf\u8adc\u8d85\u8df3\u929a\u9577\u9802\u9ce5\u52c5\u6357\u76f4\u6715\u6c88\u73cd\u8cc3\u93ae\u9673\u6d25\u589c\u690e\u69cc\u8ffd\u939a\u75db\u901a\u585a\u6802\u63b4\u69fb\u4f43\u6f2c\u67d8\u8fbb\u8526\u7db4\u9354\u693f\u6f70\u576a\u58f7\u5b2c\u7d2c\u722a\u540a\u91e3\u9db4\u4ead\u4f4e\u505c\u5075\u5243\u8c9e\u5448\u5824\u5b9a\u5e1d\u5e95\u5ead\u5ef7\u5f1f\u608c\u62b5\u633a\u63d0\u68af\u6c40\u7887\u798e\u7a0b\u7de0\u8247\u8a02\u8ae6\u8e44\u9013\ufffd\ufffd\ufffd".split(""),e=0;e!=r[146].length;++e)65533!==r[146][e].charCodeAt(0)&&(n[r[146][e]]=37376+e,t[37376+e]=r[146][e]);for(r[147]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u90b8\u912d\u91d8\u9f0e\u6ce5\u6458\u64e2\u6575\u6ef4\u7684\u7b1b\u9069\u93d1\u6eba\u54f2\u5fb9\u64a4\u8f4d\u8fed\u9244\u5178\u586b\u5929\u5c55\u5e97\u6dfb\u7e8f\u751c\u8cbc\u8ee2\u985b\u70b9\u4f1d\u6bbf\u6fb1\u7530\u96fb\u514e\u5410\u5835\u5857\u59ac\u5c60\u5f92\u6597\u675c\u6e21\u767b\u83df\u8ced\u9014\u90fd\u934d\u7825\u783a\u52aa\u5ea6\u571f\u5974\u6012\u5012\u515a\u51ac\ufffd\u51cd\u5200\u5510\u5854\u5858\u5957\u5b95\u5cf6\u5d8b\u60bc\u6295\u642d\u6771\u6843\u68bc\u68df\u76d7\u6dd8\u6e6f\u6d9b\u706f\u71c8\u5f53\u75d8\u7977\u7b49\u7b54\u7b52\u7cd6\u7d71\u5230\u8463\u8569\u85e4\u8a0e\u8b04\u8c46\u8e0f\u9003\u900f\u9419\u9676\u982d\u9a30\u95d8\u50cd\u52d5\u540c\u5802\u5c0e\u61a7\u649e\u6d1e\u77b3\u7ae5\u80f4\u8404\u9053\u9285\u5ce0\u9d07\u533f\u5f97\u5fb3\u6d9c\u7279\u7763\u79bf\u7be4\u6bd2\u72ec\u8aad\u6803\u6a61\u51f8\u7a81\u6934\u5c4a\u9cf6\u82eb\u5bc5\u9149\u701e\u5678\u5c6f\u60c7\u6566\u6c8c\u8c5a\u9041\u9813\u5451\u66c7\u920d\u5948\u90a3\u5185\u4e4d\u51ea\u8599\u8b0e\u7058\u637a\u934b\u6962\u99b4\u7e04\u7577\u5357\u6960\u8edf\u96e3\u6c5d\u4e8c\u5c3c\u5f10\u8fe9\u5302\u8cd1\u8089\u8679\u5eff\u65e5\u4e73\u5165\ufffd\ufffd\ufffd".split(""),e=0;e!=r[147].length;++e)65533!==r[147][e].charCodeAt(0)&&(n[r[147][e]]=37632+e,t[37632+e]=r[147][e]);for(r[148]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5982\u5c3f\u97ee\u4efb\u598a\u5fcd\u8a8d\u6fe1\u79b0\u7962\u5be7\u8471\u732b\u71b1\u5e74\u5ff5\u637b\u649a\u71c3\u7c98\u4e43\u5efc\u4e4b\u57dc\u56a2\u60a9\u6fc3\u7d0d\u80fd\u8133\u81bf\u8fb2\u8997\u86a4\u5df4\u628a\u64ad\u8987\u6777\u6ce2\u6d3e\u7436\u7834\u5a46\u7f75\u82ad\u99ac\u4ff3\u5ec3\u62dd\u6392\u6557\u676f\u76c3\u724c\u80cc\u80ba\u8f29\u914d\u500d\u57f9\u5a92\u6885\ufffd\u6973\u7164\u72fd\u8cb7\u58f2\u8ce0\u966a\u9019\u877f\u79e4\u77e7\u8429\u4f2f\u5265\u535a\u62cd\u67cf\u6cca\u767d\u7b94\u7c95\u8236\u8584\u8feb\u66dd\u6f20\u7206\u7e1b\u83ab\u99c1\u9ea6\u51fd\u7bb1\u7872\u7bb8\u8087\u7b48\u6ae8\u5e61\u808c\u7551\u7560\u516b\u9262\u6e8c\u767a\u9197\u9aea\u4f10\u7f70\u629c\u7b4f\u95a5\u9ce9\u567a\u5859\u86e4\u96bc\u4f34\u5224\u534a\u53cd\u53db\u5e06\u642c\u6591\u677f\u6c3e\u6c4e\u7248\u72af\u73ed\u7554\u7e41\u822c\u85e9\u8ca9\u7bc4\u91c6\u7169\u9812\u98ef\u633d\u6669\u756a\u76e4\u78d0\u8543\u86ee\u532a\u5351\u5426\u5983\u5e87\u5f7c\u60b2\u6249\u6279\u62ab\u6590\u6bd4\u6ccc\u75b2\u76ae\u7891\u79d8\u7dcb\u7f77\u80a5\u88ab\u8ab9\u8cbb\u907f\u975e\u98db\u6a0b\u7c38\u5099\u5c3e\u5fae\u6787\u6bd8\u7435\u7709\u7f8e\ufffd\ufffd\ufffd".split(""),e=0;e!=r[148].length;++e)65533!==r[148][e].charCodeAt(0)&&(n[r[148][e]]=37888+e,t[37888+e]=r[148][e]);for(r[149]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9f3b\u67ca\u7a17\u5339\u758b\u9aed\u5f66\u819d\u83f1\u8098\u5f3c\u5fc5\u7562\u7b46\u903c\u6867\u59eb\u5a9b\u7d10\u767e\u8b2c\u4ff5\u5f6a\u6a19\u6c37\u6f02\u74e2\u7968\u8868\u8a55\u8c79\u5edf\u63cf\u75c5\u79d2\u82d7\u9328\u92f2\u849c\u86ed\u9c2d\u54c1\u5f6c\u658c\u6d5c\u7015\u8ca7\u8cd3\u983b\u654f\u74f6\u4e0d\u4ed8\u57e0\u592b\u5a66\u5bcc\u51a8\u5e03\u5e9c\u6016\u6276\u6577\ufffd\u65a7\u666e\u6d6e\u7236\u7b26\u8150\u819a\u8299\u8b5c\u8ca0\u8ce6\u8d74\u961c\u9644\u4fae\u64ab\u6b66\u821e\u8461\u856a\u90e8\u5c01\u6953\u98a8\u847a\u8557\u4f0f\u526f\u5fa9\u5e45\u670d\u798f\u8179\u8907\u8986\u6df5\u5f17\u6255\u6cb8\u4ecf\u7269\u9b92\u5206\u543b\u5674\u58b3\u61a4\u626e\u711a\u596e\u7c89\u7cde\u7d1b\u96f0\u6587\u805e\u4e19\u4f75\u5175\u5840\u5e63\u5e73\u5f0a\u67c4\u4e26\u853d\u9589\u965b\u7c73\u9801\u50fb\u58c1\u7656\u78a7\u5225\u77a5\u8511\u7b86\u504f\u5909\u7247\u7bc7\u7de8\u8fba\u8fd4\u904d\u4fbf\u52c9\u5a29\u5f01\u97ad\u4fdd\u8217\u92ea\u5703\u6355\u6b69\u752b\u88dc\u8f14\u7a42\u52df\u5893\u6155\u620a\u66ae\u6bcd\u7c3f\u83e9\u5023\u4ff8\u5305\u5446\u5831\u5949\u5b9d\u5cf0\u5cef\u5d29\u5e96\u62b1\u6367\u653e\u65b9\u670b\ufffd\ufffd\ufffd".split(""),e=0;e!=r[149].length;++e)65533!==r[149][e].charCodeAt(0)&&(n[r[149][e]]=38144+e,t[38144+e]=r[149][e]);for(r[150]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6cd5\u6ce1\u70f9\u7832\u7e2b\u80de\u82b3\u840c\u84ec\u8702\u8912\u8a2a\u8c4a\u90a6\u92d2\u98fd\u9cf3\u9d6c\u4e4f\u4ea1\u508d\u5256\u574a\u59a8\u5e3d\u5fd8\u5fd9\u623f\u66b4\u671b\u67d0\u68d2\u5192\u7d21\u80aa\u81a8\u8b00\u8c8c\u8cbf\u927e\u9632\u5420\u982c\u5317\u50d5\u535c\u58a8\u64b2\u6734\u7267\u7766\u7a46\u91e6\u52c3\u6ca1\u6b86\u5800\u5e4c\u5954\u672c\u7ffb\u51e1\u76c6\ufffd\u6469\u78e8\u9b54\u9ebb\u57cb\u59b9\u6627\u679a\u6bce\u54e9\u69d9\u5e55\u819c\u6795\u9baa\u67fe\u9c52\u685d\u4ea6\u4fe3\u53c8\u62b9\u672b\u6cab\u8fc4\u4fad\u7e6d\u9ebf\u4e07\u6162\u6e80\u6f2b\u8513\u5473\u672a\u9b45\u5df3\u7b95\u5cac\u5bc6\u871c\u6e4a\u84d1\u7a14\u8108\u5999\u7c8d\u6c11\u7720\u52d9\u5922\u7121\u725f\u77db\u9727\u9d61\u690b\u5a7f\u5a18\u51a5\u540d\u547d\u660e\u76df\u8ff7\u9298\u9cf4\u59ea\u725d\u6ec5\u514d\u68c9\u7dbf\u7dec\u9762\u9eba\u6478\u6a21\u8302\u5984\u5b5f\u6bdb\u731b\u76f2\u7db2\u8017\u8499\u5132\u6728\u9ed9\u76ee\u6762\u52ff\u9905\u5c24\u623b\u7c7e\u8cb0\u554f\u60b6\u7d0b\u9580\u5301\u4e5f\u51b6\u591c\u723a\u8036\u91ce\u5f25\u77e2\u5384\u5f79\u7d04\u85ac\u8a33\u8e8d\u9756\u67f3\u85ae\u9453\u6109\u6108\u6cb9\u7652\ufffd\ufffd\ufffd".split(""),e=0;e!=r[150].length;++e)65533!==r[150][e].charCodeAt(0)&&(n[r[150][e]]=38400+e,t[38400+e]=r[150][e]);for(r[151]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8aed\u8f38\u552f\u4f51\u512a\u52c7\u53cb\u5ba5\u5e7d\u60a0\u6182\u63d6\u6709\u67da\u6e67\u6d8c\u7336\u7337\u7531\u7950\u88d5\u8a98\u904a\u9091\u90f5\u96c4\u878d\u5915\u4e88\u4f59\u4e0e\u8a89\u8f3f\u9810\u50ad\u5e7c\u5996\u5bb9\u5eb8\u63da\u63fa\u64c1\u66dc\u694a\u69d8\u6d0b\u6eb6\u7194\u7528\u7aaf\u7f8a\u8000\u8449\u84c9\u8981\u8b21\u8e0a\u9065\u967d\u990a\u617e\u6291\u6b32\ufffd\u6c83\u6d74\u7fcc\u7ffc\u6dc0\u7f85\u87ba\u88f8\u6765\u83b1\u983c\u96f7\u6d1b\u7d61\u843d\u916a\u4e71\u5375\u5d50\u6b04\u6feb\u85cd\u862d\u89a7\u5229\u540f\u5c65\u674e\u68a8\u7406\u7483\u75e2\u88cf\u88e1\u91cc\u96e2\u9678\u5f8b\u7387\u7acb\u844e\u63a0\u7565\u5289\u6d41\u6e9c\u7409\u7559\u786b\u7c92\u9686\u7adc\u9f8d\u4fb6\u616e\u65c5\u865c\u4e86\u4eae\u50da\u4e21\u51cc\u5bee\u6599\u6881\u6dbc\u731f\u7642\u77ad\u7a1c\u7ce7\u826f\u8ad2\u907c\u91cf\u9675\u9818\u529b\u7dd1\u502b\u5398\u6797\u6dcb\u71d0\u7433\u81e8\u8f2a\u96a3\u9c57\u9e9f\u7460\u5841\u6d99\u7d2f\u985e\u4ee4\u4f36\u4f8b\u51b7\u52b1\u5dba\u601c\u73b2\u793c\u82d3\u9234\u96b7\u96f6\u970a\u9e97\u9f62\u66a6\u6b74\u5217\u52a3\u70c8\u88c2\u5ec9\u604b\u6190\u6f23\u7149\u7c3e\u7df4\u806f\ufffd\ufffd\ufffd".split(""),e=0;e!=r[151].length;++e)65533!==r[151][e].charCodeAt(0)&&(n[r[151][e]]=38656+e,t[38656+e]=r[151][e]);for(r[152]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u84ee\u9023\u932c\u5442\u9b6f\u6ad3\u7089\u8cc2\u8def\u9732\u52b4\u5a41\u5eca\u5f04\u6717\u697c\u6994\u6d6a\u6f0f\u7262\u72fc\u7bed\u8001\u807e\u874b\u90ce\u516d\u9e93\u7984\u808b\u9332\u8ad6\u502d\u548c\u8a71\u6b6a\u8cc4\u8107\u60d1\u67a0\u9df2\u4e99\u4e98\u9c10\u8a6b\u85c1\u8568\u6900\u6e7e\u7897\u8155\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5f0c\u4e10\u4e15\u4e2a\u4e31\u4e36\u4e3c\u4e3f\u4e42\u4e56\u4e58\u4e82\u4e85\u8c6b\u4e8a\u8212\u5f0d\u4e8e\u4e9e\u4e9f\u4ea0\u4ea2\u4eb0\u4eb3\u4eb6\u4ece\u4ecd\u4ec4\u4ec6\u4ec2\u4ed7\u4ede\u4eed\u4edf\u4ef7\u4f09\u4f5a\u4f30\u4f5b\u4f5d\u4f57\u4f47\u4f76\u4f88\u4f8f\u4f98\u4f7b\u4f69\u4f70\u4f91\u4f6f\u4f86\u4f96\u5118\u4fd4\u4fdf\u4fce\u4fd8\u4fdb\u4fd1\u4fda\u4fd0\u4fe4\u4fe5\u501a\u5028\u5014\u502a\u5025\u5005\u4f1c\u4ff6\u5021\u5029\u502c\u4ffe\u4fef\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505a\u5056\u506c\u5078\u5080\u509a\u5085\u50b4\u50b2\ufffd\ufffd\ufffd".split(""),e=0;e!=r[152].length;++e)65533!==r[152][e].charCodeAt(0)&&(n[r[152][e]]=38912+e,t[38912+e]=r[152][e]);for(r[153]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u50c9\u50ca\u50b3\u50c2\u50d6\u50de\u50e5\u50ed\u50e3\u50ee\u50f9\u50f5\u5109\u5101\u5102\u5116\u5115\u5114\u511a\u5121\u513a\u5137\u513c\u513b\u513f\u5140\u5152\u514c\u5154\u5162\u7af8\u5169\u516a\u516e\u5180\u5182\u56d8\u518c\u5189\u518f\u5191\u5193\u5195\u5196\u51a4\u51a6\u51a2\u51a9\u51aa\u51ab\u51b3\u51b1\u51b2\u51b0\u51b5\u51bd\u51c5\u51c9\u51db\u51e0\u8655\u51e9\u51ed\ufffd\u51f0\u51f5\u51fe\u5204\u520b\u5214\u520e\u5227\u522a\u522e\u5233\u5239\u524f\u5244\u524b\u524c\u525e\u5254\u526a\u5274\u5269\u5273\u527f\u527d\u528d\u5294\u5292\u5271\u5288\u5291\u8fa8\u8fa7\u52ac\u52ad\u52bc\u52b5\u52c1\u52cd\u52d7\u52de\u52e3\u52e6\u98ed\u52e0\u52f3\u52f5\u52f8\u52f9\u5306\u5308\u7538\u530d\u5310\u530f\u5315\u531a\u5323\u532f\u5331\u5333\u5338\u5340\u5346\u5345\u4e17\u5349\u534d\u51d6\u535e\u5369\u536e\u5918\u537b\u5377\u5382\u5396\u53a0\u53a6\u53a5\u53ae\u53b0\u53b6\u53c3\u7c12\u96d9\u53df\u66fc\u71ee\u53ee\u53e8\u53ed\u53fa\u5401\u543d\u5440\u542c\u542d\u543c\u542e\u5436\u5429\u541d\u544e\u548f\u5475\u548e\u545f\u5471\u5477\u5470\u5492\u547b\u5480\u5476\u5484\u5490\u5486\u54c7\u54a2\u54b8\u54a5\u54ac\u54c4\u54c8\u54a8\ufffd\ufffd\ufffd".split(""),e=0;e!=r[153].length;++e)65533!==r[153][e].charCodeAt(0)&&(n[r[153][e]]=39168+e,t[39168+e]=r[153][e]);for(r[154]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u54ab\u54c2\u54a4\u54be\u54bc\u54d8\u54e5\u54e6\u550f\u5514\u54fd\u54ee\u54ed\u54fa\u54e2\u5539\u5540\u5563\u554c\u552e\u555c\u5545\u5556\u5557\u5538\u5533\u555d\u5599\u5580\u54af\u558a\u559f\u557b\u557e\u5598\u559e\u55ae\u557c\u5583\u55a9\u5587\u55a8\u55da\u55c5\u55df\u55c4\u55dc\u55e4\u55d4\u5614\u55f7\u5616\u55fe\u55fd\u561b\u55f9\u564e\u5650\u71df\u5634\u5636\u5632\u5638\ufffd\u566b\u5664\u562f\u566c\u566a\u5686\u5680\u568a\u56a0\u5694\u568f\u56a5\u56ae\u56b6\u56b4\u56c2\u56bc\u56c1\u56c3\u56c0\u56c8\u56ce\u56d1\u56d3\u56d7\u56ee\u56f9\u5700\u56ff\u5704\u5709\u5708\u570b\u570d\u5713\u5718\u5716\u55c7\u571c\u5726\u5737\u5738\u574e\u573b\u5740\u574f\u5769\u57c0\u5788\u5761\u577f\u5789\u5793\u57a0\u57b3\u57a4\u57aa\u57b0\u57c3\u57c6\u57d4\u57d2\u57d3\u580a\u57d6\u57e3\u580b\u5819\u581d\u5872\u5821\u5862\u584b\u5870\u6bc0\u5852\u583d\u5879\u5885\u58b9\u589f\u58ab\u58ba\u58de\u58bb\u58b8\u58ae\u58c5\u58d3\u58d1\u58d7\u58d9\u58d8\u58e5\u58dc\u58e4\u58df\u58ef\u58fa\u58f9\u58fb\u58fc\u58fd\u5902\u590a\u5910\u591b\u68a6\u5925\u592c\u592d\u5932\u5938\u593e\u7ad2\u5955\u5950\u594e\u595a\u5958\u5962\u5960\u5967\u596c\u5969\ufffd\ufffd\ufffd".split(""),e=0;e!=r[154].length;++e)65533!==r[154][e].charCodeAt(0)&&(n[r[154][e]]=39424+e,t[39424+e]=r[154][e]);for(r[155]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5978\u5981\u599d\u4f5e\u4fab\u59a3\u59b2\u59c6\u59e8\u59dc\u598d\u59d9\u59da\u5a25\u5a1f\u5a11\u5a1c\u5a09\u5a1a\u5a40\u5a6c\u5a49\u5a35\u5a36\u5a62\u5a6a\u5a9a\u5abc\u5abe\u5acb\u5ac2\u5abd\u5ae3\u5ad7\u5ae6\u5ae9\u5ad6\u5afa\u5afb\u5b0c\u5b0b\u5b16\u5b32\u5ad0\u5b2a\u5b36\u5b3e\u5b43\u5b45\u5b40\u5b51\u5b55\u5b5a\u5b5b\u5b65\u5b69\u5b70\u5b73\u5b75\u5b78\u6588\u5b7a\u5b80\ufffd\u5b83\u5ba6\u5bb8\u5bc3\u5bc7\u5bc9\u5bd4\u5bd0\u5be4\u5be6\u5be2\u5bde\u5be5\u5beb\u5bf0\u5bf6\u5bf3\u5c05\u5c07\u5c08\u5c0d\u5c13\u5c20\u5c22\u5c28\u5c38\u5c39\u5c41\u5c46\u5c4e\u5c53\u5c50\u5c4f\u5b71\u5c6c\u5c6e\u4e62\u5c76\u5c79\u5c8c\u5c91\u5c94\u599b\u5cab\u5cbb\u5cb6\u5cbc\u5cb7\u5cc5\u5cbe\u5cc7\u5cd9\u5ce9\u5cfd\u5cfa\u5ced\u5d8c\u5cea\u5d0b\u5d15\u5d17\u5d5c\u5d1f\u5d1b\u5d11\u5d14\u5d22\u5d1a\u5d19\u5d18\u5d4c\u5d52\u5d4e\u5d4b\u5d6c\u5d73\u5d76\u5d87\u5d84\u5d82\u5da2\u5d9d\u5dac\u5dae\u5dbd\u5d90\u5db7\u5dbc\u5dc9\u5dcd\u5dd3\u5dd2\u5dd6\u5ddb\u5deb\u5df2\u5df5\u5e0b\u5e1a\u5e19\u5e11\u5e1b\u5e36\u5e37\u5e44\u5e43\u5e40\u5e4e\u5e57\u5e54\u5e5f\u5e62\u5e64\u5e47\u5e75\u5e76\u5e7a\u9ebc\u5e7f\u5ea0\u5ec1\u5ec2\u5ec8\u5ed0\u5ecf\ufffd\ufffd\ufffd".split(""),e=0;e!=r[155].length;++e)65533!==r[155][e].charCodeAt(0)&&(n[r[155][e]]=39680+e,t[39680+e]=r[155][e]);for(r[156]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5ed6\u5ee3\u5edd\u5eda\u5edb\u5ee2\u5ee1\u5ee8\u5ee9\u5eec\u5ef1\u5ef3\u5ef0\u5ef4\u5ef8\u5efe\u5f03\u5f09\u5f5d\u5f5c\u5f0b\u5f11\u5f16\u5f29\u5f2d\u5f38\u5f41\u5f48\u5f4c\u5f4e\u5f2f\u5f51\u5f56\u5f57\u5f59\u5f61\u5f6d\u5f73\u5f77\u5f83\u5f82\u5f7f\u5f8a\u5f88\u5f91\u5f87\u5f9e\u5f99\u5f98\u5fa0\u5fa8\u5fad\u5fbc\u5fd6\u5ffb\u5fe4\u5ff8\u5ff1\u5fdd\u60b3\u5fff\u6021\u6060\ufffd\u6019\u6010\u6029\u600e\u6031\u601b\u6015\u602b\u6026\u600f\u603a\u605a\u6041\u606a\u6077\u605f\u604a\u6046\u604d\u6063\u6043\u6064\u6042\u606c\u606b\u6059\u6081\u608d\u60e7\u6083\u609a\u6084\u609b\u6096\u6097\u6092\u60a7\u608b\u60e1\u60b8\u60e0\u60d3\u60b4\u5ff0\u60bd\u60c6\u60b5\u60d8\u614d\u6115\u6106\u60f6\u60f7\u6100\u60f4\u60fa\u6103\u6121\u60fb\u60f1\u610d\u610e\u6147\u613e\u6128\u6127\u614a\u613f\u613c\u612c\u6134\u613d\u6142\u6144\u6173\u6177\u6158\u6159\u615a\u616b\u6174\u616f\u6165\u6171\u615f\u615d\u6153\u6175\u6199\u6196\u6187\u61ac\u6194\u619a\u618a\u6191\u61ab\u61ae\u61cc\u61ca\u61c9\u61f7\u61c8\u61c3\u61c6\u61ba\u61cb\u7f79\u61cd\u61e6\u61e3\u61f6\u61fa\u61f4\u61ff\u61fd\u61fc\u61fe\u6200\u6208\u6209\u620d\u620c\u6214\u621b\ufffd\ufffd\ufffd".split(""),e=0;e!=r[156].length;++e)65533!==r[156][e].charCodeAt(0)&&(n[r[156][e]]=39936+e,t[39936+e]=r[156][e]);for(r[157]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u621e\u6221\u622a\u622e\u6230\u6232\u6233\u6241\u624e\u625e\u6263\u625b\u6260\u6268\u627c\u6282\u6289\u627e\u6292\u6293\u6296\u62d4\u6283\u6294\u62d7\u62d1\u62bb\u62cf\u62ff\u62c6\u64d4\u62c8\u62dc\u62cc\u62ca\u62c2\u62c7\u629b\u62c9\u630c\u62ee\u62f1\u6327\u6302\u6308\u62ef\u62f5\u6350\u633e\u634d\u641c\u634f\u6396\u638e\u6380\u63ab\u6376\u63a3\u638f\u6389\u639f\u63b5\u636b\ufffd\u6369\u63be\u63e9\u63c0\u63c6\u63e3\u63c9\u63d2\u63f6\u63c4\u6416\u6434\u6406\u6413\u6426\u6436\u651d\u6417\u6428\u640f\u6467\u646f\u6476\u644e\u652a\u6495\u6493\u64a5\u64a9\u6488\u64bc\u64da\u64d2\u64c5\u64c7\u64bb\u64d8\u64c2\u64f1\u64e7\u8209\u64e0\u64e1\u62ac\u64e3\u64ef\u652c\u64f6\u64f4\u64f2\u64fa\u6500\u64fd\u6518\u651c\u6505\u6524\u6523\u652b\u6534\u6535\u6537\u6536\u6538\u754b\u6548\u6556\u6555\u654d\u6558\u655e\u655d\u6572\u6578\u6582\u6583\u8b8a\u659b\u659f\u65ab\u65b7\u65c3\u65c6\u65c1\u65c4\u65cc\u65d2\u65db\u65d9\u65e0\u65e1\u65f1\u6772\u660a\u6603\u65fb\u6773\u6635\u6636\u6634\u661c\u664f\u6644\u6649\u6641\u665e\u665d\u6664\u6667\u6668\u665f\u6662\u6670\u6683\u6688\u668e\u6689\u6684\u6698\u669d\u66c1\u66b9\u66c9\u66be\u66bc\ufffd\ufffd\ufffd".split(""),e=0;e!=r[157].length;++e)65533!==r[157][e].charCodeAt(0)&&(n[r[157][e]]=40192+e,t[40192+e]=r[157][e]);for(r[158]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u66c4\u66b8\u66d6\u66da\u66e0\u663f\u66e6\u66e9\u66f0\u66f5\u66f7\u670f\u6716\u671e\u6726\u6727\u9738\u672e\u673f\u6736\u6741\u6738\u6737\u6746\u675e\u6760\u6759\u6763\u6764\u6789\u6770\u67a9\u677c\u676a\u678c\u678b\u67a6\u67a1\u6785\u67b7\u67ef\u67b4\u67ec\u67b3\u67e9\u67b8\u67e4\u67de\u67dd\u67e2\u67ee\u67b9\u67ce\u67c6\u67e7\u6a9c\u681e\u6846\u6829\u6840\u684d\u6832\u684e\ufffd\u68b3\u682b\u6859\u6863\u6877\u687f\u689f\u688f\u68ad\u6894\u689d\u689b\u6883\u6aae\u68b9\u6874\u68b5\u68a0\u68ba\u690f\u688d\u687e\u6901\u68ca\u6908\u68d8\u6922\u6926\u68e1\u690c\u68cd\u68d4\u68e7\u68d5\u6936\u6912\u6904\u68d7\u68e3\u6925\u68f9\u68e0\u68ef\u6928\u692a\u691a\u6923\u6921\u68c6\u6979\u6977\u695c\u6978\u696b\u6954\u697e\u696e\u6939\u6974\u693d\u6959\u6930\u6961\u695e\u695d\u6981\u696a\u69b2\u69ae\u69d0\u69bf\u69c1\u69d3\u69be\u69ce\u5be8\u69ca\u69dd\u69bb\u69c3\u69a7\u6a2e\u6991\u69a0\u699c\u6995\u69b4\u69de\u69e8\u6a02\u6a1b\u69ff\u6b0a\u69f9\u69f2\u69e7\u6a05\u69b1\u6a1e\u69ed\u6a14\u69eb\u6a0a\u6a12\u6ac1\u6a23\u6a13\u6a44\u6a0c\u6a72\u6a36\u6a78\u6a47\u6a62\u6a59\u6a66\u6a48\u6a38\u6a22\u6a90\u6a8d\u6aa0\u6a84\u6aa2\u6aa3\ufffd\ufffd\ufffd".split(""),e=0;e!=r[158].length;++e)65533!==r[158][e].charCodeAt(0)&&(n[r[158][e]]=40448+e,t[40448+e]=r[158][e]);for(r[159]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6a97\u8617\u6abb\u6ac3\u6ac2\u6ab8\u6ab3\u6aac\u6ade\u6ad1\u6adf\u6aaa\u6ada\u6aea\u6afb\u6b05\u8616\u6afa\u6b12\u6b16\u9b31\u6b1f\u6b38\u6b37\u76dc\u6b39\u98ee\u6b47\u6b43\u6b49\u6b50\u6b59\u6b54\u6b5b\u6b5f\u6b61\u6b78\u6b79\u6b7f\u6b80\u6b84\u6b83\u6b8d\u6b98\u6b95\u6b9e\u6ba4\u6baa\u6bab\u6baf\u6bb2\u6bb1\u6bb3\u6bb7\u6bbc\u6bc6\u6bcb\u6bd3\u6bdf\u6bec\u6beb\u6bf3\u6bef\ufffd\u9ebe\u6c08\u6c13\u6c14\u6c1b\u6c24\u6c23\u6c5e\u6c55\u6c62\u6c6a\u6c82\u6c8d\u6c9a\u6c81\u6c9b\u6c7e\u6c68\u6c73\u6c92\u6c90\u6cc4\u6cf1\u6cd3\u6cbd\u6cd7\u6cc5\u6cdd\u6cae\u6cb1\u6cbe\u6cba\u6cdb\u6cef\u6cd9\u6cea\u6d1f\u884d\u6d36\u6d2b\u6d3d\u6d38\u6d19\u6d35\u6d33\u6d12\u6d0c\u6d63\u6d93\u6d64\u6d5a\u6d79\u6d59\u6d8e\u6d95\u6fe4\u6d85\u6df9\u6e15\u6e0a\u6db5\u6dc7\u6de6\u6db8\u6dc6\u6dec\u6dde\u6dcc\u6de8\u6dd2\u6dc5\u6dfa\u6dd9\u6de4\u6dd5\u6dea\u6dee\u6e2d\u6e6e\u6e2e\u6e19\u6e72\u6e5f\u6e3e\u6e23\u6e6b\u6e2b\u6e76\u6e4d\u6e1f\u6e43\u6e3a\u6e4e\u6e24\u6eff\u6e1d\u6e38\u6e82\u6eaa\u6e98\u6ec9\u6eb7\u6ed3\u6ebd\u6eaf\u6ec4\u6eb2\u6ed4\u6ed5\u6e8f\u6ea5\u6ec2\u6e9f\u6f41\u6f11\u704c\u6eec\u6ef8\u6efe\u6f3f\u6ef2\u6f31\u6eef\u6f32\u6ecc\ufffd\ufffd\ufffd".split(""),e=0;e!=r[159].length;++e)65533!==r[159][e].charCodeAt(0)&&(n[r[159][e]]=40704+e,t[40704+e]=r[159][e]);for(r[224]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6f3e\u6f13\u6ef7\u6f86\u6f7a\u6f78\u6f81\u6f80\u6f6f\u6f5b\u6ff3\u6f6d\u6f82\u6f7c\u6f58\u6f8e\u6f91\u6fc2\u6f66\u6fb3\u6fa3\u6fa1\u6fa4\u6fb9\u6fc6\u6faa\u6fdf\u6fd5\u6fec\u6fd4\u6fd8\u6ff1\u6fee\u6fdb\u7009\u700b\u6ffa\u7011\u7001\u700f\u6ffe\u701b\u701a\u6f74\u701d\u7018\u701f\u7030\u703e\u7032\u7051\u7063\u7099\u7092\u70af\u70f1\u70ac\u70b8\u70b3\u70ae\u70df\u70cb\u70dd\ufffd\u70d9\u7109\u70fd\u711c\u7119\u7165\u7155\u7188\u7166\u7162\u714c\u7156\u716c\u718f\u71fb\u7184\u7195\u71a8\u71ac\u71d7\u71b9\u71be\u71d2\u71c9\u71d4\u71ce\u71e0\u71ec\u71e7\u71f5\u71fc\u71f9\u71ff\u720d\u7210\u721b\u7228\u722d\u722c\u7230\u7232\u723b\u723c\u723f\u7240\u7246\u724b\u7258\u7274\u727e\u7282\u7281\u7287\u7292\u7296\u72a2\u72a7\u72b9\u72b2\u72c3\u72c6\u72c4\u72ce\u72d2\u72e2\u72e0\u72e1\u72f9\u72f7\u500f\u7317\u730a\u731c\u7316\u731d\u7334\u732f\u7329\u7325\u733e\u734e\u734f\u9ed8\u7357\u736a\u7368\u7370\u7378\u7375\u737b\u737a\u73c8\u73b3\u73ce\u73bb\u73c0\u73e5\u73ee\u73de\u74a2\u7405\u746f\u7425\u73f8\u7432\u743a\u7455\u743f\u745f\u7459\u7441\u745c\u7469\u7470\u7463\u746a\u7476\u747e\u748b\u749e\u74a7\u74ca\u74cf\u74d4\u73f1\ufffd\ufffd\ufffd".split(""),e=0;e!=r[224].length;++e)65533!==r[224][e].charCodeAt(0)&&(n[r[224][e]]=57344+e,t[57344+e]=r[224][e]);for(r[225]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u74e0\u74e3\u74e7\u74e9\u74ee\u74f2\u74f0\u74f1\u74f8\u74f7\u7504\u7503\u7505\u750c\u750e\u750d\u7515\u7513\u751e\u7526\u752c\u753c\u7544\u754d\u754a\u7549\u755b\u7546\u755a\u7569\u7564\u7567\u756b\u756d\u7578\u7576\u7586\u7587\u7574\u758a\u7589\u7582\u7594\u759a\u759d\u75a5\u75a3\u75c2\u75b3\u75c3\u75b5\u75bd\u75b8\u75bc\u75b1\u75cd\u75ca\u75d2\u75d9\u75e3\u75de\u75fe\u75ff\ufffd\u75fc\u7601\u75f0\u75fa\u75f2\u75f3\u760b\u760d\u7609\u761f\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763b\u7647\u7648\u7646\u765c\u7658\u7661\u7662\u7668\u7669\u766a\u7667\u766c\u7670\u7672\u7676\u7678\u767c\u7680\u7683\u7688\u768b\u768e\u7696\u7693\u7699\u769a\u76b0\u76b4\u76b8\u76b9\u76ba\u76c2\u76cd\u76d6\u76d2\u76de\u76e1\u76e5\u76e7\u76ea\u862f\u76fb\u7708\u7707\u7704\u7729\u7724\u771e\u7725\u7726\u771b\u7737\u7738\u7747\u775a\u7768\u776b\u775b\u7765\u777f\u777e\u7779\u778e\u778b\u7791\u77a0\u779e\u77b0\u77b6\u77b9\u77bf\u77bc\u77bd\u77bb\u77c7\u77cd\u77d7\u77da\u77dc\u77e3\u77ee\u77fc\u780c\u7812\u7926\u7820\u792a\u7845\u788e\u7874\u7886\u787c\u789a\u788c\u78a3\u78b5\u78aa\u78af\u78d1\u78c6\u78cb\u78d4\u78be\u78bc\u78c5\u78ca\u78ec\ufffd\ufffd\ufffd".split(""),e=0;e!=r[225].length;++e)65533!==r[225][e].charCodeAt(0)&&(n[r[225][e]]=57600+e,t[57600+e]=r[225][e]);for(r[226]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u78e7\u78da\u78fd\u78f4\u7907\u7912\u7911\u7919\u792c\u792b\u7940\u7960\u7957\u795f\u795a\u7955\u7953\u797a\u797f\u798a\u799d\u79a7\u9f4b\u79aa\u79ae\u79b3\u79b9\u79ba\u79c9\u79d5\u79e7\u79ec\u79e1\u79e3\u7a08\u7a0d\u7a18\u7a19\u7a20\u7a1f\u7980\u7a31\u7a3b\u7a3e\u7a37\u7a43\u7a57\u7a49\u7a61\u7a62\u7a69\u9f9d\u7a70\u7a79\u7a7d\u7a88\u7a97\u7a95\u7a98\u7a96\u7aa9\u7ac8\u7ab0\ufffd\u7ab6\u7ac5\u7ac4\u7abf\u9083\u7ac7\u7aca\u7acd\u7acf\u7ad5\u7ad3\u7ad9\u7ada\u7add\u7ae1\u7ae2\u7ae6\u7aed\u7af0\u7b02\u7b0f\u7b0a\u7b06\u7b33\u7b18\u7b19\u7b1e\u7b35\u7b28\u7b36\u7b50\u7b7a\u7b04\u7b4d\u7b0b\u7b4c\u7b45\u7b75\u7b65\u7b74\u7b67\u7b70\u7b71\u7b6c\u7b6e\u7b9d\u7b98\u7b9f\u7b8d\u7b9c\u7b9a\u7b8b\u7b92\u7b8f\u7b5d\u7b99\u7bcb\u7bc1\u7bcc\u7bcf\u7bb4\u7bc6\u7bdd\u7be9\u7c11\u7c14\u7be6\u7be5\u7c60\u7c00\u7c07\u7c13\u7bf3\u7bf7\u7c17\u7c0d\u7bf6\u7c23\u7c27\u7c2a\u7c1f\u7c37\u7c2b\u7c3d\u7c4c\u7c43\u7c54\u7c4f\u7c40\u7c50\u7c58\u7c5f\u7c64\u7c56\u7c65\u7c6c\u7c75\u7c83\u7c90\u7ca4\u7cad\u7ca2\u7cab\u7ca1\u7ca8\u7cb3\u7cb2\u7cb1\u7cae\u7cb9\u7cbd\u7cc0\u7cc5\u7cc2\u7cd8\u7cd2\u7cdc\u7ce2\u9b3b\u7cef\u7cf2\u7cf4\u7cf6\u7cfa\u7d06\ufffd\ufffd\ufffd".split(""),e=0;e!=r[226].length;++e)65533!==r[226][e].charCodeAt(0)&&(n[r[226][e]]=57856+e,t[57856+e]=r[226][e]);for(r[227]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7d02\u7d1c\u7d15\u7d0a\u7d45\u7d4b\u7d2e\u7d32\u7d3f\u7d35\u7d46\u7d73\u7d56\u7d4e\u7d72\u7d68\u7d6e\u7d4f\u7d63\u7d93\u7d89\u7d5b\u7d8f\u7d7d\u7d9b\u7dba\u7dae\u7da3\u7db5\u7dc7\u7dbd\u7dab\u7e3d\u7da2\u7daf\u7ddc\u7db8\u7d9f\u7db0\u7dd8\u7ddd\u7de4\u7dde\u7dfb\u7df2\u7de1\u7e05\u7e0a\u7e23\u7e21\u7e12\u7e31\u7e1f\u7e09\u7e0b\u7e22\u7e46\u7e66\u7e3b\u7e35\u7e39\u7e43\u7e37\ufffd\u7e32\u7e3a\u7e67\u7e5d\u7e56\u7e5e\u7e59\u7e5a\u7e79\u7e6a\u7e69\u7e7c\u7e7b\u7e83\u7dd5\u7e7d\u8fae\u7e7f\u7e88\u7e89\u7e8c\u7e92\u7e90\u7e93\u7e94\u7e96\u7e8e\u7e9b\u7e9c\u7f38\u7f3a\u7f45\u7f4c\u7f4d\u7f4e\u7f50\u7f51\u7f55\u7f54\u7f58\u7f5f\u7f60\u7f68\u7f69\u7f67\u7f78\u7f82\u7f86\u7f83\u7f88\u7f87\u7f8c\u7f94\u7f9e\u7f9d\u7f9a\u7fa3\u7faf\u7fb2\u7fb9\u7fae\u7fb6\u7fb8\u8b71\u7fc5\u7fc6\u7fca\u7fd5\u7fd4\u7fe1\u7fe6\u7fe9\u7ff3\u7ff9\u98dc\u8006\u8004\u800b\u8012\u8018\u8019\u801c\u8021\u8028\u803f\u803b\u804a\u8046\u8052\u8058\u805a\u805f\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807d\u807f\u8084\u8086\u8085\u809b\u8093\u809a\u80ad\u5190\u80ac\u80db\u80e5\u80d9\u80dd\u80c4\u80da\u80d6\u8109\u80ef\u80f1\u811b\u8129\u8123\u812f\u814b\ufffd\ufffd\ufffd".split(""),e=0;e!=r[227].length;++e)65533!==r[227][e].charCodeAt(0)&&(n[r[227][e]]=58112+e,t[58112+e]=r[227][e]);for(r[228]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u968b\u8146\u813e\u8153\u8151\u80fc\u8171\u816e\u8165\u8166\u8174\u8183\u8188\u818a\u8180\u8182\u81a0\u8195\u81a4\u81a3\u815f\u8193\u81a9\u81b0\u81b5\u81be\u81b8\u81bd\u81c0\u81c2\u81ba\u81c9\u81cd\u81d1\u81d9\u81d8\u81c8\u81da\u81df\u81e0\u81e7\u81fa\u81fb\u81fe\u8201\u8202\u8205\u8207\u820a\u820d\u8210\u8216\u8229\u822b\u8238\u8233\u8240\u8259\u8258\u825d\u825a\u825f\u8264\ufffd\u8262\u8268\u826a\u826b\u822e\u8271\u8277\u8278\u827e\u828d\u8292\u82ab\u829f\u82bb\u82ac\u82e1\u82e3\u82df\u82d2\u82f4\u82f3\u82fa\u8393\u8303\u82fb\u82f9\u82de\u8306\u82dc\u8309\u82d9\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832f\u832b\u8317\u8318\u8385\u839a\u83aa\u839f\u83a2\u8396\u8323\u838e\u8387\u838a\u837c\u83b5\u8373\u8375\u83a0\u8389\u83a8\u83f4\u8413\u83eb\u83ce\u83fd\u8403\u83d8\u840b\u83c1\u83f7\u8407\u83e0\u83f2\u840d\u8422\u8420\u83bd\u8438\u8506\u83fb\u846d\u842a\u843c\u855a\u8484\u8477\u846b\u84ad\u846e\u8482\u8469\u8446\u842c\u846f\u8479\u8435\u84ca\u8462\u84b9\u84bf\u849f\u84d9\u84cd\u84bb\u84da\u84d0\u84c1\u84c6\u84d6\u84a1\u8521\u84ff\u84f4\u8517\u8518\u852c\u851f\u8515\u8514\u84fc\u8540\u8563\u8558\u8548\ufffd\ufffd\ufffd".split(""),e=0;e!=r[228].length;++e)65533!==r[228][e].charCodeAt(0)&&(n[r[228][e]]=58368+e,t[58368+e]=r[228][e]);for(r[229]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8541\u8602\u854b\u8555\u8580\u85a4\u8588\u8591\u858a\u85a8\u856d\u8594\u859b\u85ea\u8587\u859c\u8577\u857e\u8590\u85c9\u85ba\u85cf\u85b9\u85d0\u85d5\u85dd\u85e5\u85dc\u85f9\u860a\u8613\u860b\u85fe\u85fa\u8606\u8622\u861a\u8630\u863f\u864d\u4e55\u8654\u865f\u8667\u8671\u8693\u86a3\u86a9\u86aa\u868b\u868c\u86b6\u86af\u86c4\u86c6\u86b0\u86c9\u8823\u86ab\u86d4\u86de\u86e9\u86ec\ufffd\u86df\u86db\u86ef\u8712\u8706\u8708\u8700\u8703\u86fb\u8711\u8709\u870d\u86f9\u870a\u8734\u873f\u8737\u873b\u8725\u8729\u871a\u8760\u875f\u8778\u874c\u874e\u8774\u8757\u8768\u876e\u8759\u8753\u8763\u876a\u8805\u87a2\u879f\u8782\u87af\u87cb\u87bd\u87c0\u87d0\u96d6\u87ab\u87c4\u87b3\u87c7\u87c6\u87bb\u87ef\u87f2\u87e0\u880f\u880d\u87fe\u87f6\u87f7\u880e\u87d2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883b\u8844\u8842\u8852\u8859\u885e\u8862\u886b\u8881\u887e\u889e\u8875\u887d\u88b5\u8872\u8882\u8897\u8892\u88ae\u8899\u88a2\u888d\u88a4\u88b0\u88bf\u88b1\u88c3\u88c4\u88d4\u88d8\u88d9\u88dd\u88f9\u8902\u88fc\u88f4\u88e8\u88f2\u8904\u890c\u890a\u8913\u8943\u891e\u8925\u892a\u892b\u8941\u8944\u893b\u8936\u8938\u894c\u891d\u8960\u895e\ufffd\ufffd\ufffd".split(""),e=0;e!=r[229].length;++e)65533!==r[229][e].charCodeAt(0)&&(n[r[229][e]]=58624+e,t[58624+e]=r[229][e]);for(r[230]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8966\u8964\u896d\u896a\u896f\u8974\u8977\u897e\u8983\u8988\u898a\u8993\u8998\u89a1\u89a9\u89a6\u89ac\u89af\u89b2\u89ba\u89bd\u89bf\u89c0\u89da\u89dc\u89dd\u89e7\u89f4\u89f8\u8a03\u8a16\u8a10\u8a0c\u8a1b\u8a1d\u8a25\u8a36\u8a41\u8a5b\u8a52\u8a46\u8a48\u8a7c\u8a6d\u8a6c\u8a62\u8a85\u8a82\u8a84\u8aa8\u8aa1\u8a91\u8aa5\u8aa6\u8a9a\u8aa3\u8ac4\u8acd\u8ac2\u8ada\u8aeb\u8af3\u8ae7\ufffd\u8ae4\u8af1\u8b14\u8ae0\u8ae2\u8af7\u8ade\u8adb\u8b0c\u8b07\u8b1a\u8ae1\u8b16\u8b10\u8b17\u8b20\u8b33\u97ab\u8b26\u8b2b\u8b3e\u8b28\u8b41\u8b4c\u8b4f\u8b4e\u8b49\u8b56\u8b5b\u8b5a\u8b6b\u8b5f\u8b6c\u8b6f\u8b74\u8b7d\u8b80\u8b8c\u8b8e\u8b92\u8b93\u8b96\u8b99\u8b9a\u8c3a\u8c41\u8c3f\u8c48\u8c4c\u8c4e\u8c50\u8c55\u8c62\u8c6c\u8c78\u8c7a\u8c82\u8c89\u8c85\u8c8a\u8c8d\u8c8e\u8c94\u8c7c\u8c98\u621d\u8cad\u8caa\u8cbd\u8cb2\u8cb3\u8cae\u8cb6\u8cc8\u8cc1\u8ce4\u8ce3\u8cda\u8cfd\u8cfa\u8cfb\u8d04\u8d05\u8d0a\u8d07\u8d0f\u8d0d\u8d10\u9f4e\u8d13\u8ccd\u8d14\u8d16\u8d67\u8d6d\u8d71\u8d73\u8d81\u8d99\u8dc2\u8dbe\u8dba\u8dcf\u8dda\u8dd6\u8dcc\u8ddb\u8dcb\u8dea\u8deb\u8ddf\u8de3\u8dfc\u8e08\u8e09\u8dff\u8e1d\u8e1e\u8e10\u8e1f\u8e42\u8e35\u8e30\u8e34\u8e4a\ufffd\ufffd\ufffd".split(""),e=0;e!=r[230].length;++e)65533!==r[230][e].charCodeAt(0)&&(n[r[230][e]]=58880+e,t[58880+e]=r[230][e]);for(r[231]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8e47\u8e49\u8e4c\u8e50\u8e48\u8e59\u8e64\u8e60\u8e2a\u8e63\u8e55\u8e76\u8e72\u8e7c\u8e81\u8e87\u8e85\u8e84\u8e8b\u8e8a\u8e93\u8e91\u8e94\u8e99\u8eaa\u8ea1\u8eac\u8eb0\u8ec6\u8eb1\u8ebe\u8ec5\u8ec8\u8ecb\u8edb\u8ee3\u8efc\u8efb\u8eeb\u8efe\u8f0a\u8f05\u8f15\u8f12\u8f19\u8f13\u8f1c\u8f1f\u8f1b\u8f0c\u8f26\u8f33\u8f3b\u8f39\u8f45\u8f42\u8f3e\u8f4c\u8f49\u8f46\u8f4e\u8f57\u8f5c\ufffd\u8f62\u8f63\u8f64\u8f9c\u8f9f\u8fa3\u8fad\u8faf\u8fb7\u8fda\u8fe5\u8fe2\u8fea\u8fef\u9087\u8ff4\u9005\u8ff9\u8ffa\u9011\u9015\u9021\u900d\u901e\u9016\u900b\u9027\u9036\u9035\u9039\u8ff8\u904f\u9050\u9051\u9052\u900e\u9049\u903e\u9056\u9058\u905e\u9068\u906f\u9076\u96a8\u9072\u9082\u907d\u9081\u9080\u908a\u9089\u908f\u90a8\u90af\u90b1\u90b5\u90e2\u90e4\u6248\u90db\u9102\u9112\u9119\u9132\u9130\u914a\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918b\u9189\u9182\u91a2\u91ab\u91af\u91aa\u91b5\u91b4\u91ba\u91c0\u91c1\u91c9\u91cb\u91d0\u91d6\u91df\u91e1\u91db\u91fc\u91f5\u91f6\u921e\u91ff\u9214\u922c\u9215\u9211\u925e\u9257\u9245\u9249\u9264\u9248\u9295\u923f\u924b\u9250\u929c\u9296\u9293\u929b\u925a\u92cf\u92b9\u92b7\u92e9\u930f\u92fa\u9344\u932e\ufffd\ufffd\ufffd".split(""),e=0;e!=r[231].length;++e)65533!==r[231][e].charCodeAt(0)&&(n[r[231][e]]=59136+e,t[59136+e]=r[231][e]);for(r[232]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9319\u9322\u931a\u9323\u933a\u9335\u933b\u935c\u9360\u937c\u936e\u9356\u93b0\u93ac\u93ad\u9394\u93b9\u93d6\u93d7\u93e8\u93e5\u93d8\u93c3\u93dd\u93d0\u93c8\u93e4\u941a\u9414\u9413\u9403\u9407\u9410\u9436\u942b\u9435\u9421\u943a\u9441\u9452\u9444\u945b\u9460\u9462\u945e\u946a\u9229\u9470\u9475\u9477\u947d\u945a\u947c\u947e\u9481\u947f\u9582\u9587\u958a\u9594\u9596\u9598\u9599\ufffd\u95a0\u95a8\u95a7\u95ad\u95bc\u95bb\u95b9\u95be\u95ca\u6ff6\u95c3\u95cd\u95cc\u95d5\u95d4\u95d6\u95dc\u95e1\u95e5\u95e2\u9621\u9628\u962e\u962f\u9642\u964c\u964f\u964b\u9677\u965c\u965e\u965d\u965f\u9666\u9672\u966c\u968d\u9698\u9695\u9697\u96aa\u96a7\u96b1\u96b2\u96b0\u96b4\u96b6\u96b8\u96b9\u96ce\u96cb\u96c9\u96cd\u894d\u96dc\u970d\u96d5\u96f9\u9704\u9706\u9708\u9713\u970e\u9711\u970f\u9716\u9719\u9724\u972a\u9730\u9739\u973d\u973e\u9744\u9746\u9748\u9742\u9749\u975c\u9760\u9764\u9766\u9768\u52d2\u976b\u9771\u9779\u9785\u977c\u9781\u977a\u9786\u978b\u978f\u9790\u979c\u97a8\u97a6\u97a3\u97b3\u97b4\u97c3\u97c6\u97c8\u97cb\u97dc\u97ed\u9f4f\u97f2\u7adf\u97f6\u97f5\u980f\u980c\u9838\u9824\u9821\u9837\u983d\u9846\u984f\u984b\u986b\u986f\u9870\ufffd\ufffd\ufffd".split(""),e=0;e!=r[232].length;++e)65533!==r[232][e].charCodeAt(0)&&(n[r[232][e]]=59392+e,t[59392+e]=r[232][e]);for(r[233]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9871\u9874\u9873\u98aa\u98af\u98b1\u98b6\u98c4\u98c3\u98c6\u98e9\u98eb\u9903\u9909\u9912\u9914\u9918\u9921\u991d\u991e\u9924\u9920\u992c\u992e\u993d\u993e\u9942\u9949\u9945\u9950\u994b\u9951\u9952\u994c\u9955\u9997\u9998\u99a5\u99ad\u99ae\u99bc\u99df\u99db\u99dd\u99d8\u99d1\u99ed\u99ee\u99f1\u99f2\u99fb\u99f8\u9a01\u9a0f\u9a05\u99e2\u9a19\u9a2b\u9a37\u9a45\u9a42\u9a40\u9a43\ufffd\u9a3e\u9a55\u9a4d\u9a5b\u9a57\u9a5f\u9a62\u9a65\u9a64\u9a69\u9a6b\u9a6a\u9aad\u9ab0\u9abc\u9ac0\u9acf\u9ad1\u9ad3\u9ad4\u9ade\u9adf\u9ae2\u9ae3\u9ae6\u9aef\u9aeb\u9aee\u9af4\u9af1\u9af7\u9afb\u9b06\u9b18\u9b1a\u9b1f\u9b22\u9b23\u9b25\u9b27\u9b28\u9b29\u9b2a\u9b2e\u9b2f\u9b32\u9b44\u9b43\u9b4f\u9b4d\u9b4e\u9b51\u9b58\u9b74\u9b93\u9b83\u9b91\u9b96\u9b97\u9b9f\u9ba0\u9ba8\u9bb4\u9bc0\u9bca\u9bb9\u9bc6\u9bcf\u9bd1\u9bd2\u9be3\u9be2\u9be4\u9bd4\u9be1\u9c3a\u9bf2\u9bf1\u9bf0\u9c15\u9c14\u9c09\u9c13\u9c0c\u9c06\u9c08\u9c12\u9c0a\u9c04\u9c2e\u9c1b\u9c25\u9c24\u9c21\u9c30\u9c47\u9c32\u9c46\u9c3e\u9c5a\u9c60\u9c67\u9c76\u9c78\u9ce7\u9cec\u9cf0\u9d09\u9d08\u9ceb\u9d03\u9d06\u9d2a\u9d26\u9daf\u9d23\u9d1f\u9d44\u9d15\u9d12\u9d41\u9d3f\u9d3e\u9d46\u9d48\ufffd\ufffd\ufffd".split(""),e=0;e!=r[233].length;++e)65533!==r[233][e].charCodeAt(0)&&(n[r[233][e]]=59648+e,t[59648+e]=r[233][e]);for(r[234]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9d5d\u9d5e\u9d64\u9d51\u9d50\u9d59\u9d72\u9d89\u9d87\u9dab\u9d6f\u9d7a\u9d9a\u9da4\u9da9\u9db2\u9dc4\u9dc1\u9dbb\u9db8\u9dba\u9dc6\u9dcf\u9dc2\u9dd9\u9dd3\u9df8\u9de6\u9ded\u9def\u9dfd\u9e1a\u9e1b\u9e1e\u9e75\u9e79\u9e7d\u9e81\u9e88\u9e8b\u9e8c\u9e92\u9e95\u9e91\u9e9d\u9ea5\u9ea9\u9eb8\u9eaa\u9ead\u9761\u9ecc\u9ece\u9ecf\u9ed0\u9ed4\u9edc\u9ede\u9edd\u9ee0\u9ee5\u9ee8\u9eef\ufffd\u9ef4\u9ef6\u9ef7\u9ef9\u9efb\u9efc\u9efd\u9f07\u9f08\u76b7\u9f15\u9f21\u9f2c\u9f3e\u9f4a\u9f52\u9f54\u9f63\u9f5f\u9f60\u9f61\u9f66\u9f67\u9f6c\u9f6a\u9f77\u9f72\u9f76\u9f95\u9f9c\u9fa0\u582f\u69c7\u9059\u7464\u51dc\u7199\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[234].length;++e)65533!==r[234][e].charCodeAt(0)&&(n[r[234][e]]=59904+e,t[59904+e]=r[234][e]);for(r[237]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7e8a\u891c\u9348\u9288\u84dc\u4fc9\u70bb\u6631\u68c8\u92f9\u66fb\u5f45\u4e28\u4ee1\u4efc\u4f00\u4f03\u4f39\u4f56\u4f92\u4f8a\u4f9a\u4f94\u4fcd\u5040\u5022\u4fff\u501e\u5046\u5070\u5042\u5094\u50f4\u50d8\u514a\u5164\u519d\u51be\u51ec\u5215\u529c\u52a6\u52c0\u52db\u5300\u5307\u5324\u5372\u5393\u53b2\u53dd\ufa0e\u549c\u548a\u54a9\u54ff\u5586\u5759\u5765\u57ac\u57c8\u57c7\ufa0f\ufffd\ufa10\u589e\u58b2\u590b\u5953\u595b\u595d\u5963\u59a4\u59ba\u5b56\u5bc0\u752f\u5bd8\u5bec\u5c1e\u5ca6\u5cba\u5cf5\u5d27\u5d53\ufa11\u5d42\u5d6d\u5db8\u5db9\u5dd0\u5f21\u5f34\u5f67\u5fb7\u5fde\u605d\u6085\u608a\u60de\u60d5\u6120\u60f2\u6111\u6137\u6130\u6198\u6213\u62a6\u63f5\u6460\u649d\u64ce\u654e\u6600\u6615\u663b\u6609\u662e\u661e\u6624\u6665\u6657\u6659\ufa12\u6673\u6699\u66a0\u66b2\u66bf\u66fa\u670e\uf929\u6766\u67bb\u6852\u67c0\u6801\u6844\u68cf\ufa13\u6968\ufa14\u6998\u69e2\u6a30\u6a6b\u6a46\u6a73\u6a7e\u6ae2\u6ae4\u6bd6\u6c3f\u6c5c\u6c86\u6c6f\u6cda\u6d04\u6d87\u6d6f\u6d96\u6dac\u6dcf\u6df8\u6df2\u6dfc\u6e39\u6e5c\u6e27\u6e3c\u6ebf\u6f88\u6fb5\u6ff5\u7005\u7007\u7028\u7085\u70ab\u710f\u7104\u715c\u7146\u7147\ufa15\u71c1\u71fe\u72b1\ufffd\ufffd\ufffd".split(""),e=0;e!=r[237].length;++e)65533!==r[237][e].charCodeAt(0)&&(n[r[237][e]]=60672+e,t[60672+e]=r[237][e]);for(r[238]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u72be\u7324\ufa16\u7377\u73bd\u73c9\u73d6\u73e3\u73d2\u7407\u73f5\u7426\u742a\u7429\u742e\u7462\u7489\u749f\u7501\u756f\u7682\u769c\u769e\u769b\u76a6\ufa17\u7746\u52af\u7821\u784e\u7864\u787a\u7930\ufa18\ufa19\ufa1a\u7994\ufa1b\u799b\u7ad1\u7ae7\ufa1c\u7aeb\u7b9e\ufa1d\u7d48\u7d5c\u7db7\u7da0\u7dd6\u7e52\u7f47\u7fa1\ufa1e\u8301\u8362\u837f\u83c7\u83f6\u8448\u84b4\u8553\u8559\ufffd\u856b\ufa1f\u85b0\ufa20\ufa21\u8807\u88f5\u8a12\u8a37\u8a79\u8aa7\u8abe\u8adf\ufa22\u8af6\u8b53\u8b7f\u8cf0\u8cf4\u8d12\u8d76\ufa23\u8ecf\ufa24\ufa25\u9067\u90de\ufa26\u9115\u9127\u91da\u91d7\u91de\u91ed\u91ee\u91e4\u91e5\u9206\u9210\u920a\u923a\u9240\u923c\u924e\u9259\u9251\u9239\u9267\u92a7\u9277\u9278\u92e7\u92d7\u92d9\u92d0\ufa27\u92d5\u92e0\u92d3\u9325\u9321\u92fb\ufa28\u931e\u92ff\u931d\u9302\u9370\u9357\u93a4\u93c6\u93de\u93f8\u9431\u9445\u9448\u9592\uf9dc\ufa29\u969d\u96af\u9733\u973b\u9743\u974d\u974f\u9751\u9755\u9857\u9865\ufa2a\ufa2b\u9927\ufa2c\u999e\u9a4e\u9ad9\u9adc\u9b75\u9b72\u9b8f\u9bb1\u9bbb\u9c00\u9d70\u9d6b\ufa2d\u9e19\u9ed1\ufffd\ufffd\u2170\u2171\u2172\u2173\u2174\u2175\u2176\u2177\u2178\u2179\uffe2\uffe4\uff07\uff02\ufffd\ufffd\ufffd".split(""),e=0;e!=r[238].length;++e)65533!==r[238][e].charCodeAt(0)&&(n[r[238][e]]=60928+e,t[60928+e]=r[238][e]);for(r[250]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u2170\u2171\u2172\u2173\u2174\u2175\u2176\u2177\u2178\u2179\u2160\u2161\u2162\u2163\u2164\u2165\u2166\u2167\u2168\u2169\uffe2\uffe4\uff07\uff02\u3231\u2116\u2121\u2235\u7e8a\u891c\u9348\u9288\u84dc\u4fc9\u70bb\u6631\u68c8\u92f9\u66fb\u5f45\u4e28\u4ee1\u4efc\u4f00\u4f03\u4f39\u4f56\u4f92\u4f8a\u4f9a\u4f94\u4fcd\u5040\u5022\u4fff\u501e\u5046\u5070\u5042\u5094\u50f4\u50d8\u514a\ufffd\u5164\u519d\u51be\u51ec\u5215\u529c\u52a6\u52c0\u52db\u5300\u5307\u5324\u5372\u5393\u53b2\u53dd\ufa0e\u549c\u548a\u54a9\u54ff\u5586\u5759\u5765\u57ac\u57c8\u57c7\ufa0f\ufa10\u589e\u58b2\u590b\u5953\u595b\u595d\u5963\u59a4\u59ba\u5b56\u5bc0\u752f\u5bd8\u5bec\u5c1e\u5ca6\u5cba\u5cf5\u5d27\u5d53\ufa11\u5d42\u5d6d\u5db8\u5db9\u5dd0\u5f21\u5f34\u5f67\u5fb7\u5fde\u605d\u6085\u608a\u60de\u60d5\u6120\u60f2\u6111\u6137\u6130\u6198\u6213\u62a6\u63f5\u6460\u649d\u64ce\u654e\u6600\u6615\u663b\u6609\u662e\u661e\u6624\u6665\u6657\u6659\ufa12\u6673\u6699\u66a0\u66b2\u66bf\u66fa\u670e\uf929\u6766\u67bb\u6852\u67c0\u6801\u6844\u68cf\ufa13\u6968\ufa14\u6998\u69e2\u6a30\u6a6b\u6a46\u6a73\u6a7e\u6ae2\u6ae4\u6bd6\u6c3f\u6c5c\u6c86\u6c6f\u6cda\u6d04\u6d87\u6d6f\ufffd\ufffd\ufffd".split(""),e=0;e!=r[250].length;++e)65533!==r[250][e].charCodeAt(0)&&(n[r[250][e]]=64e3+e,t[64e3+e]=r[250][e]);for(r[251]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6d96\u6dac\u6dcf\u6df8\u6df2\u6dfc\u6e39\u6e5c\u6e27\u6e3c\u6ebf\u6f88\u6fb5\u6ff5\u7005\u7007\u7028\u7085\u70ab\u710f\u7104\u715c\u7146\u7147\ufa15\u71c1\u71fe\u72b1\u72be\u7324\ufa16\u7377\u73bd\u73c9\u73d6\u73e3\u73d2\u7407\u73f5\u7426\u742a\u7429\u742e\u7462\u7489\u749f\u7501\u756f\u7682\u769c\u769e\u769b\u76a6\ufa17\u7746\u52af\u7821\u784e\u7864\u787a\u7930\ufa18\ufa19\ufffd\ufa1a\u7994\ufa1b\u799b\u7ad1\u7ae7\ufa1c\u7aeb\u7b9e\ufa1d\u7d48\u7d5c\u7db7\u7da0\u7dd6\u7e52\u7f47\u7fa1\ufa1e\u8301\u8362\u837f\u83c7\u83f6\u8448\u84b4\u8553\u8559\u856b\ufa1f\u85b0\ufa20\ufa21\u8807\u88f5\u8a12\u8a37\u8a79\u8aa7\u8abe\u8adf\ufa22\u8af6\u8b53\u8b7f\u8cf0\u8cf4\u8d12\u8d76\ufa23\u8ecf\ufa24\ufa25\u9067\u90de\ufa26\u9115\u9127\u91da\u91d7\u91de\u91ed\u91ee\u91e4\u91e5\u9206\u9210\u920a\u923a\u9240\u923c\u924e\u9259\u9251\u9239\u9267\u92a7\u9277\u9278\u92e7\u92d7\u92d9\u92d0\ufa27\u92d5\u92e0\u92d3\u9325\u9321\u92fb\ufa28\u931e\u92ff\u931d\u9302\u9370\u9357\u93a4\u93c6\u93de\u93f8\u9431\u9445\u9448\u9592\uf9dc\ufa29\u969d\u96af\u9733\u973b\u9743\u974d\u974f\u9751\u9755\u9857\u9865\ufa2a\ufa2b\u9927\ufa2c\u999e\u9a4e\u9ad9\ufffd\ufffd\ufffd".split(""),e=0;e!=r[251].length;++e)65533!==r[251][e].charCodeAt(0)&&(n[r[251][e]]=64256+e,t[64256+e]=r[251][e]);for(r[252]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9adc\u9b75\u9b72\u9b8f\u9bb1\u9bbb\u9c00\u9d70\u9d6b\ufa2d\u9e19\u9ed1\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[252].length;++e)65533!==r[252][e].charCodeAt(0)&&(n[r[252][e]]=64512+e,t[64512+e]=r[252][e]);return{enc:n,dec:t}}(),r[936]=function(){var e,t=[],n={},r=[];for(r[0]="\0\x01\x02\x03\x04\x05\x06\x07\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\u20ac\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[0].length;++e)65533!==r[0][e].charCodeAt(0)&&(n[r[0][e]]=0+e,t[0+e]=r[0][e]);for(r[129]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u4e02\u4e04\u4e05\u4e06\u4e0f\u4e12\u4e17\u4e1f\u4e20\u4e21\u4e23\u4e26\u4e29\u4e2e\u4e2f\u4e31\u4e33\u4e35\u4e37\u4e3c\u4e40\u4e41\u4e42\u4e44\u4e46\u4e4a\u4e51\u4e55\u4e57\u4e5a\u4e5b\u4e62\u4e63\u4e64\u4e65\u4e67\u4e68\u4e6a\u4e6b\u4e6c\u4e6d\u4e6e\u4e6f\u4e72\u4e74\u4e75\u4e76\u4e77\u4e78\u4e79\u4e7a\u4e7b\u4e7c\u4e7d\u4e7f\u4e80\u4e81\u4e82\u4e83\u4e84\u4e85\u4e87\u4e8a\ufffd\u4e90\u4e96\u4e97\u4e99\u4e9c\u4e9d\u4e9e\u4ea3\u4eaa\u4eaf\u4eb0\u4eb1\u4eb4\u4eb6\u4eb7\u4eb8\u4eb9\u4ebc\u4ebd\u4ebe\u4ec8\u4ecc\u4ecf\u4ed0\u4ed2\u4eda\u4edb\u4edc\u4ee0\u4ee2\u4ee6\u4ee7\u4ee9\u4eed\u4eee\u4eef\u4ef1\u4ef4\u4ef8\u4ef9\u4efa\u4efc\u4efe\u4f00\u4f02\u4f03\u4f04\u4f05\u4f06\u4f07\u4f08\u4f0b\u4f0c\u4f12\u4f13\u4f14\u4f15\u4f16\u4f1c\u4f1d\u4f21\u4f23\u4f28\u4f29\u4f2c\u4f2d\u4f2e\u4f31\u4f33\u4f35\u4f37\u4f39\u4f3b\u4f3e\u4f3f\u4f40\u4f41\u4f42\u4f44\u4f45\u4f47\u4f48\u4f49\u4f4a\u4f4b\u4f4c\u4f52\u4f54\u4f56\u4f61\u4f62\u4f66\u4f68\u4f6a\u4f6b\u4f6d\u4f6e\u4f71\u4f72\u4f75\u4f77\u4f78\u4f79\u4f7a\u4f7d\u4f80\u4f81\u4f82\u4f85\u4f86\u4f87\u4f8a\u4f8c\u4f8e\u4f90\u4f92\u4f93\u4f95\u4f96\u4f98\u4f99\u4f9a\u4f9c\u4f9e\u4f9f\u4fa1\u4fa2\ufffd".split(""),e=0;e!=r[129].length;++e)65533!==r[129][e].charCodeAt(0)&&(n[r[129][e]]=33024+e,t[33024+e]=r[129][e]);for(r[130]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u4fa4\u4fab\u4fad\u4fb0\u4fb1\u4fb2\u4fb3\u4fb4\u4fb6\u4fb7\u4fb8\u4fb9\u4fba\u4fbb\u4fbc\u4fbd\u4fbe\u4fc0\u4fc1\u4fc2\u4fc6\u4fc7\u4fc8\u4fc9\u4fcb\u4fcc\u4fcd\u4fd2\u4fd3\u4fd4\u4fd5\u4fd6\u4fd9\u4fdb\u4fe0\u4fe2\u4fe4\u4fe5\u4fe7\u4feb\u4fec\u4ff0\u4ff2\u4ff4\u4ff5\u4ff6\u4ff7\u4ff9\u4ffb\u4ffc\u4ffd\u4fff\u5000\u5001\u5002\u5003\u5004\u5005\u5006\u5007\u5008\u5009\u500a\ufffd\u500b\u500e\u5010\u5011\u5013\u5015\u5016\u5017\u501b\u501d\u501e\u5020\u5022\u5023\u5024\u5027\u502b\u502f\u5030\u5031\u5032\u5033\u5034\u5035\u5036\u5037\u5038\u5039\u503b\u503d\u503f\u5040\u5041\u5042\u5044\u5045\u5046\u5049\u504a\u504b\u504d\u5050\u5051\u5052\u5053\u5054\u5056\u5057\u5058\u5059\u505b\u505d\u505e\u505f\u5060\u5061\u5062\u5063\u5064\u5066\u5067\u5068\u5069\u506a\u506b\u506d\u506e\u506f\u5070\u5071\u5072\u5073\u5074\u5075\u5078\u5079\u507a\u507c\u507d\u5081\u5082\u5083\u5084\u5086\u5087\u5089\u508a\u508b\u508c\u508e\u508f\u5090\u5091\u5092\u5093\u5094\u5095\u5096\u5097\u5098\u5099\u509a\u509b\u509c\u509d\u509e\u509f\u50a0\u50a1\u50a2\u50a4\u50a6\u50aa\u50ab\u50ad\u50ae\u50af\u50b0\u50b1\u50b3\u50b4\u50b5\u50b6\u50b7\u50b8\u50b9\u50bc\ufffd".split(""),e=0;e!=r[130].length;++e)65533!==r[130][e].charCodeAt(0)&&(n[r[130][e]]=33280+e,t[33280+e]=r[130][e]);for(r[131]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u50bd\u50be\u50bf\u50c0\u50c1\u50c2\u50c3\u50c4\u50c5\u50c6\u50c7\u50c8\u50c9\u50ca\u50cb\u50cc\u50cd\u50ce\u50d0\u50d1\u50d2\u50d3\u50d4\u50d5\u50d7\u50d8\u50d9\u50db\u50dc\u50dd\u50de\u50df\u50e0\u50e1\u50e2\u50e3\u50e4\u50e5\u50e8\u50e9\u50ea\u50eb\u50ef\u50f0\u50f1\u50f2\u50f4\u50f6\u50f7\u50f8\u50f9\u50fa\u50fc\u50fd\u50fe\u50ff\u5100\u5101\u5102\u5103\u5104\u5105\u5108\ufffd\u5109\u510a\u510c\u510d\u510e\u510f\u5110\u5111\u5113\u5114\u5115\u5116\u5117\u5118\u5119\u511a\u511b\u511c\u511d\u511e\u511f\u5120\u5122\u5123\u5124\u5125\u5126\u5127\u5128\u5129\u512a\u512b\u512c\u512d\u512e\u512f\u5130\u5131\u5132\u5133\u5134\u5135\u5136\u5137\u5138\u5139\u513a\u513b\u513c\u513d\u513e\u5142\u5147\u514a\u514c\u514e\u514f\u5150\u5152\u5153\u5157\u5158\u5159\u515b\u515d\u515e\u515f\u5160\u5161\u5163\u5164\u5166\u5167\u5169\u516a\u516f\u5172\u517a\u517e\u517f\u5183\u5184\u5186\u5187\u518a\u518b\u518e\u518f\u5190\u5191\u5193\u5194\u5198\u519a\u519d\u519e\u519f\u51a1\u51a3\u51a6\u51a7\u51a8\u51a9\u51aa\u51ad\u51ae\u51b4\u51b8\u51b9\u51ba\u51be\u51bf\u51c1\u51c2\u51c3\u51c5\u51c8\u51ca\u51cd\u51ce\u51d0\u51d2\u51d3\u51d4\u51d5\u51d6\u51d7\ufffd".split(""),e=0;e!=r[131].length;++e)65533!==r[131][e].charCodeAt(0)&&(n[r[131][e]]=33536+e,t[33536+e]=r[131][e]);for(r[132]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u51d8\u51d9\u51da\u51dc\u51de\u51df\u51e2\u51e3\u51e5\u51e6\u51e7\u51e8\u51e9\u51ea\u51ec\u51ee\u51f1\u51f2\u51f4\u51f7\u51fe\u5204\u5205\u5209\u520b\u520c\u520f\u5210\u5213\u5214\u5215\u521c\u521e\u521f\u5221\u5222\u5223\u5225\u5226\u5227\u522a\u522c\u522f\u5231\u5232\u5234\u5235\u523c\u523e\u5244\u5245\u5246\u5247\u5248\u5249\u524b\u524e\u524f\u5252\u5253\u5255\u5257\u5258\ufffd\u5259\u525a\u525b\u525d\u525f\u5260\u5262\u5263\u5264\u5266\u5268\u526b\u526c\u526d\u526e\u5270\u5271\u5273\u5274\u5275\u5276\u5277\u5278\u5279\u527a\u527b\u527c\u527e\u5280\u5283\u5284\u5285\u5286\u5287\u5289\u528a\u528b\u528c\u528d\u528e\u528f\u5291\u5292\u5294\u5295\u5296\u5297\u5298\u5299\u529a\u529c\u52a4\u52a5\u52a6\u52a7\u52ae\u52af\u52b0\u52b4\u52b5\u52b6\u52b7\u52b8\u52b9\u52ba\u52bb\u52bc\u52bd\u52c0\u52c1\u52c2\u52c4\u52c5\u52c6\u52c8\u52ca\u52cc\u52cd\u52ce\u52cf\u52d1\u52d3\u52d4\u52d5\u52d7\u52d9\u52da\u52db\u52dc\u52dd\u52de\u52e0\u52e1\u52e2\u52e3\u52e5\u52e6\u52e7\u52e8\u52e9\u52ea\u52eb\u52ec\u52ed\u52ee\u52ef\u52f1\u52f2\u52f3\u52f4\u52f5\u52f6\u52f7\u52f8\u52fb\u52fc\u52fd\u5301\u5302\u5303\u5304\u5307\u5309\u530a\u530b\u530c\u530e\ufffd".split(""),e=0;e!=r[132].length;++e)65533!==r[132][e].charCodeAt(0)&&(n[r[132][e]]=33792+e,t[33792+e]=r[132][e]);for(r[133]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5311\u5312\u5313\u5314\u5318\u531b\u531c\u531e\u531f\u5322\u5324\u5325\u5327\u5328\u5329\u532b\u532c\u532d\u532f\u5330\u5331\u5332\u5333\u5334\u5335\u5336\u5337\u5338\u533c\u533d\u5340\u5342\u5344\u5346\u534b\u534c\u534d\u5350\u5354\u5358\u5359\u535b\u535d\u5365\u5368\u536a\u536c\u536d\u5372\u5376\u5379\u537b\u537c\u537d\u537e\u5380\u5381\u5383\u5387\u5388\u538a\u538e\u538f\ufffd\u5390\u5391\u5392\u5393\u5394\u5396\u5397\u5399\u539b\u539c\u539e\u53a0\u53a1\u53a4\u53a7\u53aa\u53ab\u53ac\u53ad\u53af\u53b0\u53b1\u53b2\u53b3\u53b4\u53b5\u53b7\u53b8\u53b9\u53ba\u53bc\u53bd\u53be\u53c0\u53c3\u53c4\u53c5\u53c6\u53c7\u53ce\u53cf\u53d0\u53d2\u53d3\u53d5\u53da\u53dc\u53dd\u53de\u53e1\u53e2\u53e7\u53f4\u53fa\u53fe\u53ff\u5400\u5402\u5405\u5407\u540b\u5414\u5418\u5419\u541a\u541c\u5422\u5424\u5425\u542a\u5430\u5433\u5436\u5437\u543a\u543d\u543f\u5441\u5442\u5444\u5445\u5447\u5449\u544c\u544d\u544e\u544f\u5451\u545a\u545d\u545e\u545f\u5460\u5461\u5463\u5465\u5467\u5469\u546a\u546b\u546c\u546d\u546e\u546f\u5470\u5474\u5479\u547a\u547e\u547f\u5481\u5483\u5485\u5487\u5488\u5489\u548a\u548d\u5491\u5493\u5497\u5498\u549c\u549e\u549f\u54a0\u54a1\ufffd".split(""),e=0;e!=r[133].length;++e)65533!==r[133][e].charCodeAt(0)&&(n[r[133][e]]=34048+e,t[34048+e]=r[133][e]);for(r[134]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u54a2\u54a5\u54ae\u54b0\u54b2\u54b5\u54b6\u54b7\u54b9\u54ba\u54bc\u54be\u54c3\u54c5\u54ca\u54cb\u54d6\u54d8\u54db\u54e0\u54e1\u54e2\u54e3\u54e4\u54eb\u54ec\u54ef\u54f0\u54f1\u54f4\u54f5\u54f6\u54f7\u54f8\u54f9\u54fb\u54fe\u5500\u5502\u5503\u5504\u5505\u5508\u550a\u550b\u550c\u550d\u550e\u5512\u5513\u5515\u5516\u5517\u5518\u5519\u551a\u551c\u551d\u551e\u551f\u5521\u5525\u5526\ufffd\u5528\u5529\u552b\u552d\u5532\u5534\u5535\u5536\u5538\u5539\u553a\u553b\u553d\u5540\u5542\u5545\u5547\u5548\u554b\u554c\u554d\u554e\u554f\u5551\u5552\u5553\u5554\u5557\u5558\u5559\u555a\u555b\u555d\u555e\u555f\u5560\u5562\u5563\u5568\u5569\u556b\u556f\u5570\u5571\u5572\u5573\u5574\u5579\u557a\u557d\u557f\u5585\u5586\u558c\u558d\u558e\u5590\u5592\u5593\u5595\u5596\u5597\u559a\u559b\u559e\u55a0\u55a1\u55a2\u55a3\u55a4\u55a5\u55a6\u55a8\u55a9\u55aa\u55ab\u55ac\u55ad\u55ae\u55af\u55b0\u55b2\u55b4\u55b6\u55b8\u55ba\u55bc\u55bf\u55c0\u55c1\u55c2\u55c3\u55c6\u55c7\u55c8\u55ca\u55cb\u55ce\u55cf\u55d0\u55d5\u55d7\u55d8\u55d9\u55da\u55db\u55de\u55e0\u55e2\u55e7\u55e9\u55ed\u55ee\u55f0\u55f1\u55f4\u55f6\u55f8\u55f9\u55fa\u55fb\u55fc\u55ff\u5602\u5603\u5604\u5605\ufffd".split(""),e=0;e!=r[134].length;++e)65533!==r[134][e].charCodeAt(0)&&(n[r[134][e]]=34304+e,t[34304+e]=r[134][e]);for(r[135]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5606\u5607\u560a\u560b\u560d\u5610\u5611\u5612\u5613\u5614\u5615\u5616\u5617\u5619\u561a\u561c\u561d\u5620\u5621\u5622\u5625\u5626\u5628\u5629\u562a\u562b\u562e\u562f\u5630\u5633\u5635\u5637\u5638\u563a\u563c\u563d\u563e\u5640\u5641\u5642\u5643\u5644\u5645\u5646\u5647\u5648\u5649\u564a\u564b\u564f\u5650\u5651\u5652\u5653\u5655\u5656\u565a\u565b\u565d\u565e\u565f\u5660\u5661\ufffd\u5663\u5665\u5666\u5667\u566d\u566e\u566f\u5670\u5672\u5673\u5674\u5675\u5677\u5678\u5679\u567a\u567d\u567e\u567f\u5680\u5681\u5682\u5683\u5684\u5687\u5688\u5689\u568a\u568b\u568c\u568d\u5690\u5691\u5692\u5694\u5695\u5696\u5697\u5698\u5699\u569a\u569b\u569c\u569d\u569e\u569f\u56a0\u56a1\u56a2\u56a4\u56a5\u56a6\u56a7\u56a8\u56a9\u56aa\u56ab\u56ac\u56ad\u56ae\u56b0\u56b1\u56b2\u56b3\u56b4\u56b5\u56b6\u56b8\u56b9\u56ba\u56bb\u56bd\u56be\u56bf\u56c0\u56c1\u56c2\u56c3\u56c4\u56c5\u56c6\u56c7\u56c8\u56c9\u56cb\u56cc\u56cd\u56ce\u56cf\u56d0\u56d1\u56d2\u56d3\u56d5\u56d6\u56d8\u56d9\u56dc\u56e3\u56e5\u56e6\u56e7\u56e8\u56e9\u56ea\u56ec\u56ee\u56ef\u56f2\u56f3\u56f6\u56f7\u56f8\u56fb\u56fc\u5700\u5701\u5702\u5705\u5707\u570b\u570c\u570d\u570e\u570f\u5710\u5711\ufffd".split(""),e=0;e!=r[135].length;++e)65533!==r[135][e].charCodeAt(0)&&(n[r[135][e]]=34560+e,t[34560+e]=r[135][e]);for(r[136]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5712\u5713\u5714\u5715\u5716\u5717\u5718\u5719\u571a\u571b\u571d\u571e\u5720\u5721\u5722\u5724\u5725\u5726\u5727\u572b\u5731\u5732\u5734\u5735\u5736\u5737\u5738\u573c\u573d\u573f\u5741\u5743\u5744\u5745\u5746\u5748\u5749\u574b\u5752\u5753\u5754\u5755\u5756\u5758\u5759\u5762\u5763\u5765\u5767\u576c\u576e\u5770\u5771\u5772\u5774\u5775\u5778\u5779\u577a\u577d\u577e\u577f\u5780\ufffd\u5781\u5787\u5788\u5789\u578a\u578d\u578e\u578f\u5790\u5791\u5794\u5795\u5796\u5797\u5798\u5799\u579a\u579c\u579d\u579e\u579f\u57a5\u57a8\u57aa\u57ac\u57af\u57b0\u57b1\u57b3\u57b5\u57b6\u57b7\u57b9\u57ba\u57bb\u57bc\u57bd\u57be\u57bf\u57c0\u57c1\u57c4\u57c5\u57c6\u57c7\u57c8\u57c9\u57ca\u57cc\u57cd\u57d0\u57d1\u57d3\u57d6\u57d7\u57db\u57dc\u57de\u57e1\u57e2\u57e3\u57e5\u57e6\u57e7\u57e8\u57e9\u57ea\u57eb\u57ec\u57ee\u57f0\u57f1\u57f2\u57f3\u57f5\u57f6\u57f7\u57fb\u57fc\u57fe\u57ff\u5801\u5803\u5804\u5805\u5808\u5809\u580a\u580c\u580e\u580f\u5810\u5812\u5813\u5814\u5816\u5817\u5818\u581a\u581b\u581c\u581d\u581f\u5822\u5823\u5825\u5826\u5827\u5828\u5829\u582b\u582c\u582d\u582e\u582f\u5831\u5832\u5833\u5834\u5836\u5837\u5838\u5839\u583a\u583b\u583c\u583d\ufffd".split(""),e=0;e!=r[136].length;++e)65533!==r[136][e].charCodeAt(0)&&(n[r[136][e]]=34816+e,t[34816+e]=r[136][e]);for(r[137]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u583e\u583f\u5840\u5841\u5842\u5843\u5845\u5846\u5847\u5848\u5849\u584a\u584b\u584e\u584f\u5850\u5852\u5853\u5855\u5856\u5857\u5859\u585a\u585b\u585c\u585d\u585f\u5860\u5861\u5862\u5863\u5864\u5866\u5867\u5868\u5869\u586a\u586d\u586e\u586f\u5870\u5871\u5872\u5873\u5874\u5875\u5876\u5877\u5878\u5879\u587a\u587b\u587c\u587d\u587f\u5882\u5884\u5886\u5887\u5888\u588a\u588b\u588c\ufffd\u588d\u588e\u588f\u5890\u5891\u5894\u5895\u5896\u5897\u5898\u589b\u589c\u589d\u58a0\u58a1\u58a2\u58a3\u58a4\u58a5\u58a6\u58a7\u58aa\u58ab\u58ac\u58ad\u58ae\u58af\u58b0\u58b1\u58b2\u58b3\u58b4\u58b5\u58b6\u58b7\u58b8\u58b9\u58ba\u58bb\u58bd\u58be\u58bf\u58c0\u58c2\u58c3\u58c4\u58c6\u58c7\u58c8\u58c9\u58ca\u58cb\u58cc\u58cd\u58ce\u58cf\u58d0\u58d2\u58d3\u58d4\u58d6\u58d7\u58d8\u58d9\u58da\u58db\u58dc\u58dd\u58de\u58df\u58e0\u58e1\u58e2\u58e3\u58e5\u58e6\u58e7\u58e8\u58e9\u58ea\u58ed\u58ef\u58f1\u58f2\u58f4\u58f5\u58f7\u58f8\u58fa\u58fb\u58fc\u58fd\u58fe\u58ff\u5900\u5901\u5903\u5905\u5906\u5908\u5909\u590a\u590b\u590c\u590e\u5910\u5911\u5912\u5913\u5917\u5918\u591b\u591d\u591e\u5920\u5921\u5922\u5923\u5926\u5928\u592c\u5930\u5932\u5933\u5935\u5936\u593b\ufffd".split(""),e=0;e!=r[137].length;++e)65533!==r[137][e].charCodeAt(0)&&(n[r[137][e]]=35072+e,t[35072+e]=r[137][e]);for(r[138]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u593d\u593e\u593f\u5940\u5943\u5945\u5946\u594a\u594c\u594d\u5950\u5952\u5953\u5959\u595b\u595c\u595d\u595e\u595f\u5961\u5963\u5964\u5966\u5967\u5968\u5969\u596a\u596b\u596c\u596d\u596e\u596f\u5970\u5971\u5972\u5975\u5977\u597a\u597b\u597c\u597e\u597f\u5980\u5985\u5989\u598b\u598c\u598e\u598f\u5990\u5991\u5994\u5995\u5998\u599a\u599b\u599c\u599d\u599f\u59a0\u59a1\u59a2\u59a6\ufffd\u59a7\u59ac\u59ad\u59b0\u59b1\u59b3\u59b4\u59b5\u59b6\u59b7\u59b8\u59ba\u59bc\u59bd\u59bf\u59c0\u59c1\u59c2\u59c3\u59c4\u59c5\u59c7\u59c8\u59c9\u59cc\u59cd\u59ce\u59cf\u59d5\u59d6\u59d9\u59db\u59de\u59df\u59e0\u59e1\u59e2\u59e4\u59e6\u59e7\u59e9\u59ea\u59eb\u59ed\u59ee\u59ef\u59f0\u59f1\u59f2\u59f3\u59f4\u59f5\u59f6\u59f7\u59f8\u59fa\u59fc\u59fd\u59fe\u5a00\u5a02\u5a0a\u5a0b\u5a0d\u5a0e\u5a0f\u5a10\u5a12\u5a14\u5a15\u5a16\u5a17\u5a19\u5a1a\u5a1b\u5a1d\u5a1e\u5a21\u5a22\u5a24\u5a26\u5a27\u5a28\u5a2a\u5a2b\u5a2c\u5a2d\u5a2e\u5a2f\u5a30\u5a33\u5a35\u5a37\u5a38\u5a39\u5a3a\u5a3b\u5a3d\u5a3e\u5a3f\u5a41\u5a42\u5a43\u5a44\u5a45\u5a47\u5a48\u5a4b\u5a4c\u5a4d\u5a4e\u5a4f\u5a50\u5a51\u5a52\u5a53\u5a54\u5a56\u5a57\u5a58\u5a59\u5a5b\u5a5c\u5a5d\u5a5e\u5a5f\u5a60\ufffd".split(""),e=0;e!=r[138].length;++e)65533!==r[138][e].charCodeAt(0)&&(n[r[138][e]]=35328+e,t[35328+e]=r[138][e]);for(r[139]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5a61\u5a63\u5a64\u5a65\u5a66\u5a68\u5a69\u5a6b\u5a6c\u5a6d\u5a6e\u5a6f\u5a70\u5a71\u5a72\u5a73\u5a78\u5a79\u5a7b\u5a7c\u5a7d\u5a7e\u5a80\u5a81\u5a82\u5a83\u5a84\u5a85\u5a86\u5a87\u5a88\u5a89\u5a8a\u5a8b\u5a8c\u5a8d\u5a8e\u5a8f\u5a90\u5a91\u5a93\u5a94\u5a95\u5a96\u5a97\u5a98\u5a99\u5a9c\u5a9d\u5a9e\u5a9f\u5aa0\u5aa1\u5aa2\u5aa3\u5aa4\u5aa5\u5aa6\u5aa7\u5aa8\u5aa9\u5aab\u5aac\ufffd\u5aad\u5aae\u5aaf\u5ab0\u5ab1\u5ab4\u5ab6\u5ab7\u5ab9\u5aba\u5abb\u5abc\u5abd\u5abf\u5ac0\u5ac3\u5ac4\u5ac5\u5ac6\u5ac7\u5ac8\u5aca\u5acb\u5acd\u5ace\u5acf\u5ad0\u5ad1\u5ad3\u5ad5\u5ad7\u5ad9\u5ada\u5adb\u5add\u5ade\u5adf\u5ae2\u5ae4\u5ae5\u5ae7\u5ae8\u5aea\u5aec\u5aed\u5aee\u5aef\u5af0\u5af2\u5af3\u5af4\u5af5\u5af6\u5af7\u5af8\u5af9\u5afa\u5afb\u5afc\u5afd\u5afe\u5aff\u5b00\u5b01\u5b02\u5b03\u5b04\u5b05\u5b06\u5b07\u5b08\u5b0a\u5b0b\u5b0c\u5b0d\u5b0e\u5b0f\u5b10\u5b11\u5b12\u5b13\u5b14\u5b15\u5b18\u5b19\u5b1a\u5b1b\u5b1c\u5b1d\u5b1e\u5b1f\u5b20\u5b21\u5b22\u5b23\u5b24\u5b25\u5b26\u5b27\u5b28\u5b29\u5b2a\u5b2b\u5b2c\u5b2d\u5b2e\u5b2f\u5b30\u5b31\u5b33\u5b35\u5b36\u5b38\u5b39\u5b3a\u5b3b\u5b3c\u5b3d\u5b3e\u5b3f\u5b41\u5b42\u5b43\u5b44\u5b45\u5b46\u5b47\ufffd".split(""),e=0;e!=r[139].length;++e)65533!==r[139][e].charCodeAt(0)&&(n[r[139][e]]=35584+e,t[35584+e]=r[139][e]);for(r[140]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5b48\u5b49\u5b4a\u5b4b\u5b4c\u5b4d\u5b4e\u5b4f\u5b52\u5b56\u5b5e\u5b60\u5b61\u5b67\u5b68\u5b6b\u5b6d\u5b6e\u5b6f\u5b72\u5b74\u5b76\u5b77\u5b78\u5b79\u5b7b\u5b7c\u5b7e\u5b7f\u5b82\u5b86\u5b8a\u5b8d\u5b8e\u5b90\u5b91\u5b92\u5b94\u5b96\u5b9f\u5ba7\u5ba8\u5ba9\u5bac\u5bad\u5bae\u5baf\u5bb1\u5bb2\u5bb7\u5bba\u5bbb\u5bbc\u5bc0\u5bc1\u5bc3\u5bc8\u5bc9\u5bca\u5bcb\u5bcd\u5bce\u5bcf\ufffd\u5bd1\u5bd4\u5bd5\u5bd6\u5bd7\u5bd8\u5bd9\u5bda\u5bdb\u5bdc\u5be0\u5be2\u5be3\u5be6\u5be7\u5be9\u5bea\u5beb\u5bec\u5bed\u5bef\u5bf1\u5bf2\u5bf3\u5bf4\u5bf5\u5bf6\u5bf7\u5bfd\u5bfe\u5c00\u5c02\u5c03\u5c05\u5c07\u5c08\u5c0b\u5c0c\u5c0d\u5c0e\u5c10\u5c12\u5c13\u5c17\u5c19\u5c1b\u5c1e\u5c1f\u5c20\u5c21\u5c23\u5c26\u5c28\u5c29\u5c2a\u5c2b\u5c2d\u5c2e\u5c2f\u5c30\u5c32\u5c33\u5c35\u5c36\u5c37\u5c43\u5c44\u5c46\u5c47\u5c4c\u5c4d\u5c52\u5c53\u5c54\u5c56\u5c57\u5c58\u5c5a\u5c5b\u5c5c\u5c5d\u5c5f\u5c62\u5c64\u5c67\u5c68\u5c69\u5c6a\u5c6b\u5c6c\u5c6d\u5c70\u5c72\u5c73\u5c74\u5c75\u5c76\u5c77\u5c78\u5c7b\u5c7c\u5c7d\u5c7e\u5c80\u5c83\u5c84\u5c85\u5c86\u5c87\u5c89\u5c8a\u5c8b\u5c8e\u5c8f\u5c92\u5c93\u5c95\u5c9d\u5c9e\u5c9f\u5ca0\u5ca1\u5ca4\u5ca5\u5ca6\u5ca7\u5ca8\ufffd".split(""),e=0;e!=r[140].length;++e)65533!==r[140][e].charCodeAt(0)&&(n[r[140][e]]=35840+e,t[35840+e]=r[140][e]);for(r[141]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5caa\u5cae\u5caf\u5cb0\u5cb2\u5cb4\u5cb6\u5cb9\u5cba\u5cbb\u5cbc\u5cbe\u5cc0\u5cc2\u5cc3\u5cc5\u5cc6\u5cc7\u5cc8\u5cc9\u5cca\u5ccc\u5ccd\u5cce\u5ccf\u5cd0\u5cd1\u5cd3\u5cd4\u5cd5\u5cd6\u5cd7\u5cd8\u5cda\u5cdb\u5cdc\u5cdd\u5cde\u5cdf\u5ce0\u5ce2\u5ce3\u5ce7\u5ce9\u5ceb\u5cec\u5cee\u5cef\u5cf1\u5cf2\u5cf3\u5cf4\u5cf5\u5cf6\u5cf7\u5cf8\u5cf9\u5cfa\u5cfc\u5cfd\u5cfe\u5cff\u5d00\ufffd\u5d01\u5d04\u5d05\u5d08\u5d09\u5d0a\u5d0b\u5d0c\u5d0d\u5d0f\u5d10\u5d11\u5d12\u5d13\u5d15\u5d17\u5d18\u5d19\u5d1a\u5d1c\u5d1d\u5d1f\u5d20\u5d21\u5d22\u5d23\u5d25\u5d28\u5d2a\u5d2b\u5d2c\u5d2f\u5d30\u5d31\u5d32\u5d33\u5d35\u5d36\u5d37\u5d38\u5d39\u5d3a\u5d3b\u5d3c\u5d3f\u5d40\u5d41\u5d42\u5d43\u5d44\u5d45\u5d46\u5d48\u5d49\u5d4d\u5d4e\u5d4f\u5d50\u5d51\u5d52\u5d53\u5d54\u5d55\u5d56\u5d57\u5d59\u5d5a\u5d5c\u5d5e\u5d5f\u5d60\u5d61\u5d62\u5d63\u5d64\u5d65\u5d66\u5d67\u5d68\u5d6a\u5d6d\u5d6e\u5d70\u5d71\u5d72\u5d73\u5d75\u5d76\u5d77\u5d78\u5d79\u5d7a\u5d7b\u5d7c\u5d7d\u5d7e\u5d7f\u5d80\u5d81\u5d83\u5d84\u5d85\u5d86\u5d87\u5d88\u5d89\u5d8a\u5d8b\u5d8c\u5d8d\u5d8e\u5d8f\u5d90\u5d91\u5d92\u5d93\u5d94\u5d95\u5d96\u5d97\u5d98\u5d9a\u5d9b\u5d9c\u5d9e\u5d9f\u5da0\ufffd".split(""),e=0;e!=r[141].length;++e)65533!==r[141][e].charCodeAt(0)&&(n[r[141][e]]=36096+e,t[36096+e]=r[141][e]);for(r[142]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5da1\u5da2\u5da3\u5da4\u5da5\u5da6\u5da7\u5da8\u5da9\u5daa\u5dab\u5dac\u5dad\u5dae\u5daf\u5db0\u5db1\u5db2\u5db3\u5db4\u5db5\u5db6\u5db8\u5db9\u5dba\u5dbb\u5dbc\u5dbd\u5dbe\u5dbf\u5dc0\u5dc1\u5dc2\u5dc3\u5dc4\u5dc6\u5dc7\u5dc8\u5dc9\u5dca\u5dcb\u5dcc\u5dce\u5dcf\u5dd0\u5dd1\u5dd2\u5dd3\u5dd4\u5dd5\u5dd6\u5dd7\u5dd8\u5dd9\u5dda\u5ddc\u5ddf\u5de0\u5de3\u5de4\u5dea\u5dec\u5ded\ufffd\u5df0\u5df5\u5df6\u5df8\u5df9\u5dfa\u5dfb\u5dfc\u5dff\u5e00\u5e04\u5e07\u5e09\u5e0a\u5e0b\u5e0d\u5e0e\u5e12\u5e13\u5e17\u5e1e\u5e1f\u5e20\u5e21\u5e22\u5e23\u5e24\u5e25\u5e28\u5e29\u5e2a\u5e2b\u5e2c\u5e2f\u5e30\u5e32\u5e33\u5e34\u5e35\u5e36\u5e39\u5e3a\u5e3e\u5e3f\u5e40\u5e41\u5e43\u5e46\u5e47\u5e48\u5e49\u5e4a\u5e4b\u5e4d\u5e4e\u5e4f\u5e50\u5e51\u5e52\u5e53\u5e56\u5e57\u5e58\u5e59\u5e5a\u5e5c\u5e5d\u5e5f\u5e60\u5e63\u5e64\u5e65\u5e66\u5e67\u5e68\u5e69\u5e6a\u5e6b\u5e6c\u5e6d\u5e6e\u5e6f\u5e70\u5e71\u5e75\u5e77\u5e79\u5e7e\u5e81\u5e82\u5e83\u5e85\u5e88\u5e89\u5e8c\u5e8d\u5e8e\u5e92\u5e98\u5e9b\u5e9d\u5ea1\u5ea2\u5ea3\u5ea4\u5ea8\u5ea9\u5eaa\u5eab\u5eac\u5eae\u5eaf\u5eb0\u5eb1\u5eb2\u5eb4\u5eba\u5ebb\u5ebc\u5ebd\u5ebf\u5ec0\u5ec1\u5ec2\u5ec3\u5ec4\u5ec5\ufffd".split(""),e=0;e!=r[142].length;++e)65533!==r[142][e].charCodeAt(0)&&(n[r[142][e]]=36352+e,t[36352+e]=r[142][e]);for(r[143]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5ec6\u5ec7\u5ec8\u5ecb\u5ecc\u5ecd\u5ece\u5ecf\u5ed0\u5ed4\u5ed5\u5ed7\u5ed8\u5ed9\u5eda\u5edc\u5edd\u5ede\u5edf\u5ee0\u5ee1\u5ee2\u5ee3\u5ee4\u5ee5\u5ee6\u5ee7\u5ee9\u5eeb\u5eec\u5eed\u5eee\u5eef\u5ef0\u5ef1\u5ef2\u5ef3\u5ef5\u5ef8\u5ef9\u5efb\u5efc\u5efd\u5f05\u5f06\u5f07\u5f09\u5f0c\u5f0d\u5f0e\u5f10\u5f12\u5f14\u5f16\u5f19\u5f1a\u5f1c\u5f1d\u5f1e\u5f21\u5f22\u5f23\u5f24\ufffd\u5f28\u5f2b\u5f2c\u5f2e\u5f30\u5f32\u5f33\u5f34\u5f35\u5f36\u5f37\u5f38\u5f3b\u5f3d\u5f3e\u5f3f\u5f41\u5f42\u5f43\u5f44\u5f45\u5f46\u5f47\u5f48\u5f49\u5f4a\u5f4b\u5f4c\u5f4d\u5f4e\u5f4f\u5f51\u5f54\u5f59\u5f5a\u5f5b\u5f5c\u5f5e\u5f5f\u5f60\u5f63\u5f65\u5f67\u5f68\u5f6b\u5f6e\u5f6f\u5f72\u5f74\u5f75\u5f76\u5f78\u5f7a\u5f7d\u5f7e\u5f7f\u5f83\u5f86\u5f8d\u5f8e\u5f8f\u5f91\u5f93\u5f94\u5f96\u5f9a\u5f9b\u5f9d\u5f9e\u5f9f\u5fa0\u5fa2\u5fa3\u5fa4\u5fa5\u5fa6\u5fa7\u5fa9\u5fab\u5fac\u5faf\u5fb0\u5fb1\u5fb2\u5fb3\u5fb4\u5fb6\u5fb8\u5fb9\u5fba\u5fbb\u5fbe\u5fbf\u5fc0\u5fc1\u5fc2\u5fc7\u5fc8\u5fca\u5fcb\u5fce\u5fd3\u5fd4\u5fd5\u5fda\u5fdb\u5fdc\u5fde\u5fdf\u5fe2\u5fe3\u5fe5\u5fe6\u5fe8\u5fe9\u5fec\u5fef\u5ff0\u5ff2\u5ff3\u5ff4\u5ff6\u5ff7\u5ff9\u5ffa\u5ffc\u6007\ufffd".split(""),e=0;e!=r[143].length;++e)65533!==r[143][e].charCodeAt(0)&&(n[r[143][e]]=36608+e,t[36608+e]=r[143][e]);for(r[144]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6008\u6009\u600b\u600c\u6010\u6011\u6013\u6017\u6018\u601a\u601e\u601f\u6022\u6023\u6024\u602c\u602d\u602e\u6030\u6031\u6032\u6033\u6034\u6036\u6037\u6038\u6039\u603a\u603d\u603e\u6040\u6044\u6045\u6046\u6047\u6048\u6049\u604a\u604c\u604e\u604f\u6051\u6053\u6054\u6056\u6057\u6058\u605b\u605c\u605e\u605f\u6060\u6061\u6065\u6066\u606e\u6071\u6072\u6074\u6075\u6077\u607e\u6080\ufffd\u6081\u6082\u6085\u6086\u6087\u6088\u608a\u608b\u608e\u608f\u6090\u6091\u6093\u6095\u6097\u6098\u6099\u609c\u609e\u60a1\u60a2\u60a4\u60a5\u60a7\u60a9\u60aa\u60ae\u60b0\u60b3\u60b5\u60b6\u60b7\u60b9\u60ba\u60bd\u60be\u60bf\u60c0\u60c1\u60c2\u60c3\u60c4\u60c7\u60c8\u60c9\u60cc\u60cd\u60ce\u60cf\u60d0\u60d2\u60d3\u60d4\u60d6\u60d7\u60d9\u60db\u60de\u60e1\u60e2\u60e3\u60e4\u60e5\u60ea\u60f1\u60f2\u60f5\u60f7\u60f8\u60fb\u60fc\u60fd\u60fe\u60ff\u6102\u6103\u6104\u6105\u6107\u610a\u610b\u610c\u6110\u6111\u6112\u6113\u6114\u6116\u6117\u6118\u6119\u611b\u611c\u611d\u611e\u6121\u6122\u6125\u6128\u6129\u612a\u612c\u612d\u612e\u612f\u6130\u6131\u6132\u6133\u6134\u6135\u6136\u6137\u6138\u6139\u613a\u613b\u613c\u613d\u613e\u6140\u6141\u6142\u6143\u6144\u6145\u6146\ufffd".split(""),e=0;e!=r[144].length;++e)65533!==r[144][e].charCodeAt(0)&&(n[r[144][e]]=36864+e,t[36864+e]=r[144][e]);for(r[145]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6147\u6149\u614b\u614d\u614f\u6150\u6152\u6153\u6154\u6156\u6157\u6158\u6159\u615a\u615b\u615c\u615e\u615f\u6160\u6161\u6163\u6164\u6165\u6166\u6169\u616a\u616b\u616c\u616d\u616e\u616f\u6171\u6172\u6173\u6174\u6176\u6178\u6179\u617a\u617b\u617c\u617d\u617e\u617f\u6180\u6181\u6182\u6183\u6184\u6185\u6186\u6187\u6188\u6189\u618a\u618c\u618d\u618f\u6190\u6191\u6192\u6193\u6195\ufffd\u6196\u6197\u6198\u6199\u619a\u619b\u619c\u619e\u619f\u61a0\u61a1\u61a2\u61a3\u61a4\u61a5\u61a6\u61aa\u61ab\u61ad\u61ae\u61af\u61b0\u61b1\u61b2\u61b3\u61b4\u61b5\u61b6\u61b8\u61b9\u61ba\u61bb\u61bc\u61bd\u61bf\u61c0\u61c1\u61c3\u61c4\u61c5\u61c6\u61c7\u61c9\u61cc\u61cd\u61ce\u61cf\u61d0\u61d3\u61d5\u61d6\u61d7\u61d8\u61d9\u61da\u61db\u61dc\u61dd\u61de\u61df\u61e0\u61e1\u61e2\u61e3\u61e4\u61e5\u61e7\u61e8\u61e9\u61ea\u61eb\u61ec\u61ed\u61ee\u61ef\u61f0\u61f1\u61f2\u61f3\u61f4\u61f6\u61f7\u61f8\u61f9\u61fa\u61fb\u61fc\u61fd\u61fe\u6200\u6201\u6202\u6203\u6204\u6205\u6207\u6209\u6213\u6214\u6219\u621c\u621d\u621e\u6220\u6223\u6226\u6227\u6228\u6229\u622b\u622d\u622f\u6230\u6231\u6232\u6235\u6236\u6238\u6239\u623a\u623b\u623c\u6242\u6244\u6245\u6246\u624a\ufffd".split(""),e=0;e!=r[145].length;++e)65533!==r[145][e].charCodeAt(0)&&(n[r[145][e]]=37120+e,t[37120+e]=r[145][e]);for(r[146]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u624f\u6250\u6255\u6256\u6257\u6259\u625a\u625c\u625d\u625e\u625f\u6260\u6261\u6262\u6264\u6265\u6268\u6271\u6272\u6274\u6275\u6277\u6278\u627a\u627b\u627d\u6281\u6282\u6283\u6285\u6286\u6287\u6288\u628b\u628c\u628d\u628e\u628f\u6290\u6294\u6299\u629c\u629d\u629e\u62a3\u62a6\u62a7\u62a9\u62aa\u62ad\u62ae\u62af\u62b0\u62b2\u62b3\u62b4\u62b6\u62b7\u62b8\u62ba\u62be\u62c0\u62c1\ufffd\u62c3\u62cb\u62cf\u62d1\u62d5\u62dd\u62de\u62e0\u62e1\u62e4\u62ea\u62eb\u62f0\u62f2\u62f5\u62f8\u62f9\u62fa\u62fb\u6300\u6303\u6304\u6305\u6306\u630a\u630b\u630c\u630d\u630f\u6310\u6312\u6313\u6314\u6315\u6317\u6318\u6319\u631c\u6326\u6327\u6329\u632c\u632d\u632e\u6330\u6331\u6333\u6334\u6335\u6336\u6337\u6338\u633b\u633c\u633e\u633f\u6340\u6341\u6344\u6347\u6348\u634a\u6351\u6352\u6353\u6354\u6356\u6357\u6358\u6359\u635a\u635b\u635c\u635d\u6360\u6364\u6365\u6366\u6368\u636a\u636b\u636c\u636f\u6370\u6372\u6373\u6374\u6375\u6378\u6379\u637c\u637d\u637e\u637f\u6381\u6383\u6384\u6385\u6386\u638b\u638d\u6391\u6393\u6394\u6395\u6397\u6399\u639a\u639b\u639c\u639d\u639e\u639f\u63a1\u63a4\u63a6\u63ab\u63af\u63b1\u63b2\u63b5\u63b6\u63b9\u63bb\u63bd\u63bf\u63c0\ufffd".split(""),e=0;e!=r[146].length;++e)65533!==r[146][e].charCodeAt(0)&&(n[r[146][e]]=37376+e,t[37376+e]=r[146][e]);for(r[147]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u63c1\u63c2\u63c3\u63c5\u63c7\u63c8\u63ca\u63cb\u63cc\u63d1\u63d3\u63d4\u63d5\u63d7\u63d8\u63d9\u63da\u63db\u63dc\u63dd\u63df\u63e2\u63e4\u63e5\u63e6\u63e7\u63e8\u63eb\u63ec\u63ee\u63ef\u63f0\u63f1\u63f3\u63f5\u63f7\u63f9\u63fa\u63fb\u63fc\u63fe\u6403\u6404\u6406\u6407\u6408\u6409\u640a\u640d\u640e\u6411\u6412\u6415\u6416\u6417\u6418\u6419\u641a\u641d\u641f\u6422\u6423\u6424\ufffd\u6425\u6427\u6428\u6429\u642b\u642e\u642f\u6430\u6431\u6432\u6433\u6435\u6436\u6437\u6438\u6439\u643b\u643c\u643e\u6440\u6442\u6443\u6449\u644b\u644c\u644d\u644e\u644f\u6450\u6451\u6453\u6455\u6456\u6457\u6459\u645a\u645b\u645c\u645d\u645f\u6460\u6461\u6462\u6463\u6464\u6465\u6466\u6468\u646a\u646b\u646c\u646e\u646f\u6470\u6471\u6472\u6473\u6474\u6475\u6476\u6477\u647b\u647c\u647d\u647e\u647f\u6480\u6481\u6483\u6486\u6488\u6489\u648a\u648b\u648c\u648d\u648e\u648f\u6490\u6493\u6494\u6497\u6498\u649a\u649b\u649c\u649d\u649f\u64a0\u64a1\u64a2\u64a3\u64a5\u64a6\u64a7\u64a8\u64aa\u64ab\u64af\u64b1\u64b2\u64b3\u64b4\u64b6\u64b9\u64bb\u64bd\u64be\u64bf\u64c1\u64c3\u64c4\u64c6\u64c7\u64c8\u64c9\u64ca\u64cb\u64cc\u64cf\u64d1\u64d3\u64d4\u64d5\u64d6\u64d9\u64da\ufffd".split(""),e=0;e!=r[147].length;++e)65533!==r[147][e].charCodeAt(0)&&(n[r[147][e]]=37632+e,t[37632+e]=r[147][e]);for(r[148]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u64db\u64dc\u64dd\u64df\u64e0\u64e1\u64e3\u64e5\u64e7\u64e8\u64e9\u64ea\u64eb\u64ec\u64ed\u64ee\u64ef\u64f0\u64f1\u64f2\u64f3\u64f4\u64f5\u64f6\u64f7\u64f8\u64f9\u64fa\u64fb\u64fc\u64fd\u64fe\u64ff\u6501\u6502\u6503\u6504\u6505\u6506\u6507\u6508\u650a\u650b\u650c\u650d\u650e\u650f\u6510\u6511\u6513\u6514\u6515\u6516\u6517\u6519\u651a\u651b\u651c\u651d\u651e\u651f\u6520\u6521\ufffd\u6522\u6523\u6524\u6526\u6527\u6528\u6529\u652a\u652c\u652d\u6530\u6531\u6532\u6533\u6537\u653a\u653c\u653d\u6540\u6541\u6542\u6543\u6544\u6546\u6547\u654a\u654b\u654d\u654e\u6550\u6552\u6553\u6554\u6557\u6558\u655a\u655c\u655f\u6560\u6561\u6564\u6565\u6567\u6568\u6569\u656a\u656d\u656e\u656f\u6571\u6573\u6575\u6576\u6578\u6579\u657a\u657b\u657c\u657d\u657e\u657f\u6580\u6581\u6582\u6583\u6584\u6585\u6586\u6588\u6589\u658a\u658d\u658e\u658f\u6592\u6594\u6595\u6596\u6598\u659a\u659d\u659e\u65a0\u65a2\u65a3\u65a6\u65a8\u65aa\u65ac\u65ae\u65b1\u65b2\u65b3\u65b4\u65b5\u65b6\u65b7\u65b8\u65ba\u65bb\u65be\u65bf\u65c0\u65c2\u65c7\u65c8\u65c9\u65ca\u65cd\u65d0\u65d1\u65d3\u65d4\u65d5\u65d8\u65d9\u65da\u65db\u65dc\u65dd\u65de\u65df\u65e1\u65e3\u65e4\u65ea\u65eb\ufffd".split(""),e=0;e!=r[148].length;++e)65533!==r[148][e].charCodeAt(0)&&(n[r[148][e]]=37888+e,t[37888+e]=r[148][e]);for(r[149]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u65f2\u65f3\u65f4\u65f5\u65f8\u65f9\u65fb\u65fc\u65fd\u65fe\u65ff\u6601\u6604\u6605\u6607\u6608\u6609\u660b\u660d\u6610\u6611\u6612\u6616\u6617\u6618\u661a\u661b\u661c\u661e\u6621\u6622\u6623\u6624\u6626\u6629\u662a\u662b\u662c\u662e\u6630\u6632\u6633\u6637\u6638\u6639\u663a\u663b\u663d\u663f\u6640\u6642\u6644\u6645\u6646\u6647\u6648\u6649\u664a\u664d\u664e\u6650\u6651\u6658\ufffd\u6659\u665b\u665c\u665d\u665e\u6660\u6662\u6663\u6665\u6667\u6669\u666a\u666b\u666c\u666d\u6671\u6672\u6673\u6675\u6678\u6679\u667b\u667c\u667d\u667f\u6680\u6681\u6683\u6685\u6686\u6688\u6689\u668a\u668b\u668d\u668e\u668f\u6690\u6692\u6693\u6694\u6695\u6698\u6699\u669a\u669b\u669c\u669e\u669f\u66a0\u66a1\u66a2\u66a3\u66a4\u66a5\u66a6\u66a9\u66aa\u66ab\u66ac\u66ad\u66af\u66b0\u66b1\u66b2\u66b3\u66b5\u66b6\u66b7\u66b8\u66ba\u66bb\u66bc\u66bd\u66bf\u66c0\u66c1\u66c2\u66c3\u66c4\u66c5\u66c6\u66c7\u66c8\u66c9\u66ca\u66cb\u66cc\u66cd\u66ce\u66cf\u66d0\u66d1\u66d2\u66d3\u66d4\u66d5\u66d6\u66d7\u66d8\u66da\u66de\u66df\u66e0\u66e1\u66e2\u66e3\u66e4\u66e5\u66e7\u66e8\u66ea\u66eb\u66ec\u66ed\u66ee\u66ef\u66f1\u66f5\u66f6\u66f8\u66fa\u66fb\u66fd\u6701\u6702\u6703\ufffd".split(""),e=0;e!=r[149].length;++e)65533!==r[149][e].charCodeAt(0)&&(n[r[149][e]]=38144+e,t[38144+e]=r[149][e]);for(r[150]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6704\u6705\u6706\u6707\u670c\u670e\u670f\u6711\u6712\u6713\u6716\u6718\u6719\u671a\u671c\u671e\u6720\u6721\u6722\u6723\u6724\u6725\u6727\u6729\u672e\u6730\u6732\u6733\u6736\u6737\u6738\u6739\u673b\u673c\u673e\u673f\u6741\u6744\u6745\u6747\u674a\u674b\u674d\u6752\u6754\u6755\u6757\u6758\u6759\u675a\u675b\u675d\u6762\u6763\u6764\u6766\u6767\u676b\u676c\u676e\u6771\u6774\u6776\ufffd\u6778\u6779\u677a\u677b\u677d\u6780\u6782\u6783\u6785\u6786\u6788\u678a\u678c\u678d\u678e\u678f\u6791\u6792\u6793\u6794\u6796\u6799\u679b\u679f\u67a0\u67a1\u67a4\u67a6\u67a9\u67ac\u67ae\u67b1\u67b2\u67b4\u67b9\u67ba\u67bb\u67bc\u67bd\u67be\u67bf\u67c0\u67c2\u67c5\u67c6\u67c7\u67c8\u67c9\u67ca\u67cb\u67cc\u67cd\u67ce\u67d5\u67d6\u67d7\u67db\u67df\u67e1\u67e3\u67e4\u67e6\u67e7\u67e8\u67ea\u67eb\u67ed\u67ee\u67f2\u67f5\u67f6\u67f7\u67f8\u67f9\u67fa\u67fb\u67fc\u67fe\u6801\u6802\u6803\u6804\u6806\u680d\u6810\u6812\u6814\u6815\u6818\u6819\u681a\u681b\u681c\u681e\u681f\u6820\u6822\u6823\u6824\u6825\u6826\u6827\u6828\u682b\u682c\u682d\u682e\u682f\u6830\u6831\u6834\u6835\u6836\u683a\u683b\u683f\u6847\u684b\u684d\u684f\u6852\u6856\u6857\u6858\u6859\u685a\u685b\ufffd".split(""),e=0;e!=r[150].length;++e)65533!==r[150][e].charCodeAt(0)&&(n[r[150][e]]=38400+e,t[38400+e]=r[150][e]);for(r[151]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u685c\u685d\u685e\u685f\u686a\u686c\u686d\u686e\u686f\u6870\u6871\u6872\u6873\u6875\u6878\u6879\u687a\u687b\u687c\u687d\u687e\u687f\u6880\u6882\u6884\u6887\u6888\u6889\u688a\u688b\u688c\u688d\u688e\u6890\u6891\u6892\u6894\u6895\u6896\u6898\u6899\u689a\u689b\u689c\u689d\u689e\u689f\u68a0\u68a1\u68a3\u68a4\u68a5\u68a9\u68aa\u68ab\u68ac\u68ae\u68b1\u68b2\u68b4\u68b6\u68b7\u68b8\ufffd\u68b9\u68ba\u68bb\u68bc\u68bd\u68be\u68bf\u68c1\u68c3\u68c4\u68c5\u68c6\u68c7\u68c8\u68ca\u68cc\u68ce\u68cf\u68d0\u68d1\u68d3\u68d4\u68d6\u68d7\u68d9\u68db\u68dc\u68dd\u68de\u68df\u68e1\u68e2\u68e4\u68e5\u68e6\u68e7\u68e8\u68e9\u68ea\u68eb\u68ec\u68ed\u68ef\u68f2\u68f3\u68f4\u68f6\u68f7\u68f8\u68fb\u68fd\u68fe\u68ff\u6900\u6902\u6903\u6904\u6906\u6907\u6908\u6909\u690a\u690c\u690f\u6911\u6913\u6914\u6915\u6916\u6917\u6918\u6919\u691a\u691b\u691c\u691d\u691e\u6921\u6922\u6923\u6925\u6926\u6927\u6928\u6929\u692a\u692b\u692c\u692e\u692f\u6931\u6932\u6933\u6935\u6936\u6937\u6938\u693a\u693b\u693c\u693e\u6940\u6941\u6943\u6944\u6945\u6946\u6947\u6948\u6949\u694a\u694b\u694c\u694d\u694e\u694f\u6950\u6951\u6952\u6953\u6955\u6956\u6958\u6959\u695b\u695c\u695f\ufffd".split(""),e=0;e!=r[151].length;++e)65533!==r[151][e].charCodeAt(0)&&(n[r[151][e]]=38656+e,t[38656+e]=r[151][e]);for(r[152]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6961\u6962\u6964\u6965\u6967\u6968\u6969\u696a\u696c\u696d\u696f\u6970\u6972\u6973\u6974\u6975\u6976\u697a\u697b\u697d\u697e\u697f\u6981\u6983\u6985\u698a\u698b\u698c\u698e\u698f\u6990\u6991\u6992\u6993\u6996\u6997\u6999\u699a\u699d\u699e\u699f\u69a0\u69a1\u69a2\u69a3\u69a4\u69a5\u69a6\u69a9\u69aa\u69ac\u69ae\u69af\u69b0\u69b2\u69b3\u69b5\u69b6\u69b8\u69b9\u69ba\u69bc\u69bd\ufffd\u69be\u69bf\u69c0\u69c2\u69c3\u69c4\u69c5\u69c6\u69c7\u69c8\u69c9\u69cb\u69cd\u69cf\u69d1\u69d2\u69d3\u69d5\u69d6\u69d7\u69d8\u69d9\u69da\u69dc\u69dd\u69de\u69e1\u69e2\u69e3\u69e4\u69e5\u69e6\u69e7\u69e8\u69e9\u69ea\u69eb\u69ec\u69ee\u69ef\u69f0\u69f1\u69f3\u69f4\u69f5\u69f6\u69f7\u69f8\u69f9\u69fa\u69fb\u69fc\u69fe\u6a00\u6a01\u6a02\u6a03\u6a04\u6a05\u6a06\u6a07\u6a08\u6a09\u6a0b\u6a0c\u6a0d\u6a0e\u6a0f\u6a10\u6a11\u6a12\u6a13\u6a14\u6a15\u6a16\u6a19\u6a1a\u6a1b\u6a1c\u6a1d\u6a1e\u6a20\u6a22\u6a23\u6a24\u6a25\u6a26\u6a27\u6a29\u6a2b\u6a2c\u6a2d\u6a2e\u6a30\u6a32\u6a33\u6a34\u6a36\u6a37\u6a38\u6a39\u6a3a\u6a3b\u6a3c\u6a3f\u6a40\u6a41\u6a42\u6a43\u6a45\u6a46\u6a48\u6a49\u6a4a\u6a4b\u6a4c\u6a4d\u6a4e\u6a4f\u6a51\u6a52\u6a53\u6a54\u6a55\u6a56\u6a57\u6a5a\ufffd".split(""),e=0;e!=r[152].length;++e)65533!==r[152][e].charCodeAt(0)&&(n[r[152][e]]=38912+e,t[38912+e]=r[152][e]);for(r[153]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6a5c\u6a5d\u6a5e\u6a5f\u6a60\u6a62\u6a63\u6a64\u6a66\u6a67\u6a68\u6a69\u6a6a\u6a6b\u6a6c\u6a6d\u6a6e\u6a6f\u6a70\u6a72\u6a73\u6a74\u6a75\u6a76\u6a77\u6a78\u6a7a\u6a7b\u6a7d\u6a7e\u6a7f\u6a81\u6a82\u6a83\u6a85\u6a86\u6a87\u6a88\u6a89\u6a8a\u6a8b\u6a8c\u6a8d\u6a8f\u6a92\u6a93\u6a94\u6a95\u6a96\u6a98\u6a99\u6a9a\u6a9b\u6a9c\u6a9d\u6a9e\u6a9f\u6aa1\u6aa2\u6aa3\u6aa4\u6aa5\u6aa6\ufffd\u6aa7\u6aa8\u6aaa\u6aad\u6aae\u6aaf\u6ab0\u6ab1\u6ab2\u6ab3\u6ab4\u6ab5\u6ab6\u6ab7\u6ab8\u6ab9\u6aba\u6abb\u6abc\u6abd\u6abe\u6abf\u6ac0\u6ac1\u6ac2\u6ac3\u6ac4\u6ac5\u6ac6\u6ac7\u6ac8\u6ac9\u6aca\u6acb\u6acc\u6acd\u6ace\u6acf\u6ad0\u6ad1\u6ad2\u6ad3\u6ad4\u6ad5\u6ad6\u6ad7\u6ad8\u6ad9\u6ada\u6adb\u6adc\u6add\u6ade\u6adf\u6ae0\u6ae1\u6ae2\u6ae3\u6ae4\u6ae5\u6ae6\u6ae7\u6ae8\u6ae9\u6aea\u6aeb\u6aec\u6aed\u6aee\u6aef\u6af0\u6af1\u6af2\u6af3\u6af4\u6af5\u6af6\u6af7\u6af8\u6af9\u6afa\u6afb\u6afc\u6afd\u6afe\u6aff\u6b00\u6b01\u6b02\u6b03\u6b04\u6b05\u6b06\u6b07\u6b08\u6b09\u6b0a\u6b0b\u6b0c\u6b0d\u6b0e\u6b0f\u6b10\u6b11\u6b12\u6b13\u6b14\u6b15\u6b16\u6b17\u6b18\u6b19\u6b1a\u6b1b\u6b1c\u6b1d\u6b1e\u6b1f\u6b25\u6b26\u6b28\u6b29\u6b2a\u6b2b\u6b2c\u6b2d\u6b2e\ufffd".split(""),e=0;e!=r[153].length;++e)65533!==r[153][e].charCodeAt(0)&&(n[r[153][e]]=39168+e,t[39168+e]=r[153][e]);for(r[154]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6b2f\u6b30\u6b31\u6b33\u6b34\u6b35\u6b36\u6b38\u6b3b\u6b3c\u6b3d\u6b3f\u6b40\u6b41\u6b42\u6b44\u6b45\u6b48\u6b4a\u6b4b\u6b4d\u6b4e\u6b4f\u6b50\u6b51\u6b52\u6b53\u6b54\u6b55\u6b56\u6b57\u6b58\u6b5a\u6b5b\u6b5c\u6b5d\u6b5e\u6b5f\u6b60\u6b61\u6b68\u6b69\u6b6b\u6b6c\u6b6d\u6b6e\u6b6f\u6b70\u6b71\u6b72\u6b73\u6b74\u6b75\u6b76\u6b77\u6b78\u6b7a\u6b7d\u6b7e\u6b7f\u6b80\u6b85\u6b88\ufffd\u6b8c\u6b8e\u6b8f\u6b90\u6b91\u6b94\u6b95\u6b97\u6b98\u6b99\u6b9c\u6b9d\u6b9e\u6b9f\u6ba0\u6ba2\u6ba3\u6ba4\u6ba5\u6ba6\u6ba7\u6ba8\u6ba9\u6bab\u6bac\u6bad\u6bae\u6baf\u6bb0\u6bb1\u6bb2\u6bb6\u6bb8\u6bb9\u6bba\u6bbb\u6bbc\u6bbd\u6bbe\u6bc0\u6bc3\u6bc4\u6bc6\u6bc7\u6bc8\u6bc9\u6bca\u6bcc\u6bce\u6bd0\u6bd1\u6bd8\u6bda\u6bdc\u6bdd\u6bde\u6bdf\u6be0\u6be2\u6be3\u6be4\u6be5\u6be6\u6be7\u6be8\u6be9\u6bec\u6bed\u6bee\u6bf0\u6bf1\u6bf2\u6bf4\u6bf6\u6bf7\u6bf8\u6bfa\u6bfb\u6bfc\u6bfe\u6bff\u6c00\u6c01\u6c02\u6c03\u6c04\u6c08\u6c09\u6c0a\u6c0b\u6c0c\u6c0e\u6c12\u6c17\u6c1c\u6c1d\u6c1e\u6c20\u6c23\u6c25\u6c2b\u6c2c\u6c2d\u6c31\u6c33\u6c36\u6c37\u6c39\u6c3a\u6c3b\u6c3c\u6c3e\u6c3f\u6c43\u6c44\u6c45\u6c48\u6c4b\u6c4c\u6c4d\u6c4e\u6c4f\u6c51\u6c52\u6c53\u6c56\u6c58\ufffd".split(""),e=0;e!=r[154].length;++e)65533!==r[154][e].charCodeAt(0)&&(n[r[154][e]]=39424+e,t[39424+e]=r[154][e]);for(r[155]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6c59\u6c5a\u6c62\u6c63\u6c65\u6c66\u6c67\u6c6b\u6c6c\u6c6d\u6c6e\u6c6f\u6c71\u6c73\u6c75\u6c77\u6c78\u6c7a\u6c7b\u6c7c\u6c7f\u6c80\u6c84\u6c87\u6c8a\u6c8b\u6c8d\u6c8e\u6c91\u6c92\u6c95\u6c96\u6c97\u6c98\u6c9a\u6c9c\u6c9d\u6c9e\u6ca0\u6ca2\u6ca8\u6cac\u6caf\u6cb0\u6cb4\u6cb5\u6cb6\u6cb7\u6cba\u6cc0\u6cc1\u6cc2\u6cc3\u6cc6\u6cc7\u6cc8\u6ccb\u6ccd\u6cce\u6ccf\u6cd1\u6cd2\u6cd8\ufffd\u6cd9\u6cda\u6cdc\u6cdd\u6cdf\u6ce4\u6ce6\u6ce7\u6ce9\u6cec\u6ced\u6cf2\u6cf4\u6cf9\u6cff\u6d00\u6d02\u6d03\u6d05\u6d06\u6d08\u6d09\u6d0a\u6d0d\u6d0f\u6d10\u6d11\u6d13\u6d14\u6d15\u6d16\u6d18\u6d1c\u6d1d\u6d1f\u6d20\u6d21\u6d22\u6d23\u6d24\u6d26\u6d28\u6d29\u6d2c\u6d2d\u6d2f\u6d30\u6d34\u6d36\u6d37\u6d38\u6d3a\u6d3f\u6d40\u6d42\u6d44\u6d49\u6d4c\u6d50\u6d55\u6d56\u6d57\u6d58\u6d5b\u6d5d\u6d5f\u6d61\u6d62\u6d64\u6d65\u6d67\u6d68\u6d6b\u6d6c\u6d6d\u6d70\u6d71\u6d72\u6d73\u6d75\u6d76\u6d79\u6d7a\u6d7b\u6d7d\u6d7e\u6d7f\u6d80\u6d81\u6d83\u6d84\u6d86\u6d87\u6d8a\u6d8b\u6d8d\u6d8f\u6d90\u6d92\u6d96\u6d97\u6d98\u6d99\u6d9a\u6d9c\u6da2\u6da5\u6dac\u6dad\u6db0\u6db1\u6db3\u6db4\u6db6\u6db7\u6db9\u6dba\u6dbb\u6dbc\u6dbd\u6dbe\u6dc1\u6dc2\u6dc3\u6dc8\u6dc9\u6dca\ufffd".split(""),e=0;e!=r[155].length;++e)65533!==r[155][e].charCodeAt(0)&&(n[r[155][e]]=39680+e,t[39680+e]=r[155][e]);for(r[156]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6dcd\u6dce\u6dcf\u6dd0\u6dd2\u6dd3\u6dd4\u6dd5\u6dd7\u6dda\u6ddb\u6ddc\u6ddf\u6de2\u6de3\u6de5\u6de7\u6de8\u6de9\u6dea\u6ded\u6def\u6df0\u6df2\u6df4\u6df5\u6df6\u6df8\u6dfa\u6dfd\u6dfe\u6dff\u6e00\u6e01\u6e02\u6e03\u6e04\u6e06\u6e07\u6e08\u6e09\u6e0b\u6e0f\u6e12\u6e13\u6e15\u6e18\u6e19\u6e1b\u6e1c\u6e1e\u6e1f\u6e22\u6e26\u6e27\u6e28\u6e2a\u6e2c\u6e2e\u6e30\u6e31\u6e33\u6e35\ufffd\u6e36\u6e37\u6e39\u6e3b\u6e3c\u6e3d\u6e3e\u6e3f\u6e40\u6e41\u6e42\u6e45\u6e46\u6e47\u6e48\u6e49\u6e4a\u6e4b\u6e4c\u6e4f\u6e50\u6e51\u6e52\u6e55\u6e57\u6e59\u6e5a\u6e5c\u6e5d\u6e5e\u6e60\u6e61\u6e62\u6e63\u6e64\u6e65\u6e66\u6e67\u6e68\u6e69\u6e6a\u6e6c\u6e6d\u6e6f\u6e70\u6e71\u6e72\u6e73\u6e74\u6e75\u6e76\u6e77\u6e78\u6e79\u6e7a\u6e7b\u6e7c\u6e7d\u6e80\u6e81\u6e82\u6e84\u6e87\u6e88\u6e8a\u6e8b\u6e8c\u6e8d\u6e8e\u6e91\u6e92\u6e93\u6e94\u6e95\u6e96\u6e97\u6e99\u6e9a\u6e9b\u6e9d\u6e9e\u6ea0\u6ea1\u6ea3\u6ea4\u6ea6\u6ea8\u6ea9\u6eab\u6eac\u6ead\u6eae\u6eb0\u6eb3\u6eb5\u6eb8\u6eb9\u6ebc\u6ebe\u6ebf\u6ec0\u6ec3\u6ec4\u6ec5\u6ec6\u6ec8\u6ec9\u6eca\u6ecc\u6ecd\u6ece\u6ed0\u6ed2\u6ed6\u6ed8\u6ed9\u6edb\u6edc\u6edd\u6ee3\u6ee7\u6eea\u6eeb\u6eec\u6eed\u6eee\u6eef\ufffd".split(""),e=0;e!=r[156].length;++e)65533!==r[156][e].charCodeAt(0)&&(n[r[156][e]]=39936+e,t[39936+e]=r[156][e]);for(r[157]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6ef0\u6ef1\u6ef2\u6ef3\u6ef5\u6ef6\u6ef7\u6ef8\u6efa\u6efb\u6efc\u6efd\u6efe\u6eff\u6f00\u6f01\u6f03\u6f04\u6f05\u6f07\u6f08\u6f0a\u6f0b\u6f0c\u6f0d\u6f0e\u6f10\u6f11\u6f12\u6f16\u6f17\u6f18\u6f19\u6f1a\u6f1b\u6f1c\u6f1d\u6f1e\u6f1f\u6f21\u6f22\u6f23\u6f25\u6f26\u6f27\u6f28\u6f2c\u6f2e\u6f30\u6f32\u6f34\u6f35\u6f37\u6f38\u6f39\u6f3a\u6f3b\u6f3c\u6f3d\u6f3f\u6f40\u6f41\u6f42\ufffd\u6f43\u6f44\u6f45\u6f48\u6f49\u6f4a\u6f4c\u6f4e\u6f4f\u6f50\u6f51\u6f52\u6f53\u6f54\u6f55\u6f56\u6f57\u6f59\u6f5a\u6f5b\u6f5d\u6f5f\u6f60\u6f61\u6f63\u6f64\u6f65\u6f67\u6f68\u6f69\u6f6a\u6f6b\u6f6c\u6f6f\u6f70\u6f71\u6f73\u6f75\u6f76\u6f77\u6f79\u6f7b\u6f7d\u6f7e\u6f7f\u6f80\u6f81\u6f82\u6f83\u6f85\u6f86\u6f87\u6f8a\u6f8b\u6f8f\u6f90\u6f91\u6f92\u6f93\u6f94\u6f95\u6f96\u6f97\u6f98\u6f99\u6f9a\u6f9b\u6f9d\u6f9e\u6f9f\u6fa0\u6fa2\u6fa3\u6fa4\u6fa5\u6fa6\u6fa8\u6fa9\u6faa\u6fab\u6fac\u6fad\u6fae\u6faf\u6fb0\u6fb1\u6fb2\u6fb4\u6fb5\u6fb7\u6fb8\u6fba\u6fbb\u6fbc\u6fbd\u6fbe\u6fbf\u6fc1\u6fc3\u6fc4\u6fc5\u6fc6\u6fc7\u6fc8\u6fca\u6fcb\u6fcc\u6fcd\u6fce\u6fcf\u6fd0\u6fd3\u6fd4\u6fd5\u6fd6\u6fd7\u6fd8\u6fd9\u6fda\u6fdb\u6fdc\u6fdd\u6fdf\u6fe2\u6fe3\u6fe4\u6fe5\ufffd".split(""),e=0;e!=r[157].length;++e)65533!==r[157][e].charCodeAt(0)&&(n[r[157][e]]=40192+e,t[40192+e]=r[157][e]);for(r[158]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6fe6\u6fe7\u6fe8\u6fe9\u6fea\u6feb\u6fec\u6fed\u6ff0\u6ff1\u6ff2\u6ff3\u6ff4\u6ff5\u6ff6\u6ff7\u6ff8\u6ff9\u6ffa\u6ffb\u6ffc\u6ffd\u6ffe\u6fff\u7000\u7001\u7002\u7003\u7004\u7005\u7006\u7007\u7008\u7009\u700a\u700b\u700c\u700d\u700e\u700f\u7010\u7012\u7013\u7014\u7015\u7016\u7017\u7018\u7019\u701c\u701d\u701e\u701f\u7020\u7021\u7022\u7024\u7025\u7026\u7027\u7028\u7029\u702a\ufffd\u702b\u702c\u702d\u702e\u702f\u7030\u7031\u7032\u7033\u7034\u7036\u7037\u7038\u703a\u703b\u703c\u703d\u703e\u703f\u7040\u7041\u7042\u7043\u7044\u7045\u7046\u7047\u7048\u7049\u704a\u704b\u704d\u704e\u7050\u7051\u7052\u7053\u7054\u7055\u7056\u7057\u7058\u7059\u705a\u705b\u705c\u705d\u705f\u7060\u7061\u7062\u7063\u7064\u7065\u7066\u7067\u7068\u7069\u706a\u706e\u7071\u7072\u7073\u7074\u7077\u7079\u707a\u707b\u707d\u7081\u7082\u7083\u7084\u7086\u7087\u7088\u708b\u708c\u708d\u708f\u7090\u7091\u7093\u7097\u7098\u709a\u709b\u709e\u709f\u70a0\u70a1\u70a2\u70a3\u70a4\u70a5\u70a6\u70a7\u70a8\u70a9\u70aa\u70b0\u70b2\u70b4\u70b5\u70b6\u70ba\u70be\u70bf\u70c4\u70c5\u70c6\u70c7\u70c9\u70cb\u70cc\u70cd\u70ce\u70cf\u70d0\u70d1\u70d2\u70d3\u70d4\u70d5\u70d6\u70d7\u70da\ufffd".split(""),e=0;e!=r[158].length;++e)65533!==r[158][e].charCodeAt(0)&&(n[r[158][e]]=40448+e,t[40448+e]=r[158][e]);for(r[159]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u70dc\u70dd\u70de\u70e0\u70e1\u70e2\u70e3\u70e5\u70ea\u70ee\u70f0\u70f1\u70f2\u70f3\u70f4\u70f5\u70f6\u70f8\u70fa\u70fb\u70fc\u70fe\u70ff\u7100\u7101\u7102\u7103\u7104\u7105\u7106\u7107\u7108\u710b\u710c\u710d\u710e\u710f\u7111\u7112\u7114\u7117\u711b\u711c\u711d\u711e\u711f\u7120\u7121\u7122\u7123\u7124\u7125\u7127\u7128\u7129\u712a\u712b\u712c\u712d\u712e\u7132\u7133\u7134\ufffd\u7135\u7137\u7138\u7139\u713a\u713b\u713c\u713d\u713e\u713f\u7140\u7141\u7142\u7143\u7144\u7146\u7147\u7148\u7149\u714b\u714d\u714f\u7150\u7151\u7152\u7153\u7154\u7155\u7156\u7157\u7158\u7159\u715a\u715b\u715d\u715f\u7160\u7161\u7162\u7163\u7165\u7169\u716a\u716b\u716c\u716d\u716f\u7170\u7171\u7174\u7175\u7176\u7177\u7179\u717b\u717c\u717e\u717f\u7180\u7181\u7182\u7183\u7185\u7186\u7187\u7188\u7189\u718b\u718c\u718d\u718e\u7190\u7191\u7192\u7193\u7195\u7196\u7197\u719a\u719b\u719c\u719d\u719e\u71a1\u71a2\u71a3\u71a4\u71a5\u71a6\u71a7\u71a9\u71aa\u71ab\u71ad\u71ae\u71af\u71b0\u71b1\u71b2\u71b4\u71b6\u71b7\u71b8\u71ba\u71bb\u71bc\u71bd\u71be\u71bf\u71c0\u71c1\u71c2\u71c4\u71c5\u71c6\u71c7\u71c8\u71c9\u71ca\u71cb\u71cc\u71cd\u71cf\u71d0\u71d1\u71d2\u71d3\ufffd".split(""),e=0;e!=r[159].length;++e)65533!==r[159][e].charCodeAt(0)&&(n[r[159][e]]=40704+e,t[40704+e]=r[159][e]);for(r[160]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u71d6\u71d7\u71d8\u71d9\u71da\u71db\u71dc\u71dd\u71de\u71df\u71e1\u71e2\u71e3\u71e4\u71e6\u71e8\u71e9\u71ea\u71eb\u71ec\u71ed\u71ef\u71f0\u71f1\u71f2\u71f3\u71f4\u71f5\u71f6\u71f7\u71f8\u71fa\u71fb\u71fc\u71fd\u71fe\u71ff\u7200\u7201\u7202\u7203\u7204\u7205\u7207\u7208\u7209\u720a\u720b\u720c\u720d\u720e\u720f\u7210\u7211\u7212\u7213\u7214\u7215\u7216\u7217\u7218\u7219\u721a\ufffd\u721b\u721c\u721e\u721f\u7220\u7221\u7222\u7223\u7224\u7225\u7226\u7227\u7229\u722b\u722d\u722e\u722f\u7232\u7233\u7234\u723a\u723c\u723e\u7240\u7241\u7242\u7243\u7244\u7245\u7246\u7249\u724a\u724b\u724e\u724f\u7250\u7251\u7253\u7254\u7255\u7257\u7258\u725a\u725c\u725e\u7260\u7263\u7264\u7265\u7268\u726a\u726b\u726c\u726d\u7270\u7271\u7273\u7274\u7276\u7277\u7278\u727b\u727c\u727d\u7282\u7283\u7285\u7286\u7287\u7288\u7289\u728c\u728e\u7290\u7291\u7293\u7294\u7295\u7296\u7297\u7298\u7299\u729a\u729b\u729c\u729d\u729e\u72a0\u72a1\u72a2\u72a3\u72a4\u72a5\u72a6\u72a7\u72a8\u72a9\u72aa\u72ab\u72ae\u72b1\u72b2\u72b3\u72b5\u72ba\u72bb\u72bc\u72bd\u72be\u72bf\u72c0\u72c5\u72c6\u72c7\u72c9\u72ca\u72cb\u72cc\u72cf\u72d1\u72d3\u72d4\u72d5\u72d6\u72d8\u72da\u72db\ufffd".split(""),e=0;e!=r[160].length;++e)65533!==r[160][e].charCodeAt(0)&&(n[r[160][e]]=40960+e,t[40960+e]=r[160][e]);for(r[161]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u3000\u3001\u3002\xb7\u02c9\u02c7\xa8\u3003\u3005\u2014\uff5e\u2016\u2026\u2018\u2019\u201c\u201d\u3014\u3015\u3008\u3009\u300a\u300b\u300c\u300d\u300e\u300f\u3016\u3017\u3010\u3011\xb1\xd7\xf7\u2236\u2227\u2228\u2211\u220f\u222a\u2229\u2208\u2237\u221a\u22a5\u2225\u2220\u2312\u2299\u222b\u222e\u2261\u224c\u2248\u223d\u221d\u2260\u226e\u226f\u2264\u2265\u221e\u2235\u2234\u2642\u2640\xb0\u2032\u2033\u2103\uff04\xa4\uffe0\uffe1\u2030\xa7\u2116\u2606\u2605\u25cb\u25cf\u25ce\u25c7\u25c6\u25a1\u25a0\u25b3\u25b2\u203b\u2192\u2190\u2191\u2193\u3013\ufffd".split(""),e=0;e!=r[161].length;++e)65533!==r[161][e].charCodeAt(0)&&(n[r[161][e]]=41216+e,t[41216+e]=r[161][e]);for(r[162]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u2170\u2171\u2172\u2173\u2174\u2175\u2176\u2177\u2178\u2179\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u2488\u2489\u248a\u248b\u248c\u248d\u248e\u248f\u2490\u2491\u2492\u2493\u2494\u2495\u2496\u2497\u2498\u2499\u249a\u249b\u2474\u2475\u2476\u2477\u2478\u2479\u247a\u247b\u247c\u247d\u247e\u247f\u2480\u2481\u2482\u2483\u2484\u2485\u2486\u2487\u2460\u2461\u2462\u2463\u2464\u2465\u2466\u2467\u2468\u2469\ufffd\ufffd\u3220\u3221\u3222\u3223\u3224\u3225\u3226\u3227\u3228\u3229\ufffd\ufffd\u2160\u2161\u2162\u2163\u2164\u2165\u2166\u2167\u2168\u2169\u216a\u216b\ufffd\ufffd\ufffd".split(""),e=0;e!=r[162].length;++e)65533!==r[162][e].charCodeAt(0)&&(n[r[162][e]]=41472+e,t[41472+e]=r[162][e]);for(r[163]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uff01\uff02\uff03\uffe5\uff05\uff06\uff07\uff08\uff09\uff0a\uff0b\uff0c\uff0d\uff0e\uff0f\uff10\uff11\uff12\uff13\uff14\uff15\uff16\uff17\uff18\uff19\uff1a\uff1b\uff1c\uff1d\uff1e\uff1f\uff20\uff21\uff22\uff23\uff24\uff25\uff26\uff27\uff28\uff29\uff2a\uff2b\uff2c\uff2d\uff2e\uff2f\uff30\uff31\uff32\uff33\uff34\uff35\uff36\uff37\uff38\uff39\uff3a\uff3b\uff3c\uff3d\uff3e\uff3f\uff40\uff41\uff42\uff43\uff44\uff45\uff46\uff47\uff48\uff49\uff4a\uff4b\uff4c\uff4d\uff4e\uff4f\uff50\uff51\uff52\uff53\uff54\uff55\uff56\uff57\uff58\uff59\uff5a\uff5b\uff5c\uff5d\uffe3\ufffd".split(""),e=0;e!=r[163].length;++e)65533!==r[163][e].charCodeAt(0)&&(n[r[163][e]]=41728+e,t[41728+e]=r[163][e]);for(r[164]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u3041\u3042\u3043\u3044\u3045\u3046\u3047\u3048\u3049\u304a\u304b\u304c\u304d\u304e\u304f\u3050\u3051\u3052\u3053\u3054\u3055\u3056\u3057\u3058\u3059\u305a\u305b\u305c\u305d\u305e\u305f\u3060\u3061\u3062\u3063\u3064\u3065\u3066\u3067\u3068\u3069\u306a\u306b\u306c\u306d\u306e\u306f\u3070\u3071\u3072\u3073\u3074\u3075\u3076\u3077\u3078\u3079\u307a\u307b\u307c\u307d\u307e\u307f\u3080\u3081\u3082\u3083\u3084\u3085\u3086\u3087\u3088\u3089\u308a\u308b\u308c\u308d\u308e\u308f\u3090\u3091\u3092\u3093\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[164].length;++e)65533!==r[164][e].charCodeAt(0)&&(n[r[164][e]]=41984+e,t[41984+e]=r[164][e]);for(r[165]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u30a1\u30a2\u30a3\u30a4\u30a5\u30a6\u30a7\u30a8\u30a9\u30aa\u30ab\u30ac\u30ad\u30ae\u30af\u30b0\u30b1\u30b2\u30b3\u30b4\u30b5\u30b6\u30b7\u30b8\u30b9\u30ba\u30bb\u30bc\u30bd\u30be\u30bf\u30c0\u30c1\u30c2\u30c3\u30c4\u30c5\u30c6\u30c7\u30c8\u30c9\u30ca\u30cb\u30cc\u30cd\u30ce\u30cf\u30d0\u30d1\u30d2\u30d3\u30d4\u30d5\u30d6\u30d7\u30d8\u30d9\u30da\u30db\u30dc\u30dd\u30de\u30df\u30e0\u30e1\u30e2\u30e3\u30e4\u30e5\u30e6\u30e7\u30e8\u30e9\u30ea\u30eb\u30ec\u30ed\u30ee\u30ef\u30f0\u30f1\u30f2\u30f3\u30f4\u30f5\u30f6\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[165].length;++e)65533!==r[165][e].charCodeAt(0)&&(n[r[165][e]]=42240+e,t[42240+e]=r[165][e]);for(r[166]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039a\u039b\u039c\u039d\u039e\u039f\u03a0\u03a1\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u03b1\u03b2\u03b3\u03b4\u03b5\u03b6\u03b7\u03b8\u03b9\u03ba\u03bb\u03bc\u03bd\u03be\u03bf\u03c0\u03c1\u03c3\u03c4\u03c5\u03c6\u03c7\u03c8\u03c9\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufe35\ufe36\ufe39\ufe3a\ufe3f\ufe40\ufe3d\ufe3e\ufe41\ufe42\ufe43\ufe44\ufffd\ufffd\ufe3b\ufe3c\ufe37\ufe38\ufe31\ufffd\ufe33\ufe34\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[166].length;++e)65533!==r[166][e].charCodeAt(0)&&(n[r[166][e]]=42496+e,t[42496+e]=r[166][e]);for(r[167]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0410\u0411\u0412\u0413\u0414\u0415\u0401\u0416\u0417\u0418\u0419\u041a\u041b\u041c\u041d\u041e\u041f\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042a\u042b\u042c\u042d\u042e\u042f\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0430\u0431\u0432\u0433\u0434\u0435\u0451\u0436\u0437\u0438\u0439\u043a\u043b\u043c\u043d\u043e\u043f\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044a\u044b\u044c\u044d\u044e\u044f\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[167].length;++e)65533!==r[167][e].charCodeAt(0)&&(n[r[167][e]]=42752+e,t[42752+e]=r[167][e]);for(r[168]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u02ca\u02cb\u02d9\u2013\u2015\u2025\u2035\u2105\u2109\u2196\u2197\u2198\u2199\u2215\u221f\u2223\u2252\u2266\u2267\u22bf\u2550\u2551\u2552\u2553\u2554\u2555\u2556\u2557\u2558\u2559\u255a\u255b\u255c\u255d\u255e\u255f\u2560\u2561\u2562\u2563\u2564\u2565\u2566\u2567\u2568\u2569\u256a\u256b\u256c\u256d\u256e\u256f\u2570\u2571\u2572\u2573\u2581\u2582\u2583\u2584\u2585\u2586\u2587\ufffd\u2588\u2589\u258a\u258b\u258c\u258d\u258e\u258f\u2593\u2594\u2595\u25bc\u25bd\u25e2\u25e3\u25e4\u25e5\u2609\u2295\u3012\u301d\u301e\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0101\xe1\u01ce\xe0\u0113\xe9\u011b\xe8\u012b\xed\u01d0\xec\u014d\xf3\u01d2\xf2\u016b\xfa\u01d4\xf9\u01d6\u01d8\u01da\u01dc\xfc\xea\u0251\ufffd\u0144\u0148\ufffd\u0261\ufffd\ufffd\ufffd\ufffd\u3105\u3106\u3107\u3108\u3109\u310a\u310b\u310c\u310d\u310e\u310f\u3110\u3111\u3112\u3113\u3114\u3115\u3116\u3117\u3118\u3119\u311a\u311b\u311c\u311d\u311e\u311f\u3120\u3121\u3122\u3123\u3124\u3125\u3126\u3127\u3128\u3129\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[168].length;++e)65533!==r[168][e].charCodeAt(0)&&(n[r[168][e]]=43008+e,t[43008+e]=r[168][e]);for(r[169]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u3021\u3022\u3023\u3024\u3025\u3026\u3027\u3028\u3029\u32a3\u338e\u338f\u339c\u339d\u339e\u33a1\u33c4\u33ce\u33d1\u33d2\u33d5\ufe30\uffe2\uffe4\ufffd\u2121\u3231\ufffd\u2010\ufffd\ufffd\ufffd\u30fc\u309b\u309c\u30fd\u30fe\u3006\u309d\u309e\ufe49\ufe4a\ufe4b\ufe4c\ufe4d\ufe4e\ufe4f\ufe50\ufe51\ufe52\ufe54\ufe55\ufe56\ufe57\ufe59\ufe5a\ufe5b\ufe5c\ufe5d\ufe5e\ufe5f\ufe60\ufe61\ufffd\ufe62\ufe63\ufe64\ufe65\ufe66\ufe68\ufe69\ufe6a\ufe6b\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u3007\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u2500\u2501\u2502\u2503\u2504\u2505\u2506\u2507\u2508\u2509\u250a\u250b\u250c\u250d\u250e\u250f\u2510\u2511\u2512\u2513\u2514\u2515\u2516\u2517\u2518\u2519\u251a\u251b\u251c\u251d\u251e\u251f\u2520\u2521\u2522\u2523\u2524\u2525\u2526\u2527\u2528\u2529\u252a\u252b\u252c\u252d\u252e\u252f\u2530\u2531\u2532\u2533\u2534\u2535\u2536\u2537\u2538\u2539\u253a\u253b\u253c\u253d\u253e\u253f\u2540\u2541\u2542\u2543\u2544\u2545\u2546\u2547\u2548\u2549\u254a\u254b\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[169].length;++e)65533!==r[169][e].charCodeAt(0)&&(n[r[169][e]]=43264+e,t[43264+e]=r[169][e]);for(r[170]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u72dc\u72dd\u72df\u72e2\u72e3\u72e4\u72e5\u72e6\u72e7\u72ea\u72eb\u72f5\u72f6\u72f9\u72fd\u72fe\u72ff\u7300\u7302\u7304\u7305\u7306\u7307\u7308\u7309\u730b\u730c\u730d\u730f\u7310\u7311\u7312\u7314\u7318\u7319\u731a\u731f\u7320\u7323\u7324\u7326\u7327\u7328\u732d\u732f\u7330\u7332\u7333\u7335\u7336\u733a\u733b\u733c\u733d\u7340\u7341\u7342\u7343\u7344\u7345\u7346\u7347\u7348\ufffd\u7349\u734a\u734b\u734c\u734e\u734f\u7351\u7353\u7354\u7355\u7356\u7358\u7359\u735a\u735b\u735c\u735d\u735e\u735f\u7361\u7362\u7363\u7364\u7365\u7366\u7367\u7368\u7369\u736a\u736b\u736e\u7370\u7371\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[170].length;++e)65533!==r[170][e].charCodeAt(0)&&(n[r[170][e]]=43520+e,t[43520+e]=r[170][e]);for(r[171]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7372\u7373\u7374\u7375\u7376\u7377\u7378\u7379\u737a\u737b\u737c\u737d\u737f\u7380\u7381\u7382\u7383\u7385\u7386\u7388\u738a\u738c\u738d\u738f\u7390\u7392\u7393\u7394\u7395\u7397\u7398\u7399\u739a\u739c\u739d\u739e\u73a0\u73a1\u73a3\u73a4\u73a5\u73a6\u73a7\u73a8\u73aa\u73ac\u73ad\u73b1\u73b4\u73b5\u73b6\u73b8\u73b9\u73bc\u73bd\u73be\u73bf\u73c1\u73c3\u73c4\u73c5\u73c6\u73c7\ufffd\u73cb\u73cc\u73ce\u73d2\u73d3\u73d4\u73d5\u73d6\u73d7\u73d8\u73da\u73db\u73dc\u73dd\u73df\u73e1\u73e2\u73e3\u73e4\u73e6\u73e8\u73ea\u73eb\u73ec\u73ee\u73ef\u73f0\u73f1\u73f3\u73f4\u73f5\u73f6\u73f7\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[171].length;++e)65533!==r[171][e].charCodeAt(0)&&(n[r[171][e]]=43776+e,t[43776+e]=r[171][e]);for(r[172]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u73f8\u73f9\u73fa\u73fb\u73fc\u73fd\u73fe\u73ff\u7400\u7401\u7402\u7404\u7407\u7408\u740b\u740c\u740d\u740e\u7411\u7412\u7413\u7414\u7415\u7416\u7417\u7418\u7419\u741c\u741d\u741e\u741f\u7420\u7421\u7423\u7424\u7427\u7429\u742b\u742d\u742f\u7431\u7432\u7437\u7438\u7439\u743a\u743b\u743d\u743e\u743f\u7440\u7442\u7443\u7444\u7445\u7446\u7447\u7448\u7449\u744a\u744b\u744c\u744d\ufffd\u744e\u744f\u7450\u7451\u7452\u7453\u7454\u7456\u7458\u745d\u7460\u7461\u7462\u7463\u7464\u7465\u7466\u7467\u7468\u7469\u746a\u746b\u746c\u746e\u746f\u7471\u7472\u7473\u7474\u7475\u7478\u7479\u747a\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[172].length;++e)65533!==r[172][e].charCodeAt(0)&&(n[r[172][e]]=44032+e,t[44032+e]=r[172][e]);for(r[173]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u747b\u747c\u747d\u747f\u7482\u7484\u7485\u7486\u7488\u7489\u748a\u748c\u748d\u748f\u7491\u7492\u7493\u7494\u7495\u7496\u7497\u7498\u7499\u749a\u749b\u749d\u749f\u74a0\u74a1\u74a2\u74a3\u74a4\u74a5\u74a6\u74aa\u74ab\u74ac\u74ad\u74ae\u74af\u74b0\u74b1\u74b2\u74b3\u74b4\u74b5\u74b6\u74b7\u74b8\u74b9\u74bb\u74bc\u74bd\u74be\u74bf\u74c0\u74c1\u74c2\u74c3\u74c4\u74c5\u74c6\u74c7\ufffd\u74c8\u74c9\u74ca\u74cb\u74cc\u74cd\u74ce\u74cf\u74d0\u74d1\u74d3\u74d4\u74d5\u74d6\u74d7\u74d8\u74d9\u74da\u74db\u74dd\u74df\u74e1\u74e5\u74e7\u74e8\u74e9\u74ea\u74eb\u74ec\u74ed\u74f0\u74f1\u74f2\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[173].length;++e)65533!==r[173][e].charCodeAt(0)&&(n[r[173][e]]=44288+e,t[44288+e]=r[173][e]);for(r[174]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u74f3\u74f5\u74f8\u74f9\u74fa\u74fb\u74fc\u74fd\u74fe\u7500\u7501\u7502\u7503\u7505\u7506\u7507\u7508\u7509\u750a\u750b\u750c\u750e\u7510\u7512\u7514\u7515\u7516\u7517\u751b\u751d\u751e\u7520\u7521\u7522\u7523\u7524\u7526\u7527\u752a\u752e\u7534\u7536\u7539\u753c\u753d\u753f\u7541\u7542\u7543\u7544\u7546\u7547\u7549\u754a\u754d\u7550\u7551\u7552\u7553\u7555\u7556\u7557\u7558\ufffd\u755d\u755e\u755f\u7560\u7561\u7562\u7563\u7564\u7567\u7568\u7569\u756b\u756c\u756d\u756e\u756f\u7570\u7571\u7573\u7575\u7576\u7577\u757a\u757b\u757c\u757d\u757e\u7580\u7581\u7582\u7584\u7585\u7587\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[174].length;++e)65533!==r[174][e].charCodeAt(0)&&(n[r[174][e]]=44544+e,t[44544+e]=r[174][e]);for(r[175]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7588\u7589\u758a\u758c\u758d\u758e\u7590\u7593\u7595\u7598\u759b\u759c\u759e\u75a2\u75a6\u75a7\u75a8\u75a9\u75aa\u75ad\u75b6\u75b7\u75ba\u75bb\u75bf\u75c0\u75c1\u75c6\u75cb\u75cc\u75ce\u75cf\u75d0\u75d1\u75d3\u75d7\u75d9\u75da\u75dc\u75dd\u75df\u75e0\u75e1\u75e5\u75e9\u75ec\u75ed\u75ee\u75ef\u75f2\u75f3\u75f5\u75f6\u75f7\u75f8\u75fa\u75fb\u75fd\u75fe\u7602\u7604\u7606\u7607\ufffd\u7608\u7609\u760b\u760d\u760e\u760f\u7611\u7612\u7613\u7614\u7616\u761a\u761c\u761d\u761e\u7621\u7623\u7627\u7628\u762c\u762e\u762f\u7631\u7632\u7636\u7637\u7639\u763a\u763b\u763d\u7641\u7642\u7644\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[175].length;++e)65533!==r[175][e].charCodeAt(0)&&(n[r[175][e]]=44800+e,t[44800+e]=r[175][e]);for(r[176]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7645\u7646\u7647\u7648\u7649\u764a\u764b\u764e\u764f\u7650\u7651\u7652\u7653\u7655\u7657\u7658\u7659\u765a\u765b\u765d\u765f\u7660\u7661\u7662\u7664\u7665\u7666\u7667\u7668\u7669\u766a\u766c\u766d\u766e\u7670\u7671\u7672\u7673\u7674\u7675\u7676\u7677\u7679\u767a\u767c\u767f\u7680\u7681\u7683\u7685\u7689\u768a\u768c\u768d\u768f\u7690\u7692\u7694\u7695\u7697\u7698\u769a\u769b\ufffd\u769c\u769d\u769e\u769f\u76a0\u76a1\u76a2\u76a3\u76a5\u76a6\u76a7\u76a8\u76a9\u76aa\u76ab\u76ac\u76ad\u76af\u76b0\u76b3\u76b5\u76b6\u76b7\u76b8\u76b9\u76ba\u76bb\u76bc\u76bd\u76be\u76c0\u76c1\u76c3\u554a\u963f\u57c3\u6328\u54ce\u5509\u54c0\u7691\u764c\u853c\u77ee\u827e\u788d\u7231\u9698\u978d\u6c28\u5b89\u4ffa\u6309\u6697\u5cb8\u80fa\u6848\u80ae\u6602\u76ce\u51f9\u6556\u71ac\u7ff1\u8884\u50b2\u5965\u61ca\u6fb3\u82ad\u634c\u6252\u53ed\u5427\u7b06\u516b\u75a4\u5df4\u62d4\u8dcb\u9776\u628a\u8019\u575d\u9738\u7f62\u7238\u767d\u67cf\u767e\u6446\u4f70\u8d25\u62dc\u7a17\u6591\u73ed\u642c\u6273\u822c\u9881\u677f\u7248\u626e\u62cc\u4f34\u74e3\u534a\u529e\u7eca\u90a6\u5e2e\u6886\u699c\u8180\u7ed1\u68d2\u78c5\u868c\u9551\u508d\u8c24\u82de\u80de\u5305\u8912\u5265\ufffd".split(""),e=0;e!=r[176].length;++e)65533!==r[176][e].charCodeAt(0)&&(n[r[176][e]]=45056+e,t[45056+e]=r[176][e]);for(r[177]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u76c4\u76c7\u76c9\u76cb\u76cc\u76d3\u76d5\u76d9\u76da\u76dc\u76dd\u76de\u76e0\u76e1\u76e2\u76e3\u76e4\u76e6\u76e7\u76e8\u76e9\u76ea\u76eb\u76ec\u76ed\u76f0\u76f3\u76f5\u76f6\u76f7\u76fa\u76fb\u76fd\u76ff\u7700\u7702\u7703\u7705\u7706\u770a\u770c\u770e\u770f\u7710\u7711\u7712\u7713\u7714\u7715\u7716\u7717\u7718\u771b\u771c\u771d\u771e\u7721\u7723\u7724\u7725\u7727\u772a\u772b\ufffd\u772c\u772e\u7730\u7731\u7732\u7733\u7734\u7739\u773b\u773d\u773e\u773f\u7742\u7744\u7745\u7746\u7748\u7749\u774a\u774b\u774c\u774d\u774e\u774f\u7752\u7753\u7754\u7755\u7756\u7757\u7758\u7759\u775c\u8584\u96f9\u4fdd\u5821\u9971\u5b9d\u62b1\u62a5\u66b4\u8c79\u9c8d\u7206\u676f\u7891\u60b2\u5351\u5317\u8f88\u80cc\u8d1d\u94a1\u500d\u72c8\u5907\u60eb\u7119\u88ab\u5954\u82ef\u672c\u7b28\u5d29\u7ef7\u752d\u6cf5\u8e66\u8ff8\u903c\u9f3b\u6bd4\u9119\u7b14\u5f7c\u78a7\u84d6\u853d\u6bd5\u6bd9\u6bd6\u5e01\u5e87\u75f9\u95ed\u655d\u5f0a\u5fc5\u8f9f\u58c1\u81c2\u907f\u965b\u97ad\u8fb9\u7f16\u8d2c\u6241\u4fbf\u53d8\u535e\u8fa8\u8fa9\u8fab\u904d\u6807\u5f6a\u8198\u8868\u9cd6\u618b\u522b\u762a\u5f6c\u658c\u6fd2\u6ee8\u5bbe\u6448\u5175\u51b0\u67c4\u4e19\u79c9\u997c\u70b3\ufffd".split(""),e=0;e!=r[177].length;++e)65533!==r[177][e].charCodeAt(0)&&(n[r[177][e]]=45312+e,t[45312+e]=r[177][e]);for(r[178]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u775d\u775e\u775f\u7760\u7764\u7767\u7769\u776a\u776d\u776e\u776f\u7770\u7771\u7772\u7773\u7774\u7775\u7776\u7777\u7778\u777a\u777b\u777c\u7781\u7782\u7783\u7786\u7787\u7788\u7789\u778a\u778b\u778f\u7790\u7793\u7794\u7795\u7796\u7797\u7798\u7799\u779a\u779b\u779c\u779d\u779e\u77a1\u77a3\u77a4\u77a6\u77a8\u77ab\u77ad\u77ae\u77af\u77b1\u77b2\u77b4\u77b6\u77b7\u77b8\u77b9\u77ba\ufffd\u77bc\u77be\u77c0\u77c1\u77c2\u77c3\u77c4\u77c5\u77c6\u77c7\u77c8\u77c9\u77ca\u77cb\u77cc\u77ce\u77cf\u77d0\u77d1\u77d2\u77d3\u77d4\u77d5\u77d6\u77d8\u77d9\u77da\u77dd\u77de\u77df\u77e0\u77e1\u77e4\u75c5\u5e76\u73bb\u83e0\u64ad\u62e8\u94b5\u6ce2\u535a\u52c3\u640f\u94c2\u7b94\u4f2f\u5e1b\u8236\u8116\u818a\u6e24\u6cca\u9a73\u6355\u535c\u54fa\u8865\u57e0\u4e0d\u5e03\u6b65\u7c3f\u90e8\u6016\u64e6\u731c\u88c1\u6750\u624d\u8d22\u776c\u8e29\u91c7\u5f69\u83dc\u8521\u9910\u53c2\u8695\u6b8b\u60ed\u60e8\u707f\u82cd\u8231\u4ed3\u6ca7\u85cf\u64cd\u7cd9\u69fd\u66f9\u8349\u5395\u7b56\u4fa7\u518c\u6d4b\u5c42\u8e6d\u63d2\u53c9\u832c\u8336\u67e5\u78b4\u643d\u5bdf\u5c94\u5dee\u8be7\u62c6\u67f4\u8c7a\u6400\u63ba\u8749\u998b\u8c17\u7f20\u94f2\u4ea7\u9610\u98a4\u660c\u7316\ufffd".split(""),e=0;e!=r[178].length;++e)65533!==r[178][e].charCodeAt(0)&&(n[r[178][e]]=45568+e,t[45568+e]=r[178][e]);for(r[179]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u77e6\u77e8\u77ea\u77ef\u77f0\u77f1\u77f2\u77f4\u77f5\u77f7\u77f9\u77fa\u77fb\u77fc\u7803\u7804\u7805\u7806\u7807\u7808\u780a\u780b\u780e\u780f\u7810\u7813\u7815\u7819\u781b\u781e\u7820\u7821\u7822\u7824\u7828\u782a\u782b\u782e\u782f\u7831\u7832\u7833\u7835\u7836\u783d\u783f\u7841\u7842\u7843\u7844\u7846\u7848\u7849\u784a\u784b\u784d\u784f\u7851\u7853\u7854\u7858\u7859\u785a\ufffd\u785b\u785c\u785e\u785f\u7860\u7861\u7862\u7863\u7864\u7865\u7866\u7867\u7868\u7869\u786f\u7870\u7871\u7872\u7873\u7874\u7875\u7876\u7878\u7879\u787a\u787b\u787d\u787e\u787f\u7880\u7881\u7882\u7883\u573a\u5c1d\u5e38\u957f\u507f\u80a0\u5382\u655e\u7545\u5531\u5021\u8d85\u6284\u949e\u671d\u5632\u6f6e\u5de2\u5435\u7092\u8f66\u626f\u64a4\u63a3\u5f7b\u6f88\u90f4\u81e3\u8fb0\u5c18\u6668\u5ff1\u6c89\u9648\u8d81\u886c\u6491\u79f0\u57ce\u6a59\u6210\u5448\u4e58\u7a0b\u60e9\u6f84\u8bda\u627f\u901e\u9a8b\u79e4\u5403\u75f4\u6301\u5319\u6c60\u8fdf\u5f1b\u9a70\u803b\u9f7f\u4f88\u5c3a\u8d64\u7fc5\u65a5\u70bd\u5145\u51b2\u866b\u5d07\u5ba0\u62bd\u916c\u7574\u8e0c\u7a20\u6101\u7b79\u4ec7\u7ef8\u7785\u4e11\u81ed\u521d\u51fa\u6a71\u53a8\u8e87\u9504\u96cf\u6ec1\u9664\u695a\ufffd".split(""),e=0;e!=r[179].length;++e)65533!==r[179][e].charCodeAt(0)&&(n[r[179][e]]=45824+e,t[45824+e]=r[179][e]);for(r[180]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7884\u7885\u7886\u7888\u788a\u788b\u788f\u7890\u7892\u7894\u7895\u7896\u7899\u789d\u789e\u78a0\u78a2\u78a4\u78a6\u78a8\u78a9\u78aa\u78ab\u78ac\u78ad\u78ae\u78af\u78b5\u78b6\u78b7\u78b8\u78ba\u78bb\u78bc\u78bd\u78bf\u78c0\u78c2\u78c3\u78c4\u78c6\u78c7\u78c8\u78cc\u78cd\u78ce\u78cf\u78d1\u78d2\u78d3\u78d6\u78d7\u78d8\u78da\u78db\u78dc\u78dd\u78de\u78df\u78e0\u78e1\u78e2\u78e3\ufffd\u78e4\u78e5\u78e6\u78e7\u78e9\u78ea\u78eb\u78ed\u78ee\u78ef\u78f0\u78f1\u78f3\u78f5\u78f6\u78f8\u78f9\u78fb\u78fc\u78fd\u78fe\u78ff\u7900\u7902\u7903\u7904\u7906\u7907\u7908\u7909\u790a\u790b\u790c\u7840\u50a8\u77d7\u6410\u89e6\u5904\u63e3\u5ddd\u7a7f\u693d\u4f20\u8239\u5598\u4e32\u75ae\u7a97\u5e62\u5e8a\u95ef\u521b\u5439\u708a\u6376\u9524\u5782\u6625\u693f\u9187\u5507\u6df3\u7eaf\u8822\u6233\u7ef0\u75b5\u8328\u78c1\u96cc\u8f9e\u6148\u74f7\u8bcd\u6b64\u523a\u8d50\u6b21\u806a\u8471\u56f1\u5306\u4ece\u4e1b\u51d1\u7c97\u918b\u7c07\u4fc3\u8e7f\u7be1\u7a9c\u6467\u5d14\u50ac\u8106\u7601\u7cb9\u6dec\u7fe0\u6751\u5b58\u5bf8\u78cb\u64ae\u6413\u63aa\u632b\u9519\u642d\u8fbe\u7b54\u7629\u6253\u5927\u5446\u6b79\u50a3\u6234\u5e26\u6b86\u4ee3\u8d37\u888b\u5f85\u902e\ufffd".split(""),e=0;e!=r[180].length;++e)65533!==r[180][e].charCodeAt(0)&&(n[r[180][e]]=46080+e,t[46080+e]=r[180][e]);for(r[181]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u790d\u790e\u790f\u7910\u7911\u7912\u7914\u7915\u7916\u7917\u7918\u7919\u791a\u791b\u791c\u791d\u791f\u7920\u7921\u7922\u7923\u7925\u7926\u7927\u7928\u7929\u792a\u792b\u792c\u792d\u792e\u792f\u7930\u7931\u7932\u7933\u7935\u7936\u7937\u7938\u7939\u793d\u793f\u7942\u7943\u7944\u7945\u7947\u794a\u794b\u794c\u794d\u794e\u794f\u7950\u7951\u7952\u7954\u7955\u7958\u7959\u7961\u7963\ufffd\u7964\u7966\u7969\u796a\u796b\u796c\u796e\u7970\u7971\u7972\u7973\u7974\u7975\u7976\u7979\u797b\u797c\u797d\u797e\u797f\u7982\u7983\u7986\u7987\u7988\u7989\u798b\u798c\u798d\u798e\u7990\u7991\u7992\u6020\u803d\u62c5\u4e39\u5355\u90f8\u63b8\u80c6\u65e6\u6c2e\u4f46\u60ee\u6de1\u8bde\u5f39\u86cb\u5f53\u6321\u515a\u8361\u6863\u5200\u6363\u8e48\u5012\u5c9b\u7977\u5bfc\u5230\u7a3b\u60bc\u9053\u76d7\u5fb7\u5f97\u7684\u8e6c\u706f\u767b\u7b49\u77aa\u51f3\u9093\u5824\u4f4e\u6ef4\u8fea\u654c\u7b1b\u72c4\u6da4\u7fdf\u5ae1\u62b5\u5e95\u5730\u8482\u7b2c\u5e1d\u5f1f\u9012\u7f14\u98a0\u6382\u6ec7\u7898\u70b9\u5178\u975b\u57ab\u7535\u4f43\u7538\u5e97\u60e6\u5960\u6dc0\u6bbf\u7889\u53fc\u96d5\u51cb\u5201\u6389\u540a\u9493\u8c03\u8dcc\u7239\u789f\u8776\u8fed\u8c0d\u53e0\ufffd".split(""),e=0;e!=r[181].length;++e)65533!==r[181][e].charCodeAt(0)&&(n[r[181][e]]=46336+e,t[46336+e]=r[181][e]);for(r[182]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7993\u7994\u7995\u7996\u7997\u7998\u7999\u799b\u799c\u799d\u799e\u799f\u79a0\u79a1\u79a2\u79a3\u79a4\u79a5\u79a6\u79a8\u79a9\u79aa\u79ab\u79ac\u79ad\u79ae\u79af\u79b0\u79b1\u79b2\u79b4\u79b5\u79b6\u79b7\u79b8\u79bc\u79bf\u79c2\u79c4\u79c5\u79c7\u79c8\u79ca\u79cc\u79ce\u79cf\u79d0\u79d3\u79d4\u79d6\u79d7\u79d9\u79da\u79db\u79dc\u79dd\u79de\u79e0\u79e1\u79e2\u79e5\u79e8\u79ea\ufffd\u79ec\u79ee\u79f1\u79f2\u79f3\u79f4\u79f5\u79f6\u79f7\u79f9\u79fa\u79fc\u79fe\u79ff\u7a01\u7a04\u7a05\u7a07\u7a08\u7a09\u7a0a\u7a0c\u7a0f\u7a10\u7a11\u7a12\u7a13\u7a15\u7a16\u7a18\u7a19\u7a1b\u7a1c\u4e01\u76ef\u53ee\u9489\u9876\u9f0e\u952d\u5b9a\u8ba2\u4e22\u4e1c\u51ac\u8463\u61c2\u52a8\u680b\u4f97\u606b\u51bb\u6d1e\u515c\u6296\u6597\u9661\u8c46\u9017\u75d8\u90fd\u7763\u6bd2\u728a\u72ec\u8bfb\u5835\u7779\u8d4c\u675c\u9540\u809a\u5ea6\u6e21\u5992\u7aef\u77ed\u953b\u6bb5\u65ad\u7f0e\u5806\u5151\u961f\u5bf9\u58a9\u5428\u8e72\u6566\u987f\u56e4\u949d\u76fe\u9041\u6387\u54c6\u591a\u593a\u579b\u8eb2\u6735\u8dfa\u8235\u5241\u60f0\u5815\u86fe\u5ce8\u9e45\u4fc4\u989d\u8bb9\u5a25\u6076\u5384\u627c\u904f\u9102\u997f\u6069\u800c\u513f\u8033\u5c14\u9975\u6d31\u4e8c\ufffd".split(""),e=0;e!=r[182].length;++e)65533!==r[182][e].charCodeAt(0)&&(n[r[182][e]]=46592+e,t[46592+e]=r[182][e]);for(r[183]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7a1d\u7a1f\u7a21\u7a22\u7a24\u7a25\u7a26\u7a27\u7a28\u7a29\u7a2a\u7a2b\u7a2c\u7a2d\u7a2e\u7a2f\u7a30\u7a31\u7a32\u7a34\u7a35\u7a36\u7a38\u7a3a\u7a3e\u7a40\u7a41\u7a42\u7a43\u7a44\u7a45\u7a47\u7a48\u7a49\u7a4a\u7a4b\u7a4c\u7a4d\u7a4e\u7a4f\u7a50\u7a52\u7a53\u7a54\u7a55\u7a56\u7a58\u7a59\u7a5a\u7a5b\u7a5c\u7a5d\u7a5e\u7a5f\u7a60\u7a61\u7a62\u7a63\u7a64\u7a65\u7a66\u7a67\u7a68\ufffd\u7a69\u7a6a\u7a6b\u7a6c\u7a6d\u7a6e\u7a6f\u7a71\u7a72\u7a73\u7a75\u7a7b\u7a7c\u7a7d\u7a7e\u7a82\u7a85\u7a87\u7a89\u7a8a\u7a8b\u7a8c\u7a8e\u7a8f\u7a90\u7a93\u7a94\u7a99\u7a9a\u7a9b\u7a9e\u7aa1\u7aa2\u8d30\u53d1\u7f5a\u7b4f\u4f10\u4e4f\u9600\u6cd5\u73d0\u85e9\u5e06\u756a\u7ffb\u6a0a\u77fe\u9492\u7e41\u51e1\u70e6\u53cd\u8fd4\u8303\u8d29\u72af\u996d\u6cdb\u574a\u82b3\u65b9\u80aa\u623f\u9632\u59a8\u4eff\u8bbf\u7eba\u653e\u83f2\u975e\u5561\u98de\u80a5\u532a\u8bfd\u5420\u80ba\u5e9f\u6cb8\u8d39\u82ac\u915a\u5429\u6c1b\u5206\u7eb7\u575f\u711a\u6c7e\u7c89\u594b\u4efd\u5fff\u6124\u7caa\u4e30\u5c01\u67ab\u8702\u5cf0\u950b\u98ce\u75af\u70fd\u9022\u51af\u7f1d\u8bbd\u5949\u51e4\u4f5b\u5426\u592b\u6577\u80a4\u5b75\u6276\u62c2\u8f90\u5e45\u6c1f\u7b26\u4f0f\u4fd8\u670d\ufffd".split(""),e=0;e!=r[183].length;++e)65533!==r[183][e].charCodeAt(0)&&(n[r[183][e]]=46848+e,t[46848+e]=r[183][e]);for(r[184]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7aa3\u7aa4\u7aa7\u7aa9\u7aaa\u7aab\u7aae\u7aaf\u7ab0\u7ab1\u7ab2\u7ab4\u7ab5\u7ab6\u7ab7\u7ab8\u7ab9\u7aba\u7abb\u7abc\u7abd\u7abe\u7ac0\u7ac1\u7ac2\u7ac3\u7ac4\u7ac5\u7ac6\u7ac7\u7ac8\u7ac9\u7aca\u7acc\u7acd\u7ace\u7acf\u7ad0\u7ad1\u7ad2\u7ad3\u7ad4\u7ad5\u7ad7\u7ad8\u7ada\u7adb\u7adc\u7add\u7ae1\u7ae2\u7ae4\u7ae7\u7ae8\u7ae9\u7aea\u7aeb\u7aec\u7aee\u7af0\u7af1\u7af2\u7af3\ufffd\u7af4\u7af5\u7af6\u7af7\u7af8\u7afb\u7afc\u7afe\u7b00\u7b01\u7b02\u7b05\u7b07\u7b09\u7b0c\u7b0d\u7b0e\u7b10\u7b12\u7b13\u7b16\u7b17\u7b18\u7b1a\u7b1c\u7b1d\u7b1f\u7b21\u7b22\u7b23\u7b27\u7b29\u7b2d\u6d6e\u6daa\u798f\u88b1\u5f17\u752b\u629a\u8f85\u4fef\u91dc\u65a7\u812f\u8151\u5e9c\u8150\u8d74\u526f\u8986\u8d4b\u590d\u5085\u4ed8\u961c\u7236\u8179\u8d1f\u5bcc\u8ba3\u9644\u5987\u7f1a\u5490\u5676\u560e\u8be5\u6539\u6982\u9499\u76d6\u6e89\u5e72\u7518\u6746\u67d1\u7aff\u809d\u8d76\u611f\u79c6\u6562\u8d63\u5188\u521a\u94a2\u7f38\u809b\u7eb2\u5c97\u6e2f\u6760\u7bd9\u768b\u9ad8\u818f\u7f94\u7cd5\u641e\u9550\u7a3f\u544a\u54e5\u6b4c\u6401\u6208\u9e3d\u80f3\u7599\u5272\u9769\u845b\u683c\u86e4\u9601\u9694\u94ec\u4e2a\u5404\u7ed9\u6839\u8ddf\u8015\u66f4\u5e9a\u7fb9\ufffd".split(""),e=0;e!=r[184].length;++e)65533!==r[184][e].charCodeAt(0)&&(n[r[184][e]]=47104+e,t[47104+e]=r[184][e]);for(r[185]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7b2f\u7b30\u7b32\u7b34\u7b35\u7b36\u7b37\u7b39\u7b3b\u7b3d\u7b3f\u7b40\u7b41\u7b42\u7b43\u7b44\u7b46\u7b48\u7b4a\u7b4d\u7b4e\u7b53\u7b55\u7b57\u7b59\u7b5c\u7b5e\u7b5f\u7b61\u7b63\u7b64\u7b65\u7b66\u7b67\u7b68\u7b69\u7b6a\u7b6b\u7b6c\u7b6d\u7b6f\u7b70\u7b73\u7b74\u7b76\u7b78\u7b7a\u7b7c\u7b7d\u7b7f\u7b81\u7b82\u7b83\u7b84\u7b86\u7b87\u7b88\u7b89\u7b8a\u7b8b\u7b8c\u7b8e\u7b8f\ufffd\u7b91\u7b92\u7b93\u7b96\u7b98\u7b99\u7b9a\u7b9b\u7b9e\u7b9f\u7ba0\u7ba3\u7ba4\u7ba5\u7bae\u7baf\u7bb0\u7bb2\u7bb3\u7bb5\u7bb6\u7bb7\u7bb9\u7bba\u7bbb\u7bbc\u7bbd\u7bbe\u7bbf\u7bc0\u7bc2\u7bc3\u7bc4\u57c2\u803f\u6897\u5de5\u653b\u529f\u606d\u9f9a\u4f9b\u8eac\u516c\u5bab\u5f13\u5de9\u6c5e\u62f1\u8d21\u5171\u94a9\u52fe\u6c9f\u82df\u72d7\u57a2\u6784\u8d2d\u591f\u8f9c\u83c7\u5495\u7b8d\u4f30\u6cbd\u5b64\u59d1\u9f13\u53e4\u86ca\u9aa8\u8c37\u80a1\u6545\u987e\u56fa\u96c7\u522e\u74dc\u5250\u5be1\u6302\u8902\u4e56\u62d0\u602a\u68fa\u5173\u5b98\u51a0\u89c2\u7ba1\u9986\u7f50\u60ef\u704c\u8d2f\u5149\u5e7f\u901b\u7470\u89c4\u572d\u7845\u5f52\u9f9f\u95fa\u8f68\u9b3c\u8be1\u7678\u6842\u67dc\u8dea\u8d35\u523d\u8f8a\u6eda\u68cd\u9505\u90ed\u56fd\u679c\u88f9\u8fc7\u54c8\ufffd".split(""),e=0;e!=r[185].length;++e)65533!==r[185][e].charCodeAt(0)&&(n[r[185][e]]=47360+e,t[47360+e]=r[185][e]);for(r[186]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7bc5\u7bc8\u7bc9\u7bca\u7bcb\u7bcd\u7bce\u7bcf\u7bd0\u7bd2\u7bd4\u7bd5\u7bd6\u7bd7\u7bd8\u7bdb\u7bdc\u7bde\u7bdf\u7be0\u7be2\u7be3\u7be4\u7be7\u7be8\u7be9\u7beb\u7bec\u7bed\u7bef\u7bf0\u7bf2\u7bf3\u7bf4\u7bf5\u7bf6\u7bf8\u7bf9\u7bfa\u7bfb\u7bfd\u7bff\u7c00\u7c01\u7c02\u7c03\u7c04\u7c05\u7c06\u7c08\u7c09\u7c0a\u7c0d\u7c0e\u7c10\u7c11\u7c12\u7c13\u7c14\u7c15\u7c17\u7c18\u7c19\ufffd\u7c1a\u7c1b\u7c1c\u7c1d\u7c1e\u7c20\u7c21\u7c22\u7c23\u7c24\u7c25\u7c28\u7c29\u7c2b\u7c2c\u7c2d\u7c2e\u7c2f\u7c30\u7c31\u7c32\u7c33\u7c34\u7c35\u7c36\u7c37\u7c39\u7c3a\u7c3b\u7c3c\u7c3d\u7c3e\u7c42\u9ab8\u5b69\u6d77\u6c26\u4ea5\u5bb3\u9a87\u9163\u61a8\u90af\u97e9\u542b\u6db5\u5bd2\u51fd\u558a\u7f55\u7ff0\u64bc\u634d\u65f1\u61be\u608d\u710a\u6c57\u6c49\u592f\u676d\u822a\u58d5\u568e\u8c6a\u6beb\u90dd\u597d\u8017\u53f7\u6d69\u5475\u559d\u8377\u83cf\u6838\u79be\u548c\u4f55\u5408\u76d2\u8c89\u9602\u6cb3\u6db8\u8d6b\u8910\u9e64\u8d3a\u563f\u9ed1\u75d5\u5f88\u72e0\u6068\u54fc\u4ea8\u6a2a\u8861\u6052\u8f70\u54c4\u70d8\u8679\u9e3f\u6d2a\u5b8f\u5f18\u7ea2\u5589\u4faf\u7334\u543c\u539a\u5019\u540e\u547c\u4e4e\u5ffd\u745a\u58f6\u846b\u80e1\u8774\u72d0\u7cca\u6e56\ufffd".split(""),e=0;e!=r[186].length;++e)65533!==r[186][e].charCodeAt(0)&&(n[r[186][e]]=47616+e,t[47616+e]=r[186][e]);for(r[187]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7c43\u7c44\u7c45\u7c46\u7c47\u7c48\u7c49\u7c4a\u7c4b\u7c4c\u7c4e\u7c4f\u7c50\u7c51\u7c52\u7c53\u7c54\u7c55\u7c56\u7c57\u7c58\u7c59\u7c5a\u7c5b\u7c5c\u7c5d\u7c5e\u7c5f\u7c60\u7c61\u7c62\u7c63\u7c64\u7c65\u7c66\u7c67\u7c68\u7c69\u7c6a\u7c6b\u7c6c\u7c6d\u7c6e\u7c6f\u7c70\u7c71\u7c72\u7c75\u7c76\u7c77\u7c78\u7c79\u7c7a\u7c7e\u7c7f\u7c80\u7c81\u7c82\u7c83\u7c84\u7c85\u7c86\u7c87\ufffd\u7c88\u7c8a\u7c8b\u7c8c\u7c8d\u7c8e\u7c8f\u7c90\u7c93\u7c94\u7c96\u7c99\u7c9a\u7c9b\u7ca0\u7ca1\u7ca3\u7ca6\u7ca7\u7ca8\u7ca9\u7cab\u7cac\u7cad\u7caf\u7cb0\u7cb4\u7cb5\u7cb6\u7cb7\u7cb8\u7cba\u7cbb\u5f27\u864e\u552c\u62a4\u4e92\u6caa\u6237\u82b1\u54d7\u534e\u733e\u6ed1\u753b\u5212\u5316\u8bdd\u69d0\u5f8a\u6000\u6dee\u574f\u6b22\u73af\u6853\u8fd8\u7f13\u6362\u60a3\u5524\u75ea\u8c62\u7115\u6da3\u5ba6\u5e7b\u8352\u614c\u9ec4\u78fa\u8757\u7c27\u7687\u51f0\u60f6\u714c\u6643\u5e4c\u604d\u8c0e\u7070\u6325\u8f89\u5fbd\u6062\u86d4\u56de\u6bc1\u6094\u6167\u5349\u60e0\u6666\u8d3f\u79fd\u4f1a\u70e9\u6c47\u8bb3\u8bf2\u7ed8\u8364\u660f\u5a5a\u9b42\u6d51\u6df7\u8c41\u6d3b\u4f19\u706b\u83b7\u6216\u60d1\u970d\u8d27\u7978\u51fb\u573e\u57fa\u673a\u7578\u7a3d\u79ef\u7b95\ufffd".split(""),e=0;e!=r[187].length;++e)65533!==r[187][e].charCodeAt(0)&&(n[r[187][e]]=47872+e,t[47872+e]=r[187][e]);for(r[188]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7cbf\u7cc0\u7cc2\u7cc3\u7cc4\u7cc6\u7cc9\u7ccb\u7cce\u7ccf\u7cd0\u7cd1\u7cd2\u7cd3\u7cd4\u7cd8\u7cda\u7cdb\u7cdd\u7cde\u7ce1\u7ce2\u7ce3\u7ce4\u7ce5\u7ce6\u7ce7\u7ce9\u7cea\u7ceb\u7cec\u7ced\u7cee\u7cf0\u7cf1\u7cf2\u7cf3\u7cf4\u7cf5\u7cf6\u7cf7\u7cf9\u7cfa\u7cfc\u7cfd\u7cfe\u7cff\u7d00\u7d01\u7d02\u7d03\u7d04\u7d05\u7d06\u7d07\u7d08\u7d09\u7d0b\u7d0c\u7d0d\u7d0e\u7d0f\u7d10\ufffd\u7d11\u7d12\u7d13\u7d14\u7d15\u7d16\u7d17\u7d18\u7d19\u7d1a\u7d1b\u7d1c\u7d1d\u7d1e\u7d1f\u7d21\u7d23\u7d24\u7d25\u7d26\u7d28\u7d29\u7d2a\u7d2c\u7d2d\u7d2e\u7d30\u7d31\u7d32\u7d33\u7d34\u7d35\u7d36\u808c\u9965\u8ff9\u6fc0\u8ba5\u9e21\u59ec\u7ee9\u7f09\u5409\u6781\u68d8\u8f91\u7c4d\u96c6\u53ca\u6025\u75be\u6c72\u5373\u5ac9\u7ea7\u6324\u51e0\u810a\u5df1\u84df\u6280\u5180\u5b63\u4f0e\u796d\u5242\u60b8\u6d4e\u5bc4\u5bc2\u8ba1\u8bb0\u65e2\u5fcc\u9645\u5993\u7ee7\u7eaa\u5609\u67b7\u5939\u4f73\u5bb6\u52a0\u835a\u988a\u8d3e\u7532\u94be\u5047\u7a3c\u4ef7\u67b6\u9a7e\u5ac1\u6b7c\u76d1\u575a\u5c16\u7b3a\u95f4\u714e\u517c\u80a9\u8270\u5978\u7f04\u8327\u68c0\u67ec\u78b1\u7877\u62e3\u6361\u7b80\u4fed\u526a\u51cf\u8350\u69db\u9274\u8df5\u8d31\u89c1\u952e\u7bad\u4ef6\ufffd".split(""),e=0;e!=r[188].length;++e)65533!==r[188][e].charCodeAt(0)&&(n[r[188][e]]=48128+e,t[48128+e]=r[188][e]);for(r[189]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7d37\u7d38\u7d39\u7d3a\u7d3b\u7d3c\u7d3d\u7d3e\u7d3f\u7d40\u7d41\u7d42\u7d43\u7d44\u7d45\u7d46\u7d47\u7d48\u7d49\u7d4a\u7d4b\u7d4c\u7d4d\u7d4e\u7d4f\u7d50\u7d51\u7d52\u7d53\u7d54\u7d55\u7d56\u7d57\u7d58\u7d59\u7d5a\u7d5b\u7d5c\u7d5d\u7d5e\u7d5f\u7d60\u7d61\u7d62\u7d63\u7d64\u7d65\u7d66\u7d67\u7d68\u7d69\u7d6a\u7d6b\u7d6c\u7d6d\u7d6f\u7d70\u7d71\u7d72\u7d73\u7d74\u7d75\u7d76\ufffd\u7d78\u7d79\u7d7a\u7d7b\u7d7c\u7d7d\u7d7e\u7d7f\u7d80\u7d81\u7d82\u7d83\u7d84\u7d85\u7d86\u7d87\u7d88\u7d89\u7d8a\u7d8b\u7d8c\u7d8d\u7d8e\u7d8f\u7d90\u7d91\u7d92\u7d93\u7d94\u7d95\u7d96\u7d97\u7d98\u5065\u8230\u5251\u996f\u6e10\u6e85\u6da7\u5efa\u50f5\u59dc\u5c06\u6d46\u6c5f\u7586\u848b\u6868\u5956\u8bb2\u5320\u9171\u964d\u8549\u6912\u7901\u7126\u80f6\u4ea4\u90ca\u6d47\u9a84\u5a07\u56bc\u6405\u94f0\u77eb\u4fa5\u811a\u72e1\u89d2\u997a\u7f34\u7ede\u527f\u6559\u9175\u8f7f\u8f83\u53eb\u7a96\u63ed\u63a5\u7686\u79f8\u8857\u9636\u622a\u52ab\u8282\u6854\u6770\u6377\u776b\u7aed\u6d01\u7ed3\u89e3\u59d0\u6212\u85c9\u82a5\u754c\u501f\u4ecb\u75a5\u8beb\u5c4a\u5dfe\u7b4b\u65a4\u91d1\u4eca\u6d25\u895f\u7d27\u9526\u4ec5\u8c28\u8fdb\u9773\u664b\u7981\u8fd1\u70ec\u6d78\ufffd".split(""),e=0;e!=r[189].length;++e)65533!==r[189][e].charCodeAt(0)&&(n[r[189][e]]=48384+e,t[48384+e]=r[189][e]);for(r[190]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7d99\u7d9a\u7d9b\u7d9c\u7d9d\u7d9e\u7d9f\u7da0\u7da1\u7da2\u7da3\u7da4\u7da5\u7da7\u7da8\u7da9\u7daa\u7dab\u7dac\u7dad\u7daf\u7db0\u7db1\u7db2\u7db3\u7db4\u7db5\u7db6\u7db7\u7db8\u7db9\u7dba\u7dbb\u7dbc\u7dbd\u7dbe\u7dbf\u7dc0\u7dc1\u7dc2\u7dc3\u7dc4\u7dc5\u7dc6\u7dc7\u7dc8\u7dc9\u7dca\u7dcb\u7dcc\u7dcd\u7dce\u7dcf\u7dd0\u7dd1\u7dd2\u7dd3\u7dd4\u7dd5\u7dd6\u7dd7\u7dd8\u7dd9\ufffd\u7dda\u7ddb\u7ddc\u7ddd\u7dde\u7ddf\u7de0\u7de1\u7de2\u7de3\u7de4\u7de5\u7de6\u7de7\u7de8\u7de9\u7dea\u7deb\u7dec\u7ded\u7dee\u7def\u7df0\u7df1\u7df2\u7df3\u7df4\u7df5\u7df6\u7df7\u7df8\u7df9\u7dfa\u5c3d\u52b2\u8346\u5162\u830e\u775b\u6676\u9cb8\u4eac\u60ca\u7cbe\u7cb3\u7ecf\u4e95\u8b66\u666f\u9888\u9759\u5883\u656c\u955c\u5f84\u75c9\u9756\u7adf\u7ade\u51c0\u70af\u7a98\u63ea\u7a76\u7ea0\u7396\u97ed\u4e45\u7078\u4e5d\u9152\u53a9\u6551\u65e7\u81fc\u8205\u548e\u5c31\u759a\u97a0\u62d8\u72d9\u75bd\u5c45\u9a79\u83ca\u5c40\u5480\u77e9\u4e3e\u6cae\u805a\u62d2\u636e\u5de8\u5177\u8ddd\u8e1e\u952f\u4ff1\u53e5\u60e7\u70ac\u5267\u6350\u9e43\u5a1f\u5026\u7737\u5377\u7ee2\u6485\u652b\u6289\u6398\u5014\u7235\u89c9\u51b3\u8bc0\u7edd\u5747\u83cc\u94a7\u519b\u541b\u5cfb\ufffd".split(""),e=0;e!=r[190].length;++e)65533!==r[190][e].charCodeAt(0)&&(n[r[190][e]]=48640+e,t[48640+e]=r[190][e]);for(r[191]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7dfb\u7dfc\u7dfd\u7dfe\u7dff\u7e00\u7e01\u7e02\u7e03\u7e04\u7e05\u7e06\u7e07\u7e08\u7e09\u7e0a\u7e0b\u7e0c\u7e0d\u7e0e\u7e0f\u7e10\u7e11\u7e12\u7e13\u7e14\u7e15\u7e16\u7e17\u7e18\u7e19\u7e1a\u7e1b\u7e1c\u7e1d\u7e1e\u7e1f\u7e20\u7e21\u7e22\u7e23\u7e24\u7e25\u7e26\u7e27\u7e28\u7e29\u7e2a\u7e2b\u7e2c\u7e2d\u7e2e\u7e2f\u7e30\u7e31\u7e32\u7e33\u7e34\u7e35\u7e36\u7e37\u7e38\u7e39\ufffd\u7e3a\u7e3c\u7e3d\u7e3e\u7e3f\u7e40\u7e42\u7e43\u7e44\u7e45\u7e46\u7e48\u7e49\u7e4a\u7e4b\u7e4c\u7e4d\u7e4e\u7e4f\u7e50\u7e51\u7e52\u7e53\u7e54\u7e55\u7e56\u7e57\u7e58\u7e59\u7e5a\u7e5b\u7e5c\u7e5d\u4fca\u7ae3\u6d5a\u90e1\u9a8f\u5580\u5496\u5361\u54af\u5f00\u63e9\u6977\u51ef\u6168\u520a\u582a\u52d8\u574e\u780d\u770b\u5eb7\u6177\u7ce0\u625b\u6297\u4ea2\u7095\u8003\u62f7\u70e4\u9760\u5777\u82db\u67ef\u68f5\u78d5\u9897\u79d1\u58f3\u54b3\u53ef\u6e34\u514b\u523b\u5ba2\u8bfe\u80af\u5543\u57a6\u6073\u5751\u542d\u7a7a\u6050\u5b54\u63a7\u62a0\u53e3\u6263\u5bc7\u67af\u54ed\u7a9f\u82e6\u9177\u5e93\u88e4\u5938\u57ae\u630e\u8de8\u80ef\u5757\u7b77\u4fa9\u5feb\u5bbd\u6b3e\u5321\u7b50\u72c2\u6846\u77ff\u7736\u65f7\u51b5\u4e8f\u76d4\u5cbf\u7aa5\u8475\u594e\u9b41\u5080\ufffd".split(""),e=0;e!=r[191].length;++e)65533!==r[191][e].charCodeAt(0)&&(n[r[191][e]]=48896+e,t[48896+e]=r[191][e]);for(r[192]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7e5e\u7e5f\u7e60\u7e61\u7e62\u7e63\u7e64\u7e65\u7e66\u7e67\u7e68\u7e69\u7e6a\u7e6b\u7e6c\u7e6d\u7e6e\u7e6f\u7e70\u7e71\u7e72\u7e73\u7e74\u7e75\u7e76\u7e77\u7e78\u7e79\u7e7a\u7e7b\u7e7c\u7e7d\u7e7e\u7e7f\u7e80\u7e81\u7e83\u7e84\u7e85\u7e86\u7e87\u7e88\u7e89\u7e8a\u7e8b\u7e8c\u7e8d\u7e8e\u7e8f\u7e90\u7e91\u7e92\u7e93\u7e94\u7e95\u7e96\u7e97\u7e98\u7e99\u7e9a\u7e9c\u7e9d\u7e9e\ufffd\u7eae\u7eb4\u7ebb\u7ebc\u7ed6\u7ee4\u7eec\u7ef9\u7f0a\u7f10\u7f1e\u7f37\u7f39\u7f3b\u7f3c\u7f3d\u7f3e\u7f3f\u7f40\u7f41\u7f43\u7f46\u7f47\u7f48\u7f49\u7f4a\u7f4b\u7f4c\u7f4d\u7f4e\u7f4f\u7f52\u7f53\u9988\u6127\u6e83\u5764\u6606\u6346\u56f0\u62ec\u6269\u5ed3\u9614\u5783\u62c9\u5587\u8721\u814a\u8fa3\u5566\u83b1\u6765\u8d56\u84dd\u5a6a\u680f\u62e6\u7bee\u9611\u5170\u6f9c\u8c30\u63fd\u89c8\u61d2\u7f06\u70c2\u6ee5\u7405\u6994\u72fc\u5eca\u90ce\u6717\u6d6a\u635e\u52b3\u7262\u8001\u4f6c\u59e5\u916a\u70d9\u6d9d\u52d2\u4e50\u96f7\u956d\u857e\u78ca\u7d2f\u5121\u5792\u64c2\u808b\u7c7b\u6cea\u68f1\u695e\u51b7\u5398\u68a8\u7281\u9ece\u7bf1\u72f8\u79bb\u6f13\u7406\u674e\u91cc\u9ca4\u793c\u8389\u8354\u540f\u6817\u4e3d\u5389\u52b1\u783e\u5386\u5229\u5088\u4f8b\u4fd0\ufffd".split(""),e=0;e!=r[192].length;++e)65533!==r[192][e].charCodeAt(0)&&(n[r[192][e]]=49152+e,t[49152+e]=r[192][e]);for(r[193]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7f56\u7f59\u7f5b\u7f5c\u7f5d\u7f5e\u7f60\u7f63\u7f64\u7f65\u7f66\u7f67\u7f6b\u7f6c\u7f6d\u7f6f\u7f70\u7f73\u7f75\u7f76\u7f77\u7f78\u7f7a\u7f7b\u7f7c\u7f7d\u7f7f\u7f80\u7f82\u7f83\u7f84\u7f85\u7f86\u7f87\u7f88\u7f89\u7f8b\u7f8d\u7f8f\u7f90\u7f91\u7f92\u7f93\u7f95\u7f96\u7f97\u7f98\u7f99\u7f9b\u7f9c\u7fa0\u7fa2\u7fa3\u7fa5\u7fa6\u7fa8\u7fa9\u7faa\u7fab\u7fac\u7fad\u7fae\u7fb1\ufffd\u7fb3\u7fb4\u7fb5\u7fb6\u7fb7\u7fba\u7fbb\u7fbe\u7fc0\u7fc2\u7fc3\u7fc4\u7fc6\u7fc7\u7fc8\u7fc9\u7fcb\u7fcd\u7fcf\u7fd0\u7fd1\u7fd2\u7fd3\u7fd6\u7fd7\u7fd9\u7fda\u7fdb\u7fdc\u7fdd\u7fde\u7fe2\u7fe3\u75e2\u7acb\u7c92\u6ca5\u96b6\u529b\u7483\u54e9\u4fe9\u8054\u83b2\u8fde\u9570\u5ec9\u601c\u6d9f\u5e18\u655b\u8138\u94fe\u604b\u70bc\u7ec3\u7cae\u51c9\u6881\u7cb1\u826f\u4e24\u8f86\u91cf\u667e\u4eae\u8c05\u64a9\u804a\u50da\u7597\u71ce\u5be5\u8fbd\u6f66\u4e86\u6482\u9563\u5ed6\u6599\u5217\u88c2\u70c8\u52a3\u730e\u7433\u6797\u78f7\u9716\u4e34\u90bb\u9cde\u6dcb\u51db\u8d41\u541d\u62ce\u73b2\u83f1\u96f6\u9f84\u94c3\u4f36\u7f9a\u51cc\u7075\u9675\u5cad\u9886\u53e6\u4ee4\u6e9c\u7409\u69b4\u786b\u998f\u7559\u5218\u7624\u6d41\u67f3\u516d\u9f99\u804b\u5499\u7b3c\u7abf\ufffd".split(""),e=0;e!=r[193].length;++e)65533!==r[193][e].charCodeAt(0)&&(n[r[193][e]]=49408+e,t[49408+e]=r[193][e]);for(r[194]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7fe4\u7fe7\u7fe8\u7fea\u7feb\u7fec\u7fed\u7fef\u7ff2\u7ff4\u7ff5\u7ff6\u7ff7\u7ff8\u7ff9\u7ffa\u7ffd\u7ffe\u7fff\u8002\u8007\u8008\u8009\u800a\u800e\u800f\u8011\u8013\u801a\u801b\u801d\u801e\u801f\u8021\u8023\u8024\u802b\u802c\u802d\u802e\u802f\u8030\u8032\u8034\u8039\u803a\u803c\u803e\u8040\u8041\u8044\u8045\u8047\u8048\u8049\u804e\u804f\u8050\u8051\u8053\u8055\u8056\u8057\ufffd\u8059\u805b\u805c\u805d\u805e\u805f\u8060\u8061\u8062\u8063\u8064\u8065\u8066\u8067\u8068\u806b\u806c\u806d\u806e\u806f\u8070\u8072\u8073\u8074\u8075\u8076\u8077\u8078\u8079\u807a\u807b\u807c\u807d\u9686\u5784\u62e2\u9647\u697c\u5a04\u6402\u7bd3\u6f0f\u964b\u82a6\u5362\u9885\u5e90\u7089\u63b3\u5364\u864f\u9c81\u9e93\u788c\u9732\u8def\u8d42\u9e7f\u6f5e\u7984\u5f55\u9646\u622e\u9a74\u5415\u94dd\u4fa3\u65c5\u5c65\u5c61\u7f15\u8651\u6c2f\u5f8b\u7387\u6ee4\u7eff\u5ce6\u631b\u5b6a\u6ee6\u5375\u4e71\u63a0\u7565\u62a1\u8f6e\u4f26\u4ed1\u6ca6\u7eb6\u8bba\u841d\u87ba\u7f57\u903b\u9523\u7ba9\u9aa1\u88f8\u843d\u6d1b\u9a86\u7edc\u5988\u9ebb\u739b\u7801\u8682\u9a6c\u9a82\u561b\u5417\u57cb\u4e70\u9ea6\u5356\u8fc8\u8109\u7792\u9992\u86ee\u6ee1\u8513\u66fc\u6162\u6f2b\ufffd".split(""),e=0;e!=r[194].length;++e)65533!==r[194][e].charCodeAt(0)&&(n[r[194][e]]=49664+e,t[49664+e]=r[194][e]);for(r[195]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u807e\u8081\u8082\u8085\u8088\u808a\u808d\u808e\u808f\u8090\u8091\u8092\u8094\u8095\u8097\u8099\u809e\u80a3\u80a6\u80a7\u80a8\u80ac\u80b0\u80b3\u80b5\u80b6\u80b8\u80b9\u80bb\u80c5\u80c7\u80c8\u80c9\u80ca\u80cb\u80cf\u80d0\u80d1\u80d2\u80d3\u80d4\u80d5\u80d8\u80df\u80e0\u80e2\u80e3\u80e6\u80ee\u80f5\u80f7\u80f9\u80fb\u80fe\u80ff\u8100\u8101\u8103\u8104\u8105\u8107\u8108\u810b\ufffd\u810c\u8115\u8117\u8119\u811b\u811c\u811d\u811f\u8120\u8121\u8122\u8123\u8124\u8125\u8126\u8127\u8128\u8129\u812a\u812b\u812d\u812e\u8130\u8133\u8134\u8135\u8137\u8139\u813a\u813b\u813c\u813d\u813f\u8c29\u8292\u832b\u76f2\u6c13\u5fd9\u83bd\u732b\u8305\u951a\u6bdb\u77db\u94c6\u536f\u8302\u5192\u5e3d\u8c8c\u8d38\u4e48\u73ab\u679a\u6885\u9176\u9709\u7164\u6ca1\u7709\u5a92\u9541\u6bcf\u7f8e\u6627\u5bd0\u59b9\u5a9a\u95e8\u95f7\u4eec\u840c\u8499\u6aac\u76df\u9530\u731b\u68a6\u5b5f\u772f\u919a\u9761\u7cdc\u8ff7\u8c1c\u5f25\u7c73\u79d8\u89c5\u6ccc\u871c\u5bc6\u5e42\u68c9\u7720\u7ef5\u5195\u514d\u52c9\u5a29\u7f05\u9762\u82d7\u63cf\u7784\u85d0\u79d2\u6e3a\u5e99\u5999\u8511\u706d\u6c11\u62bf\u76bf\u654f\u60af\u95fd\u660e\u879f\u9e23\u94ed\u540d\u547d\u8c2c\u6478\ufffd".split(""),e=0;e!=r[195].length;++e)65533!==r[195][e].charCodeAt(0)&&(n[r[195][e]]=49920+e,t[49920+e]=r[195][e]);for(r[196]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8140\u8141\u8142\u8143\u8144\u8145\u8147\u8149\u814d\u814e\u814f\u8152\u8156\u8157\u8158\u815b\u815c\u815d\u815e\u815f\u8161\u8162\u8163\u8164\u8166\u8168\u816a\u816b\u816c\u816f\u8172\u8173\u8175\u8176\u8177\u8178\u8181\u8183\u8184\u8185\u8186\u8187\u8189\u818b\u818c\u818d\u818e\u8190\u8192\u8193\u8194\u8195\u8196\u8197\u8199\u819a\u819e\u819f\u81a0\u81a1\u81a2\u81a4\u81a5\ufffd\u81a7\u81a9\u81ab\u81ac\u81ad\u81ae\u81af\u81b0\u81b1\u81b2\u81b4\u81b5\u81b6\u81b7\u81b8\u81b9\u81bc\u81bd\u81be\u81bf\u81c4\u81c5\u81c7\u81c8\u81c9\u81cb\u81cd\u81ce\u81cf\u81d0\u81d1\u81d2\u81d3\u6479\u8611\u6a21\u819c\u78e8\u6469\u9b54\u62b9\u672b\u83ab\u58a8\u9ed8\u6cab\u6f20\u5bde\u964c\u8c0b\u725f\u67d0\u62c7\u7261\u4ea9\u59c6\u6bcd\u5893\u66ae\u5e55\u52df\u6155\u6728\u76ee\u7766\u7267\u7a46\u62ff\u54ea\u5450\u94a0\u90a3\u5a1c\u7eb3\u6c16\u4e43\u5976\u8010\u5948\u5357\u7537\u96be\u56ca\u6320\u8111\u607c\u95f9\u6dd6\u5462\u9981\u5185\u5ae9\u80fd\u59ae\u9713\u502a\u6ce5\u5c3c\u62df\u4f60\u533f\u817b\u9006\u6eba\u852b\u62c8\u5e74\u78be\u64b5\u637b\u5ff5\u5a18\u917f\u9e1f\u5c3f\u634f\u8042\u5b7d\u556e\u954a\u954d\u6d85\u60a8\u67e0\u72de\u51dd\u5b81\ufffd".split(""),e=0;e!=r[196].length;++e)65533!==r[196][e].charCodeAt(0)&&(n[r[196][e]]=50176+e,t[50176+e]=r[196][e]);for(r[197]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u81d4\u81d5\u81d6\u81d7\u81d8\u81d9\u81da\u81db\u81dc\u81dd\u81de\u81df\u81e0\u81e1\u81e2\u81e4\u81e5\u81e6\u81e8\u81e9\u81eb\u81ee\u81ef\u81f0\u81f1\u81f2\u81f5\u81f6\u81f7\u81f8\u81f9\u81fa\u81fd\u81ff\u8203\u8207\u8208\u8209\u820a\u820b\u820e\u820f\u8211\u8213\u8215\u8216\u8217\u8218\u8219\u821a\u821d\u8220\u8224\u8225\u8226\u8227\u8229\u822e\u8232\u823a\u823c\u823d\u823f\ufffd\u8240\u8241\u8242\u8243\u8245\u8246\u8248\u824a\u824c\u824d\u824e\u8250\u8251\u8252\u8253\u8254\u8255\u8256\u8257\u8259\u825b\u825c\u825d\u825e\u8260\u8261\u8262\u8263\u8264\u8265\u8266\u8267\u8269\u62e7\u6cde\u725b\u626d\u94ae\u7ebd\u8113\u6d53\u519c\u5f04\u5974\u52aa\u6012\u5973\u6696\u8650\u759f\u632a\u61e6\u7cef\u8bfa\u54e6\u6b27\u9e25\u6bb4\u85d5\u5455\u5076\u6ca4\u556a\u8db4\u722c\u5e15\u6015\u7436\u62cd\u6392\u724c\u5f98\u6e43\u6d3e\u6500\u6f58\u76d8\u78d0\u76fc\u7554\u5224\u53db\u4e53\u5e9e\u65c1\u802a\u80d6\u629b\u5486\u5228\u70ae\u888d\u8dd1\u6ce1\u5478\u80da\u57f9\u88f4\u8d54\u966a\u914d\u4f69\u6c9b\u55b7\u76c6\u7830\u62a8\u70f9\u6f8e\u5f6d\u84ec\u68da\u787c\u7bf7\u81a8\u670b\u9e4f\u6367\u78b0\u576f\u7812\u9739\u6279\u62ab\u5288\u7435\u6bd7\ufffd".split(""),e=0;e!=r[197].length;++e)65533!==r[197][e].charCodeAt(0)&&(n[r[197][e]]=50432+e,t[50432+e]=r[197][e]);for(r[198]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u826a\u826b\u826c\u826d\u8271\u8275\u8276\u8277\u8278\u827b\u827c\u8280\u8281\u8283\u8285\u8286\u8287\u8289\u828c\u8290\u8293\u8294\u8295\u8296\u829a\u829b\u829e\u82a0\u82a2\u82a3\u82a7\u82b2\u82b5\u82b6\u82ba\u82bb\u82bc\u82bf\u82c0\u82c2\u82c3\u82c5\u82c6\u82c9\u82d0\u82d6\u82d9\u82da\u82dd\u82e2\u82e7\u82e8\u82e9\u82ea\u82ec\u82ed\u82ee\u82f0\u82f2\u82f3\u82f5\u82f6\u82f8\ufffd\u82fa\u82fc\u82fd\u82fe\u82ff\u8300\u830a\u830b\u830d\u8310\u8312\u8313\u8316\u8318\u8319\u831d\u831e\u831f\u8320\u8321\u8322\u8323\u8324\u8325\u8326\u8329\u832a\u832e\u8330\u8332\u8337\u833b\u833d\u5564\u813e\u75b2\u76ae\u5339\u75de\u50fb\u5c41\u8b6c\u7bc7\u504f\u7247\u9a97\u98d8\u6f02\u74e2\u7968\u6487\u77a5\u62fc\u9891\u8d2b\u54c1\u8058\u4e52\u576a\u82f9\u840d\u5e73\u51ed\u74f6\u8bc4\u5c4f\u5761\u6cfc\u9887\u5a46\u7834\u9b44\u8feb\u7c95\u5256\u6251\u94fa\u4ec6\u8386\u8461\u83e9\u84b2\u57d4\u6734\u5703\u666e\u6d66\u8c31\u66dd\u7011\u671f\u6b3a\u6816\u621a\u59bb\u4e03\u51c4\u6f06\u67d2\u6c8f\u5176\u68cb\u5947\u6b67\u7566\u5d0e\u8110\u9f50\u65d7\u7948\u7941\u9a91\u8d77\u5c82\u4e5e\u4f01\u542f\u5951\u780c\u5668\u6c14\u8fc4\u5f03\u6c7d\u6ce3\u8bab\u6390\ufffd".split(""),e=0;e!=r[198].length;++e)65533!==r[198][e].charCodeAt(0)&&(n[r[198][e]]=50688+e,t[50688+e]=r[198][e]);for(r[199]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u833e\u833f\u8341\u8342\u8344\u8345\u8348\u834a\u834b\u834c\u834d\u834e\u8353\u8355\u8356\u8357\u8358\u8359\u835d\u8362\u8370\u8371\u8372\u8373\u8374\u8375\u8376\u8379\u837a\u837e\u837f\u8380\u8381\u8382\u8383\u8384\u8387\u8388\u838a\u838b\u838c\u838d\u838f\u8390\u8391\u8394\u8395\u8396\u8397\u8399\u839a\u839d\u839f\u83a1\u83a2\u83a3\u83a4\u83a5\u83a6\u83a7\u83ac\u83ad\u83ae\ufffd\u83af\u83b5\u83bb\u83be\u83bf\u83c2\u83c3\u83c4\u83c6\u83c8\u83c9\u83cb\u83cd\u83ce\u83d0\u83d1\u83d2\u83d3\u83d5\u83d7\u83d9\u83da\u83db\u83de\u83e2\u83e3\u83e4\u83e6\u83e7\u83e8\u83eb\u83ec\u83ed\u6070\u6d3d\u7275\u6266\u948e\u94c5\u5343\u8fc1\u7b7e\u4edf\u8c26\u4e7e\u9ed4\u94b1\u94b3\u524d\u6f5c\u9063\u6d45\u8c34\u5811\u5d4c\u6b20\u6b49\u67aa\u545b\u8154\u7f8c\u5899\u8537\u5f3a\u62a2\u6a47\u9539\u6572\u6084\u6865\u77a7\u4e54\u4fa8\u5de7\u9798\u64ac\u7fd8\u5ced\u4fcf\u7a8d\u5207\u8304\u4e14\u602f\u7a83\u94a6\u4fb5\u4eb2\u79e6\u7434\u52e4\u82b9\u64d2\u79bd\u5bdd\u6c81\u9752\u8f7b\u6c22\u503e\u537f\u6e05\u64ce\u6674\u6c30\u60c5\u9877\u8bf7\u5e86\u743c\u7a77\u79cb\u4e18\u90b1\u7403\u6c42\u56da\u914b\u6cc5\u8d8b\u533a\u86c6\u66f2\u8eaf\u5c48\u9a71\u6e20\ufffd".split(""),e=0;e!=r[199].length;++e)65533!==r[199][e].charCodeAt(0)&&(n[r[199][e]]=50944+e,t[50944+e]=r[199][e]);for(r[200]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u83ee\u83ef\u83f3\u83f4\u83f5\u83f6\u83f7\u83fa\u83fb\u83fc\u83fe\u83ff\u8400\u8402\u8405\u8407\u8408\u8409\u840a\u8410\u8412\u8413\u8414\u8415\u8416\u8417\u8419\u841a\u841b\u841e\u841f\u8420\u8421\u8422\u8423\u8429\u842a\u842b\u842c\u842d\u842e\u842f\u8430\u8432\u8433\u8434\u8435\u8436\u8437\u8439\u843a\u843b\u843e\u843f\u8440\u8441\u8442\u8443\u8444\u8445\u8447\u8448\u8449\ufffd\u844a\u844b\u844c\u844d\u844e\u844f\u8450\u8452\u8453\u8454\u8455\u8456\u8458\u845d\u845e\u845f\u8460\u8462\u8464\u8465\u8466\u8467\u8468\u846a\u846e\u846f\u8470\u8472\u8474\u8477\u8479\u847b\u847c\u53d6\u5a36\u9f8b\u8da3\u53bb\u5708\u98a7\u6743\u919b\u6cc9\u5168\u75ca\u62f3\u72ac\u5238\u529d\u7f3a\u7094\u7638\u5374\u9e4a\u69b7\u786e\u96c0\u88d9\u7fa4\u7136\u71c3\u5189\u67d3\u74e4\u58e4\u6518\u56b7\u8ba9\u9976\u6270\u7ed5\u60f9\u70ed\u58ec\u4ec1\u4eba\u5fcd\u97e7\u4efb\u8ba4\u5203\u598a\u7eab\u6254\u4ecd\u65e5\u620e\u8338\u84c9\u8363\u878d\u7194\u6eb6\u5bb9\u7ed2\u5197\u63c9\u67d4\u8089\u8339\u8815\u5112\u5b7a\u5982\u8fb1\u4e73\u6c5d\u5165\u8925\u8f6f\u962e\u854a\u745e\u9510\u95f0\u6da6\u82e5\u5f31\u6492\u6d12\u8428\u816e\u9cc3\u585e\u8d5b\u4e09\u53c1\ufffd".split(""),e=0;e!=r[200].length;++e)65533!==r[200][e].charCodeAt(0)&&(n[r[200][e]]=51200+e,t[51200+e]=r[200][e]);for(r[201]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u847d\u847e\u847f\u8480\u8481\u8483\u8484\u8485\u8486\u848a\u848d\u848f\u8490\u8491\u8492\u8493\u8494\u8495\u8496\u8498\u849a\u849b\u849d\u849e\u849f\u84a0\u84a2\u84a3\u84a4\u84a5\u84a6\u84a7\u84a8\u84a9\u84aa\u84ab\u84ac\u84ad\u84ae\u84b0\u84b1\u84b3\u84b5\u84b6\u84b7\u84bb\u84bc\u84be\u84c0\u84c2\u84c3\u84c5\u84c6\u84c7\u84c8\u84cb\u84cc\u84ce\u84cf\u84d2\u84d4\u84d5\u84d7\ufffd\u84d8\u84d9\u84da\u84db\u84dc\u84de\u84e1\u84e2\u84e4\u84e7\u84e8\u84e9\u84ea\u84eb\u84ed\u84ee\u84ef\u84f1\u84f2\u84f3\u84f4\u84f5\u84f6\u84f7\u84f8\u84f9\u84fa\u84fb\u84fd\u84fe\u8500\u8501\u8502\u4f1e\u6563\u6851\u55d3\u4e27\u6414\u9a9a\u626b\u5ac2\u745f\u8272\u6da9\u68ee\u50e7\u838e\u7802\u6740\u5239\u6c99\u7eb1\u50bb\u5565\u715e\u7b5b\u6652\u73ca\u82eb\u6749\u5c71\u5220\u717d\u886b\u95ea\u9655\u64c5\u8d61\u81b3\u5584\u6c55\u6247\u7f2e\u5892\u4f24\u5546\u8d4f\u664c\u4e0a\u5c1a\u88f3\u68a2\u634e\u7a0d\u70e7\u828d\u52fa\u97f6\u5c11\u54e8\u90b5\u7ecd\u5962\u8d4a\u86c7\u820c\u820d\u8d66\u6444\u5c04\u6151\u6d89\u793e\u8bbe\u7837\u7533\u547b\u4f38\u8eab\u6df1\u5a20\u7ec5\u795e\u6c88\u5ba1\u5a76\u751a\u80be\u614e\u6e17\u58f0\u751f\u7525\u7272\u5347\u7ef3\ufffd".split(""),e=0;e!=r[201].length;++e)65533!==r[201][e].charCodeAt(0)&&(n[r[201][e]]=51456+e,t[51456+e]=r[201][e]);for(r[202]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8503\u8504\u8505\u8506\u8507\u8508\u8509\u850a\u850b\u850d\u850e\u850f\u8510\u8512\u8514\u8515\u8516\u8518\u8519\u851b\u851c\u851d\u851e\u8520\u8522\u8523\u8524\u8525\u8526\u8527\u8528\u8529\u852a\u852d\u852e\u852f\u8530\u8531\u8532\u8533\u8534\u8535\u8536\u853e\u853f\u8540\u8541\u8542\u8544\u8545\u8546\u8547\u854b\u854c\u854d\u854e\u854f\u8550\u8551\u8552\u8553\u8554\u8555\ufffd\u8557\u8558\u855a\u855b\u855c\u855d\u855f\u8560\u8561\u8562\u8563\u8565\u8566\u8567\u8569\u856a\u856b\u856c\u856d\u856e\u856f\u8570\u8571\u8573\u8575\u8576\u8577\u8578\u857c\u857d\u857f\u8580\u8581\u7701\u76db\u5269\u80dc\u5723\u5e08\u5931\u72ee\u65bd\u6e7f\u8bd7\u5c38\u8671\u5341\u77f3\u62fe\u65f6\u4ec0\u98df\u8680\u5b9e\u8bc6\u53f2\u77e2\u4f7f\u5c4e\u9a76\u59cb\u5f0f\u793a\u58eb\u4e16\u67ff\u4e8b\u62ed\u8a93\u901d\u52bf\u662f\u55dc\u566c\u9002\u4ed5\u4f8d\u91ca\u9970\u6c0f\u5e02\u6043\u5ba4\u89c6\u8bd5\u6536\u624b\u9996\u5b88\u5bff\u6388\u552e\u53d7\u7626\u517d\u852c\u67a2\u68b3\u6b8a\u6292\u8f93\u53d4\u8212\u6dd1\u758f\u4e66\u8d4e\u5b70\u719f\u85af\u6691\u66d9\u7f72\u8700\u9ecd\u9f20\u5c5e\u672f\u8ff0\u6811\u675f\u620d\u7ad6\u5885\u5eb6\u6570\u6f31\ufffd".split(""),e=0;e!=r[202].length;++e)65533!==r[202][e].charCodeAt(0)&&(n[r[202][e]]=51712+e,t[51712+e]=r[202][e]);for(r[203]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8582\u8583\u8586\u8588\u8589\u858a\u858b\u858c\u858d\u858e\u8590\u8591\u8592\u8593\u8594\u8595\u8596\u8597\u8598\u8599\u859a\u859d\u859e\u859f\u85a0\u85a1\u85a2\u85a3\u85a5\u85a6\u85a7\u85a9\u85ab\u85ac\u85ad\u85b1\u85b2\u85b3\u85b4\u85b5\u85b6\u85b8\u85ba\u85bb\u85bc\u85bd\u85be\u85bf\u85c0\u85c2\u85c3\u85c4\u85c5\u85c6\u85c7\u85c8\u85ca\u85cb\u85cc\u85cd\u85ce\u85d1\u85d2\ufffd\u85d4\u85d6\u85d7\u85d8\u85d9\u85da\u85db\u85dd\u85de\u85df\u85e0\u85e1\u85e2\u85e3\u85e5\u85e6\u85e7\u85e8\u85ea\u85eb\u85ec\u85ed\u85ee\u85ef\u85f0\u85f1\u85f2\u85f3\u85f4\u85f5\u85f6\u85f7\u85f8\u6055\u5237\u800d\u6454\u8870\u7529\u5e05\u6813\u62f4\u971c\u53cc\u723d\u8c01\u6c34\u7761\u7a0e\u542e\u77ac\u987a\u821c\u8bf4\u7855\u6714\u70c1\u65af\u6495\u5636\u601d\u79c1\u53f8\u4e1d\u6b7b\u8086\u5bfa\u55e3\u56db\u4f3a\u4f3c\u9972\u5df3\u677e\u8038\u6002\u9882\u9001\u5b8b\u8bbc\u8bf5\u641c\u8258\u64de\u55fd\u82cf\u9165\u4fd7\u7d20\u901f\u7c9f\u50f3\u5851\u6eaf\u5bbf\u8bc9\u8083\u9178\u849c\u7b97\u867d\u968b\u968f\u7ee5\u9ad3\u788e\u5c81\u7a57\u9042\u96a7\u795f\u5b59\u635f\u7b0b\u84d1\u68ad\u5506\u7f29\u7410\u7d22\u9501\u6240\u584c\u4ed6\u5b83\u5979\u5854\ufffd".split(""),e=0;e!=r[203].length;++e)65533!==r[203][e].charCodeAt(0)&&(n[r[203][e]]=51968+e,t[51968+e]=r[203][e]);for(r[204]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u85f9\u85fa\u85fc\u85fd\u85fe\u8600\u8601\u8602\u8603\u8604\u8606\u8607\u8608\u8609\u860a\u860b\u860c\u860d\u860e\u860f\u8610\u8612\u8613\u8614\u8615\u8617\u8618\u8619\u861a\u861b\u861c\u861d\u861e\u861f\u8620\u8621\u8622\u8623\u8624\u8625\u8626\u8628\u862a\u862b\u862c\u862d\u862e\u862f\u8630\u8631\u8632\u8633\u8634\u8635\u8636\u8637\u8639\u863a\u863b\u863d\u863e\u863f\u8640\ufffd\u8641\u8642\u8643\u8644\u8645\u8646\u8647\u8648\u8649\u864a\u864b\u864c\u8652\u8653\u8655\u8656\u8657\u8658\u8659\u865b\u865c\u865d\u865f\u8660\u8661\u8663\u8664\u8665\u8666\u8667\u8668\u8669\u866a\u736d\u631e\u8e4b\u8e0f\u80ce\u82d4\u62ac\u53f0\u6cf0\u915e\u592a\u6001\u6c70\u574d\u644a\u8d2a\u762b\u6ee9\u575b\u6a80\u75f0\u6f6d\u8c2d\u8c08\u5766\u6bef\u8892\u78b3\u63a2\u53f9\u70ad\u6c64\u5858\u642a\u5802\u68e0\u819b\u5510\u7cd6\u5018\u8eba\u6dcc\u8d9f\u70eb\u638f\u6d9b\u6ed4\u7ee6\u8404\u6843\u9003\u6dd8\u9676\u8ba8\u5957\u7279\u85e4\u817e\u75bc\u8a8a\u68af\u5254\u8e22\u9511\u63d0\u9898\u8e44\u557c\u4f53\u66ff\u568f\u60d5\u6d95\u5243\u5c49\u5929\u6dfb\u586b\u7530\u751c\u606c\u8214\u8146\u6311\u6761\u8fe2\u773a\u8df3\u8d34\u94c1\u5e16\u5385\u542c\u70c3\ufffd".split(""),e=0;e!=r[204].length;++e)65533!==r[204][e].charCodeAt(0)&&(n[r[204][e]]=52224+e,t[52224+e]=r[204][e]);for(r[205]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u866d\u866f\u8670\u8672\u8673\u8674\u8675\u8676\u8677\u8678\u8683\u8684\u8685\u8686\u8687\u8688\u8689\u868e\u868f\u8690\u8691\u8692\u8694\u8696\u8697\u8698\u8699\u869a\u869b\u869e\u869f\u86a0\u86a1\u86a2\u86a5\u86a6\u86ab\u86ad\u86ae\u86b2\u86b3\u86b7\u86b8\u86b9\u86bb\u86bc\u86bd\u86be\u86bf\u86c1\u86c2\u86c3\u86c5\u86c8\u86cc\u86cd\u86d2\u86d3\u86d5\u86d6\u86d7\u86da\u86dc\ufffd\u86dd\u86e0\u86e1\u86e2\u86e3\u86e5\u86e6\u86e7\u86e8\u86ea\u86eb\u86ec\u86ef\u86f5\u86f6\u86f7\u86fa\u86fb\u86fc\u86fd\u86ff\u8701\u8704\u8705\u8706\u870b\u870c\u870e\u870f\u8710\u8711\u8714\u8716\u6c40\u5ef7\u505c\u4ead\u5ead\u633a\u8247\u901a\u6850\u916e\u77b3\u540c\u94dc\u5f64\u7ae5\u6876\u6345\u7b52\u7edf\u75db\u5077\u6295\u5934\u900f\u51f8\u79c3\u7a81\u56fe\u5f92\u9014\u6d82\u5c60\u571f\u5410\u5154\u6e4d\u56e2\u63a8\u9893\u817f\u8715\u892a\u9000\u541e\u5c6f\u81c0\u62d6\u6258\u8131\u9e35\u9640\u9a6e\u9a7c\u692d\u59a5\u62d3\u553e\u6316\u54c7\u86d9\u6d3c\u5a03\u74e6\u889c\u6b6a\u5916\u8c4c\u5f2f\u6e7e\u73a9\u987d\u4e38\u70f7\u5b8c\u7897\u633d\u665a\u7696\u60cb\u5b9b\u5a49\u4e07\u8155\u6c6a\u738b\u4ea1\u6789\u7f51\u5f80\u65fa\u671b\u5fd8\u5984\u5a01\ufffd".split(""),e=0;e!=r[205].length;++e)65533!==r[205][e].charCodeAt(0)&&(n[r[205][e]]=52480+e,t[52480+e]=r[205][e]);for(r[206]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8719\u871b\u871d\u871f\u8720\u8724\u8726\u8727\u8728\u872a\u872b\u872c\u872d\u872f\u8730\u8732\u8733\u8735\u8736\u8738\u8739\u873a\u873c\u873d\u8740\u8741\u8742\u8743\u8744\u8745\u8746\u874a\u874b\u874d\u874f\u8750\u8751\u8752\u8754\u8755\u8756\u8758\u875a\u875b\u875c\u875d\u875e\u875f\u8761\u8762\u8766\u8767\u8768\u8769\u876a\u876b\u876c\u876d\u876f\u8771\u8772\u8773\u8775\ufffd\u8777\u8778\u8779\u877a\u877f\u8780\u8781\u8784\u8786\u8787\u8789\u878a\u878c\u878e\u878f\u8790\u8791\u8792\u8794\u8795\u8796\u8798\u8799\u879a\u879b\u879c\u879d\u879e\u87a0\u87a1\u87a2\u87a3\u87a4\u5dcd\u5fae\u5371\u97e6\u8fdd\u6845\u56f4\u552f\u60df\u4e3a\u6f4d\u7ef4\u82c7\u840e\u59d4\u4f1f\u4f2a\u5c3e\u7eac\u672a\u851a\u5473\u754f\u80c3\u5582\u9b4f\u4f4d\u6e2d\u8c13\u5c09\u6170\u536b\u761f\u6e29\u868a\u6587\u95fb\u7eb9\u543b\u7a33\u7d0a\u95ee\u55e1\u7fc1\u74ee\u631d\u8717\u6da1\u7a9d\u6211\u65a1\u5367\u63e1\u6c83\u5deb\u545c\u94a8\u4e4c\u6c61\u8bec\u5c4b\u65e0\u829c\u68a7\u543e\u5434\u6bcb\u6b66\u4e94\u6342\u5348\u821e\u4f0d\u4fae\u575e\u620a\u96fe\u6664\u7269\u52ff\u52a1\u609f\u8bef\u6614\u7199\u6790\u897f\u7852\u77fd\u6670\u563b\u5438\u9521\u727a\ufffd".split(""),e=0;e!=r[206].length;++e)65533!==r[206][e].charCodeAt(0)&&(n[r[206][e]]=52736+e,t[52736+e]=r[206][e]);for(r[207]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u87a5\u87a6\u87a7\u87a9\u87aa\u87ae\u87b0\u87b1\u87b2\u87b4\u87b6\u87b7\u87b8\u87b9\u87bb\u87bc\u87be\u87bf\u87c1\u87c2\u87c3\u87c4\u87c5\u87c7\u87c8\u87c9\u87cc\u87cd\u87ce\u87cf\u87d0\u87d4\u87d5\u87d6\u87d7\u87d8\u87d9\u87da\u87dc\u87dd\u87de\u87df\u87e1\u87e2\u87e3\u87e4\u87e6\u87e7\u87e8\u87e9\u87eb\u87ec\u87ed\u87ef\u87f0\u87f1\u87f2\u87f3\u87f4\u87f5\u87f6\u87f7\u87f8\ufffd\u87fa\u87fb\u87fc\u87fd\u87ff\u8800\u8801\u8802\u8804\u8805\u8806\u8807\u8808\u8809\u880b\u880c\u880d\u880e\u880f\u8810\u8811\u8812\u8814\u8817\u8818\u8819\u881a\u881c\u881d\u881e\u881f\u8820\u8823\u7a00\u606f\u5e0c\u6089\u819d\u5915\u60dc\u7184\u70ef\u6eaa\u6c50\u7280\u6a84\u88ad\u5e2d\u4e60\u5ab3\u559c\u94e3\u6d17\u7cfb\u9699\u620f\u7ec6\u778e\u867e\u5323\u971e\u8f96\u6687\u5ce1\u4fa0\u72ed\u4e0b\u53a6\u590f\u5413\u6380\u9528\u5148\u4ed9\u9c9c\u7ea4\u54b8\u8d24\u8854\u8237\u95f2\u6d8e\u5f26\u5acc\u663e\u9669\u73b0\u732e\u53bf\u817a\u9985\u7fa1\u5baa\u9677\u9650\u7ebf\u76f8\u53a2\u9576\u9999\u7bb1\u8944\u6e58\u4e61\u7fd4\u7965\u8be6\u60f3\u54cd\u4eab\u9879\u5df7\u6a61\u50cf\u5411\u8c61\u8427\u785d\u9704\u524a\u54ee\u56a3\u9500\u6d88\u5bb5\u6dc6\u6653\ufffd".split(""),e=0;e!=r[207].length;++e)65533!==r[207][e].charCodeAt(0)&&(n[r[207][e]]=52992+e,t[52992+e]=r[207][e]);for(r[208]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8824\u8825\u8826\u8827\u8828\u8829\u882a\u882b\u882c\u882d\u882e\u882f\u8830\u8831\u8833\u8834\u8835\u8836\u8837\u8838\u883a\u883b\u883d\u883e\u883f\u8841\u8842\u8843\u8846\u8847\u8848\u8849\u884a\u884b\u884e\u884f\u8850\u8851\u8852\u8853\u8855\u8856\u8858\u885a\u885b\u885c\u885d\u885e\u885f\u8860\u8866\u8867\u886a\u886d\u886f\u8871\u8873\u8874\u8875\u8876\u8878\u8879\u887a\ufffd\u887b\u887c\u8880\u8883\u8886\u8887\u8889\u888a\u888c\u888e\u888f\u8890\u8891\u8893\u8894\u8895\u8897\u8898\u8899\u889a\u889b\u889d\u889e\u889f\u88a0\u88a1\u88a3\u88a5\u88a6\u88a7\u88a8\u88a9\u88aa\u5c0f\u5b5d\u6821\u8096\u5578\u7b11\u6548\u6954\u4e9b\u6b47\u874e\u978b\u534f\u631f\u643a\u90aa\u659c\u80c1\u8c10\u5199\u68b0\u5378\u87f9\u61c8\u6cc4\u6cfb\u8c22\u5c51\u85aa\u82af\u950c\u6b23\u8f9b\u65b0\u5ffb\u5fc3\u4fe1\u8845\u661f\u8165\u7329\u60fa\u5174\u5211\u578b\u5f62\u90a2\u884c\u9192\u5e78\u674f\u6027\u59d3\u5144\u51f6\u80f8\u5308\u6c79\u96c4\u718a\u4f11\u4fee\u7f9e\u673d\u55c5\u9508\u79c0\u8896\u7ee3\u589f\u620c\u9700\u865a\u5618\u987b\u5f90\u8bb8\u84c4\u9157\u53d9\u65ed\u5e8f\u755c\u6064\u7d6e\u5a7f\u7eea\u7eed\u8f69\u55a7\u5ba3\u60ac\u65cb\u7384\ufffd".split(""),e=0;e!=r[208].length;++e)65533!==r[208][e].charCodeAt(0)&&(n[r[208][e]]=53248+e,t[53248+e]=r[208][e]);for(r[209]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u88ac\u88ae\u88af\u88b0\u88b2\u88b3\u88b4\u88b5\u88b6\u88b8\u88b9\u88ba\u88bb\u88bd\u88be\u88bf\u88c0\u88c3\u88c4\u88c7\u88c8\u88ca\u88cb\u88cc\u88cd\u88cf\u88d0\u88d1\u88d3\u88d6\u88d7\u88da\u88db\u88dc\u88dd\u88de\u88e0\u88e1\u88e6\u88e7\u88e9\u88ea\u88eb\u88ec\u88ed\u88ee\u88ef\u88f2\u88f5\u88f6\u88f7\u88fa\u88fb\u88fd\u88ff\u8900\u8901\u8903\u8904\u8905\u8906\u8907\u8908\ufffd\u8909\u890b\u890c\u890d\u890e\u890f\u8911\u8914\u8915\u8916\u8917\u8918\u891c\u891d\u891e\u891f\u8920\u8922\u8923\u8924\u8926\u8927\u8928\u8929\u892c\u892d\u892e\u892f\u8931\u8932\u8933\u8935\u8937\u9009\u7663\u7729\u7eda\u9774\u859b\u5b66\u7a74\u96ea\u8840\u52cb\u718f\u5faa\u65ec\u8be2\u5bfb\u9a6f\u5de1\u6b89\u6c5b\u8bad\u8baf\u900a\u8fc5\u538b\u62bc\u9e26\u9e2d\u5440\u4e2b\u82bd\u7259\u869c\u5d16\u8859\u6daf\u96c5\u54d1\u4e9a\u8bb6\u7109\u54bd\u9609\u70df\u6df9\u76d0\u4e25\u7814\u8712\u5ca9\u5ef6\u8a00\u989c\u960e\u708e\u6cbf\u5944\u63a9\u773c\u884d\u6f14\u8273\u5830\u71d5\u538c\u781a\u96c1\u5501\u5f66\u7130\u5bb4\u8c1a\u9a8c\u6b83\u592e\u9e2f\u79e7\u6768\u626c\u4f6f\u75a1\u7f8a\u6d0b\u9633\u6c27\u4ef0\u75d2\u517b\u6837\u6f3e\u9080\u8170\u5996\u7476\ufffd".split(""),e=0;e!=r[209].length;++e)65533!==r[209][e].charCodeAt(0)&&(n[r[209][e]]=53504+e,t[53504+e]=r[209][e]);for(r[210]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8938\u8939\u893a\u893b\u893c\u893d\u893e\u893f\u8940\u8942\u8943\u8945\u8946\u8947\u8948\u8949\u894a\u894b\u894c\u894d\u894e\u894f\u8950\u8951\u8952\u8953\u8954\u8955\u8956\u8957\u8958\u8959\u895a\u895b\u895c\u895d\u8960\u8961\u8962\u8963\u8964\u8965\u8967\u8968\u8969\u896a\u896b\u896c\u896d\u896e\u896f\u8970\u8971\u8972\u8973\u8974\u8975\u8976\u8977\u8978\u8979\u897a\u897c\ufffd\u897d\u897e\u8980\u8982\u8984\u8985\u8987\u8988\u8989\u898a\u898b\u898c\u898d\u898e\u898f\u8990\u8991\u8992\u8993\u8994\u8995\u8996\u8997\u8998\u8999\u899a\u899b\u899c\u899d\u899e\u899f\u89a0\u89a1\u6447\u5c27\u9065\u7a91\u8c23\u59da\u54ac\u8200\u836f\u8981\u8000\u6930\u564e\u8036\u7237\u91ce\u51b6\u4e5f\u9875\u6396\u4e1a\u53f6\u66f3\u814b\u591c\u6db2\u4e00\u58f9\u533b\u63d6\u94f1\u4f9d\u4f0a\u8863\u9890\u5937\u9057\u79fb\u4eea\u80f0\u7591\u6c82\u5b9c\u59e8\u5f5d\u6905\u8681\u501a\u5df2\u4e59\u77e3\u4ee5\u827a\u6291\u6613\u9091\u5c79\u4ebf\u5f79\u81c6\u9038\u8084\u75ab\u4ea6\u88d4\u610f\u6bc5\u5fc6\u4e49\u76ca\u6ea2\u8be3\u8bae\u8c0a\u8bd1\u5f02\u7ffc\u7fcc\u7ece\u8335\u836b\u56e0\u6bb7\u97f3\u9634\u59fb\u541f\u94f6\u6deb\u5bc5\u996e\u5c39\u5f15\u9690\ufffd".split(""),e=0;e!=r[210].length;++e)65533!==r[210][e].charCodeAt(0)&&(n[r[210][e]]=53760+e,t[53760+e]=r[210][e]);for(r[211]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u89a2\u89a3\u89a4\u89a5\u89a6\u89a7\u89a8\u89a9\u89aa\u89ab\u89ac\u89ad\u89ae\u89af\u89b0\u89b1\u89b2\u89b3\u89b4\u89b5\u89b6\u89b7\u89b8\u89b9\u89ba\u89bb\u89bc\u89bd\u89be\u89bf\u89c0\u89c3\u89cd\u89d3\u89d4\u89d5\u89d7\u89d8\u89d9\u89db\u89dd\u89df\u89e0\u89e1\u89e2\u89e4\u89e7\u89e8\u89e9\u89ea\u89ec\u89ed\u89ee\u89f0\u89f1\u89f2\u89f4\u89f5\u89f6\u89f7\u89f8\u89f9\u89fa\ufffd\u89fb\u89fc\u89fd\u89fe\u89ff\u8a01\u8a02\u8a03\u8a04\u8a05\u8a06\u8a08\u8a09\u8a0a\u8a0b\u8a0c\u8a0d\u8a0e\u8a0f\u8a10\u8a11\u8a12\u8a13\u8a14\u8a15\u8a16\u8a17\u8a18\u8a19\u8a1a\u8a1b\u8a1c\u8a1d\u5370\u82f1\u6a31\u5a74\u9e70\u5e94\u7f28\u83b9\u8424\u8425\u8367\u8747\u8fce\u8d62\u76c8\u5f71\u9896\u786c\u6620\u54df\u62e5\u4f63\u81c3\u75c8\u5eb8\u96cd\u8e0a\u86f9\u548f\u6cf3\u6d8c\u6c38\u607f\u52c7\u7528\u5e7d\u4f18\u60a0\u5fe7\u5c24\u7531\u90ae\u94c0\u72b9\u6cb9\u6e38\u9149\u6709\u53cb\u53f3\u4f51\u91c9\u8bf1\u53c8\u5e7c\u8fc2\u6de4\u4e8e\u76c2\u6986\u865e\u611a\u8206\u4f59\u4fde\u903e\u9c7c\u6109\u6e1d\u6e14\u9685\u4e88\u5a31\u96e8\u4e0e\u5c7f\u79b9\u5b87\u8bed\u7fbd\u7389\u57df\u828b\u90c1\u5401\u9047\u55bb\u5cea\u5fa1\u6108\u6b32\u72f1\u80b2\u8a89\ufffd".split(""),e=0;e!=r[211].length;++e)65533!==r[211][e].charCodeAt(0)&&(n[r[211][e]]=54016+e,t[54016+e]=r[211][e]);for(r[212]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8a1e\u8a1f\u8a20\u8a21\u8a22\u8a23\u8a24\u8a25\u8a26\u8a27\u8a28\u8a29\u8a2a\u8a2b\u8a2c\u8a2d\u8a2e\u8a2f\u8a30\u8a31\u8a32\u8a33\u8a34\u8a35\u8a36\u8a37\u8a38\u8a39\u8a3a\u8a3b\u8a3c\u8a3d\u8a3f\u8a40\u8a41\u8a42\u8a43\u8a44\u8a45\u8a46\u8a47\u8a49\u8a4a\u8a4b\u8a4c\u8a4d\u8a4e\u8a4f\u8a50\u8a51\u8a52\u8a53\u8a54\u8a55\u8a56\u8a57\u8a58\u8a59\u8a5a\u8a5b\u8a5c\u8a5d\u8a5e\ufffd\u8a5f\u8a60\u8a61\u8a62\u8a63\u8a64\u8a65\u8a66\u8a67\u8a68\u8a69\u8a6a\u8a6b\u8a6c\u8a6d\u8a6e\u8a6f\u8a70\u8a71\u8a72\u8a73\u8a74\u8a75\u8a76\u8a77\u8a78\u8a7a\u8a7b\u8a7c\u8a7d\u8a7e\u8a7f\u8a80\u6d74\u5bd3\u88d5\u9884\u8c6b\u9a6d\u9e33\u6e0a\u51a4\u5143\u57a3\u8881\u539f\u63f4\u8f95\u56ed\u5458\u5706\u733f\u6e90\u7f18\u8fdc\u82d1\u613f\u6028\u9662\u66f0\u7ea6\u8d8a\u8dc3\u94a5\u5cb3\u7ca4\u6708\u60a6\u9605\u8018\u4e91\u90e7\u5300\u9668\u5141\u8fd0\u8574\u915d\u6655\u97f5\u5b55\u531d\u7838\u6742\u683d\u54c9\u707e\u5bb0\u8f7d\u518d\u5728\u54b1\u6512\u6682\u8d5e\u8d43\u810f\u846c\u906d\u7cdf\u51ff\u85fb\u67a3\u65e9\u6fa1\u86a4\u8e81\u566a\u9020\u7682\u7076\u71e5\u8d23\u62e9\u5219\u6cfd\u8d3c\u600e\u589e\u618e\u66fe\u8d60\u624e\u55b3\u6e23\u672d\u8f67\ufffd".split(""),e=0;e!=r[212].length;++e)65533!==r[212][e].charCodeAt(0)&&(n[r[212][e]]=54272+e,t[54272+e]=r[212][e]);for(r[213]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8a81\u8a82\u8a83\u8a84\u8a85\u8a86\u8a87\u8a88\u8a8b\u8a8c\u8a8d\u8a8e\u8a8f\u8a90\u8a91\u8a92\u8a94\u8a95\u8a96\u8a97\u8a98\u8a99\u8a9a\u8a9b\u8a9c\u8a9d\u8a9e\u8a9f\u8aa0\u8aa1\u8aa2\u8aa3\u8aa4\u8aa5\u8aa6\u8aa7\u8aa8\u8aa9\u8aaa\u8aab\u8aac\u8aad\u8aae\u8aaf\u8ab0\u8ab1\u8ab2\u8ab3\u8ab4\u8ab5\u8ab6\u8ab7\u8ab8\u8ab9\u8aba\u8abb\u8abc\u8abd\u8abe\u8abf\u8ac0\u8ac1\u8ac2\ufffd\u8ac3\u8ac4\u8ac5\u8ac6\u8ac7\u8ac8\u8ac9\u8aca\u8acb\u8acc\u8acd\u8ace\u8acf\u8ad0\u8ad1\u8ad2\u8ad3\u8ad4\u8ad5\u8ad6\u8ad7\u8ad8\u8ad9\u8ada\u8adb\u8adc\u8add\u8ade\u8adf\u8ae0\u8ae1\u8ae2\u8ae3\u94e1\u95f8\u7728\u6805\u69a8\u548b\u4e4d\u70b8\u8bc8\u6458\u658b\u5b85\u7a84\u503a\u5be8\u77bb\u6be1\u8a79\u7c98\u6cbe\u76cf\u65a9\u8f97\u5d2d\u5c55\u8638\u6808\u5360\u6218\u7ad9\u6e5b\u7efd\u6a1f\u7ae0\u5f70\u6f33\u5f20\u638c\u6da8\u6756\u4e08\u5e10\u8d26\u4ed7\u80c0\u7634\u969c\u62db\u662d\u627e\u6cbc\u8d75\u7167\u7f69\u5146\u8087\u53ec\u906e\u6298\u54f2\u86f0\u8f99\u8005\u9517\u8517\u8fd9\u6d59\u73cd\u659f\u771f\u7504\u7827\u81fb\u8d1e\u9488\u4fa6\u6795\u75b9\u8bca\u9707\u632f\u9547\u9635\u84b8\u6323\u7741\u5f81\u72f0\u4e89\u6014\u6574\u62ef\u6b63\u653f\ufffd".split(""),e=0;e!=r[213].length;++e)65533!==r[213][e].charCodeAt(0)&&(n[r[213][e]]=54528+e,t[54528+e]=r[213][e]);for(r[214]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8ae4\u8ae5\u8ae6\u8ae7\u8ae8\u8ae9\u8aea\u8aeb\u8aec\u8aed\u8aee\u8aef\u8af0\u8af1\u8af2\u8af3\u8af4\u8af5\u8af6\u8af7\u8af8\u8af9\u8afa\u8afb\u8afc\u8afd\u8afe\u8aff\u8b00\u8b01\u8b02\u8b03\u8b04\u8b05\u8b06\u8b08\u8b09\u8b0a\u8b0b\u8b0c\u8b0d\u8b0e\u8b0f\u8b10\u8b11\u8b12\u8b13\u8b14\u8b15\u8b16\u8b17\u8b18\u8b19\u8b1a\u8b1b\u8b1c\u8b1d\u8b1e\u8b1f\u8b20\u8b21\u8b22\u8b23\ufffd\u8b24\u8b25\u8b27\u8b28\u8b29\u8b2a\u8b2b\u8b2c\u8b2d\u8b2e\u8b2f\u8b30\u8b31\u8b32\u8b33\u8b34\u8b35\u8b36\u8b37\u8b38\u8b39\u8b3a\u8b3b\u8b3c\u8b3d\u8b3e\u8b3f\u8b40\u8b41\u8b42\u8b43\u8b44\u8b45\u5e27\u75c7\u90d1\u8bc1\u829d\u679d\u652f\u5431\u8718\u77e5\u80a2\u8102\u6c41\u4e4b\u7ec7\u804c\u76f4\u690d\u6b96\u6267\u503c\u4f84\u5740\u6307\u6b62\u8dbe\u53ea\u65e8\u7eb8\u5fd7\u631a\u63b7\u81f3\u81f4\u7f6e\u5e1c\u5cd9\u5236\u667a\u79e9\u7a1a\u8d28\u7099\u75d4\u6ede\u6cbb\u7a92\u4e2d\u76c5\u5fe0\u949f\u8877\u7ec8\u79cd\u80bf\u91cd\u4ef2\u4f17\u821f\u5468\u5dde\u6d32\u8bcc\u7ca5\u8f74\u8098\u5e1a\u5492\u76b1\u5b99\u663c\u9aa4\u73e0\u682a\u86db\u6731\u732a\u8bf8\u8bdb\u9010\u7af9\u70db\u716e\u62c4\u77a9\u5631\u4e3b\u8457\u67f1\u52a9\u86c0\u8d2e\u94f8\u7b51\ufffd".split(""),e=0;e!=r[214].length;++e)65533!==r[214][e].charCodeAt(0)&&(n[r[214][e]]=54784+e,t[54784+e]=r[214][e]);for(r[215]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8b46\u8b47\u8b48\u8b49\u8b4a\u8b4b\u8b4c\u8b4d\u8b4e\u8b4f\u8b50\u8b51\u8b52\u8b53\u8b54\u8b55\u8b56\u8b57\u8b58\u8b59\u8b5a\u8b5b\u8b5c\u8b5d\u8b5e\u8b5f\u8b60\u8b61\u8b62\u8b63\u8b64\u8b65\u8b67\u8b68\u8b69\u8b6a\u8b6b\u8b6d\u8b6e\u8b6f\u8b70\u8b71\u8b72\u8b73\u8b74\u8b75\u8b76\u8b77\u8b78\u8b79\u8b7a\u8b7b\u8b7c\u8b7d\u8b7e\u8b7f\u8b80\u8b81\u8b82\u8b83\u8b84\u8b85\u8b86\ufffd\u8b87\u8b88\u8b89\u8b8a\u8b8b\u8b8c\u8b8d\u8b8e\u8b8f\u8b90\u8b91\u8b92\u8b93\u8b94\u8b95\u8b96\u8b97\u8b98\u8b99\u8b9a\u8b9b\u8b9c\u8b9d\u8b9e\u8b9f\u8bac\u8bb1\u8bbb\u8bc7\u8bd0\u8bea\u8c09\u8c1e\u4f4f\u6ce8\u795d\u9a7b\u6293\u722a\u62fd\u4e13\u7816\u8f6c\u64b0\u8d5a\u7bc6\u6869\u5e84\u88c5\u5986\u649e\u58ee\u72b6\u690e\u9525\u8ffd\u8d58\u5760\u7f00\u8c06\u51c6\u6349\u62d9\u5353\u684c\u7422\u8301\u914c\u5544\u7740\u707c\u6d4a\u5179\u54a8\u8d44\u59ff\u6ecb\u6dc4\u5b5c\u7d2b\u4ed4\u7c7d\u6ed3\u5b50\u81ea\u6e0d\u5b57\u9b03\u68d5\u8e2a\u5b97\u7efc\u603b\u7eb5\u90b9\u8d70\u594f\u63cd\u79df\u8db3\u5352\u65cf\u7956\u8bc5\u963b\u7ec4\u94bb\u7e82\u5634\u9189\u6700\u7f6a\u5c0a\u9075\u6628\u5de6\u4f50\u67de\u505a\u4f5c\u5750\u5ea7\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[215].length;++e)65533!==r[215][e].charCodeAt(0)&&(n[r[215][e]]=55040+e,t[55040+e]=r[215][e]);for(r[216]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8c38\u8c39\u8c3a\u8c3b\u8c3c\u8c3d\u8c3e\u8c3f\u8c40\u8c42\u8c43\u8c44\u8c45\u8c48\u8c4a\u8c4b\u8c4d\u8c4e\u8c4f\u8c50\u8c51\u8c52\u8c53\u8c54\u8c56\u8c57\u8c58\u8c59\u8c5b\u8c5c\u8c5d\u8c5e\u8c5f\u8c60\u8c63\u8c64\u8c65\u8c66\u8c67\u8c68\u8c69\u8c6c\u8c6d\u8c6e\u8c6f\u8c70\u8c71\u8c72\u8c74\u8c75\u8c76\u8c77\u8c7b\u8c7c\u8c7d\u8c7e\u8c7f\u8c80\u8c81\u8c83\u8c84\u8c86\u8c87\ufffd\u8c88\u8c8b\u8c8d\u8c8e\u8c8f\u8c90\u8c91\u8c92\u8c93\u8c95\u8c96\u8c97\u8c99\u8c9a\u8c9b\u8c9c\u8c9d\u8c9e\u8c9f\u8ca0\u8ca1\u8ca2\u8ca3\u8ca4\u8ca5\u8ca6\u8ca7\u8ca8\u8ca9\u8caa\u8cab\u8cac\u8cad\u4e8d\u4e0c\u5140\u4e10\u5eff\u5345\u4e15\u4e98\u4e1e\u9b32\u5b6c\u5669\u4e28\u79ba\u4e3f\u5315\u4e47\u592d\u723b\u536e\u6c10\u56df\u80e4\u9997\u6bd3\u777e\u9f17\u4e36\u4e9f\u9f10\u4e5c\u4e69\u4e93\u8288\u5b5b\u556c\u560f\u4ec4\u538d\u539d\u53a3\u53a5\u53ae\u9765\u8d5d\u531a\u53f5\u5326\u532e\u533e\u8d5c\u5366\u5363\u5202\u5208\u520e\u522d\u5233\u523f\u5240\u524c\u525e\u5261\u525c\u84af\u527d\u5282\u5281\u5290\u5293\u5182\u7f54\u4ebb\u4ec3\u4ec9\u4ec2\u4ee8\u4ee1\u4eeb\u4ede\u4f1b\u4ef3\u4f22\u4f64\u4ef5\u4f25\u4f27\u4f09\u4f2b\u4f5e\u4f67\u6538\u4f5a\u4f5d\ufffd".split(""),e=0;e!=r[216].length;++e)65533!==r[216][e].charCodeAt(0)&&(n[r[216][e]]=55296+e,t[55296+e]=r[216][e]);for(r[217]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8cae\u8caf\u8cb0\u8cb1\u8cb2\u8cb3\u8cb4\u8cb5\u8cb6\u8cb7\u8cb8\u8cb9\u8cba\u8cbb\u8cbc\u8cbd\u8cbe\u8cbf\u8cc0\u8cc1\u8cc2\u8cc3\u8cc4\u8cc5\u8cc6\u8cc7\u8cc8\u8cc9\u8cca\u8ccb\u8ccc\u8ccd\u8cce\u8ccf\u8cd0\u8cd1\u8cd2\u8cd3\u8cd4\u8cd5\u8cd6\u8cd7\u8cd8\u8cd9\u8cda\u8cdb\u8cdc\u8cdd\u8cde\u8cdf\u8ce0\u8ce1\u8ce2\u8ce3\u8ce4\u8ce5\u8ce6\u8ce7\u8ce8\u8ce9\u8cea\u8ceb\u8cec\ufffd\u8ced\u8cee\u8cef\u8cf0\u8cf1\u8cf2\u8cf3\u8cf4\u8cf5\u8cf6\u8cf7\u8cf8\u8cf9\u8cfa\u8cfb\u8cfc\u8cfd\u8cfe\u8cff\u8d00\u8d01\u8d02\u8d03\u8d04\u8d05\u8d06\u8d07\u8d08\u8d09\u8d0a\u8d0b\u8d0c\u8d0d\u4f5f\u4f57\u4f32\u4f3d\u4f76\u4f74\u4f91\u4f89\u4f83\u4f8f\u4f7e\u4f7b\u4faa\u4f7c\u4fac\u4f94\u4fe6\u4fe8\u4fea\u4fc5\u4fda\u4fe3\u4fdc\u4fd1\u4fdf\u4ff8\u5029\u504c\u4ff3\u502c\u500f\u502e\u502d\u4ffe\u501c\u500c\u5025\u5028\u507e\u5043\u5055\u5048\u504e\u506c\u507b\u50a5\u50a7\u50a9\u50ba\u50d6\u5106\u50ed\u50ec\u50e6\u50ee\u5107\u510b\u4edd\u6c3d\u4f58\u4f65\u4fce\u9fa0\u6c46\u7c74\u516e\u5dfd\u9ec9\u9998\u5181\u5914\u52f9\u530d\u8a07\u5310\u51eb\u5919\u5155\u4ea0\u5156\u4eb3\u886e\u88a4\u4eb5\u8114\u88d2\u7980\u5b34\u8803\u7fb8\u51ab\u51b1\u51bd\u51bc\ufffd".split(""),e=0;e!=r[217].length;++e)65533!==r[217][e].charCodeAt(0)&&(n[r[217][e]]=55552+e,t[55552+e]=r[217][e]);for(r[218]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8d0e\u8d0f\u8d10\u8d11\u8d12\u8d13\u8d14\u8d15\u8d16\u8d17\u8d18\u8d19\u8d1a\u8d1b\u8d1c\u8d20\u8d51\u8d52\u8d57\u8d5f\u8d65\u8d68\u8d69\u8d6a\u8d6c\u8d6e\u8d6f\u8d71\u8d72\u8d78\u8d79\u8d7a\u8d7b\u8d7c\u8d7d\u8d7e\u8d7f\u8d80\u8d82\u8d83\u8d86\u8d87\u8d88\u8d89\u8d8c\u8d8d\u8d8e\u8d8f\u8d90\u8d92\u8d93\u8d95\u8d96\u8d97\u8d98\u8d99\u8d9a\u8d9b\u8d9c\u8d9d\u8d9e\u8da0\u8da1\ufffd\u8da2\u8da4\u8da5\u8da6\u8da7\u8da8\u8da9\u8daa\u8dab\u8dac\u8dad\u8dae\u8daf\u8db0\u8db2\u8db6\u8db7\u8db9\u8dbb\u8dbd\u8dc0\u8dc1\u8dc2\u8dc5\u8dc7\u8dc8\u8dc9\u8dca\u8dcd\u8dd0\u8dd2\u8dd3\u8dd4\u51c7\u5196\u51a2\u51a5\u8ba0\u8ba6\u8ba7\u8baa\u8bb4\u8bb5\u8bb7\u8bc2\u8bc3\u8bcb\u8bcf\u8bce\u8bd2\u8bd3\u8bd4\u8bd6\u8bd8\u8bd9\u8bdc\u8bdf\u8be0\u8be4\u8be8\u8be9\u8bee\u8bf0\u8bf3\u8bf6\u8bf9\u8bfc\u8bff\u8c00\u8c02\u8c04\u8c07\u8c0c\u8c0f\u8c11\u8c12\u8c14\u8c15\u8c16\u8c19\u8c1b\u8c18\u8c1d\u8c1f\u8c20\u8c21\u8c25\u8c27\u8c2a\u8c2b\u8c2e\u8c2f\u8c32\u8c33\u8c35\u8c36\u5369\u537a\u961d\u9622\u9621\u9631\u962a\u963d\u963c\u9642\u9649\u9654\u965f\u9667\u966c\u9672\u9674\u9688\u968d\u9697\u96b0\u9097\u909b\u909d\u9099\u90ac\u90a1\u90b4\u90b3\u90b6\u90ba\ufffd".split(""),e=0;e!=r[218].length;++e)65533!==r[218][e].charCodeAt(0)&&(n[r[218][e]]=55808+e,t[55808+e]=r[218][e]);for(r[219]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8dd5\u8dd8\u8dd9\u8ddc\u8de0\u8de1\u8de2\u8de5\u8de6\u8de7\u8de9\u8ded\u8dee\u8df0\u8df1\u8df2\u8df4\u8df6\u8dfc\u8dfe\u8dff\u8e00\u8e01\u8e02\u8e03\u8e04\u8e06\u8e07\u8e08\u8e0b\u8e0d\u8e0e\u8e10\u8e11\u8e12\u8e13\u8e15\u8e16\u8e17\u8e18\u8e19\u8e1a\u8e1b\u8e1c\u8e20\u8e21\u8e24\u8e25\u8e26\u8e27\u8e28\u8e2b\u8e2d\u8e30\u8e32\u8e33\u8e34\u8e36\u8e37\u8e38\u8e3b\u8e3c\u8e3e\ufffd\u8e3f\u8e43\u8e45\u8e46\u8e4c\u8e4d\u8e4e\u8e4f\u8e50\u8e53\u8e54\u8e55\u8e56\u8e57\u8e58\u8e5a\u8e5b\u8e5c\u8e5d\u8e5e\u8e5f\u8e60\u8e61\u8e62\u8e63\u8e64\u8e65\u8e67\u8e68\u8e6a\u8e6b\u8e6e\u8e71\u90b8\u90b0\u90cf\u90c5\u90be\u90d0\u90c4\u90c7\u90d3\u90e6\u90e2\u90dc\u90d7\u90db\u90eb\u90ef\u90fe\u9104\u9122\u911e\u9123\u9131\u912f\u9139\u9143\u9146\u520d\u5942\u52a2\u52ac\u52ad\u52be\u54ff\u52d0\u52d6\u52f0\u53df\u71ee\u77cd\u5ef4\u51f5\u51fc\u9b2f\u53b6\u5f01\u755a\u5def\u574c\u57a9\u57a1\u587e\u58bc\u58c5\u58d1\u5729\u572c\u572a\u5733\u5739\u572e\u572f\u575c\u573b\u5742\u5769\u5785\u576b\u5786\u577c\u577b\u5768\u576d\u5776\u5773\u57ad\u57a4\u578c\u57b2\u57cf\u57a7\u57b4\u5793\u57a0\u57d5\u57d8\u57da\u57d9\u57d2\u57b8\u57f4\u57ef\u57f8\u57e4\u57dd\ufffd".split(""),e=0;e!=r[219].length;++e)65533!==r[219][e].charCodeAt(0)&&(n[r[219][e]]=56064+e,t[56064+e]=r[219][e]);for(r[220]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8e73\u8e75\u8e77\u8e78\u8e79\u8e7a\u8e7b\u8e7d\u8e7e\u8e80\u8e82\u8e83\u8e84\u8e86\u8e88\u8e89\u8e8a\u8e8b\u8e8c\u8e8d\u8e8e\u8e91\u8e92\u8e93\u8e95\u8e96\u8e97\u8e98\u8e99\u8e9a\u8e9b\u8e9d\u8e9f\u8ea0\u8ea1\u8ea2\u8ea3\u8ea4\u8ea5\u8ea6\u8ea7\u8ea8\u8ea9\u8eaa\u8ead\u8eae\u8eb0\u8eb1\u8eb3\u8eb4\u8eb5\u8eb6\u8eb7\u8eb8\u8eb9\u8ebb\u8ebc\u8ebd\u8ebe\u8ebf\u8ec0\u8ec1\u8ec2\ufffd\u8ec3\u8ec4\u8ec5\u8ec6\u8ec7\u8ec8\u8ec9\u8eca\u8ecb\u8ecc\u8ecd\u8ecf\u8ed0\u8ed1\u8ed2\u8ed3\u8ed4\u8ed5\u8ed6\u8ed7\u8ed8\u8ed9\u8eda\u8edb\u8edc\u8edd\u8ede\u8edf\u8ee0\u8ee1\u8ee2\u8ee3\u8ee4\u580b\u580d\u57fd\u57ed\u5800\u581e\u5819\u5844\u5820\u5865\u586c\u5881\u5889\u589a\u5880\u99a8\u9f19\u61ff\u8279\u827d\u827f\u828f\u828a\u82a8\u8284\u828e\u8291\u8297\u8299\u82ab\u82b8\u82be\u82b0\u82c8\u82ca\u82e3\u8298\u82b7\u82ae\u82cb\u82cc\u82c1\u82a9\u82b4\u82a1\u82aa\u829f\u82c4\u82ce\u82a4\u82e1\u8309\u82f7\u82e4\u830f\u8307\u82dc\u82f4\u82d2\u82d8\u830c\u82fb\u82d3\u8311\u831a\u8306\u8314\u8315\u82e0\u82d5\u831c\u8351\u835b\u835c\u8308\u8392\u833c\u8334\u8331\u839b\u835e\u832f\u834f\u8347\u8343\u835f\u8340\u8317\u8360\u832d\u833a\u8333\u8366\u8365\ufffd".split(""),e=0;e!=r[220].length;++e)65533!==r[220][e].charCodeAt(0)&&(n[r[220][e]]=56320+e,t[56320+e]=r[220][e]);for(r[221]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8ee5\u8ee6\u8ee7\u8ee8\u8ee9\u8eea\u8eeb\u8eec\u8eed\u8eee\u8eef\u8ef0\u8ef1\u8ef2\u8ef3\u8ef4\u8ef5\u8ef6\u8ef7\u8ef8\u8ef9\u8efa\u8efb\u8efc\u8efd\u8efe\u8eff\u8f00\u8f01\u8f02\u8f03\u8f04\u8f05\u8f06\u8f07\u8f08\u8f09\u8f0a\u8f0b\u8f0c\u8f0d\u8f0e\u8f0f\u8f10\u8f11\u8f12\u8f13\u8f14\u8f15\u8f16\u8f17\u8f18\u8f19\u8f1a\u8f1b\u8f1c\u8f1d\u8f1e\u8f1f\u8f20\u8f21\u8f22\u8f23\ufffd\u8f24\u8f25\u8f26\u8f27\u8f28\u8f29\u8f2a\u8f2b\u8f2c\u8f2d\u8f2e\u8f2f\u8f30\u8f31\u8f32\u8f33\u8f34\u8f35\u8f36\u8f37\u8f38\u8f39\u8f3a\u8f3b\u8f3c\u8f3d\u8f3e\u8f3f\u8f40\u8f41\u8f42\u8f43\u8f44\u8368\u831b\u8369\u836c\u836a\u836d\u836e\u83b0\u8378\u83b3\u83b4\u83a0\u83aa\u8393\u839c\u8385\u837c\u83b6\u83a9\u837d\u83b8\u837b\u8398\u839e\u83a8\u83ba\u83bc\u83c1\u8401\u83e5\u83d8\u5807\u8418\u840b\u83dd\u83fd\u83d6\u841c\u8438\u8411\u8406\u83d4\u83df\u840f\u8403\u83f8\u83f9\u83ea\u83c5\u83c0\u8426\u83f0\u83e1\u845c\u8451\u845a\u8459\u8473\u8487\u8488\u847a\u8489\u8478\u843c\u8446\u8469\u8476\u848c\u848e\u8431\u846d\u84c1\u84cd\u84d0\u84e6\u84bd\u84d3\u84ca\u84bf\u84ba\u84e0\u84a1\u84b9\u84b4\u8497\u84e5\u84e3\u850c\u750d\u8538\u84f0\u8539\u851f\u853a\ufffd".split(""),e=0;e!=r[221].length;++e)65533!==r[221][e].charCodeAt(0)&&(n[r[221][e]]=56576+e,t[56576+e]=r[221][e]);for(r[222]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8f45\u8f46\u8f47\u8f48\u8f49\u8f4a\u8f4b\u8f4c\u8f4d\u8f4e\u8f4f\u8f50\u8f51\u8f52\u8f53\u8f54\u8f55\u8f56\u8f57\u8f58\u8f59\u8f5a\u8f5b\u8f5c\u8f5d\u8f5e\u8f5f\u8f60\u8f61\u8f62\u8f63\u8f64\u8f65\u8f6a\u8f80\u8f8c\u8f92\u8f9d\u8fa0\u8fa1\u8fa2\u8fa4\u8fa5\u8fa6\u8fa7\u8faa\u8fac\u8fad\u8fae\u8faf\u8fb2\u8fb3\u8fb4\u8fb5\u8fb7\u8fb8\u8fba\u8fbb\u8fbc\u8fbf\u8fc0\u8fc3\u8fc6\ufffd\u8fc9\u8fca\u8fcb\u8fcc\u8fcd\u8fcf\u8fd2\u8fd6\u8fd7\u8fda\u8fe0\u8fe1\u8fe3\u8fe7\u8fec\u8fef\u8ff1\u8ff2\u8ff4\u8ff5\u8ff6\u8ffa\u8ffb\u8ffc\u8ffe\u8fff\u9007\u9008\u900c\u900e\u9013\u9015\u9018\u8556\u853b\u84ff\u84fc\u8559\u8548\u8568\u8564\u855e\u857a\u77a2\u8543\u8572\u857b\u85a4\u85a8\u8587\u858f\u8579\u85ae\u859c\u8585\u85b9\u85b7\u85b0\u85d3\u85c1\u85dc\u85ff\u8627\u8605\u8629\u8616\u863c\u5efe\u5f08\u593c\u5941\u8037\u5955\u595a\u5958\u530f\u5c22\u5c25\u5c2c\u5c34\u624c\u626a\u629f\u62bb\u62ca\u62da\u62d7\u62ee\u6322\u62f6\u6339\u634b\u6343\u63ad\u63f6\u6371\u637a\u638e\u63b4\u636d\u63ac\u638a\u6369\u63ae\u63bc\u63f2\u63f8\u63e0\u63ff\u63c4\u63de\u63ce\u6452\u63c6\u63be\u6445\u6441\u640b\u641b\u6420\u640c\u6426\u6421\u645e\u6484\u646d\u6496\ufffd".split(""),e=0;e!=r[222].length;++e)65533!==r[222][e].charCodeAt(0)&&(n[r[222][e]]=56832+e,t[56832+e]=r[222][e]);for(r[223]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9019\u901c\u9023\u9024\u9025\u9027\u9028\u9029\u902a\u902b\u902c\u9030\u9031\u9032\u9033\u9034\u9037\u9039\u903a\u903d\u903f\u9040\u9043\u9045\u9046\u9048\u9049\u904a\u904b\u904c\u904e\u9054\u9055\u9056\u9059\u905a\u905c\u905d\u905e\u905f\u9060\u9061\u9064\u9066\u9067\u9069\u906a\u906b\u906c\u906f\u9070\u9071\u9072\u9073\u9076\u9077\u9078\u9079\u907a\u907b\u907c\u907e\u9081\ufffd\u9084\u9085\u9086\u9087\u9089\u908a\u908c\u908d\u908e\u908f\u9090\u9092\u9094\u9096\u9098\u909a\u909c\u909e\u909f\u90a0\u90a4\u90a5\u90a7\u90a8\u90a9\u90ab\u90ad\u90b2\u90b7\u90bc\u90bd\u90bf\u90c0\u647a\u64b7\u64b8\u6499\u64ba\u64c0\u64d0\u64d7\u64e4\u64e2\u6509\u6525\u652e\u5f0b\u5fd2\u7519\u5f11\u535f\u53f1\u53fd\u53e9\u53e8\u53fb\u5412\u5416\u5406\u544b\u5452\u5453\u5454\u5456\u5443\u5421\u5457\u5459\u5423\u5432\u5482\u5494\u5477\u5471\u5464\u549a\u549b\u5484\u5476\u5466\u549d\u54d0\u54ad\u54c2\u54b4\u54d2\u54a7\u54a6\u54d3\u54d4\u5472\u54a3\u54d5\u54bb\u54bf\u54cc\u54d9\u54da\u54dc\u54a9\u54aa\u54a4\u54dd\u54cf\u54de\u551b\u54e7\u5520\u54fd\u5514\u54f3\u5522\u5523\u550f\u5511\u5527\u552a\u5567\u558f\u55b5\u5549\u556d\u5541\u5555\u553f\u5550\u553c\ufffd".split(""),e=0;e!=r[223].length;++e)65533!==r[223][e].charCodeAt(0)&&(n[r[223][e]]=57088+e,t[57088+e]=r[223][e]);for(r[224]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u90c2\u90c3\u90c6\u90c8\u90c9\u90cb\u90cc\u90cd\u90d2\u90d4\u90d5\u90d6\u90d8\u90d9\u90da\u90de\u90df\u90e0\u90e3\u90e4\u90e5\u90e9\u90ea\u90ec\u90ee\u90f0\u90f1\u90f2\u90f3\u90f5\u90f6\u90f7\u90f9\u90fa\u90fb\u90fc\u90ff\u9100\u9101\u9103\u9105\u9106\u9107\u9108\u9109\u910a\u910b\u910c\u910d\u910e\u910f\u9110\u9111\u9112\u9113\u9114\u9115\u9116\u9117\u9118\u911a\u911b\u911c\ufffd\u911d\u911f\u9120\u9121\u9124\u9125\u9126\u9127\u9128\u9129\u912a\u912b\u912c\u912d\u912e\u9130\u9132\u9133\u9134\u9135\u9136\u9137\u9138\u913a\u913b\u913c\u913d\u913e\u913f\u9140\u9141\u9142\u9144\u5537\u5556\u5575\u5576\u5577\u5533\u5530\u555c\u558b\u55d2\u5583\u55b1\u55b9\u5588\u5581\u559f\u557e\u55d6\u5591\u557b\u55df\u55bd\u55be\u5594\u5599\u55ea\u55f7\u55c9\u561f\u55d1\u55eb\u55ec\u55d4\u55e6\u55dd\u55c4\u55ef\u55e5\u55f2\u55f3\u55cc\u55cd\u55e8\u55f5\u55e4\u8f94\u561e\u5608\u560c\u5601\u5624\u5623\u55fe\u5600\u5627\u562d\u5658\u5639\u5657\u562c\u564d\u5662\u5659\u565c\u564c\u5654\u5686\u5664\u5671\u566b\u567b\u567c\u5685\u5693\u56af\u56d4\u56d7\u56dd\u56e1\u56f5\u56eb\u56f9\u56ff\u5704\u570a\u5709\u571c\u5e0f\u5e19\u5e14\u5e11\u5e31\u5e3b\u5e3c\ufffd".split(""),e=0;e!=r[224].length;++e)65533!==r[224][e].charCodeAt(0)&&(n[r[224][e]]=57344+e,t[57344+e]=r[224][e]);for(r[225]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9145\u9147\u9148\u9151\u9153\u9154\u9155\u9156\u9158\u9159\u915b\u915c\u915f\u9160\u9166\u9167\u9168\u916b\u916d\u9173\u917a\u917b\u917c\u9180\u9181\u9182\u9183\u9184\u9186\u9188\u918a\u918e\u918f\u9193\u9194\u9195\u9196\u9197\u9198\u9199\u919c\u919d\u919e\u919f\u91a0\u91a1\u91a4\u91a5\u91a6\u91a7\u91a8\u91a9\u91ab\u91ac\u91b0\u91b1\u91b2\u91b3\u91b6\u91b7\u91b8\u91b9\u91bb\ufffd\u91bc\u91bd\u91be\u91bf\u91c0\u91c1\u91c2\u91c3\u91c4\u91c5\u91c6\u91c8\u91cb\u91d0\u91d2\u91d3\u91d4\u91d5\u91d6\u91d7\u91d8\u91d9\u91da\u91db\u91dd\u91de\u91df\u91e0\u91e1\u91e2\u91e3\u91e4\u91e5\u5e37\u5e44\u5e54\u5e5b\u5e5e\u5e61\u5c8c\u5c7a\u5c8d\u5c90\u5c96\u5c88\u5c98\u5c99\u5c91\u5c9a\u5c9c\u5cb5\u5ca2\u5cbd\u5cac\u5cab\u5cb1\u5ca3\u5cc1\u5cb7\u5cc4\u5cd2\u5ce4\u5ccb\u5ce5\u5d02\u5d03\u5d27\u5d26\u5d2e\u5d24\u5d1e\u5d06\u5d1b\u5d58\u5d3e\u5d34\u5d3d\u5d6c\u5d5b\u5d6f\u5d5d\u5d6b\u5d4b\u5d4a\u5d69\u5d74\u5d82\u5d99\u5d9d\u8c73\u5db7\u5dc5\u5f73\u5f77\u5f82\u5f87\u5f89\u5f8c\u5f95\u5f99\u5f9c\u5fa8\u5fad\u5fb5\u5fbc\u8862\u5f61\u72ad\u72b0\u72b4\u72b7\u72b8\u72c3\u72c1\u72ce\u72cd\u72d2\u72e8\u72ef\u72e9\u72f2\u72f4\u72f7\u7301\u72f3\u7303\u72fa\ufffd".split(""),e=0;e!=r[225].length;++e)65533!==r[225][e].charCodeAt(0)&&(n[r[225][e]]=57600+e,t[57600+e]=r[225][e]);for(r[226]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u91e6\u91e7\u91e8\u91e9\u91ea\u91eb\u91ec\u91ed\u91ee\u91ef\u91f0\u91f1\u91f2\u91f3\u91f4\u91f5\u91f6\u91f7\u91f8\u91f9\u91fa\u91fb\u91fc\u91fd\u91fe\u91ff\u9200\u9201\u9202\u9203\u9204\u9205\u9206\u9207\u9208\u9209\u920a\u920b\u920c\u920d\u920e\u920f\u9210\u9211\u9212\u9213\u9214\u9215\u9216\u9217\u9218\u9219\u921a\u921b\u921c\u921d\u921e\u921f\u9220\u9221\u9222\u9223\u9224\ufffd\u9225\u9226\u9227\u9228\u9229\u922a\u922b\u922c\u922d\u922e\u922f\u9230\u9231\u9232\u9233\u9234\u9235\u9236\u9237\u9238\u9239\u923a\u923b\u923c\u923d\u923e\u923f\u9240\u9241\u9242\u9243\u9244\u9245\u72fb\u7317\u7313\u7321\u730a\u731e\u731d\u7315\u7322\u7339\u7325\u732c\u7338\u7331\u7350\u734d\u7357\u7360\u736c\u736f\u737e\u821b\u5925\u98e7\u5924\u5902\u9963\u9967\u9968\u9969\u996a\u996b\u996c\u9974\u9977\u997d\u9980\u9984\u9987\u998a\u998d\u9990\u9991\u9993\u9994\u9995\u5e80\u5e91\u5e8b\u5e96\u5ea5\u5ea0\u5eb9\u5eb5\u5ebe\u5eb3\u8d53\u5ed2\u5ed1\u5edb\u5ee8\u5eea\u81ba\u5fc4\u5fc9\u5fd6\u5fcf\u6003\u5fee\u6004\u5fe1\u5fe4\u5ffe\u6005\u6006\u5fea\u5fed\u5ff8\u6019\u6035\u6026\u601b\u600f\u600d\u6029\u602b\u600a\u603f\u6021\u6078\u6079\u607b\u607a\u6042\ufffd".split(""),e=0;e!=r[226].length;++e)65533!==r[226][e].charCodeAt(0)&&(n[r[226][e]]=57856+e,t[57856+e]=r[226][e]);for(r[227]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9246\u9247\u9248\u9249\u924a\u924b\u924c\u924d\u924e\u924f\u9250\u9251\u9252\u9253\u9254\u9255\u9256\u9257\u9258\u9259\u925a\u925b\u925c\u925d\u925e\u925f\u9260\u9261\u9262\u9263\u9264\u9265\u9266\u9267\u9268\u9269\u926a\u926b\u926c\u926d\u926e\u926f\u9270\u9271\u9272\u9273\u9275\u9276\u9277\u9278\u9279\u927a\u927b\u927c\u927d\u927e\u927f\u9280\u9281\u9282\u9283\u9284\u9285\ufffd\u9286\u9287\u9288\u9289\u928a\u928b\u928c\u928d\u928f\u9290\u9291\u9292\u9293\u9294\u9295\u9296\u9297\u9298\u9299\u929a\u929b\u929c\u929d\u929e\u929f\u92a0\u92a1\u92a2\u92a3\u92a4\u92a5\u92a6\u92a7\u606a\u607d\u6096\u609a\u60ad\u609d\u6083\u6092\u608c\u609b\u60ec\u60bb\u60b1\u60dd\u60d8\u60c6\u60da\u60b4\u6120\u6126\u6115\u6123\u60f4\u6100\u610e\u612b\u614a\u6175\u61ac\u6194\u61a7\u61b7\u61d4\u61f5\u5fdd\u96b3\u95e9\u95eb\u95f1\u95f3\u95f5\u95f6\u95fc\u95fe\u9603\u9604\u9606\u9608\u960a\u960b\u960c\u960d\u960f\u9612\u9615\u9616\u9617\u9619\u961a\u4e2c\u723f\u6215\u6c35\u6c54\u6c5c\u6c4a\u6ca3\u6c85\u6c90\u6c94\u6c8c\u6c68\u6c69\u6c74\u6c76\u6c86\u6ca9\u6cd0\u6cd4\u6cad\u6cf7\u6cf8\u6cf1\u6cd7\u6cb2\u6ce0\u6cd6\u6cfa\u6ceb\u6cee\u6cb1\u6cd3\u6cef\u6cfe\ufffd".split(""),e=0;e!=r[227].length;++e)65533!==r[227][e].charCodeAt(0)&&(n[r[227][e]]=58112+e,t[58112+e]=r[227][e]);for(r[228]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u92a8\u92a9\u92aa\u92ab\u92ac\u92ad\u92af\u92b0\u92b1\u92b2\u92b3\u92b4\u92b5\u92b6\u92b7\u92b8\u92b9\u92ba\u92bb\u92bc\u92bd\u92be\u92bf\u92c0\u92c1\u92c2\u92c3\u92c4\u92c5\u92c6\u92c7\u92c9\u92ca\u92cb\u92cc\u92cd\u92ce\u92cf\u92d0\u92d1\u92d2\u92d3\u92d4\u92d5\u92d6\u92d7\u92d8\u92d9\u92da\u92db\u92dc\u92dd\u92de\u92df\u92e0\u92e1\u92e2\u92e3\u92e4\u92e5\u92e6\u92e7\u92e8\ufffd\u92e9\u92ea\u92eb\u92ec\u92ed\u92ee\u92ef\u92f0\u92f1\u92f2\u92f3\u92f4\u92f5\u92f6\u92f7\u92f8\u92f9\u92fa\u92fb\u92fc\u92fd\u92fe\u92ff\u9300\u9301\u9302\u9303\u9304\u9305\u9306\u9307\u9308\u9309\u6d39\u6d27\u6d0c\u6d43\u6d48\u6d07\u6d04\u6d19\u6d0e\u6d2b\u6d4d\u6d2e\u6d35\u6d1a\u6d4f\u6d52\u6d54\u6d33\u6d91\u6d6f\u6d9e\u6da0\u6d5e\u6d93\u6d94\u6d5c\u6d60\u6d7c\u6d63\u6e1a\u6dc7\u6dc5\u6dde\u6e0e\u6dbf\u6de0\u6e11\u6de6\u6ddd\u6dd9\u6e16\u6dab\u6e0c\u6dae\u6e2b\u6e6e\u6e4e\u6e6b\u6eb2\u6e5f\u6e86\u6e53\u6e54\u6e32\u6e25\u6e44\u6edf\u6eb1\u6e98\u6ee0\u6f2d\u6ee2\u6ea5\u6ea7\u6ebd\u6ebb\u6eb7\u6ed7\u6eb4\u6ecf\u6e8f\u6ec2\u6e9f\u6f62\u6f46\u6f47\u6f24\u6f15\u6ef9\u6f2f\u6f36\u6f4b\u6f74\u6f2a\u6f09\u6f29\u6f89\u6f8d\u6f8c\u6f78\u6f72\u6f7c\u6f7a\u6fd1\ufffd".split(""),e=0;e!=r[228].length;++e)65533!==r[228][e].charCodeAt(0)&&(n[r[228][e]]=58368+e,t[58368+e]=r[228][e]);for(r[229]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u930a\u930b\u930c\u930d\u930e\u930f\u9310\u9311\u9312\u9313\u9314\u9315\u9316\u9317\u9318\u9319\u931a\u931b\u931c\u931d\u931e\u931f\u9320\u9321\u9322\u9323\u9324\u9325\u9326\u9327\u9328\u9329\u932a\u932b\u932c\u932d\u932e\u932f\u9330\u9331\u9332\u9333\u9334\u9335\u9336\u9337\u9338\u9339\u933a\u933b\u933c\u933d\u933f\u9340\u9341\u9342\u9343\u9344\u9345\u9346\u9347\u9348\u9349\ufffd\u934a\u934b\u934c\u934d\u934e\u934f\u9350\u9351\u9352\u9353\u9354\u9355\u9356\u9357\u9358\u9359\u935a\u935b\u935c\u935d\u935e\u935f\u9360\u9361\u9362\u9363\u9364\u9365\u9366\u9367\u9368\u9369\u936b\u6fc9\u6fa7\u6fb9\u6fb6\u6fc2\u6fe1\u6fee\u6fde\u6fe0\u6fef\u701a\u7023\u701b\u7039\u7035\u704f\u705e\u5b80\u5b84\u5b95\u5b93\u5ba5\u5bb8\u752f\u9a9e\u6434\u5be4\u5bee\u8930\u5bf0\u8e47\u8b07\u8fb6\u8fd3\u8fd5\u8fe5\u8fee\u8fe4\u8fe9\u8fe6\u8ff3\u8fe8\u9005\u9004\u900b\u9026\u9011\u900d\u9016\u9021\u9035\u9036\u902d\u902f\u9044\u9051\u9052\u9050\u9068\u9058\u9062\u905b\u66b9\u9074\u907d\u9082\u9088\u9083\u908b\u5f50\u5f57\u5f56\u5f58\u5c3b\u54ab\u5c50\u5c59\u5b71\u5c63\u5c66\u7fbc\u5f2a\u5f29\u5f2d\u8274\u5f3c\u9b3b\u5c6e\u5981\u5983\u598d\u59a9\u59aa\u59a3\ufffd".split(""),e=0;e!=r[229].length;++e)65533!==r[229][e].charCodeAt(0)&&(n[r[229][e]]=58624+e,t[58624+e]=r[229][e]);for(r[230]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u936c\u936d\u936e\u936f\u9370\u9371\u9372\u9373\u9374\u9375\u9376\u9377\u9378\u9379\u937a\u937b\u937c\u937d\u937e\u937f\u9380\u9381\u9382\u9383\u9384\u9385\u9386\u9387\u9388\u9389\u938a\u938b\u938c\u938d\u938e\u9390\u9391\u9392\u9393\u9394\u9395\u9396\u9397\u9398\u9399\u939a\u939b\u939c\u939d\u939e\u939f\u93a0\u93a1\u93a2\u93a3\u93a4\u93a5\u93a6\u93a7\u93a8\u93a9\u93aa\u93ab\ufffd\u93ac\u93ad\u93ae\u93af\u93b0\u93b1\u93b2\u93b3\u93b4\u93b5\u93b6\u93b7\u93b8\u93b9\u93ba\u93bb\u93bc\u93bd\u93be\u93bf\u93c0\u93c1\u93c2\u93c3\u93c4\u93c5\u93c6\u93c7\u93c8\u93c9\u93cb\u93cc\u93cd\u5997\u59ca\u59ab\u599e\u59a4\u59d2\u59b2\u59af\u59d7\u59be\u5a05\u5a06\u59dd\u5a08\u59e3\u59d8\u59f9\u5a0c\u5a09\u5a32\u5a34\u5a11\u5a23\u5a13\u5a40\u5a67\u5a4a\u5a55\u5a3c\u5a62\u5a75\u80ec\u5aaa\u5a9b\u5a77\u5a7a\u5abe\u5aeb\u5ab2\u5ad2\u5ad4\u5ab8\u5ae0\u5ae3\u5af1\u5ad6\u5ae6\u5ad8\u5adc\u5b09\u5b17\u5b16\u5b32\u5b37\u5b40\u5c15\u5c1c\u5b5a\u5b65\u5b73\u5b51\u5b53\u5b62\u9a75\u9a77\u9a78\u9a7a\u9a7f\u9a7d\u9a80\u9a81\u9a85\u9a88\u9a8a\u9a90\u9a92\u9a93\u9a96\u9a98\u9a9b\u9a9c\u9a9d\u9a9f\u9aa0\u9aa2\u9aa3\u9aa5\u9aa7\u7e9f\u7ea1\u7ea3\u7ea5\u7ea8\u7ea9\ufffd".split(""),e=0;e!=r[230].length;++e)65533!==r[230][e].charCodeAt(0)&&(n[r[230][e]]=58880+e,t[58880+e]=r[230][e]);for(r[231]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u93ce\u93cf\u93d0\u93d1\u93d2\u93d3\u93d4\u93d5\u93d7\u93d8\u93d9\u93da\u93db\u93dc\u93dd\u93de\u93df\u93e0\u93e1\u93e2\u93e3\u93e4\u93e5\u93e6\u93e7\u93e8\u93e9\u93ea\u93eb\u93ec\u93ed\u93ee\u93ef\u93f0\u93f1\u93f2\u93f3\u93f4\u93f5\u93f6\u93f7\u93f8\u93f9\u93fa\u93fb\u93fc\u93fd\u93fe\u93ff\u9400\u9401\u9402\u9403\u9404\u9405\u9406\u9407\u9408\u9409\u940a\u940b\u940c\u940d\ufffd\u940e\u940f\u9410\u9411\u9412\u9413\u9414\u9415\u9416\u9417\u9418\u9419\u941a\u941b\u941c\u941d\u941e\u941f\u9420\u9421\u9422\u9423\u9424\u9425\u9426\u9427\u9428\u9429\u942a\u942b\u942c\u942d\u942e\u7ead\u7eb0\u7ebe\u7ec0\u7ec1\u7ec2\u7ec9\u7ecb\u7ecc\u7ed0\u7ed4\u7ed7\u7edb\u7ee0\u7ee1\u7ee8\u7eeb\u7eee\u7eef\u7ef1\u7ef2\u7f0d\u7ef6\u7efa\u7efb\u7efe\u7f01\u7f02\u7f03\u7f07\u7f08\u7f0b\u7f0c\u7f0f\u7f11\u7f12\u7f17\u7f19\u7f1c\u7f1b\u7f1f\u7f21\u7f22\u7f23\u7f24\u7f25\u7f26\u7f27\u7f2a\u7f2b\u7f2c\u7f2d\u7f2f\u7f30\u7f31\u7f32\u7f33\u7f35\u5e7a\u757f\u5ddb\u753e\u9095\u738e\u7391\u73ae\u73a2\u739f\u73cf\u73c2\u73d1\u73b7\u73b3\u73c0\u73c9\u73c8\u73e5\u73d9\u987c\u740a\u73e9\u73e7\u73de\u73ba\u73f2\u740f\u742a\u745b\u7426\u7425\u7428\u7430\u742e\u742c\ufffd".split(""),e=0;e!=r[231].length;++e)65533!==r[231][e].charCodeAt(0)&&(n[r[231][e]]=59136+e,t[59136+e]=r[231][e]);for(r[232]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u942f\u9430\u9431\u9432\u9433\u9434\u9435\u9436\u9437\u9438\u9439\u943a\u943b\u943c\u943d\u943f\u9440\u9441\u9442\u9443\u9444\u9445\u9446\u9447\u9448\u9449\u944a\u944b\u944c\u944d\u944e\u944f\u9450\u9451\u9452\u9453\u9454\u9455\u9456\u9457\u9458\u9459\u945a\u945b\u945c\u945d\u945e\u945f\u9460\u9461\u9462\u9463\u9464\u9465\u9466\u9467\u9468\u9469\u946a\u946c\u946d\u946e\u946f\ufffd\u9470\u9471\u9472\u9473\u9474\u9475\u9476\u9477\u9478\u9479\u947a\u947b\u947c\u947d\u947e\u947f\u9480\u9481\u9482\u9483\u9484\u9491\u9496\u9498\u94c7\u94cf\u94d3\u94d4\u94da\u94e6\u94fb\u951c\u9520\u741b\u741a\u7441\u745c\u7457\u7455\u7459\u7477\u746d\u747e\u749c\u748e\u7480\u7481\u7487\u748b\u749e\u74a8\u74a9\u7490\u74a7\u74d2\u74ba\u97ea\u97eb\u97ec\u674c\u6753\u675e\u6748\u6769\u67a5\u6787\u676a\u6773\u6798\u67a7\u6775\u67a8\u679e\u67ad\u678b\u6777\u677c\u67f0\u6809\u67d8\u680a\u67e9\u67b0\u680c\u67d9\u67b5\u67da\u67b3\u67dd\u6800\u67c3\u67b8\u67e2\u680e\u67c1\u67fd\u6832\u6833\u6860\u6861\u684e\u6862\u6844\u6864\u6883\u681d\u6855\u6866\u6841\u6867\u6840\u683e\u684a\u6849\u6829\u68b5\u688f\u6874\u6877\u6893\u686b\u68c2\u696e\u68fc\u691f\u6920\u68f9\ufffd".split(""),e=0;e!=r[232].length;++e)65533!==r[232][e].charCodeAt(0)&&(n[r[232][e]]=59392+e,t[59392+e]=r[232][e]);for(r[233]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9527\u9533\u953d\u9543\u9548\u954b\u9555\u955a\u9560\u956e\u9574\u9575\u9577\u9578\u9579\u957a\u957b\u957c\u957d\u957e\u9580\u9581\u9582\u9583\u9584\u9585\u9586\u9587\u9588\u9589\u958a\u958b\u958c\u958d\u958e\u958f\u9590\u9591\u9592\u9593\u9594\u9595\u9596\u9597\u9598\u9599\u959a\u959b\u959c\u959d\u959e\u959f\u95a0\u95a1\u95a2\u95a3\u95a4\u95a5\u95a6\u95a7\u95a8\u95a9\u95aa\ufffd\u95ab\u95ac\u95ad\u95ae\u95af\u95b0\u95b1\u95b2\u95b3\u95b4\u95b5\u95b6\u95b7\u95b8\u95b9\u95ba\u95bb\u95bc\u95bd\u95be\u95bf\u95c0\u95c1\u95c2\u95c3\u95c4\u95c5\u95c6\u95c7\u95c8\u95c9\u95ca\u95cb\u6924\u68f0\u690b\u6901\u6957\u68e3\u6910\u6971\u6939\u6960\u6942\u695d\u6984\u696b\u6980\u6998\u6978\u6934\u69cc\u6987\u6988\u69ce\u6989\u6966\u6963\u6979\u699b\u69a7\u69bb\u69ab\u69ad\u69d4\u69b1\u69c1\u69ca\u69df\u6995\u69e0\u698d\u69ff\u6a2f\u69ed\u6a17\u6a18\u6a65\u69f2\u6a44\u6a3e\u6aa0\u6a50\u6a5b\u6a35\u6a8e\u6a79\u6a3d\u6a28\u6a58\u6a7c\u6a91\u6a90\u6aa9\u6a97\u6aab\u7337\u7352\u6b81\u6b82\u6b87\u6b84\u6b92\u6b93\u6b8d\u6b9a\u6b9b\u6ba1\u6baa\u8f6b\u8f6d\u8f71\u8f72\u8f73\u8f75\u8f76\u8f78\u8f77\u8f79\u8f7a\u8f7c\u8f7e\u8f81\u8f82\u8f84\u8f87\u8f8b\ufffd".split(""),e=0;e!=r[233].length;++e)65533!==r[233][e].charCodeAt(0)&&(n[r[233][e]]=59648+e,t[59648+e]=r[233][e]);for(r[234]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u95cc\u95cd\u95ce\u95cf\u95d0\u95d1\u95d2\u95d3\u95d4\u95d5\u95d6\u95d7\u95d8\u95d9\u95da\u95db\u95dc\u95dd\u95de\u95df\u95e0\u95e1\u95e2\u95e3\u95e4\u95e5\u95e6\u95e7\u95ec\u95ff\u9607\u9613\u9618\u961b\u961e\u9620\u9623\u9624\u9625\u9626\u9627\u9628\u9629\u962b\u962c\u962d\u962f\u9630\u9637\u9638\u9639\u963a\u963e\u9641\u9643\u964a\u964e\u964f\u9651\u9652\u9653\u9656\u9657\ufffd\u9658\u9659\u965a\u965c\u965d\u965e\u9660\u9663\u9665\u9666\u966b\u966d\u966e\u966f\u9670\u9671\u9673\u9678\u9679\u967a\u967b\u967c\u967d\u967e\u967f\u9680\u9681\u9682\u9683\u9684\u9687\u9689\u968a\u8f8d\u8f8e\u8f8f\u8f98\u8f9a\u8ece\u620b\u6217\u621b\u621f\u6222\u6221\u6225\u6224\u622c\u81e7\u74ef\u74f4\u74ff\u750f\u7511\u7513\u6534\u65ee\u65ef\u65f0\u660a\u6619\u6772\u6603\u6615\u6600\u7085\u66f7\u661d\u6634\u6631\u6636\u6635\u8006\u665f\u6654\u6641\u664f\u6656\u6661\u6657\u6677\u6684\u668c\u66a7\u669d\u66be\u66db\u66dc\u66e6\u66e9\u8d32\u8d33\u8d36\u8d3b\u8d3d\u8d40\u8d45\u8d46\u8d48\u8d49\u8d47\u8d4d\u8d55\u8d59\u89c7\u89ca\u89cb\u89cc\u89ce\u89cf\u89d0\u89d1\u726e\u729f\u725d\u7266\u726f\u727e\u727f\u7284\u728b\u728d\u728f\u7292\u6308\u6332\u63b0\ufffd".split(""),e=0;e!=r[234].length;++e)65533!==r[234][e].charCodeAt(0)&&(n[r[234][e]]=59904+e,t[59904+e]=r[234][e]);for(r[235]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u968c\u968e\u9691\u9692\u9693\u9695\u9696\u969a\u969b\u969d\u969e\u969f\u96a0\u96a1\u96a2\u96a3\u96a4\u96a5\u96a6\u96a8\u96a9\u96aa\u96ab\u96ac\u96ad\u96ae\u96af\u96b1\u96b2\u96b4\u96b5\u96b7\u96b8\u96ba\u96bb\u96bf\u96c2\u96c3\u96c8\u96ca\u96cb\u96d0\u96d1\u96d3\u96d4\u96d6\u96d7\u96d8\u96d9\u96da\u96db\u96dc\u96dd\u96de\u96df\u96e1\u96e2\u96e3\u96e4\u96e5\u96e6\u96e7\u96eb\ufffd\u96ec\u96ed\u96ee\u96f0\u96f1\u96f2\u96f4\u96f5\u96f8\u96fa\u96fb\u96fc\u96fd\u96ff\u9702\u9703\u9705\u970a\u970b\u970c\u9710\u9711\u9712\u9714\u9715\u9717\u9718\u9719\u971a\u971b\u971d\u971f\u9720\u643f\u64d8\u8004\u6bea\u6bf3\u6bfd\u6bf5\u6bf9\u6c05\u6c07\u6c06\u6c0d\u6c15\u6c18\u6c19\u6c1a\u6c21\u6c29\u6c24\u6c2a\u6c32\u6535\u6555\u656b\u724d\u7252\u7256\u7230\u8662\u5216\u809f\u809c\u8093\u80bc\u670a\u80bd\u80b1\u80ab\u80ad\u80b4\u80b7\u80e7\u80e8\u80e9\u80ea\u80db\u80c2\u80c4\u80d9\u80cd\u80d7\u6710\u80dd\u80eb\u80f1\u80f4\u80ed\u810d\u810e\u80f2\u80fc\u6715\u8112\u8c5a\u8136\u811e\u812c\u8118\u8132\u8148\u814c\u8153\u8174\u8159\u815a\u8171\u8160\u8169\u817c\u817d\u816d\u8167\u584d\u5ab5\u8188\u8182\u8191\u6ed5\u81a3\u81aa\u81cc\u6726\u81ca\u81bb\ufffd".split(""),e=0;e!=r[235].length;++e)65533!==r[235][e].charCodeAt(0)&&(n[r[235][e]]=60160+e,t[60160+e]=r[235][e]);for(r[236]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9721\u9722\u9723\u9724\u9725\u9726\u9727\u9728\u9729\u972b\u972c\u972e\u972f\u9731\u9733\u9734\u9735\u9736\u9737\u973a\u973b\u973c\u973d\u973f\u9740\u9741\u9742\u9743\u9744\u9745\u9746\u9747\u9748\u9749\u974a\u974b\u974c\u974d\u974e\u974f\u9750\u9751\u9754\u9755\u9757\u9758\u975a\u975c\u975d\u975f\u9763\u9764\u9766\u9767\u9768\u976a\u976b\u976c\u976d\u976e\u976f\u9770\u9771\ufffd\u9772\u9775\u9777\u9778\u9779\u977a\u977b\u977d\u977e\u977f\u9780\u9781\u9782\u9783\u9784\u9786\u9787\u9788\u9789\u978a\u978c\u978e\u978f\u9790\u9793\u9795\u9796\u9797\u9799\u979a\u979b\u979c\u979d\u81c1\u81a6\u6b24\u6b37\u6b39\u6b43\u6b46\u6b59\u98d1\u98d2\u98d3\u98d5\u98d9\u98da\u6bb3\u5f40\u6bc2\u89f3\u6590\u9f51\u6593\u65bc\u65c6\u65c4\u65c3\u65cc\u65ce\u65d2\u65d6\u7080\u709c\u7096\u709d\u70bb\u70c0\u70b7\u70ab\u70b1\u70e8\u70ca\u7110\u7113\u7116\u712f\u7131\u7173\u715c\u7168\u7145\u7172\u714a\u7178\u717a\u7198\u71b3\u71b5\u71a8\u71a0\u71e0\u71d4\u71e7\u71f9\u721d\u7228\u706c\u7118\u7166\u71b9\u623e\u623d\u6243\u6248\u6249\u793b\u7940\u7946\u7949\u795b\u795c\u7953\u795a\u7962\u7957\u7960\u796f\u7967\u797a\u7985\u798a\u799a\u79a7\u79b3\u5fd1\u5fd0\ufffd".split(""),e=0;e!=r[236].length;++e)65533!==r[236][e].charCodeAt(0)&&(n[r[236][e]]=60416+e,t[60416+e]=r[236][e]);for(r[237]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u979e\u979f\u97a1\u97a2\u97a4\u97a5\u97a6\u97a7\u97a8\u97a9\u97aa\u97ac\u97ae\u97b0\u97b1\u97b3\u97b5\u97b6\u97b7\u97b8\u97b9\u97ba\u97bb\u97bc\u97bd\u97be\u97bf\u97c0\u97c1\u97c2\u97c3\u97c4\u97c5\u97c6\u97c7\u97c8\u97c9\u97ca\u97cb\u97cc\u97cd\u97ce\u97cf\u97d0\u97d1\u97d2\u97d3\u97d4\u97d5\u97d6\u97d7\u97d8\u97d9\u97da\u97db\u97dc\u97dd\u97de\u97df\u97e0\u97e1\u97e2\u97e3\ufffd\u97e4\u97e5\u97e8\u97ee\u97ef\u97f0\u97f1\u97f2\u97f4\u97f7\u97f8\u97f9\u97fa\u97fb\u97fc\u97fd\u97fe\u97ff\u9800\u9801\u9802\u9803\u9804\u9805\u9806\u9807\u9808\u9809\u980a\u980b\u980c\u980d\u980e\u603c\u605d\u605a\u6067\u6041\u6059\u6063\u60ab\u6106\u610d\u615d\u61a9\u619d\u61cb\u61d1\u6206\u8080\u807f\u6c93\u6cf6\u6dfc\u77f6\u77f8\u7800\u7809\u7817\u7818\u7811\u65ab\u782d\u781c\u781d\u7839\u783a\u783b\u781f\u783c\u7825\u782c\u7823\u7829\u784e\u786d\u7856\u7857\u7826\u7850\u7847\u784c\u786a\u789b\u7893\u789a\u7887\u789c\u78a1\u78a3\u78b2\u78b9\u78a5\u78d4\u78d9\u78c9\u78ec\u78f2\u7905\u78f4\u7913\u7924\u791e\u7934\u9f9b\u9ef9\u9efb\u9efc\u76f1\u7704\u770d\u76f9\u7707\u7708\u771a\u7722\u7719\u772d\u7726\u7735\u7738\u7750\u7751\u7747\u7743\u775a\u7768\ufffd".split(""),e=0;e!=r[237].length;++e)65533!==r[237][e].charCodeAt(0)&&(n[r[237][e]]=60672+e,t[60672+e]=r[237][e]);for(r[238]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u980f\u9810\u9811\u9812\u9813\u9814\u9815\u9816\u9817\u9818\u9819\u981a\u981b\u981c\u981d\u981e\u981f\u9820\u9821\u9822\u9823\u9824\u9825\u9826\u9827\u9828\u9829\u982a\u982b\u982c\u982d\u982e\u982f\u9830\u9831\u9832\u9833\u9834\u9835\u9836\u9837\u9838\u9839\u983a\u983b\u983c\u983d\u983e\u983f\u9840\u9841\u9842\u9843\u9844\u9845\u9846\u9847\u9848\u9849\u984a\u984b\u984c\u984d\ufffd\u984e\u984f\u9850\u9851\u9852\u9853\u9854\u9855\u9856\u9857\u9858\u9859\u985a\u985b\u985c\u985d\u985e\u985f\u9860\u9861\u9862\u9863\u9864\u9865\u9866\u9867\u9868\u9869\u986a\u986b\u986c\u986d\u986e\u7762\u7765\u777f\u778d\u777d\u7780\u778c\u7791\u779f\u77a0\u77b0\u77b5\u77bd\u753a\u7540\u754e\u754b\u7548\u755b\u7572\u7579\u7583\u7f58\u7f61\u7f5f\u8a48\u7f68\u7f74\u7f71\u7f79\u7f81\u7f7e\u76cd\u76e5\u8832\u9485\u9486\u9487\u948b\u948a\u948c\u948d\u948f\u9490\u9494\u9497\u9495\u949a\u949b\u949c\u94a3\u94a4\u94ab\u94aa\u94ad\u94ac\u94af\u94b0\u94b2\u94b4\u94b6\u94b7\u94b8\u94b9\u94ba\u94bc\u94bd\u94bf\u94c4\u94c8\u94c9\u94ca\u94cb\u94cc\u94cd\u94ce\u94d0\u94d1\u94d2\u94d5\u94d6\u94d7\u94d9\u94d8\u94db\u94de\u94df\u94e0\u94e2\u94e4\u94e5\u94e7\u94e8\u94ea\ufffd".split(""),e=0;e!=r[238].length;++e)65533!==r[238][e].charCodeAt(0)&&(n[r[238][e]]=60928+e,t[60928+e]=r[238][e]);for(r[239]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u986f\u9870\u9871\u9872\u9873\u9874\u988b\u988e\u9892\u9895\u9899\u98a3\u98a8\u98a9\u98aa\u98ab\u98ac\u98ad\u98ae\u98af\u98b0\u98b1\u98b2\u98b3\u98b4\u98b5\u98b6\u98b7\u98b8\u98b9\u98ba\u98bb\u98bc\u98bd\u98be\u98bf\u98c0\u98c1\u98c2\u98c3\u98c4\u98c5\u98c6\u98c7\u98c8\u98c9\u98ca\u98cb\u98cc\u98cd\u98cf\u98d0\u98d4\u98d6\u98d7\u98db\u98dc\u98dd\u98e0\u98e1\u98e2\u98e3\u98e4\ufffd\u98e5\u98e6\u98e9\u98ea\u98eb\u98ec\u98ed\u98ee\u98ef\u98f0\u98f1\u98f2\u98f3\u98f4\u98f5\u98f6\u98f7\u98f8\u98f9\u98fa\u98fb\u98fc\u98fd\u98fe\u98ff\u9900\u9901\u9902\u9903\u9904\u9905\u9906\u9907\u94e9\u94eb\u94ee\u94ef\u94f3\u94f4\u94f5\u94f7\u94f9\u94fc\u94fd\u94ff\u9503\u9502\u9506\u9507\u9509\u950a\u950d\u950e\u950f\u9512\u9513\u9514\u9515\u9516\u9518\u951b\u951d\u951e\u951f\u9522\u952a\u952b\u9529\u952c\u9531\u9532\u9534\u9536\u9537\u9538\u953c\u953e\u953f\u9542\u9535\u9544\u9545\u9546\u9549\u954c\u954e\u954f\u9552\u9553\u9554\u9556\u9557\u9558\u9559\u955b\u955e\u955f\u955d\u9561\u9562\u9564\u9565\u9566\u9567\u9568\u9569\u956a\u956b\u956c\u956f\u9571\u9572\u9573\u953a\u77e7\u77ec\u96c9\u79d5\u79ed\u79e3\u79eb\u7a06\u5d47\u7a03\u7a02\u7a1e\u7a14\ufffd".split(""),e=0;e!=r[239].length;++e)65533!==r[239][e].charCodeAt(0)&&(n[r[239][e]]=61184+e,t[61184+e]=r[239][e]);for(r[240]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9908\u9909\u990a\u990b\u990c\u990e\u990f\u9911\u9912\u9913\u9914\u9915\u9916\u9917\u9918\u9919\u991a\u991b\u991c\u991d\u991e\u991f\u9920\u9921\u9922\u9923\u9924\u9925\u9926\u9927\u9928\u9929\u992a\u992b\u992c\u992d\u992f\u9930\u9931\u9932\u9933\u9934\u9935\u9936\u9937\u9938\u9939\u993a\u993b\u993c\u993d\u993e\u993f\u9940\u9941\u9942\u9943\u9944\u9945\u9946\u9947\u9948\u9949\ufffd\u994a\u994b\u994c\u994d\u994e\u994f\u9950\u9951\u9952\u9953\u9956\u9957\u9958\u9959\u995a\u995b\u995c\u995d\u995e\u995f\u9960\u9961\u9962\u9964\u9966\u9973\u9978\u9979\u997b\u997e\u9982\u9983\u9989\u7a39\u7a37\u7a51\u9ecf\u99a5\u7a70\u7688\u768e\u7693\u7699\u76a4\u74de\u74e0\u752c\u9e20\u9e22\u9e28\u9e29\u9e2a\u9e2b\u9e2c\u9e32\u9e31\u9e36\u9e38\u9e37\u9e39\u9e3a\u9e3e\u9e41\u9e42\u9e44\u9e46\u9e47\u9e48\u9e49\u9e4b\u9e4c\u9e4e\u9e51\u9e55\u9e57\u9e5a\u9e5b\u9e5c\u9e5e\u9e63\u9e66\u9e67\u9e68\u9e69\u9e6a\u9e6b\u9e6c\u9e71\u9e6d\u9e73\u7592\u7594\u7596\u75a0\u759d\u75ac\u75a3\u75b3\u75b4\u75b8\u75c4\u75b1\u75b0\u75c3\u75c2\u75d6\u75cd\u75e3\u75e8\u75e6\u75e4\u75eb\u75e7\u7603\u75f1\u75fc\u75ff\u7610\u7600\u7605\u760c\u7617\u760a\u7625\u7618\u7615\u7619\ufffd".split(""),e=0;e!=r[240].length;++e)65533!==r[240][e].charCodeAt(0)&&(n[r[240][e]]=61440+e,t[61440+e]=r[240][e]);for(r[241]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u998c\u998e\u999a\u999b\u999c\u999d\u999e\u999f\u99a0\u99a1\u99a2\u99a3\u99a4\u99a6\u99a7\u99a9\u99aa\u99ab\u99ac\u99ad\u99ae\u99af\u99b0\u99b1\u99b2\u99b3\u99b4\u99b5\u99b6\u99b7\u99b8\u99b9\u99ba\u99bb\u99bc\u99bd\u99be\u99bf\u99c0\u99c1\u99c2\u99c3\u99c4\u99c5\u99c6\u99c7\u99c8\u99c9\u99ca\u99cb\u99cc\u99cd\u99ce\u99cf\u99d0\u99d1\u99d2\u99d3\u99d4\u99d5\u99d6\u99d7\u99d8\ufffd\u99d9\u99da\u99db\u99dc\u99dd\u99de\u99df\u99e0\u99e1\u99e2\u99e3\u99e4\u99e5\u99e6\u99e7\u99e8\u99e9\u99ea\u99eb\u99ec\u99ed\u99ee\u99ef\u99f0\u99f1\u99f2\u99f3\u99f4\u99f5\u99f6\u99f7\u99f8\u99f9\u761b\u763c\u7622\u7620\u7640\u762d\u7630\u763f\u7635\u7643\u763e\u7633\u764d\u765e\u7654\u765c\u7656\u766b\u766f\u7fca\u7ae6\u7a78\u7a79\u7a80\u7a86\u7a88\u7a95\u7aa6\u7aa0\u7aac\u7aa8\u7aad\u7ab3\u8864\u8869\u8872\u887d\u887f\u8882\u88a2\u88c6\u88b7\u88bc\u88c9\u88e2\u88ce\u88e3\u88e5\u88f1\u891a\u88fc\u88e8\u88fe\u88f0\u8921\u8919\u8913\u891b\u890a\u8934\u892b\u8936\u8941\u8966\u897b\u758b\u80e5\u76b2\u76b4\u77dc\u8012\u8014\u8016\u801c\u8020\u8022\u8025\u8026\u8027\u8029\u8028\u8031\u800b\u8035\u8043\u8046\u804d\u8052\u8069\u8071\u8983\u9878\u9880\u9883\ufffd".split(""),e=0;e!=r[241].length;++e)65533!==r[241][e].charCodeAt(0)&&(n[r[241][e]]=61696+e,t[61696+e]=r[241][e]);for(r[242]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u99fa\u99fb\u99fc\u99fd\u99fe\u99ff\u9a00\u9a01\u9a02\u9a03\u9a04\u9a05\u9a06\u9a07\u9a08\u9a09\u9a0a\u9a0b\u9a0c\u9a0d\u9a0e\u9a0f\u9a10\u9a11\u9a12\u9a13\u9a14\u9a15\u9a16\u9a17\u9a18\u9a19\u9a1a\u9a1b\u9a1c\u9a1d\u9a1e\u9a1f\u9a20\u9a21\u9a22\u9a23\u9a24\u9a25\u9a26\u9a27\u9a28\u9a29\u9a2a\u9a2b\u9a2c\u9a2d\u9a2e\u9a2f\u9a30\u9a31\u9a32\u9a33\u9a34\u9a35\u9a36\u9a37\u9a38\ufffd\u9a39\u9a3a\u9a3b\u9a3c\u9a3d\u9a3e\u9a3f\u9a40\u9a41\u9a42\u9a43\u9a44\u9a45\u9a46\u9a47\u9a48\u9a49\u9a4a\u9a4b\u9a4c\u9a4d\u9a4e\u9a4f\u9a50\u9a51\u9a52\u9a53\u9a54\u9a55\u9a56\u9a57\u9a58\u9a59\u9889\u988c\u988d\u988f\u9894\u989a\u989b\u989e\u989f\u98a1\u98a2\u98a5\u98a6\u864d\u8654\u866c\u866e\u867f\u867a\u867c\u867b\u86a8\u868d\u868b\u86ac\u869d\u86a7\u86a3\u86aa\u8693\u86a9\u86b6\u86c4\u86b5\u86ce\u86b0\u86ba\u86b1\u86af\u86c9\u86cf\u86b4\u86e9\u86f1\u86f2\u86ed\u86f3\u86d0\u8713\u86de\u86f4\u86df\u86d8\u86d1\u8703\u8707\u86f8\u8708\u870a\u870d\u8709\u8723\u873b\u871e\u8725\u872e\u871a\u873e\u8748\u8734\u8731\u8729\u8737\u873f\u8782\u8722\u877d\u877e\u877b\u8760\u8770\u874c\u876e\u878b\u8753\u8763\u877c\u8764\u8759\u8765\u8793\u87af\u87a8\u87d2\ufffd".split(""),e=0;e!=r[242].length;++e)65533!==r[242][e].charCodeAt(0)&&(n[r[242][e]]=61952+e,t[61952+e]=r[242][e]);for(r[243]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9a5a\u9a5b\u9a5c\u9a5d\u9a5e\u9a5f\u9a60\u9a61\u9a62\u9a63\u9a64\u9a65\u9a66\u9a67\u9a68\u9a69\u9a6a\u9a6b\u9a72\u9a83\u9a89\u9a8d\u9a8e\u9a94\u9a95\u9a99\u9aa6\u9aa9\u9aaa\u9aab\u9aac\u9aad\u9aae\u9aaf\u9ab2\u9ab3\u9ab4\u9ab5\u9ab9\u9abb\u9abd\u9abe\u9abf\u9ac3\u9ac4\u9ac6\u9ac7\u9ac8\u9ac9\u9aca\u9acd\u9ace\u9acf\u9ad0\u9ad2\u9ad4\u9ad5\u9ad6\u9ad7\u9ad9\u9ada\u9adb\u9adc\ufffd\u9add\u9ade\u9ae0\u9ae2\u9ae3\u9ae4\u9ae5\u9ae7\u9ae8\u9ae9\u9aea\u9aec\u9aee\u9af0\u9af1\u9af2\u9af3\u9af4\u9af5\u9af6\u9af7\u9af8\u9afa\u9afc\u9afd\u9afe\u9aff\u9b00\u9b01\u9b02\u9b04\u9b05\u9b06\u87c6\u8788\u8785\u87ad\u8797\u8783\u87ab\u87e5\u87ac\u87b5\u87b3\u87cb\u87d3\u87bd\u87d1\u87c0\u87ca\u87db\u87ea\u87e0\u87ee\u8816\u8813\u87fe\u880a\u881b\u8821\u8839\u883c\u7f36\u7f42\u7f44\u7f45\u8210\u7afa\u7afd\u7b08\u7b03\u7b04\u7b15\u7b0a\u7b2b\u7b0f\u7b47\u7b38\u7b2a\u7b19\u7b2e\u7b31\u7b20\u7b25\u7b24\u7b33\u7b3e\u7b1e\u7b58\u7b5a\u7b45\u7b75\u7b4c\u7b5d\u7b60\u7b6e\u7b7b\u7b62\u7b72\u7b71\u7b90\u7ba6\u7ba7\u7bb8\u7bac\u7b9d\u7ba8\u7b85\u7baa\u7b9c\u7ba2\u7bab\u7bb4\u7bd1\u7bc1\u7bcc\u7bdd\u7bda\u7be5\u7be6\u7bea\u7c0c\u7bfe\u7bfc\u7c0f\u7c16\u7c0b\ufffd".split(""),e=0;e!=r[243].length;++e)65533!==r[243][e].charCodeAt(0)&&(n[r[243][e]]=62208+e,t[62208+e]=r[243][e]);for(r[244]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9b07\u9b09\u9b0a\u9b0b\u9b0c\u9b0d\u9b0e\u9b10\u9b11\u9b12\u9b14\u9b15\u9b16\u9b17\u9b18\u9b19\u9b1a\u9b1b\u9b1c\u9b1d\u9b1e\u9b20\u9b21\u9b22\u9b24\u9b25\u9b26\u9b27\u9b28\u9b29\u9b2a\u9b2b\u9b2c\u9b2d\u9b2e\u9b30\u9b31\u9b33\u9b34\u9b35\u9b36\u9b37\u9b38\u9b39\u9b3a\u9b3d\u9b3e\u9b3f\u9b40\u9b46\u9b4a\u9b4b\u9b4c\u9b4e\u9b50\u9b52\u9b53\u9b55\u9b56\u9b57\u9b58\u9b59\u9b5a\ufffd\u9b5b\u9b5c\u9b5d\u9b5e\u9b5f\u9b60\u9b61\u9b62\u9b63\u9b64\u9b65\u9b66\u9b67\u9b68\u9b69\u9b6a\u9b6b\u9b6c\u9b6d\u9b6e\u9b6f\u9b70\u9b71\u9b72\u9b73\u9b74\u9b75\u9b76\u9b77\u9b78\u9b79\u9b7a\u9b7b\u7c1f\u7c2a\u7c26\u7c38\u7c41\u7c40\u81fe\u8201\u8202\u8204\u81ec\u8844\u8221\u8222\u8223\u822d\u822f\u8228\u822b\u8238\u823b\u8233\u8234\u823e\u8244\u8249\u824b\u824f\u825a\u825f\u8268\u887e\u8885\u8888\u88d8\u88df\u895e\u7f9d\u7f9f\u7fa7\u7faf\u7fb0\u7fb2\u7c7c\u6549\u7c91\u7c9d\u7c9c\u7c9e\u7ca2\u7cb2\u7cbc\u7cbd\u7cc1\u7cc7\u7ccc\u7ccd\u7cc8\u7cc5\u7cd7\u7ce8\u826e\u66a8\u7fbf\u7fce\u7fd5\u7fe5\u7fe1\u7fe6\u7fe9\u7fee\u7ff3\u7cf8\u7d77\u7da6\u7dae\u7e47\u7e9b\u9eb8\u9eb4\u8d73\u8d84\u8d94\u8d91\u8db1\u8d67\u8d6d\u8c47\u8c49\u914a\u9150\u914e\u914f\u9164\ufffd".split(""),e=0;e!=r[244].length;++e)65533!==r[244][e].charCodeAt(0)&&(n[r[244][e]]=62464+e,t[62464+e]=r[244][e]);for(r[245]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9b7c\u9b7d\u9b7e\u9b7f\u9b80\u9b81\u9b82\u9b83\u9b84\u9b85\u9b86\u9b87\u9b88\u9b89\u9b8a\u9b8b\u9b8c\u9b8d\u9b8e\u9b8f\u9b90\u9b91\u9b92\u9b93\u9b94\u9b95\u9b96\u9b97\u9b98\u9b99\u9b9a\u9b9b\u9b9c\u9b9d\u9b9e\u9b9f\u9ba0\u9ba1\u9ba2\u9ba3\u9ba4\u9ba5\u9ba6\u9ba7\u9ba8\u9ba9\u9baa\u9bab\u9bac\u9bad\u9bae\u9baf\u9bb0\u9bb1\u9bb2\u9bb3\u9bb4\u9bb5\u9bb6\u9bb7\u9bb8\u9bb9\u9bba\ufffd\u9bbb\u9bbc\u9bbd\u9bbe\u9bbf\u9bc0\u9bc1\u9bc2\u9bc3\u9bc4\u9bc5\u9bc6\u9bc7\u9bc8\u9bc9\u9bca\u9bcb\u9bcc\u9bcd\u9bce\u9bcf\u9bd0\u9bd1\u9bd2\u9bd3\u9bd4\u9bd5\u9bd6\u9bd7\u9bd8\u9bd9\u9bda\u9bdb\u9162\u9161\u9170\u9169\u916f\u917d\u917e\u9172\u9174\u9179\u918c\u9185\u9190\u918d\u9191\u91a2\u91a3\u91aa\u91ad\u91ae\u91af\u91b5\u91b4\u91ba\u8c55\u9e7e\u8db8\u8deb\u8e05\u8e59\u8e69\u8db5\u8dbf\u8dbc\u8dba\u8dc4\u8dd6\u8dd7\u8dda\u8dde\u8dce\u8dcf\u8ddb\u8dc6\u8dec\u8df7\u8df8\u8de3\u8df9\u8dfb\u8de4\u8e09\u8dfd\u8e14\u8e1d\u8e1f\u8e2c\u8e2e\u8e23\u8e2f\u8e3a\u8e40\u8e39\u8e35\u8e3d\u8e31\u8e49\u8e41\u8e42\u8e51\u8e52\u8e4a\u8e70\u8e76\u8e7c\u8e6f\u8e74\u8e85\u8e8f\u8e94\u8e90\u8e9c\u8e9e\u8c78\u8c82\u8c8a\u8c85\u8c98\u8c94\u659b\u89d6\u89de\u89da\u89dc\ufffd".split(""),e=0;e!=r[245].length;++e)65533!==r[245][e].charCodeAt(0)&&(n[r[245][e]]=62720+e,t[62720+e]=r[245][e]);for(r[246]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9bdc\u9bdd\u9bde\u9bdf\u9be0\u9be1\u9be2\u9be3\u9be4\u9be5\u9be6\u9be7\u9be8\u9be9\u9bea\u9beb\u9bec\u9bed\u9bee\u9bef\u9bf0\u9bf1\u9bf2\u9bf3\u9bf4\u9bf5\u9bf6\u9bf7\u9bf8\u9bf9\u9bfa\u9bfb\u9bfc\u9bfd\u9bfe\u9bff\u9c00\u9c01\u9c02\u9c03\u9c04\u9c05\u9c06\u9c07\u9c08\u9c09\u9c0a\u9c0b\u9c0c\u9c0d\u9c0e\u9c0f\u9c10\u9c11\u9c12\u9c13\u9c14\u9c15\u9c16\u9c17\u9c18\u9c19\u9c1a\ufffd\u9c1b\u9c1c\u9c1d\u9c1e\u9c1f\u9c20\u9c21\u9c22\u9c23\u9c24\u9c25\u9c26\u9c27\u9c28\u9c29\u9c2a\u9c2b\u9c2c\u9c2d\u9c2e\u9c2f\u9c30\u9c31\u9c32\u9c33\u9c34\u9c35\u9c36\u9c37\u9c38\u9c39\u9c3a\u9c3b\u89e5\u89eb\u89ef\u8a3e\u8b26\u9753\u96e9\u96f3\u96ef\u9706\u9701\u9708\u970f\u970e\u972a\u972d\u9730\u973e\u9f80\u9f83\u9f85\u9f86\u9f87\u9f88\u9f89\u9f8a\u9f8c\u9efe\u9f0b\u9f0d\u96b9\u96bc\u96bd\u96ce\u96d2\u77bf\u96e0\u928e\u92ae\u92c8\u933e\u936a\u93ca\u938f\u943e\u946b\u9c7f\u9c82\u9c85\u9c86\u9c87\u9c88\u7a23\u9c8b\u9c8e\u9c90\u9c91\u9c92\u9c94\u9c95\u9c9a\u9c9b\u9c9e\u9c9f\u9ca0\u9ca1\u9ca2\u9ca3\u9ca5\u9ca6\u9ca7\u9ca8\u9ca9\u9cab\u9cad\u9cae\u9cb0\u9cb1\u9cb2\u9cb3\u9cb4\u9cb5\u9cb6\u9cb7\u9cba\u9cbb\u9cbc\u9cbd\u9cc4\u9cc5\u9cc6\u9cc7\u9cca\u9ccb\ufffd".split(""),e=0;e!=r[246].length;++e)65533!==r[246][e].charCodeAt(0)&&(n[r[246][e]]=62976+e,t[62976+e]=r[246][e]);for(r[247]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9c3c\u9c3d\u9c3e\u9c3f\u9c40\u9c41\u9c42\u9c43\u9c44\u9c45\u9c46\u9c47\u9c48\u9c49\u9c4a\u9c4b\u9c4c\u9c4d\u9c4e\u9c4f\u9c50\u9c51\u9c52\u9c53\u9c54\u9c55\u9c56\u9c57\u9c58\u9c59\u9c5a\u9c5b\u9c5c\u9c5d\u9c5e\u9c5f\u9c60\u9c61\u9c62\u9c63\u9c64\u9c65\u9c66\u9c67\u9c68\u9c69\u9c6a\u9c6b\u9c6c\u9c6d\u9c6e\u9c6f\u9c70\u9c71\u9c72\u9c73\u9c74\u9c75\u9c76\u9c77\u9c78\u9c79\u9c7a\ufffd\u9c7b\u9c7d\u9c7e\u9c80\u9c83\u9c84\u9c89\u9c8a\u9c8c\u9c8f\u9c93\u9c96\u9c97\u9c98\u9c99\u9c9d\u9caa\u9cac\u9caf\u9cb9\u9cbe\u9cbf\u9cc0\u9cc1\u9cc2\u9cc8\u9cc9\u9cd1\u9cd2\u9cda\u9cdb\u9ce0\u9ce1\u9ccc\u9ccd\u9cce\u9ccf\u9cd0\u9cd3\u9cd4\u9cd5\u9cd7\u9cd8\u9cd9\u9cdc\u9cdd\u9cdf\u9ce2\u977c\u9785\u9791\u9792\u9794\u97af\u97ab\u97a3\u97b2\u97b4\u9ab1\u9ab0\u9ab7\u9e58\u9ab6\u9aba\u9abc\u9ac1\u9ac0\u9ac5\u9ac2\u9acb\u9acc\u9ad1\u9b45\u9b43\u9b47\u9b49\u9b48\u9b4d\u9b51\u98e8\u990d\u992e\u9955\u9954\u9adf\u9ae1\u9ae6\u9aef\u9aeb\u9afb\u9aed\u9af9\u9b08\u9b0f\u9b13\u9b1f\u9b23\u9ebd\u9ebe\u7e3b\u9e82\u9e87\u9e88\u9e8b\u9e92\u93d6\u9e9d\u9e9f\u9edb\u9edc\u9edd\u9ee0\u9edf\u9ee2\u9ee9\u9ee7\u9ee5\u9eea\u9eef\u9f22\u9f2c\u9f2f\u9f39\u9f37\u9f3d\u9f3e\u9f44\ufffd".split(""),e=0;e!=r[247].length;++e)65533!==r[247][e].charCodeAt(0)&&(n[r[247][e]]=63232+e,t[63232+e]=r[247][e]);for(r[248]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9ce3\u9ce4\u9ce5\u9ce6\u9ce7\u9ce8\u9ce9\u9cea\u9ceb\u9cec\u9ced\u9cee\u9cef\u9cf0\u9cf1\u9cf2\u9cf3\u9cf4\u9cf5\u9cf6\u9cf7\u9cf8\u9cf9\u9cfa\u9cfb\u9cfc\u9cfd\u9cfe\u9cff\u9d00\u9d01\u9d02\u9d03\u9d04\u9d05\u9d06\u9d07\u9d08\u9d09\u9d0a\u9d0b\u9d0c\u9d0d\u9d0e\u9d0f\u9d10\u9d11\u9d12\u9d13\u9d14\u9d15\u9d16\u9d17\u9d18\u9d19\u9d1a\u9d1b\u9d1c\u9d1d\u9d1e\u9d1f\u9d20\u9d21\ufffd\u9d22\u9d23\u9d24\u9d25\u9d26\u9d27\u9d28\u9d29\u9d2a\u9d2b\u9d2c\u9d2d\u9d2e\u9d2f\u9d30\u9d31\u9d32\u9d33\u9d34\u9d35\u9d36\u9d37\u9d38\u9d39\u9d3a\u9d3b\u9d3c\u9d3d\u9d3e\u9d3f\u9d40\u9d41\u9d42\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[248].length;++e)65533!==r[248][e].charCodeAt(0)&&(n[r[248][e]]=63488+e,t[63488+e]=r[248][e]);for(r[249]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9d43\u9d44\u9d45\u9d46\u9d47\u9d48\u9d49\u9d4a\u9d4b\u9d4c\u9d4d\u9d4e\u9d4f\u9d50\u9d51\u9d52\u9d53\u9d54\u9d55\u9d56\u9d57\u9d58\u9d59\u9d5a\u9d5b\u9d5c\u9d5d\u9d5e\u9d5f\u9d60\u9d61\u9d62\u9d63\u9d64\u9d65\u9d66\u9d67\u9d68\u9d69\u9d6a\u9d6b\u9d6c\u9d6d\u9d6e\u9d6f\u9d70\u9d71\u9d72\u9d73\u9d74\u9d75\u9d76\u9d77\u9d78\u9d79\u9d7a\u9d7b\u9d7c\u9d7d\u9d7e\u9d7f\u9d80\u9d81\ufffd\u9d82\u9d83\u9d84\u9d85\u9d86\u9d87\u9d88\u9d89\u9d8a\u9d8b\u9d8c\u9d8d\u9d8e\u9d8f\u9d90\u9d91\u9d92\u9d93\u9d94\u9d95\u9d96\u9d97\u9d98\u9d99\u9d9a\u9d9b\u9d9c\u9d9d\u9d9e\u9d9f\u9da0\u9da1\u9da2\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[249].length;++e)65533!==r[249][e].charCodeAt(0)&&(n[r[249][e]]=63744+e,t[63744+e]=r[249][e]);for(r[250]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9da3\u9da4\u9da5\u9da6\u9da7\u9da8\u9da9\u9daa\u9dab\u9dac\u9dad\u9dae\u9daf\u9db0\u9db1\u9db2\u9db3\u9db4\u9db5\u9db6\u9db7\u9db8\u9db9\u9dba\u9dbb\u9dbc\u9dbd\u9dbe\u9dbf\u9dc0\u9dc1\u9dc2\u9dc3\u9dc4\u9dc5\u9dc6\u9dc7\u9dc8\u9dc9\u9dca\u9dcb\u9dcc\u9dcd\u9dce\u9dcf\u9dd0\u9dd1\u9dd2\u9dd3\u9dd4\u9dd5\u9dd6\u9dd7\u9dd8\u9dd9\u9dda\u9ddb\u9ddc\u9ddd\u9dde\u9ddf\u9de0\u9de1\ufffd\u9de2\u9de3\u9de4\u9de5\u9de6\u9de7\u9de8\u9de9\u9dea\u9deb\u9dec\u9ded\u9dee\u9def\u9df0\u9df1\u9df2\u9df3\u9df4\u9df5\u9df6\u9df7\u9df8\u9df9\u9dfa\u9dfb\u9dfc\u9dfd\u9dfe\u9dff\u9e00\u9e01\u9e02\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[250].length;++e)65533!==r[250][e].charCodeAt(0)&&(n[r[250][e]]=64e3+e,t[64e3+e]=r[250][e]);for(r[251]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9e03\u9e04\u9e05\u9e06\u9e07\u9e08\u9e09\u9e0a\u9e0b\u9e0c\u9e0d\u9e0e\u9e0f\u9e10\u9e11\u9e12\u9e13\u9e14\u9e15\u9e16\u9e17\u9e18\u9e19\u9e1a\u9e1b\u9e1c\u9e1d\u9e1e\u9e24\u9e27\u9e2e\u9e30\u9e34\u9e3b\u9e3c\u9e40\u9e4d\u9e50\u9e52\u9e53\u9e54\u9e56\u9e59\u9e5d\u9e5f\u9e60\u9e61\u9e62\u9e65\u9e6e\u9e6f\u9e72\u9e74\u9e75\u9e76\u9e77\u9e78\u9e79\u9e7a\u9e7b\u9e7c\u9e7d\u9e80\ufffd\u9e81\u9e83\u9e84\u9e85\u9e86\u9e89\u9e8a\u9e8c\u9e8d\u9e8e\u9e8f\u9e90\u9e91\u9e94\u9e95\u9e96\u9e97\u9e98\u9e99\u9e9a\u9e9b\u9e9c\u9e9e\u9ea0\u9ea1\u9ea2\u9ea3\u9ea4\u9ea5\u9ea7\u9ea8\u9ea9\u9eaa\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[251].length;++e)65533!==r[251][e].charCodeAt(0)&&(n[r[251][e]]=64256+e,t[64256+e]=r[251][e]);for(r[252]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9eab\u9eac\u9ead\u9eae\u9eaf\u9eb0\u9eb1\u9eb2\u9eb3\u9eb5\u9eb6\u9eb7\u9eb9\u9eba\u9ebc\u9ebf\u9ec0\u9ec1\u9ec2\u9ec3\u9ec5\u9ec6\u9ec7\u9ec8\u9eca\u9ecb\u9ecc\u9ed0\u9ed2\u9ed3\u9ed5\u9ed6\u9ed7\u9ed9\u9eda\u9ede\u9ee1\u9ee3\u9ee4\u9ee6\u9ee8\u9eeb\u9eec\u9eed\u9eee\u9ef0\u9ef1\u9ef2\u9ef3\u9ef4\u9ef5\u9ef6\u9ef7\u9ef8\u9efa\u9efd\u9eff\u9f00\u9f01\u9f02\u9f03\u9f04\u9f05\ufffd\u9f06\u9f07\u9f08\u9f09\u9f0a\u9f0c\u9f0f\u9f11\u9f12\u9f14\u9f15\u9f16\u9f18\u9f1a\u9f1b\u9f1c\u9f1d\u9f1e\u9f1f\u9f21\u9f23\u9f24\u9f25\u9f26\u9f27\u9f28\u9f29\u9f2a\u9f2b\u9f2d\u9f2e\u9f30\u9f31\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[252].length;++e)65533!==r[252][e].charCodeAt(0)&&(n[r[252][e]]=64512+e,t[64512+e]=r[252][e]);for(r[253]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9f32\u9f33\u9f34\u9f35\u9f36\u9f38\u9f3a\u9f3c\u9f3f\u9f40\u9f41\u9f42\u9f43\u9f45\u9f46\u9f47\u9f48\u9f49\u9f4a\u9f4b\u9f4c\u9f4d\u9f4e\u9f4f\u9f52\u9f53\u9f54\u9f55\u9f56\u9f57\u9f58\u9f59\u9f5a\u9f5b\u9f5c\u9f5d\u9f5e\u9f5f\u9f60\u9f61\u9f62\u9f63\u9f64\u9f65\u9f66\u9f67\u9f68\u9f69\u9f6a\u9f6b\u9f6c\u9f6d\u9f6e\u9f6f\u9f70\u9f71\u9f72\u9f73\u9f74\u9f75\u9f76\u9f77\u9f78\ufffd\u9f79\u9f7a\u9f7b\u9f7c\u9f7d\u9f7e\u9f81\u9f82\u9f8d\u9f8e\u9f8f\u9f90\u9f91\u9f92\u9f93\u9f94\u9f95\u9f96\u9f97\u9f98\u9f9c\u9f9d\u9f9e\u9fa1\u9fa2\u9fa3\u9fa4\u9fa5\uf92c\uf979\uf995\uf9e7\uf9f1\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[253].length;++e)65533!==r[253][e].charCodeAt(0)&&(n[r[253][e]]=64768+e,t[64768+e]=r[253][e]);for(r[254]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufa0c\ufa0d\ufa0e\ufa0f\ufa11\ufa13\ufa14\ufa18\ufa1f\ufa20\ufa21\ufa23\ufa24\ufa27\ufa28\ufa29\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[254].length;++e)65533!==r[254][e].charCodeAt(0)&&(n[r[254][e]]=65024+e,t[65024+e]=r[254][e]);return{enc:n,dec:t}}(),r[949]=function(){var e,t=[],n={},r=[];for(r[0]="\0\x01\x02\x03\x04\x05\x06\x07\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[0].length;++e)65533!==r[0][e].charCodeAt(0)&&(n[r[0][e]]=0+e,t[0+e]=r[0][e]);for(r[129]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uac02\uac03\uac05\uac06\uac0b\uac0c\uac0d\uac0e\uac0f\uac18\uac1e\uac1f\uac21\uac22\uac23\uac25\uac26\uac27\uac28\uac29\uac2a\uac2b\uac2e\uac32\uac33\uac34\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uac35\uac36\uac37\uac3a\uac3b\uac3d\uac3e\uac3f\uac41\uac42\uac43\uac44\uac45\uac46\uac47\uac48\uac49\uac4a\uac4c\uac4e\uac4f\uac50\uac51\uac52\uac53\uac55\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uac56\uac57\uac59\uac5a\uac5b\uac5d\uac5e\uac5f\uac60\uac61\uac62\uac63\uac64\uac65\uac66\uac67\uac68\uac69\uac6a\uac6b\uac6c\uac6d\uac6e\uac6f\uac72\uac73\uac75\uac76\uac79\uac7b\uac7c\uac7d\uac7e\uac7f\uac82\uac87\uac88\uac8d\uac8e\uac8f\uac91\uac92\uac93\uac95\uac96\uac97\uac98\uac99\uac9a\uac9b\uac9e\uaca2\uaca3\uaca4\uaca5\uaca6\uaca7\uacab\uacad\uacae\uacb1\uacb2\uacb3\uacb4\uacb5\uacb6\uacb7\uacba\uacbe\uacbf\uacc0\uacc2\uacc3\uacc5\uacc6\uacc7\uacc9\uacca\uaccb\uaccd\uacce\uaccf\uacd0\uacd1\uacd2\uacd3\uacd4\uacd6\uacd8\uacd9\uacda\uacdb\uacdc\uacdd\uacde\uacdf\uace2\uace3\uace5\uace6\uace9\uaceb\uaced\uacee\uacf2\uacf4\uacf7\uacf8\uacf9\uacfa\uacfb\uacfe\uacff\uad01\uad02\uad03\uad05\uad07\uad08\uad09\uad0a\uad0b\uad0e\uad10\uad12\uad13\ufffd".split(""),e=0;e!=r[129].length;++e)65533!==r[129][e].charCodeAt(0)&&(n[r[129][e]]=33024+e,t[33024+e]=r[129][e]);for(r[130]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uad14\uad15\uad16\uad17\uad19\uad1a\uad1b\uad1d\uad1e\uad1f\uad21\uad22\uad23\uad24\uad25\uad26\uad27\uad28\uad2a\uad2b\uad2e\uad2f\uad30\uad31\uad32\uad33\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uad36\uad37\uad39\uad3a\uad3b\uad3d\uad3e\uad3f\uad40\uad41\uad42\uad43\uad46\uad48\uad4a\uad4b\uad4c\uad4d\uad4e\uad4f\uad51\uad52\uad53\uad55\uad56\uad57\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uad59\uad5a\uad5b\uad5c\uad5d\uad5e\uad5f\uad60\uad62\uad64\uad65\uad66\uad67\uad68\uad69\uad6a\uad6b\uad6e\uad6f\uad71\uad72\uad77\uad78\uad79\uad7a\uad7e\uad80\uad83\uad84\uad85\uad86\uad87\uad8a\uad8b\uad8d\uad8e\uad8f\uad91\uad92\uad93\uad94\uad95\uad96\uad97\uad98\uad99\uad9a\uad9b\uad9e\uad9f\uada0\uada1\uada2\uada3\uada5\uada6\uada7\uada8\uada9\uadaa\uadab\uadac\uadad\uadae\uadaf\uadb0\uadb1\uadb2\uadb3\uadb4\uadb5\uadb6\uadb8\uadb9\uadba\uadbb\uadbc\uadbd\uadbe\uadbf\uadc2\uadc3\uadc5\uadc6\uadc7\uadc9\uadca\uadcb\uadcc\uadcd\uadce\uadcf\uadd2\uadd4\uadd5\uadd6\uadd7\uadd8\uadd9\uadda\uaddb\uaddd\uadde\uaddf\uade1\uade2\uade3\uade5\uade6\uade7\uade8\uade9\uadea\uadeb\uadec\uaded\uadee\uadef\uadf0\uadf1\uadf2\uadf3\uadf4\uadf5\uadf6\uadf7\ufffd".split(""),e=0;e!=r[130].length;++e)65533!==r[130][e].charCodeAt(0)&&(n[r[130][e]]=33280+e,t[33280+e]=r[130][e]);for(r[131]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uadfa\uadfb\uadfd\uadfe\uae02\uae03\uae04\uae05\uae06\uae07\uae0a\uae0c\uae0e\uae0f\uae10\uae11\uae12\uae13\uae15\uae16\uae17\uae18\uae19\uae1a\uae1b\uae1c\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uae1d\uae1e\uae1f\uae20\uae21\uae22\uae23\uae24\uae25\uae26\uae27\uae28\uae29\uae2a\uae2b\uae2c\uae2d\uae2e\uae2f\uae32\uae33\uae35\uae36\uae39\uae3b\uae3c\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uae3d\uae3e\uae3f\uae42\uae44\uae47\uae48\uae49\uae4b\uae4f\uae51\uae52\uae53\uae55\uae57\uae58\uae59\uae5a\uae5b\uae5e\uae62\uae63\uae64\uae66\uae67\uae6a\uae6b\uae6d\uae6e\uae6f\uae71\uae72\uae73\uae74\uae75\uae76\uae77\uae7a\uae7e\uae7f\uae80\uae81\uae82\uae83\uae86\uae87\uae88\uae89\uae8a\uae8b\uae8d\uae8e\uae8f\uae90\uae91\uae92\uae93\uae94\uae95\uae96\uae97\uae98\uae99\uae9a\uae9b\uae9c\uae9d\uae9e\uae9f\uaea0\uaea1\uaea2\uaea3\uaea4\uaea5\uaea6\uaea7\uaea8\uaea9\uaeaa\uaeab\uaeac\uaead\uaeae\uaeaf\uaeb0\uaeb1\uaeb2\uaeb3\uaeb4\uaeb5\uaeb6\uaeb7\uaeb8\uaeb9\uaeba\uaebb\uaebf\uaec1\uaec2\uaec3\uaec5\uaec6\uaec7\uaec8\uaec9\uaeca\uaecb\uaece\uaed2\uaed3\uaed4\uaed5\uaed6\uaed7\uaeda\uaedb\uaedd\uaede\uaedf\uaee0\uaee1\uaee2\uaee3\uaee4\uaee5\ufffd".split(""),e=0;e!=r[131].length;++e)65533!==r[131][e].charCodeAt(0)&&(n[r[131][e]]=33536+e,t[33536+e]=r[131][e]);for(r[132]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uaee6\uaee7\uaee9\uaeea\uaeec\uaeee\uaeef\uaef0\uaef1\uaef2\uaef3\uaef5\uaef6\uaef7\uaef9\uaefa\uaefb\uaefd\uaefe\uaeff\uaf00\uaf01\uaf02\uaf03\uaf04\uaf05\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uaf06\uaf09\uaf0a\uaf0b\uaf0c\uaf0e\uaf0f\uaf11\uaf12\uaf13\uaf14\uaf15\uaf16\uaf17\uaf18\uaf19\uaf1a\uaf1b\uaf1c\uaf1d\uaf1e\uaf1f\uaf20\uaf21\uaf22\uaf23\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uaf24\uaf25\uaf26\uaf27\uaf28\uaf29\uaf2a\uaf2b\uaf2e\uaf2f\uaf31\uaf33\uaf35\uaf36\uaf37\uaf38\uaf39\uaf3a\uaf3b\uaf3e\uaf40\uaf44\uaf45\uaf46\uaf47\uaf4a\uaf4b\uaf4c\uaf4d\uaf4e\uaf4f\uaf51\uaf52\uaf53\uaf54\uaf55\uaf56\uaf57\uaf58\uaf59\uaf5a\uaf5b\uaf5e\uaf5f\uaf60\uaf61\uaf62\uaf63\uaf66\uaf67\uaf68\uaf69\uaf6a\uaf6b\uaf6c\uaf6d\uaf6e\uaf6f\uaf70\uaf71\uaf72\uaf73\uaf74\uaf75\uaf76\uaf77\uaf78\uaf7a\uaf7b\uaf7c\uaf7d\uaf7e\uaf7f\uaf81\uaf82\uaf83\uaf85\uaf86\uaf87\uaf89\uaf8a\uaf8b\uaf8c\uaf8d\uaf8e\uaf8f\uaf92\uaf93\uaf94\uaf96\uaf97\uaf98\uaf99\uaf9a\uaf9b\uaf9d\uaf9e\uaf9f\uafa0\uafa1\uafa2\uafa3\uafa4\uafa5\uafa6\uafa7\uafa8\uafa9\uafaa\uafab\uafac\uafad\uafae\uafaf\uafb0\uafb1\uafb2\uafb3\uafb4\uafb5\uafb6\uafb7\uafba\uafbb\uafbd\uafbe\ufffd".split(""),e=0;e!=r[132].length;++e)65533!==r[132][e].charCodeAt(0)&&(n[r[132][e]]=33792+e,t[33792+e]=r[132][e]);for(r[133]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uafbf\uafc1\uafc2\uafc3\uafc4\uafc5\uafc6\uafca\uafcc\uafcf\uafd0\uafd1\uafd2\uafd3\uafd5\uafd6\uafd7\uafd8\uafd9\uafda\uafdb\uafdd\uafde\uafdf\uafe0\uafe1\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uafe2\uafe3\uafe4\uafe5\uafe6\uafe7\uafea\uafeb\uafec\uafed\uafee\uafef\uaff2\uaff3\uaff5\uaff6\uaff7\uaff9\uaffa\uaffb\uaffc\uaffd\uaffe\uafff\ub002\ub003\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ub005\ub006\ub007\ub008\ub009\ub00a\ub00b\ub00d\ub00e\ub00f\ub011\ub012\ub013\ub015\ub016\ub017\ub018\ub019\ub01a\ub01b\ub01e\ub01f\ub020\ub021\ub022\ub023\ub024\ub025\ub026\ub027\ub029\ub02a\ub02b\ub02c\ub02d\ub02e\ub02f\ub030\ub031\ub032\ub033\ub034\ub035\ub036\ub037\ub038\ub039\ub03a\ub03b\ub03c\ub03d\ub03e\ub03f\ub040\ub041\ub042\ub043\ub046\ub047\ub049\ub04b\ub04d\ub04f\ub050\ub051\ub052\ub056\ub058\ub05a\ub05b\ub05c\ub05e\ub05f\ub060\ub061\ub062\ub063\ub064\ub065\ub066\ub067\ub068\ub069\ub06a\ub06b\ub06c\ub06d\ub06e\ub06f\ub070\ub071\ub072\ub073\ub074\ub075\ub076\ub077\ub078\ub079\ub07a\ub07b\ub07e\ub07f\ub081\ub082\ub083\ub085\ub086\ub087\ub088\ub089\ub08a\ub08b\ub08e\ub090\ub092\ub093\ub094\ub095\ub096\ub097\ub09b\ub09d\ub09e\ub0a3\ub0a4\ufffd".split(""),e=0;e!=r[133].length;++e)65533!==r[133][e].charCodeAt(0)&&(n[r[133][e]]=34048+e,t[34048+e]=r[133][e]);for(r[134]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ub0a5\ub0a6\ub0a7\ub0aa\ub0b0\ub0b2\ub0b6\ub0b7\ub0b9\ub0ba\ub0bb\ub0bd\ub0be\ub0bf\ub0c0\ub0c1\ub0c2\ub0c3\ub0c6\ub0ca\ub0cb\ub0cc\ub0cd\ub0ce\ub0cf\ub0d2\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ub0d3\ub0d5\ub0d6\ub0d7\ub0d9\ub0da\ub0db\ub0dc\ub0dd\ub0de\ub0df\ub0e1\ub0e2\ub0e3\ub0e4\ub0e6\ub0e7\ub0e8\ub0e9\ub0ea\ub0eb\ub0ec\ub0ed\ub0ee\ub0ef\ub0f0\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ub0f1\ub0f2\ub0f3\ub0f4\ub0f5\ub0f6\ub0f7\ub0f8\ub0f9\ub0fa\ub0fb\ub0fc\ub0fd\ub0fe\ub0ff\ub100\ub101\ub102\ub103\ub104\ub105\ub106\ub107\ub10a\ub10d\ub10e\ub10f\ub111\ub114\ub115\ub116\ub117\ub11a\ub11e\ub11f\ub120\ub121\ub122\ub126\ub127\ub129\ub12a\ub12b\ub12d\ub12e\ub12f\ub130\ub131\ub132\ub133\ub136\ub13a\ub13b\ub13c\ub13d\ub13e\ub13f\ub142\ub143\ub145\ub146\ub147\ub149\ub14a\ub14b\ub14c\ub14d\ub14e\ub14f\ub152\ub153\ub156\ub157\ub159\ub15a\ub15b\ub15d\ub15e\ub15f\ub161\ub162\ub163\ub164\ub165\ub166\ub167\ub168\ub169\ub16a\ub16b\ub16c\ub16d\ub16e\ub16f\ub170\ub171\ub172\ub173\ub174\ub175\ub176\ub177\ub17a\ub17b\ub17d\ub17e\ub17f\ub181\ub183\ub184\ub185\ub186\ub187\ub18a\ub18c\ub18e\ub18f\ub190\ub191\ub195\ub196\ub197\ub199\ub19a\ub19b\ub19d\ufffd".split(""),e=0;e!=r[134].length;++e)65533!==r[134][e].charCodeAt(0)&&(n[r[134][e]]=34304+e,t[34304+e]=r[134][e]);for(r[135]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ub19e\ub19f\ub1a0\ub1a1\ub1a2\ub1a3\ub1a4\ub1a5\ub1a6\ub1a7\ub1a9\ub1aa\ub1ab\ub1ac\ub1ad\ub1ae\ub1af\ub1b0\ub1b1\ub1b2\ub1b3\ub1b4\ub1b5\ub1b6\ub1b7\ub1b8\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ub1b9\ub1ba\ub1bb\ub1bc\ub1bd\ub1be\ub1bf\ub1c0\ub1c1\ub1c2\ub1c3\ub1c4\ub1c5\ub1c6\ub1c7\ub1c8\ub1c9\ub1ca\ub1cb\ub1cd\ub1ce\ub1cf\ub1d1\ub1d2\ub1d3\ub1d5\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ub1d6\ub1d7\ub1d8\ub1d9\ub1da\ub1db\ub1de\ub1e0\ub1e1\ub1e2\ub1e3\ub1e4\ub1e5\ub1e6\ub1e7\ub1ea\ub1eb\ub1ed\ub1ee\ub1ef\ub1f1\ub1f2\ub1f3\ub1f4\ub1f5\ub1f6\ub1f7\ub1f8\ub1fa\ub1fc\ub1fe\ub1ff\ub200\ub201\ub202\ub203\ub206\ub207\ub209\ub20a\ub20d\ub20e\ub20f\ub210\ub211\ub212\ub213\ub216\ub218\ub21a\ub21b\ub21c\ub21d\ub21e\ub21f\ub221\ub222\ub223\ub224\ub225\ub226\ub227\ub228\ub229\ub22a\ub22b\ub22c\ub22d\ub22e\ub22f\ub230\ub231\ub232\ub233\ub235\ub236\ub237\ub238\ub239\ub23a\ub23b\ub23d\ub23e\ub23f\ub240\ub241\ub242\ub243\ub244\ub245\ub246\ub247\ub248\ub249\ub24a\ub24b\ub24c\ub24d\ub24e\ub24f\ub250\ub251\ub252\ub253\ub254\ub255\ub256\ub257\ub259\ub25a\ub25b\ub25d\ub25e\ub25f\ub261\ub262\ub263\ub264\ub265\ub266\ub267\ub26a\ub26b\ub26c\ub26d\ub26e\ufffd".split(""),e=0;e!=r[135].length;++e)65533!==r[135][e].charCodeAt(0)&&(n[r[135][e]]=34560+e,t[34560+e]=r[135][e]);for(r[136]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ub26f\ub270\ub271\ub272\ub273\ub276\ub277\ub278\ub279\ub27a\ub27b\ub27d\ub27e\ub27f\ub280\ub281\ub282\ub283\ub286\ub287\ub288\ub28a\ub28b\ub28c\ub28d\ub28e\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ub28f\ub292\ub293\ub295\ub296\ub297\ub29b\ub29c\ub29d\ub29e\ub29f\ub2a2\ub2a4\ub2a7\ub2a8\ub2a9\ub2ab\ub2ad\ub2ae\ub2af\ub2b1\ub2b2\ub2b3\ub2b5\ub2b6\ub2b7\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ub2b8\ub2b9\ub2ba\ub2bb\ub2bc\ub2bd\ub2be\ub2bf\ub2c0\ub2c1\ub2c2\ub2c3\ub2c4\ub2c5\ub2c6\ub2c7\ub2ca\ub2cb\ub2cd\ub2ce\ub2cf\ub2d1\ub2d3\ub2d4\ub2d5\ub2d6\ub2d7\ub2da\ub2dc\ub2de\ub2df\ub2e0\ub2e1\ub2e3\ub2e7\ub2e9\ub2ea\ub2f0\ub2f1\ub2f2\ub2f6\ub2fc\ub2fd\ub2fe\ub302\ub303\ub305\ub306\ub307\ub309\ub30a\ub30b\ub30c\ub30d\ub30e\ub30f\ub312\ub316\ub317\ub318\ub319\ub31a\ub31b\ub31d\ub31e\ub31f\ub320\ub321\ub322\ub323\ub324\ub325\ub326\ub327\ub328\ub329\ub32a\ub32b\ub32c\ub32d\ub32e\ub32f\ub330\ub331\ub332\ub333\ub334\ub335\ub336\ub337\ub338\ub339\ub33a\ub33b\ub33c\ub33d\ub33e\ub33f\ub340\ub341\ub342\ub343\ub344\ub345\ub346\ub347\ub348\ub349\ub34a\ub34b\ub34c\ub34d\ub34e\ub34f\ub350\ub351\ub352\ub353\ub357\ub359\ub35a\ub35d\ub360\ub361\ub362\ub363\ufffd".split(""),e=0;e!=r[136].length;++e)65533!==r[136][e].charCodeAt(0)&&(n[r[136][e]]=34816+e,t[34816+e]=r[136][e]);for(r[137]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ub366\ub368\ub36a\ub36c\ub36d\ub36f\ub372\ub373\ub375\ub376\ub377\ub379\ub37a\ub37b\ub37c\ub37d\ub37e\ub37f\ub382\ub386\ub387\ub388\ub389\ub38a\ub38b\ub38d\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ub38e\ub38f\ub391\ub392\ub393\ub395\ub396\ub397\ub398\ub399\ub39a\ub39b\ub39c\ub39d\ub39e\ub39f\ub3a2\ub3a3\ub3a4\ub3a5\ub3a6\ub3a7\ub3a9\ub3aa\ub3ab\ub3ad\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ub3ae\ub3af\ub3b0\ub3b1\ub3b2\ub3b3\ub3b4\ub3b5\ub3b6\ub3b7\ub3b8\ub3b9\ub3ba\ub3bb\ub3bc\ub3bd\ub3be\ub3bf\ub3c0\ub3c1\ub3c2\ub3c3\ub3c6\ub3c7\ub3c9\ub3ca\ub3cd\ub3cf\ub3d1\ub3d2\ub3d3\ub3d6\ub3d8\ub3da\ub3dc\ub3de\ub3df\ub3e1\ub3e2\ub3e3\ub3e5\ub3e6\ub3e7\ub3e9\ub3ea\ub3eb\ub3ec\ub3ed\ub3ee\ub3ef\ub3f0\ub3f1\ub3f2\ub3f3\ub3f4\ub3f5\ub3f6\ub3f7\ub3f8\ub3f9\ub3fa\ub3fb\ub3fd\ub3fe\ub3ff\ub400\ub401\ub402\ub403\ub404\ub405\ub406\ub407\ub408\ub409\ub40a\ub40b\ub40c\ub40d\ub40e\ub40f\ub411\ub412\ub413\ub414\ub415\ub416\ub417\ub419\ub41a\ub41b\ub41d\ub41e\ub41f\ub421\ub422\ub423\ub424\ub425\ub426\ub427\ub42a\ub42c\ub42d\ub42e\ub42f\ub430\ub431\ub432\ub433\ub435\ub436\ub437\ub438\ub439\ub43a\ub43b\ub43c\ub43d\ub43e\ub43f\ub440\ub441\ub442\ub443\ub444\ufffd".split(""),e=0;e!=r[137].length;++e)65533!==r[137][e].charCodeAt(0)&&(n[r[137][e]]=35072+e,t[35072+e]=r[137][e]);for(r[138]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ub445\ub446\ub447\ub448\ub449\ub44a\ub44b\ub44c\ub44d\ub44e\ub44f\ub452\ub453\ub455\ub456\ub457\ub459\ub45a\ub45b\ub45c\ub45d\ub45e\ub45f\ub462\ub464\ub466\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ub467\ub468\ub469\ub46a\ub46b\ub46d\ub46e\ub46f\ub470\ub471\ub472\ub473\ub474\ub475\ub476\ub477\ub478\ub479\ub47a\ub47b\ub47c\ub47d\ub47e\ub47f\ub481\ub482\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ub483\ub484\ub485\ub486\ub487\ub489\ub48a\ub48b\ub48c\ub48d\ub48e\ub48f\ub490\ub491\ub492\ub493\ub494\ub495\ub496\ub497\ub498\ub499\ub49a\ub49b\ub49c\ub49e\ub49f\ub4a0\ub4a1\ub4a2\ub4a3\ub4a5\ub4a6\ub4a7\ub4a9\ub4aa\ub4ab\ub4ad\ub4ae\ub4af\ub4b0\ub4b1\ub4b2\ub4b3\ub4b4\ub4b6\ub4b8\ub4ba\ub4bb\ub4bc\ub4bd\ub4be\ub4bf\ub4c1\ub4c2\ub4c3\ub4c5\ub4c6\ub4c7\ub4c9\ub4ca\ub4cb\ub4cc\ub4cd\ub4ce\ub4cf\ub4d1\ub4d2\ub4d3\ub4d4\ub4d6\ub4d7\ub4d8\ub4d9\ub4da\ub4db\ub4de\ub4df\ub4e1\ub4e2\ub4e5\ub4e7\ub4e8\ub4e9\ub4ea\ub4eb\ub4ee\ub4f0\ub4f2\ub4f3\ub4f4\ub4f5\ub4f6\ub4f7\ub4f9\ub4fa\ub4fb\ub4fc\ub4fd\ub4fe\ub4ff\ub500\ub501\ub502\ub503\ub504\ub505\ub506\ub507\ub508\ub509\ub50a\ub50b\ub50c\ub50d\ub50e\ub50f\ub510\ub511\ub512\ub513\ub516\ub517\ub519\ub51a\ub51d\ufffd".split(""),e=0;e!=r[138].length;++e)65533!==r[138][e].charCodeAt(0)&&(n[r[138][e]]=35328+e,t[35328+e]=r[138][e]);for(r[139]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ub51e\ub51f\ub520\ub521\ub522\ub523\ub526\ub52b\ub52c\ub52d\ub52e\ub52f\ub532\ub533\ub535\ub536\ub537\ub539\ub53a\ub53b\ub53c\ub53d\ub53e\ub53f\ub542\ub546\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ub547\ub548\ub549\ub54a\ub54e\ub54f\ub551\ub552\ub553\ub555\ub556\ub557\ub558\ub559\ub55a\ub55b\ub55e\ub562\ub563\ub564\ub565\ub566\ub567\ub568\ub569\ub56a\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ub56b\ub56c\ub56d\ub56e\ub56f\ub570\ub571\ub572\ub573\ub574\ub575\ub576\ub577\ub578\ub579\ub57a\ub57b\ub57c\ub57d\ub57e\ub57f\ub580\ub581\ub582\ub583\ub584\ub585\ub586\ub587\ub588\ub589\ub58a\ub58b\ub58c\ub58d\ub58e\ub58f\ub590\ub591\ub592\ub593\ub594\ub595\ub596\ub597\ub598\ub599\ub59a\ub59b\ub59c\ub59d\ub59e\ub59f\ub5a2\ub5a3\ub5a5\ub5a6\ub5a7\ub5a9\ub5ac\ub5ad\ub5ae\ub5af\ub5b2\ub5b6\ub5b7\ub5b8\ub5b9\ub5ba\ub5be\ub5bf\ub5c1\ub5c2\ub5c3\ub5c5\ub5c6\ub5c7\ub5c8\ub5c9\ub5ca\ub5cb\ub5ce\ub5d2\ub5d3\ub5d4\ub5d5\ub5d6\ub5d7\ub5d9\ub5da\ub5db\ub5dc\ub5dd\ub5de\ub5df\ub5e0\ub5e1\ub5e2\ub5e3\ub5e4\ub5e5\ub5e6\ub5e7\ub5e8\ub5e9\ub5ea\ub5eb\ub5ed\ub5ee\ub5ef\ub5f0\ub5f1\ub5f2\ub5f3\ub5f4\ub5f5\ub5f6\ub5f7\ub5f8\ub5f9\ub5fa\ub5fb\ub5fc\ub5fd\ub5fe\ub5ff\ufffd".split(""),e=0;e!=r[139].length;++e)65533!==r[139][e].charCodeAt(0)&&(n[r[139][e]]=35584+e,t[35584+e]=r[139][e]);for(r[140]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ub600\ub601\ub602\ub603\ub604\ub605\ub606\ub607\ub608\ub609\ub60a\ub60b\ub60c\ub60d\ub60e\ub60f\ub612\ub613\ub615\ub616\ub617\ub619\ub61a\ub61b\ub61c\ub61d\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ub61e\ub61f\ub620\ub621\ub622\ub623\ub624\ub626\ub627\ub628\ub629\ub62a\ub62b\ub62d\ub62e\ub62f\ub630\ub631\ub632\ub633\ub635\ub636\ub637\ub638\ub639\ub63a\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ub63b\ub63c\ub63d\ub63e\ub63f\ub640\ub641\ub642\ub643\ub644\ub645\ub646\ub647\ub649\ub64a\ub64b\ub64c\ub64d\ub64e\ub64f\ub650\ub651\ub652\ub653\ub654\ub655\ub656\ub657\ub658\ub659\ub65a\ub65b\ub65c\ub65d\ub65e\ub65f\ub660\ub661\ub662\ub663\ub665\ub666\ub667\ub669\ub66a\ub66b\ub66c\ub66d\ub66e\ub66f\ub670\ub671\ub672\ub673\ub674\ub675\ub676\ub677\ub678\ub679\ub67a\ub67b\ub67c\ub67d\ub67e\ub67f\ub680\ub681\ub682\ub683\ub684\ub685\ub686\ub687\ub688\ub689\ub68a\ub68b\ub68c\ub68d\ub68e\ub68f\ub690\ub691\ub692\ub693\ub694\ub695\ub696\ub697\ub698\ub699\ub69a\ub69b\ub69e\ub69f\ub6a1\ub6a2\ub6a3\ub6a5\ub6a6\ub6a7\ub6a8\ub6a9\ub6aa\ub6ad\ub6ae\ub6af\ub6b0\ub6b2\ub6b3\ub6b4\ub6b5\ub6b6\ub6b7\ub6b8\ub6b9\ub6ba\ub6bb\ub6bc\ub6bd\ub6be\ub6bf\ub6c0\ub6c1\ub6c2\ufffd".split(""),e=0;e!=r[140].length;++e)65533!==r[140][e].charCodeAt(0)&&(n[r[140][e]]=35840+e,t[35840+e]=r[140][e]);for(r[141]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ub6c3\ub6c4\ub6c5\ub6c6\ub6c7\ub6c8\ub6c9\ub6ca\ub6cb\ub6cc\ub6cd\ub6ce\ub6cf\ub6d0\ub6d1\ub6d2\ub6d3\ub6d5\ub6d6\ub6d7\ub6d8\ub6d9\ub6da\ub6db\ub6dc\ub6dd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ub6de\ub6df\ub6e0\ub6e1\ub6e2\ub6e3\ub6e4\ub6e5\ub6e6\ub6e7\ub6e8\ub6e9\ub6ea\ub6eb\ub6ec\ub6ed\ub6ee\ub6ef\ub6f1\ub6f2\ub6f3\ub6f5\ub6f6\ub6f7\ub6f9\ub6fa\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ub6fb\ub6fc\ub6fd\ub6fe\ub6ff\ub702\ub703\ub704\ub706\ub707\ub708\ub709\ub70a\ub70b\ub70c\ub70d\ub70e\ub70f\ub710\ub711\ub712\ub713\ub714\ub715\ub716\ub717\ub718\ub719\ub71a\ub71b\ub71c\ub71d\ub71e\ub71f\ub720\ub721\ub722\ub723\ub724\ub725\ub726\ub727\ub72a\ub72b\ub72d\ub72e\ub731\ub732\ub733\ub734\ub735\ub736\ub737\ub73a\ub73c\ub73d\ub73e\ub73f\ub740\ub741\ub742\ub743\ub745\ub746\ub747\ub749\ub74a\ub74b\ub74d\ub74e\ub74f\ub750\ub751\ub752\ub753\ub756\ub757\ub758\ub759\ub75a\ub75b\ub75c\ub75d\ub75e\ub75f\ub761\ub762\ub763\ub765\ub766\ub767\ub769\ub76a\ub76b\ub76c\ub76d\ub76e\ub76f\ub772\ub774\ub776\ub777\ub778\ub779\ub77a\ub77b\ub77e\ub77f\ub781\ub782\ub783\ub785\ub786\ub787\ub788\ub789\ub78a\ub78b\ub78e\ub793\ub794\ub795\ub79a\ub79b\ub79d\ub79e\ufffd".split(""),e=0;e!=r[141].length;++e)65533!==r[141][e].charCodeAt(0)&&(n[r[141][e]]=36096+e,t[36096+e]=r[141][e]);for(r[142]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ub79f\ub7a1\ub7a2\ub7a3\ub7a4\ub7a5\ub7a6\ub7a7\ub7aa\ub7ae\ub7af\ub7b0\ub7b1\ub7b2\ub7b3\ub7b6\ub7b7\ub7b9\ub7ba\ub7bb\ub7bc\ub7bd\ub7be\ub7bf\ub7c0\ub7c1\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ub7c2\ub7c3\ub7c4\ub7c5\ub7c6\ub7c8\ub7ca\ub7cb\ub7cc\ub7cd\ub7ce\ub7cf\ub7d0\ub7d1\ub7d2\ub7d3\ub7d4\ub7d5\ub7d6\ub7d7\ub7d8\ub7d9\ub7da\ub7db\ub7dc\ub7dd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ub7de\ub7df\ub7e0\ub7e1\ub7e2\ub7e3\ub7e4\ub7e5\ub7e6\ub7e7\ub7e8\ub7e9\ub7ea\ub7eb\ub7ee\ub7ef\ub7f1\ub7f2\ub7f3\ub7f5\ub7f6\ub7f7\ub7f8\ub7f9\ub7fa\ub7fb\ub7fe\ub802\ub803\ub804\ub805\ub806\ub80a\ub80b\ub80d\ub80e\ub80f\ub811\ub812\ub813\ub814\ub815\ub816\ub817\ub81a\ub81c\ub81e\ub81f\ub820\ub821\ub822\ub823\ub826\ub827\ub829\ub82a\ub82b\ub82d\ub82e\ub82f\ub830\ub831\ub832\ub833\ub836\ub83a\ub83b\ub83c\ub83d\ub83e\ub83f\ub841\ub842\ub843\ub845\ub846\ub847\ub848\ub849\ub84a\ub84b\ub84c\ub84d\ub84e\ub84f\ub850\ub852\ub854\ub855\ub856\ub857\ub858\ub859\ub85a\ub85b\ub85e\ub85f\ub861\ub862\ub863\ub865\ub866\ub867\ub868\ub869\ub86a\ub86b\ub86e\ub870\ub872\ub873\ub874\ub875\ub876\ub877\ub879\ub87a\ub87b\ub87d\ub87e\ub87f\ub880\ub881\ub882\ub883\ub884\ufffd".split(""),e=0;e!=r[142].length;++e)65533!==r[142][e].charCodeAt(0)&&(n[r[142][e]]=36352+e,t[36352+e]=r[142][e]);for(r[143]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ub885\ub886\ub887\ub888\ub889\ub88a\ub88b\ub88c\ub88e\ub88f\ub890\ub891\ub892\ub893\ub894\ub895\ub896\ub897\ub898\ub899\ub89a\ub89b\ub89c\ub89d\ub89e\ub89f\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ub8a0\ub8a1\ub8a2\ub8a3\ub8a4\ub8a5\ub8a6\ub8a7\ub8a9\ub8aa\ub8ab\ub8ac\ub8ad\ub8ae\ub8af\ub8b1\ub8b2\ub8b3\ub8b5\ub8b6\ub8b7\ub8b9\ub8ba\ub8bb\ub8bc\ub8bd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ub8be\ub8bf\ub8c2\ub8c4\ub8c6\ub8c7\ub8c8\ub8c9\ub8ca\ub8cb\ub8cd\ub8ce\ub8cf\ub8d1\ub8d2\ub8d3\ub8d5\ub8d6\ub8d7\ub8d8\ub8d9\ub8da\ub8db\ub8dc\ub8de\ub8e0\ub8e2\ub8e3\ub8e4\ub8e5\ub8e6\ub8e7\ub8ea\ub8eb\ub8ed\ub8ee\ub8ef\ub8f1\ub8f2\ub8f3\ub8f4\ub8f5\ub8f6\ub8f7\ub8fa\ub8fc\ub8fe\ub8ff\ub900\ub901\ub902\ub903\ub905\ub906\ub907\ub908\ub909\ub90a\ub90b\ub90c\ub90d\ub90e\ub90f\ub910\ub911\ub912\ub913\ub914\ub915\ub916\ub917\ub919\ub91a\ub91b\ub91c\ub91d\ub91e\ub91f\ub921\ub922\ub923\ub924\ub925\ub926\ub927\ub928\ub929\ub92a\ub92b\ub92c\ub92d\ub92e\ub92f\ub930\ub931\ub932\ub933\ub934\ub935\ub936\ub937\ub938\ub939\ub93a\ub93b\ub93e\ub93f\ub941\ub942\ub943\ub945\ub946\ub947\ub948\ub949\ub94a\ub94b\ub94d\ub94e\ub950\ub952\ub953\ub954\ub955\ub956\ub957\ufffd".split(""),e=0;e!=r[143].length;++e)65533!==r[143][e].charCodeAt(0)&&(n[r[143][e]]=36608+e,t[36608+e]=r[143][e]);for(r[144]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ub95a\ub95b\ub95d\ub95e\ub95f\ub961\ub962\ub963\ub964\ub965\ub966\ub967\ub96a\ub96c\ub96e\ub96f\ub970\ub971\ub972\ub973\ub976\ub977\ub979\ub97a\ub97b\ub97d\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ub97e\ub97f\ub980\ub981\ub982\ub983\ub986\ub988\ub98b\ub98c\ub98f\ub990\ub991\ub992\ub993\ub994\ub995\ub996\ub997\ub998\ub999\ub99a\ub99b\ub99c\ub99d\ub99e\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ub99f\ub9a0\ub9a1\ub9a2\ub9a3\ub9a4\ub9a5\ub9a6\ub9a7\ub9a8\ub9a9\ub9aa\ub9ab\ub9ae\ub9af\ub9b1\ub9b2\ub9b3\ub9b5\ub9b6\ub9b7\ub9b8\ub9b9\ub9ba\ub9bb\ub9be\ub9c0\ub9c2\ub9c3\ub9c4\ub9c5\ub9c6\ub9c7\ub9ca\ub9cb\ub9cd\ub9d3\ub9d4\ub9d5\ub9d6\ub9d7\ub9da\ub9dc\ub9df\ub9e0\ub9e2\ub9e6\ub9e7\ub9e9\ub9ea\ub9eb\ub9ed\ub9ee\ub9ef\ub9f0\ub9f1\ub9f2\ub9f3\ub9f6\ub9fb\ub9fc\ub9fd\ub9fe\ub9ff\uba02\uba03\uba04\uba05\uba06\uba07\uba09\uba0a\uba0b\uba0c\uba0d\uba0e\uba0f\uba10\uba11\uba12\uba13\uba14\uba16\uba17\uba18\uba19\uba1a\uba1b\uba1c\uba1d\uba1e\uba1f\uba20\uba21\uba22\uba23\uba24\uba25\uba26\uba27\uba28\uba29\uba2a\uba2b\uba2c\uba2d\uba2e\uba2f\uba30\uba31\uba32\uba33\uba34\uba35\uba36\uba37\uba3a\uba3b\uba3d\uba3e\uba3f\uba41\uba43\uba44\uba45\uba46\ufffd".split(""),e=0;e!=r[144].length;++e)65533!==r[144][e].charCodeAt(0)&&(n[r[144][e]]=36864+e,t[36864+e]=r[144][e]);for(r[145]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uba47\uba4a\uba4c\uba4f\uba50\uba51\uba52\uba56\uba57\uba59\uba5a\uba5b\uba5d\uba5e\uba5f\uba60\uba61\uba62\uba63\uba66\uba6a\uba6b\uba6c\uba6d\uba6e\uba6f\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uba72\uba73\uba75\uba76\uba77\uba79\uba7a\uba7b\uba7c\uba7d\uba7e\uba7f\uba80\uba81\uba82\uba86\uba88\uba89\uba8a\uba8b\uba8d\uba8e\uba8f\uba90\uba91\uba92\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uba93\uba94\uba95\uba96\uba97\uba98\uba99\uba9a\uba9b\uba9c\uba9d\uba9e\uba9f\ubaa0\ubaa1\ubaa2\ubaa3\ubaa4\ubaa5\ubaa6\ubaa7\ubaaa\ubaad\ubaae\ubaaf\ubab1\ubab3\ubab4\ubab5\ubab6\ubab7\ubaba\ubabc\ubabe\ubabf\ubac0\ubac1\ubac2\ubac3\ubac5\ubac6\ubac7\ubac9\ubaca\ubacb\ubacc\ubacd\ubace\ubacf\ubad0\ubad1\ubad2\ubad3\ubad4\ubad5\ubad6\ubad7\ubada\ubadb\ubadc\ubadd\ubade\ubadf\ubae0\ubae1\ubae2\ubae3\ubae4\ubae5\ubae6\ubae7\ubae8\ubae9\ubaea\ubaeb\ubaec\ubaed\ubaee\ubaef\ubaf0\ubaf1\ubaf2\ubaf3\ubaf4\ubaf5\ubaf6\ubaf7\ubaf8\ubaf9\ubafa\ubafb\ubafd\ubafe\ubaff\ubb01\ubb02\ubb03\ubb05\ubb06\ubb07\ubb08\ubb09\ubb0a\ubb0b\ubb0c\ubb0e\ubb10\ubb12\ubb13\ubb14\ubb15\ubb16\ubb17\ubb19\ubb1a\ubb1b\ubb1d\ubb1e\ubb1f\ubb21\ubb22\ubb23\ubb24\ubb25\ubb26\ubb27\ufffd".split(""),e=0;e!=r[145].length;++e)65533!==r[145][e].charCodeAt(0)&&(n[r[145][e]]=37120+e,t[37120+e]=r[145][e]);for(r[146]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ubb28\ubb2a\ubb2c\ubb2d\ubb2e\ubb2f\ubb30\ubb31\ubb32\ubb33\ubb37\ubb39\ubb3a\ubb3f\ubb40\ubb41\ubb42\ubb43\ubb46\ubb48\ubb4a\ubb4b\ubb4c\ubb4e\ubb51\ubb52\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ubb53\ubb55\ubb56\ubb57\ubb59\ubb5a\ubb5b\ubb5c\ubb5d\ubb5e\ubb5f\ubb60\ubb62\ubb64\ubb65\ubb66\ubb67\ubb68\ubb69\ubb6a\ubb6b\ubb6d\ubb6e\ubb6f\ubb70\ubb71\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ubb72\ubb73\ubb74\ubb75\ubb76\ubb77\ubb78\ubb79\ubb7a\ubb7b\ubb7c\ubb7d\ubb7e\ubb7f\ubb80\ubb81\ubb82\ubb83\ubb84\ubb85\ubb86\ubb87\ubb89\ubb8a\ubb8b\ubb8d\ubb8e\ubb8f\ubb91\ubb92\ubb93\ubb94\ubb95\ubb96\ubb97\ubb98\ubb99\ubb9a\ubb9b\ubb9c\ubb9d\ubb9e\ubb9f\ubba0\ubba1\ubba2\ubba3\ubba5\ubba6\ubba7\ubba9\ubbaa\ubbab\ubbad\ubbae\ubbaf\ubbb0\ubbb1\ubbb2\ubbb3\ubbb5\ubbb6\ubbb8\ubbb9\ubbba\ubbbb\ubbbc\ubbbd\ubbbe\ubbbf\ubbc1\ubbc2\ubbc3\ubbc5\ubbc6\ubbc7\ubbc9\ubbca\ubbcb\ubbcc\ubbcd\ubbce\ubbcf\ubbd1\ubbd2\ubbd4\ubbd5\ubbd6\ubbd7\ubbd8\ubbd9\ubbda\ubbdb\ubbdc\ubbdd\ubbde\ubbdf\ubbe0\ubbe1\ubbe2\ubbe3\ubbe4\ubbe5\ubbe6\ubbe7\ubbe8\ubbe9\ubbea\ubbeb\ubbec\ubbed\ubbee\ubbef\ubbf0\ubbf1\ubbf2\ubbf3\ubbf4\ubbf5\ubbf6\ubbf7\ubbfa\ubbfb\ubbfd\ubbfe\ubc01\ufffd".split(""),e=0;e!=r[146].length;++e)65533!==r[146][e].charCodeAt(0)&&(n[r[146][e]]=37376+e,t[37376+e]=r[146][e]);for(r[147]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ubc03\ubc04\ubc05\ubc06\ubc07\ubc0a\ubc0e\ubc10\ubc12\ubc13\ubc19\ubc1a\ubc20\ubc21\ubc22\ubc23\ubc26\ubc28\ubc2a\ubc2b\ubc2c\ubc2e\ubc2f\ubc32\ubc33\ubc35\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ubc36\ubc37\ubc39\ubc3a\ubc3b\ubc3c\ubc3d\ubc3e\ubc3f\ubc42\ubc46\ubc47\ubc48\ubc4a\ubc4b\ubc4e\ubc4f\ubc51\ubc52\ubc53\ubc54\ubc55\ubc56\ubc57\ubc58\ubc59\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ubc5a\ubc5b\ubc5c\ubc5e\ubc5f\ubc60\ubc61\ubc62\ubc63\ubc64\ubc65\ubc66\ubc67\ubc68\ubc69\ubc6a\ubc6b\ubc6c\ubc6d\ubc6e\ubc6f\ubc70\ubc71\ubc72\ubc73\ubc74\ubc75\ubc76\ubc77\ubc78\ubc79\ubc7a\ubc7b\ubc7c\ubc7d\ubc7e\ubc7f\ubc80\ubc81\ubc82\ubc83\ubc86\ubc87\ubc89\ubc8a\ubc8d\ubc8f\ubc90\ubc91\ubc92\ubc93\ubc96\ubc98\ubc9b\ubc9c\ubc9d\ubc9e\ubc9f\ubca2\ubca3\ubca5\ubca6\ubca9\ubcaa\ubcab\ubcac\ubcad\ubcae\ubcaf\ubcb2\ubcb6\ubcb7\ubcb8\ubcb9\ubcba\ubcbb\ubcbe\ubcbf\ubcc1\ubcc2\ubcc3\ubcc5\ubcc6\ubcc7\ubcc8\ubcc9\ubcca\ubccb\ubccc\ubcce\ubcd2\ubcd3\ubcd4\ubcd6\ubcd7\ubcd9\ubcda\ubcdb\ubcdd\ubcde\ubcdf\ubce0\ubce1\ubce2\ubce3\ubce4\ubce5\ubce6\ubce7\ubce8\ubce9\ubcea\ubceb\ubcec\ubced\ubcee\ubcef\ubcf0\ubcf1\ubcf2\ubcf3\ubcf7\ubcf9\ubcfa\ubcfb\ubcfd\ufffd".split(""),e=0;e!=r[147].length;++e)65533!==r[147][e].charCodeAt(0)&&(n[r[147][e]]=37632+e,t[37632+e]=r[147][e]);for(r[148]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ubcfe\ubcff\ubd00\ubd01\ubd02\ubd03\ubd06\ubd08\ubd0a\ubd0b\ubd0c\ubd0d\ubd0e\ubd0f\ubd11\ubd12\ubd13\ubd15\ubd16\ubd17\ubd18\ubd19\ubd1a\ubd1b\ubd1c\ubd1d\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ubd1e\ubd1f\ubd20\ubd21\ubd22\ubd23\ubd25\ubd26\ubd27\ubd28\ubd29\ubd2a\ubd2b\ubd2d\ubd2e\ubd2f\ubd30\ubd31\ubd32\ubd33\ubd34\ubd35\ubd36\ubd37\ubd38\ubd39\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ubd3a\ubd3b\ubd3c\ubd3d\ubd3e\ubd3f\ubd41\ubd42\ubd43\ubd44\ubd45\ubd46\ubd47\ubd4a\ubd4b\ubd4d\ubd4e\ubd4f\ubd51\ubd52\ubd53\ubd54\ubd55\ubd56\ubd57\ubd5a\ubd5b\ubd5c\ubd5d\ubd5e\ubd5f\ubd60\ubd61\ubd62\ubd63\ubd65\ubd66\ubd67\ubd69\ubd6a\ubd6b\ubd6c\ubd6d\ubd6e\ubd6f\ubd70\ubd71\ubd72\ubd73\ubd74\ubd75\ubd76\ubd77\ubd78\ubd79\ubd7a\ubd7b\ubd7c\ubd7d\ubd7e\ubd7f\ubd82\ubd83\ubd85\ubd86\ubd8b\ubd8c\ubd8d\ubd8e\ubd8f\ubd92\ubd94\ubd96\ubd97\ubd98\ubd9b\ubd9d\ubd9e\ubd9f\ubda0\ubda1\ubda2\ubda3\ubda5\ubda6\ubda7\ubda8\ubda9\ubdaa\ubdab\ubdac\ubdad\ubdae\ubdaf\ubdb1\ubdb2\ubdb3\ubdb4\ubdb5\ubdb6\ubdb7\ubdb9\ubdba\ubdbb\ubdbc\ubdbd\ubdbe\ubdbf\ubdc0\ubdc1\ubdc2\ubdc3\ubdc4\ubdc5\ubdc6\ubdc7\ubdc8\ubdc9\ubdca\ubdcb\ubdcc\ubdcd\ubdce\ubdcf\ubdd0\ubdd1\ufffd".split(""),e=0;e!=r[148].length;++e)65533!==r[148][e].charCodeAt(0)&&(n[r[148][e]]=37888+e,t[37888+e]=r[148][e]);for(r[149]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ubdd2\ubdd3\ubdd6\ubdd7\ubdd9\ubdda\ubddb\ubddd\ubdde\ubddf\ubde0\ubde1\ubde2\ubde3\ubde4\ubde5\ubde6\ubde7\ubde8\ubdea\ubdeb\ubdec\ubded\ubdee\ubdef\ubdf1\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ubdf2\ubdf3\ubdf5\ubdf6\ubdf7\ubdf9\ubdfa\ubdfb\ubdfc\ubdfd\ubdfe\ubdff\ube01\ube02\ube04\ube06\ube07\ube08\ube09\ube0a\ube0b\ube0e\ube0f\ube11\ube12\ube13\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ube15\ube16\ube17\ube18\ube19\ube1a\ube1b\ube1e\ube20\ube21\ube22\ube23\ube24\ube25\ube26\ube27\ube28\ube29\ube2a\ube2b\ube2c\ube2d\ube2e\ube2f\ube30\ube31\ube32\ube33\ube34\ube35\ube36\ube37\ube38\ube39\ube3a\ube3b\ube3c\ube3d\ube3e\ube3f\ube40\ube41\ube42\ube43\ube46\ube47\ube49\ube4a\ube4b\ube4d\ube4f\ube50\ube51\ube52\ube53\ube56\ube58\ube5c\ube5d\ube5e\ube5f\ube62\ube63\ube65\ube66\ube67\ube69\ube6b\ube6c\ube6d\ube6e\ube6f\ube72\ube76\ube77\ube78\ube79\ube7a\ube7e\ube7f\ube81\ube82\ube83\ube85\ube86\ube87\ube88\ube89\ube8a\ube8b\ube8e\ube92\ube93\ube94\ube95\ube96\ube97\ube9a\ube9b\ube9c\ube9d\ube9e\ube9f\ubea0\ubea1\ubea2\ubea3\ubea4\ubea5\ubea6\ubea7\ubea9\ubeaa\ubeab\ubeac\ubead\ubeae\ubeaf\ubeb0\ubeb1\ubeb2\ubeb3\ubeb4\ubeb5\ubeb6\ubeb7\ufffd".split(""),e=0;e!=r[149].length;++e)65533!==r[149][e].charCodeAt(0)&&(n[r[149][e]]=38144+e,t[38144+e]=r[149][e]);for(r[150]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ubeb8\ubeb9\ubeba\ubebb\ubebc\ubebd\ubebe\ubebf\ubec0\ubec1\ubec2\ubec3\ubec4\ubec5\ubec6\ubec7\ubec8\ubec9\ubeca\ubecb\ubecc\ubecd\ubece\ubecf\ubed2\ubed3\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ubed5\ubed6\ubed9\ubeda\ubedb\ubedc\ubedd\ubede\ubedf\ubee1\ubee2\ubee6\ubee7\ubee8\ubee9\ubeea\ubeeb\ubeed\ubeee\ubeef\ubef0\ubef1\ubef2\ubef3\ubef4\ubef5\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ubef6\ubef7\ubef8\ubef9\ubefa\ubefb\ubefc\ubefd\ubefe\ubeff\ubf00\ubf02\ubf03\ubf04\ubf05\ubf06\ubf07\ubf0a\ubf0b\ubf0c\ubf0d\ubf0e\ubf0f\ubf10\ubf11\ubf12\ubf13\ubf14\ubf15\ubf16\ubf17\ubf1a\ubf1e\ubf1f\ubf20\ubf21\ubf22\ubf23\ubf24\ubf25\ubf26\ubf27\ubf28\ubf29\ubf2a\ubf2b\ubf2c\ubf2d\ubf2e\ubf2f\ubf30\ubf31\ubf32\ubf33\ubf34\ubf35\ubf36\ubf37\ubf38\ubf39\ubf3a\ubf3b\ubf3c\ubf3d\ubf3e\ubf3f\ubf42\ubf43\ubf45\ubf46\ubf47\ubf49\ubf4a\ubf4b\ubf4c\ubf4d\ubf4e\ubf4f\ubf52\ubf53\ubf54\ubf56\ubf57\ubf58\ubf59\ubf5a\ubf5b\ubf5c\ubf5d\ubf5e\ubf5f\ubf60\ubf61\ubf62\ubf63\ubf64\ubf65\ubf66\ubf67\ubf68\ubf69\ubf6a\ubf6b\ubf6c\ubf6d\ubf6e\ubf6f\ubf70\ubf71\ubf72\ubf73\ubf74\ubf75\ubf76\ubf77\ubf78\ubf79\ubf7a\ubf7b\ubf7c\ubf7d\ubf7e\ubf7f\ubf80\ubf81\ubf82\ufffd".split(""),e=0;e!=r[150].length;++e)65533!==r[150][e].charCodeAt(0)&&(n[r[150][e]]=38400+e,t[38400+e]=r[150][e]);for(r[151]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ubf83\ubf84\ubf85\ubf86\ubf87\ubf88\ubf89\ubf8a\ubf8b\ubf8c\ubf8d\ubf8e\ubf8f\ubf90\ubf91\ubf92\ubf93\ubf95\ubf96\ubf97\ubf98\ubf99\ubf9a\ubf9b\ubf9c\ubf9d\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ubf9e\ubf9f\ubfa0\ubfa1\ubfa2\ubfa3\ubfa4\ubfa5\ubfa6\ubfa7\ubfa8\ubfa9\ubfaa\ubfab\ubfac\ubfad\ubfae\ubfaf\ubfb1\ubfb2\ubfb3\ubfb4\ubfb5\ubfb6\ubfb7\ubfb8\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ubfb9\ubfba\ubfbb\ubfbc\ubfbd\ubfbe\ubfbf\ubfc0\ubfc1\ubfc2\ubfc3\ubfc4\ubfc6\ubfc7\ubfc8\ubfc9\ubfca\ubfcb\ubfce\ubfcf\ubfd1\ubfd2\ubfd3\ubfd5\ubfd6\ubfd7\ubfd8\ubfd9\ubfda\ubfdb\ubfdd\ubfde\ubfe0\ubfe2\ubfe3\ubfe4\ubfe5\ubfe6\ubfe7\ubfe8\ubfe9\ubfea\ubfeb\ubfec\ubfed\ubfee\ubfef\ubff0\ubff1\ubff2\ubff3\ubff4\ubff5\ubff6\ubff7\ubff8\ubff9\ubffa\ubffb\ubffc\ubffd\ubffe\ubfff\uc000\uc001\uc002\uc003\uc004\uc005\uc006\uc007\uc008\uc009\uc00a\uc00b\uc00c\uc00d\uc00e\uc00f\uc010\uc011\uc012\uc013\uc014\uc015\uc016\uc017\uc018\uc019\uc01a\uc01b\uc01c\uc01d\uc01e\uc01f\uc020\uc021\uc022\uc023\uc024\uc025\uc026\uc027\uc028\uc029\uc02a\uc02b\uc02c\uc02d\uc02e\uc02f\uc030\uc031\uc032\uc033\uc034\uc035\uc036\uc037\uc038\uc039\uc03a\uc03b\uc03d\uc03e\uc03f\ufffd".split(""),e=0;e!=r[151].length;++e)65533!==r[151][e].charCodeAt(0)&&(n[r[151][e]]=38656+e,t[38656+e]=r[151][e]);for(r[152]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uc040\uc041\uc042\uc043\uc044\uc045\uc046\uc047\uc048\uc049\uc04a\uc04b\uc04c\uc04d\uc04e\uc04f\uc050\uc052\uc053\uc054\uc055\uc056\uc057\uc059\uc05a\uc05b\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uc05d\uc05e\uc05f\uc061\uc062\uc063\uc064\uc065\uc066\uc067\uc06a\uc06b\uc06c\uc06d\uc06e\uc06f\uc070\uc071\uc072\uc073\uc074\uc075\uc076\uc077\uc078\uc079\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uc07a\uc07b\uc07c\uc07d\uc07e\uc07f\uc080\uc081\uc082\uc083\uc084\uc085\uc086\uc087\uc088\uc089\uc08a\uc08b\uc08c\uc08d\uc08e\uc08f\uc092\uc093\uc095\uc096\uc097\uc099\uc09a\uc09b\uc09c\uc09d\uc09e\uc09f\uc0a2\uc0a4\uc0a6\uc0a7\uc0a8\uc0a9\uc0aa\uc0ab\uc0ae\uc0b1\uc0b2\uc0b7\uc0b8\uc0b9\uc0ba\uc0bb\uc0be\uc0c2\uc0c3\uc0c4\uc0c6\uc0c7\uc0ca\uc0cb\uc0cd\uc0ce\uc0cf\uc0d1\uc0d2\uc0d3\uc0d4\uc0d5\uc0d6\uc0d7\uc0da\uc0de\uc0df\uc0e0\uc0e1\uc0e2\uc0e3\uc0e6\uc0e7\uc0e9\uc0ea\uc0eb\uc0ed\uc0ee\uc0ef\uc0f0\uc0f1\uc0f2\uc0f3\uc0f6\uc0f8\uc0fa\uc0fb\uc0fc\uc0fd\uc0fe\uc0ff\uc101\uc102\uc103\uc105\uc106\uc107\uc109\uc10a\uc10b\uc10c\uc10d\uc10e\uc10f\uc111\uc112\uc113\uc114\uc116\uc117\uc118\uc119\uc11a\uc11b\uc121\uc122\uc125\uc128\uc129\uc12a\uc12b\uc12e\ufffd".split(""),e=0;e!=r[152].length;++e)65533!==r[152][e].charCodeAt(0)&&(n[r[152][e]]=38912+e,t[38912+e]=r[152][e]);for(r[153]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uc132\uc133\uc134\uc135\uc137\uc13a\uc13b\uc13d\uc13e\uc13f\uc141\uc142\uc143\uc144\uc145\uc146\uc147\uc14a\uc14e\uc14f\uc150\uc151\uc152\uc153\uc156\uc157\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uc159\uc15a\uc15b\uc15d\uc15e\uc15f\uc160\uc161\uc162\uc163\uc166\uc16a\uc16b\uc16c\uc16d\uc16e\uc16f\uc171\uc172\uc173\uc175\uc176\uc177\uc179\uc17a\uc17b\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uc17c\uc17d\uc17e\uc17f\uc180\uc181\uc182\uc183\uc184\uc186\uc187\uc188\uc189\uc18a\uc18b\uc18f\uc191\uc192\uc193\uc195\uc197\uc198\uc199\uc19a\uc19b\uc19e\uc1a0\uc1a2\uc1a3\uc1a4\uc1a6\uc1a7\uc1aa\uc1ab\uc1ad\uc1ae\uc1af\uc1b1\uc1b2\uc1b3\uc1b4\uc1b5\uc1b6\uc1b7\uc1b8\uc1b9\uc1ba\uc1bb\uc1bc\uc1be\uc1bf\uc1c0\uc1c1\uc1c2\uc1c3\uc1c5\uc1c6\uc1c7\uc1c9\uc1ca\uc1cb\uc1cd\uc1ce\uc1cf\uc1d0\uc1d1\uc1d2\uc1d3\uc1d5\uc1d6\uc1d9\uc1da\uc1db\uc1dc\uc1dd\uc1de\uc1df\uc1e1\uc1e2\uc1e3\uc1e5\uc1e6\uc1e7\uc1e9\uc1ea\uc1eb\uc1ec\uc1ed\uc1ee\uc1ef\uc1f2\uc1f4\uc1f5\uc1f6\uc1f7\uc1f8\uc1f9\uc1fa\uc1fb\uc1fe\uc1ff\uc201\uc202\uc203\uc205\uc206\uc207\uc208\uc209\uc20a\uc20b\uc20e\uc210\uc212\uc213\uc214\uc215\uc216\uc217\uc21a\uc21b\uc21d\uc21e\uc221\uc222\uc223\ufffd".split(""),e=0;e!=r[153].length;++e)65533!==r[153][e].charCodeAt(0)&&(n[r[153][e]]=39168+e,t[39168+e]=r[153][e]);for(r[154]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uc224\uc225\uc226\uc227\uc22a\uc22c\uc22e\uc230\uc233\uc235\uc236\uc237\uc238\uc239\uc23a\uc23b\uc23c\uc23d\uc23e\uc23f\uc240\uc241\uc242\uc243\uc244\uc245\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uc246\uc247\uc249\uc24a\uc24b\uc24c\uc24d\uc24e\uc24f\uc252\uc253\uc255\uc256\uc257\uc259\uc25a\uc25b\uc25c\uc25d\uc25e\uc25f\uc261\uc262\uc263\uc264\uc266\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uc267\uc268\uc269\uc26a\uc26b\uc26e\uc26f\uc271\uc272\uc273\uc275\uc276\uc277\uc278\uc279\uc27a\uc27b\uc27e\uc280\uc282\uc283\uc284\uc285\uc286\uc287\uc28a\uc28b\uc28c\uc28d\uc28e\uc28f\uc291\uc292\uc293\uc294\uc295\uc296\uc297\uc299\uc29a\uc29c\uc29e\uc29f\uc2a0\uc2a1\uc2a2\uc2a3\uc2a6\uc2a7\uc2a9\uc2aa\uc2ab\uc2ae\uc2af\uc2b0\uc2b1\uc2b2\uc2b3\uc2b6\uc2b8\uc2ba\uc2bb\uc2bc\uc2bd\uc2be\uc2bf\uc2c0\uc2c1\uc2c2\uc2c3\uc2c4\uc2c5\uc2c6\uc2c7\uc2c8\uc2c9\uc2ca\uc2cb\uc2cc\uc2cd\uc2ce\uc2cf\uc2d0\uc2d1\uc2d2\uc2d3\uc2d4\uc2d5\uc2d6\uc2d7\uc2d8\uc2d9\uc2da\uc2db\uc2de\uc2df\uc2e1\uc2e2\uc2e5\uc2e6\uc2e7\uc2e8\uc2e9\uc2ea\uc2ee\uc2f0\uc2f2\uc2f3\uc2f4\uc2f5\uc2f7\uc2fa\uc2fd\uc2fe\uc2ff\uc301\uc302\uc303\uc304\uc305\uc306\uc307\uc30a\uc30b\uc30e\uc30f\ufffd".split(""),e=0;e!=r[154].length;++e)65533!==r[154][e].charCodeAt(0)&&(n[r[154][e]]=39424+e,t[39424+e]=r[154][e]);for(r[155]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uc310\uc311\uc312\uc316\uc317\uc319\uc31a\uc31b\uc31d\uc31e\uc31f\uc320\uc321\uc322\uc323\uc326\uc327\uc32a\uc32b\uc32c\uc32d\uc32e\uc32f\uc330\uc331\uc332\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uc333\uc334\uc335\uc336\uc337\uc338\uc339\uc33a\uc33b\uc33c\uc33d\uc33e\uc33f\uc340\uc341\uc342\uc343\uc344\uc346\uc347\uc348\uc349\uc34a\uc34b\uc34c\uc34d\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uc34e\uc34f\uc350\uc351\uc352\uc353\uc354\uc355\uc356\uc357\uc358\uc359\uc35a\uc35b\uc35c\uc35d\uc35e\uc35f\uc360\uc361\uc362\uc363\uc364\uc365\uc366\uc367\uc36a\uc36b\uc36d\uc36e\uc36f\uc371\uc373\uc374\uc375\uc376\uc377\uc37a\uc37b\uc37e\uc37f\uc380\uc381\uc382\uc383\uc385\uc386\uc387\uc389\uc38a\uc38b\uc38d\uc38e\uc38f\uc390\uc391\uc392\uc393\uc394\uc395\uc396\uc397\uc398\uc399\uc39a\uc39b\uc39c\uc39d\uc39e\uc39f\uc3a0\uc3a1\uc3a2\uc3a3\uc3a4\uc3a5\uc3a6\uc3a7\uc3a8\uc3a9\uc3aa\uc3ab\uc3ac\uc3ad\uc3ae\uc3af\uc3b0\uc3b1\uc3b2\uc3b3\uc3b4\uc3b5\uc3b6\uc3b7\uc3b8\uc3b9\uc3ba\uc3bb\uc3bc\uc3bd\uc3be\uc3bf\uc3c1\uc3c2\uc3c3\uc3c4\uc3c5\uc3c6\uc3c7\uc3c8\uc3c9\uc3ca\uc3cb\uc3cc\uc3cd\uc3ce\uc3cf\uc3d0\uc3d1\uc3d2\uc3d3\uc3d4\uc3d5\uc3d6\uc3d7\uc3da\ufffd".split(""),e=0;e!=r[155].length;++e)65533!==r[155][e].charCodeAt(0)&&(n[r[155][e]]=39680+e,t[39680+e]=r[155][e]);for(r[156]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uc3db\uc3dd\uc3de\uc3e1\uc3e3\uc3e4\uc3e5\uc3e6\uc3e7\uc3ea\uc3eb\uc3ec\uc3ee\uc3ef\uc3f0\uc3f1\uc3f2\uc3f3\uc3f6\uc3f7\uc3f9\uc3fa\uc3fb\uc3fc\uc3fd\uc3fe\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uc3ff\uc400\uc401\uc402\uc403\uc404\uc405\uc406\uc407\uc409\uc40a\uc40b\uc40c\uc40d\uc40e\uc40f\uc411\uc412\uc413\uc414\uc415\uc416\uc417\uc418\uc419\uc41a\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uc41b\uc41c\uc41d\uc41e\uc41f\uc420\uc421\uc422\uc423\uc425\uc426\uc427\uc428\uc429\uc42a\uc42b\uc42d\uc42e\uc42f\uc431\uc432\uc433\uc435\uc436\uc437\uc438\uc439\uc43a\uc43b\uc43e\uc43f\uc440\uc441\uc442\uc443\uc444\uc445\uc446\uc447\uc449\uc44a\uc44b\uc44c\uc44d\uc44e\uc44f\uc450\uc451\uc452\uc453\uc454\uc455\uc456\uc457\uc458\uc459\uc45a\uc45b\uc45c\uc45d\uc45e\uc45f\uc460\uc461\uc462\uc463\uc466\uc467\uc469\uc46a\uc46b\uc46d\uc46e\uc46f\uc470\uc471\uc472\uc473\uc476\uc477\uc478\uc47a\uc47b\uc47c\uc47d\uc47e\uc47f\uc481\uc482\uc483\uc484\uc485\uc486\uc487\uc488\uc489\uc48a\uc48b\uc48c\uc48d\uc48e\uc48f\uc490\uc491\uc492\uc493\uc495\uc496\uc497\uc498\uc499\uc49a\uc49b\uc49d\uc49e\uc49f\uc4a0\uc4a1\uc4a2\uc4a3\uc4a4\uc4a5\uc4a6\uc4a7\uc4a8\uc4a9\ufffd".split(""),e=0;e!=r[156].length;++e)65533!==r[156][e].charCodeAt(0)&&(n[r[156][e]]=39936+e,t[39936+e]=r[156][e]);for(r[157]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uc4aa\uc4ab\uc4ac\uc4ad\uc4ae\uc4af\uc4b0\uc4b1\uc4b2\uc4b3\uc4b4\uc4b5\uc4b6\uc4b7\uc4b9\uc4ba\uc4bb\uc4bd\uc4be\uc4bf\uc4c0\uc4c1\uc4c2\uc4c3\uc4c4\uc4c5\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uc4c6\uc4c7\uc4c8\uc4c9\uc4ca\uc4cb\uc4cc\uc4cd\uc4ce\uc4cf\uc4d0\uc4d1\uc4d2\uc4d3\uc4d4\uc4d5\uc4d6\uc4d7\uc4d8\uc4d9\uc4da\uc4db\uc4dc\uc4dd\uc4de\uc4df\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uc4e0\uc4e1\uc4e2\uc4e3\uc4e4\uc4e5\uc4e6\uc4e7\uc4e8\uc4ea\uc4eb\uc4ec\uc4ed\uc4ee\uc4ef\uc4f2\uc4f3\uc4f5\uc4f6\uc4f7\uc4f9\uc4fb\uc4fc\uc4fd\uc4fe\uc502\uc503\uc504\uc505\uc506\uc507\uc508\uc509\uc50a\uc50b\uc50d\uc50e\uc50f\uc511\uc512\uc513\uc515\uc516\uc517\uc518\uc519\uc51a\uc51b\uc51d\uc51e\uc51f\uc520\uc521\uc522\uc523\uc524\uc525\uc526\uc527\uc52a\uc52b\uc52d\uc52e\uc52f\uc531\uc532\uc533\uc534\uc535\uc536\uc537\uc53a\uc53c\uc53e\uc53f\uc540\uc541\uc542\uc543\uc546\uc547\uc54b\uc54f\uc550\uc551\uc552\uc556\uc55a\uc55b\uc55c\uc55f\uc562\uc563\uc565\uc566\uc567\uc569\uc56a\uc56b\uc56c\uc56d\uc56e\uc56f\uc572\uc576\uc577\uc578\uc579\uc57a\uc57b\uc57e\uc57f\uc581\uc582\uc583\uc585\uc586\uc588\uc589\uc58a\uc58b\uc58e\uc590\uc592\uc593\uc594\ufffd".split(""),e=0;e!=r[157].length;++e)65533!==r[157][e].charCodeAt(0)&&(n[r[157][e]]=40192+e,t[40192+e]=r[157][e]);for(r[158]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uc596\uc599\uc59a\uc59b\uc59d\uc59e\uc59f\uc5a1\uc5a2\uc5a3\uc5a4\uc5a5\uc5a6\uc5a7\uc5a8\uc5aa\uc5ab\uc5ac\uc5ad\uc5ae\uc5af\uc5b0\uc5b1\uc5b2\uc5b3\uc5b6\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uc5b7\uc5ba\uc5bf\uc5c0\uc5c1\uc5c2\uc5c3\uc5cb\uc5cd\uc5cf\uc5d2\uc5d3\uc5d5\uc5d6\uc5d7\uc5d9\uc5da\uc5db\uc5dc\uc5dd\uc5de\uc5df\uc5e2\uc5e4\uc5e6\uc5e7\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uc5e8\uc5e9\uc5ea\uc5eb\uc5ef\uc5f1\uc5f2\uc5f3\uc5f5\uc5f8\uc5f9\uc5fa\uc5fb\uc602\uc603\uc604\uc609\uc60a\uc60b\uc60d\uc60e\uc60f\uc611\uc612\uc613\uc614\uc615\uc616\uc617\uc61a\uc61d\uc61e\uc61f\uc620\uc621\uc622\uc623\uc626\uc627\uc629\uc62a\uc62b\uc62f\uc631\uc632\uc636\uc638\uc63a\uc63c\uc63d\uc63e\uc63f\uc642\uc643\uc645\uc646\uc647\uc649\uc64a\uc64b\uc64c\uc64d\uc64e\uc64f\uc652\uc656\uc657\uc658\uc659\uc65a\uc65b\uc65e\uc65f\uc661\uc662\uc663\uc664\uc665\uc666\uc667\uc668\uc669\uc66a\uc66b\uc66d\uc66e\uc670\uc672\uc673\uc674\uc675\uc676\uc677\uc67a\uc67b\uc67d\uc67e\uc67f\uc681\uc682\uc683\uc684\uc685\uc686\uc687\uc68a\uc68c\uc68e\uc68f\uc690\uc691\uc692\uc693\uc696\uc697\uc699\uc69a\uc69b\uc69d\uc69e\uc69f\uc6a0\uc6a1\uc6a2\uc6a3\uc6a6\ufffd".split(""),e=0;e!=r[158].length;++e)65533!==r[158][e].charCodeAt(0)&&(n[r[158][e]]=40448+e,t[40448+e]=r[158][e]);for(r[159]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uc6a8\uc6aa\uc6ab\uc6ac\uc6ad\uc6ae\uc6af\uc6b2\uc6b3\uc6b5\uc6b6\uc6b7\uc6bb\uc6bc\uc6bd\uc6be\uc6bf\uc6c2\uc6c4\uc6c6\uc6c7\uc6c8\uc6c9\uc6ca\uc6cb\uc6ce\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uc6cf\uc6d1\uc6d2\uc6d3\uc6d5\uc6d6\uc6d7\uc6d8\uc6d9\uc6da\uc6db\uc6de\uc6df\uc6e2\uc6e3\uc6e4\uc6e5\uc6e6\uc6e7\uc6ea\uc6eb\uc6ed\uc6ee\uc6ef\uc6f1\uc6f2\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uc6f3\uc6f4\uc6f5\uc6f6\uc6f7\uc6fa\uc6fb\uc6fc\uc6fe\uc6ff\uc700\uc701\uc702\uc703\uc706\uc707\uc709\uc70a\uc70b\uc70d\uc70e\uc70f\uc710\uc711\uc712\uc713\uc716\uc718\uc71a\uc71b\uc71c\uc71d\uc71e\uc71f\uc722\uc723\uc725\uc726\uc727\uc729\uc72a\uc72b\uc72c\uc72d\uc72e\uc72f\uc732\uc734\uc736\uc738\uc739\uc73a\uc73b\uc73e\uc73f\uc741\uc742\uc743\uc745\uc746\uc747\uc748\uc749\uc74b\uc74e\uc750\uc759\uc75a\uc75b\uc75d\uc75e\uc75f\uc761\uc762\uc763\uc764\uc765\uc766\uc767\uc769\uc76a\uc76c\uc76d\uc76e\uc76f\uc770\uc771\uc772\uc773\uc776\uc777\uc779\uc77a\uc77b\uc77f\uc780\uc781\uc782\uc786\uc78b\uc78c\uc78d\uc78f\uc792\uc793\uc795\uc799\uc79b\uc79c\uc79d\uc79e\uc79f\uc7a2\uc7a7\uc7a8\uc7a9\uc7aa\uc7ab\uc7ae\uc7af\uc7b1\uc7b2\uc7b3\uc7b5\uc7b6\uc7b7\ufffd".split(""),e=0;e!=r[159].length;++e)65533!==r[159][e].charCodeAt(0)&&(n[r[159][e]]=40704+e,t[40704+e]=r[159][e]);for(r[160]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uc7b8\uc7b9\uc7ba\uc7bb\uc7be\uc7c2\uc7c3\uc7c4\uc7c5\uc7c6\uc7c7\uc7ca\uc7cb\uc7cd\uc7cf\uc7d1\uc7d2\uc7d3\uc7d4\uc7d5\uc7d6\uc7d7\uc7d9\uc7da\uc7db\uc7dc\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uc7de\uc7df\uc7e0\uc7e1\uc7e2\uc7e3\uc7e5\uc7e6\uc7e7\uc7e9\uc7ea\uc7eb\uc7ed\uc7ee\uc7ef\uc7f0\uc7f1\uc7f2\uc7f3\uc7f4\uc7f5\uc7f6\uc7f7\uc7f8\uc7f9\uc7fa\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uc7fb\uc7fc\uc7fd\uc7fe\uc7ff\uc802\uc803\uc805\uc806\uc807\uc809\uc80b\uc80c\uc80d\uc80e\uc80f\uc812\uc814\uc817\uc818\uc819\uc81a\uc81b\uc81e\uc81f\uc821\uc822\uc823\uc825\uc826\uc827\uc828\uc829\uc82a\uc82b\uc82e\uc830\uc832\uc833\uc834\uc835\uc836\uc837\uc839\uc83a\uc83b\uc83d\uc83e\uc83f\uc841\uc842\uc843\uc844\uc845\uc846\uc847\uc84a\uc84b\uc84e\uc84f\uc850\uc851\uc852\uc853\uc855\uc856\uc857\uc858\uc859\uc85a\uc85b\uc85c\uc85d\uc85e\uc85f\uc860\uc861\uc862\uc863\uc864\uc865\uc866\uc867\uc868\uc869\uc86a\uc86b\uc86c\uc86d\uc86e\uc86f\uc872\uc873\uc875\uc876\uc877\uc879\uc87b\uc87c\uc87d\uc87e\uc87f\uc882\uc884\uc888\uc889\uc88a\uc88e\uc88f\uc890\uc891\uc892\uc893\uc895\uc896\uc897\uc898\uc899\uc89a\uc89b\uc89c\uc89e\uc8a0\uc8a2\uc8a3\uc8a4\ufffd".split(""),e=0;e!=r[160].length;++e)65533!==r[160][e].charCodeAt(0)&&(n[r[160][e]]=40960+e,t[40960+e]=r[160][e]);for(r[161]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uc8a5\uc8a6\uc8a7\uc8a9\uc8aa\uc8ab\uc8ac\uc8ad\uc8ae\uc8af\uc8b0\uc8b1\uc8b2\uc8b3\uc8b4\uc8b5\uc8b6\uc8b7\uc8b8\uc8b9\uc8ba\uc8bb\uc8be\uc8bf\uc8c0\uc8c1\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uc8c2\uc8c3\uc8c5\uc8c6\uc8c7\uc8c9\uc8ca\uc8cb\uc8cd\uc8ce\uc8cf\uc8d0\uc8d1\uc8d2\uc8d3\uc8d6\uc8d8\uc8da\uc8db\uc8dc\uc8dd\uc8de\uc8df\uc8e2\uc8e3\uc8e5\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uc8e6\uc8e7\uc8e8\uc8e9\uc8ea\uc8eb\uc8ec\uc8ed\uc8ee\uc8ef\uc8f0\uc8f1\uc8f2\uc8f3\uc8f4\uc8f6\uc8f7\uc8f8\uc8f9\uc8fa\uc8fb\uc8fe\uc8ff\uc901\uc902\uc903\uc907\uc908\uc909\uc90a\uc90b\uc90e\u3000\u3001\u3002\xb7\u2025\u2026\xa8\u3003\xad\u2015\u2225\uff3c\u223c\u2018\u2019\u201c\u201d\u3014\u3015\u3008\u3009\u300a\u300b\u300c\u300d\u300e\u300f\u3010\u3011\xb1\xd7\xf7\u2260\u2264\u2265\u221e\u2234\xb0\u2032\u2033\u2103\u212b\uffe0\uffe1\uffe5\u2642\u2640\u2220\u22a5\u2312\u2202\u2207\u2261\u2252\xa7\u203b\u2606\u2605\u25cb\u25cf\u25ce\u25c7\u25c6\u25a1\u25a0\u25b3\u25b2\u25bd\u25bc\u2192\u2190\u2191\u2193\u2194\u3013\u226a\u226b\u221a\u223d\u221d\u2235\u222b\u222c\u2208\u220b\u2286\u2287\u2282\u2283\u222a\u2229\u2227\u2228\uffe2\ufffd".split(""),e=0;e!=r[161].length;++e)65533!==r[161][e].charCodeAt(0)&&(n[r[161][e]]=41216+e,t[41216+e]=r[161][e]);for(r[162]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uc910\uc912\uc913\uc914\uc915\uc916\uc917\uc919\uc91a\uc91b\uc91c\uc91d\uc91e\uc91f\uc920\uc921\uc922\uc923\uc924\uc925\uc926\uc927\uc928\uc929\uc92a\uc92b\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uc92d\uc92e\uc92f\uc930\uc931\uc932\uc933\uc935\uc936\uc937\uc938\uc939\uc93a\uc93b\uc93c\uc93d\uc93e\uc93f\uc940\uc941\uc942\uc943\uc944\uc945\uc946\uc947\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uc948\uc949\uc94a\uc94b\uc94c\uc94d\uc94e\uc94f\uc952\uc953\uc955\uc956\uc957\uc959\uc95a\uc95b\uc95c\uc95d\uc95e\uc95f\uc962\uc964\uc965\uc966\uc967\uc968\uc969\uc96a\uc96b\uc96d\uc96e\uc96f\u21d2\u21d4\u2200\u2203\xb4\uff5e\u02c7\u02d8\u02dd\u02da\u02d9\xb8\u02db\xa1\xbf\u02d0\u222e\u2211\u220f\xa4\u2109\u2030\u25c1\u25c0\u25b7\u25b6\u2664\u2660\u2661\u2665\u2667\u2663\u2299\u25c8\u25a3\u25d0\u25d1\u2592\u25a4\u25a5\u25a8\u25a7\u25a6\u25a9\u2668\u260f\u260e\u261c\u261e\xb6\u2020\u2021\u2195\u2197\u2199\u2196\u2198\u266d\u2669\u266a\u266c\u327f\u321c\u2116\u33c7\u2122\u33c2\u33d8\u2121\u20ac\xae\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[162].length;++e)65533!==r[162][e].charCodeAt(0)&&(n[r[162][e]]=41472+e,t[41472+e]=r[162][e]);for(r[163]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uc971\uc972\uc973\uc975\uc976\uc977\uc978\uc979\uc97a\uc97b\uc97d\uc97e\uc97f\uc980\uc981\uc982\uc983\uc984\uc985\uc986\uc987\uc98a\uc98b\uc98d\uc98e\uc98f\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uc991\uc992\uc993\uc994\uc995\uc996\uc997\uc99a\uc99c\uc99e\uc99f\uc9a0\uc9a1\uc9a2\uc9a3\uc9a4\uc9a5\uc9a6\uc9a7\uc9a8\uc9a9\uc9aa\uc9ab\uc9ac\uc9ad\uc9ae\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uc9af\uc9b0\uc9b1\uc9b2\uc9b3\uc9b4\uc9b5\uc9b6\uc9b7\uc9b8\uc9b9\uc9ba\uc9bb\uc9bc\uc9bd\uc9be\uc9bf\uc9c2\uc9c3\uc9c5\uc9c6\uc9c9\uc9cb\uc9cc\uc9cd\uc9ce\uc9cf\uc9d2\uc9d4\uc9d7\uc9d8\uc9db\uff01\uff02\uff03\uff04\uff05\uff06\uff07\uff08\uff09\uff0a\uff0b\uff0c\uff0d\uff0e\uff0f\uff10\uff11\uff12\uff13\uff14\uff15\uff16\uff17\uff18\uff19\uff1a\uff1b\uff1c\uff1d\uff1e\uff1f\uff20\uff21\uff22\uff23\uff24\uff25\uff26\uff27\uff28\uff29\uff2a\uff2b\uff2c\uff2d\uff2e\uff2f\uff30\uff31\uff32\uff33\uff34\uff35\uff36\uff37\uff38\uff39\uff3a\uff3b\uffe6\uff3d\uff3e\uff3f\uff40\uff41\uff42\uff43\uff44\uff45\uff46\uff47\uff48\uff49\uff4a\uff4b\uff4c\uff4d\uff4e\uff4f\uff50\uff51\uff52\uff53\uff54\uff55\uff56\uff57\uff58\uff59\uff5a\uff5b\uff5c\uff5d\uffe3\ufffd".split(""),e=0;e!=r[163].length;++e)65533!==r[163][e].charCodeAt(0)&&(n[r[163][e]]=41728+e,t[41728+e]=r[163][e]);for(r[164]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uc9de\uc9df\uc9e1\uc9e3\uc9e5\uc9e6\uc9e8\uc9e9\uc9ea\uc9eb\uc9ee\uc9f2\uc9f3\uc9f4\uc9f5\uc9f6\uc9f7\uc9fa\uc9fb\uc9fd\uc9fe\uc9ff\uca01\uca02\uca03\uca04\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uca05\uca06\uca07\uca0a\uca0e\uca0f\uca10\uca11\uca12\uca13\uca15\uca16\uca17\uca19\uca1a\uca1b\uca1c\uca1d\uca1e\uca1f\uca20\uca21\uca22\uca23\uca24\uca25\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uca26\uca27\uca28\uca2a\uca2b\uca2c\uca2d\uca2e\uca2f\uca30\uca31\uca32\uca33\uca34\uca35\uca36\uca37\uca38\uca39\uca3a\uca3b\uca3c\uca3d\uca3e\uca3f\uca40\uca41\uca42\uca43\uca44\uca45\uca46\u3131\u3132\u3133\u3134\u3135\u3136\u3137\u3138\u3139\u313a\u313b\u313c\u313d\u313e\u313f\u3140\u3141\u3142\u3143\u3144\u3145\u3146\u3147\u3148\u3149\u314a\u314b\u314c\u314d\u314e\u314f\u3150\u3151\u3152\u3153\u3154\u3155\u3156\u3157\u3158\u3159\u315a\u315b\u315c\u315d\u315e\u315f\u3160\u3161\u3162\u3163\u3164\u3165\u3166\u3167\u3168\u3169\u316a\u316b\u316c\u316d\u316e\u316f\u3170\u3171\u3172\u3173\u3174\u3175\u3176\u3177\u3178\u3179\u317a\u317b\u317c\u317d\u317e\u317f\u3180\u3181\u3182\u3183\u3184\u3185\u3186\u3187\u3188\u3189\u318a\u318b\u318c\u318d\u318e\ufffd".split(""),e=0;e!=r[164].length;++e)65533!==r[164][e].charCodeAt(0)&&(n[r[164][e]]=41984+e,t[41984+e]=r[164][e]);for(r[165]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uca47\uca48\uca49\uca4a\uca4b\uca4e\uca4f\uca51\uca52\uca53\uca55\uca56\uca57\uca58\uca59\uca5a\uca5b\uca5e\uca62\uca63\uca64\uca65\uca66\uca67\uca69\uca6a\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uca6b\uca6c\uca6d\uca6e\uca6f\uca70\uca71\uca72\uca73\uca74\uca75\uca76\uca77\uca78\uca79\uca7a\uca7b\uca7c\uca7e\uca7f\uca80\uca81\uca82\uca83\uca85\uca86\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uca87\uca88\uca89\uca8a\uca8b\uca8c\uca8d\uca8e\uca8f\uca90\uca91\uca92\uca93\uca94\uca95\uca96\uca97\uca99\uca9a\uca9b\uca9c\uca9d\uca9e\uca9f\ucaa0\ucaa1\ucaa2\ucaa3\ucaa4\ucaa5\ucaa6\ucaa7\u2170\u2171\u2172\u2173\u2174\u2175\u2176\u2177\u2178\u2179\ufffd\ufffd\ufffd\ufffd\ufffd\u2160\u2161\u2162\u2163\u2164\u2165\u2166\u2167\u2168\u2169\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039a\u039b\u039c\u039d\u039e\u039f\u03a0\u03a1\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u03b1\u03b2\u03b3\u03b4\u03b5\u03b6\u03b7\u03b8\u03b9\u03ba\u03bb\u03bc\u03bd\u03be\u03bf\u03c0\u03c1\u03c3\u03c4\u03c5\u03c6\u03c7\u03c8\u03c9\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[165].length;++e)65533!==r[165][e].charCodeAt(0)&&(n[r[165][e]]=42240+e,t[42240+e]=r[165][e]);for(r[166]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ucaa8\ucaa9\ucaaa\ucaab\ucaac\ucaad\ucaae\ucaaf\ucab0\ucab1\ucab2\ucab3\ucab4\ucab5\ucab6\ucab7\ucab8\ucab9\ucaba\ucabb\ucabe\ucabf\ucac1\ucac2\ucac3\ucac5\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ucac6\ucac7\ucac8\ucac9\ucaca\ucacb\ucace\ucad0\ucad2\ucad4\ucad5\ucad6\ucad7\ucada\ucadb\ucadc\ucadd\ucade\ucadf\ucae1\ucae2\ucae3\ucae4\ucae5\ucae6\ucae7\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ucae8\ucae9\ucaea\ucaeb\ucaed\ucaee\ucaef\ucaf0\ucaf1\ucaf2\ucaf3\ucaf5\ucaf6\ucaf7\ucaf8\ucaf9\ucafa\ucafb\ucafc\ucafd\ucafe\ucaff\ucb00\ucb01\ucb02\ucb03\ucb04\ucb05\ucb06\ucb07\ucb09\ucb0a\u2500\u2502\u250c\u2510\u2518\u2514\u251c\u252c\u2524\u2534\u253c\u2501\u2503\u250f\u2513\u251b\u2517\u2523\u2533\u252b\u253b\u254b\u2520\u252f\u2528\u2537\u253f\u251d\u2530\u2525\u2538\u2542\u2512\u2511\u251a\u2519\u2516\u2515\u250e\u250d\u251e\u251f\u2521\u2522\u2526\u2527\u2529\u252a\u252d\u252e\u2531\u2532\u2535\u2536\u2539\u253a\u253d\u253e\u2540\u2541\u2543\u2544\u2545\u2546\u2547\u2548\u2549\u254a\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[166].length;++e)65533!==r[166][e].charCodeAt(0)&&(n[r[166][e]]=42496+e,t[42496+e]=r[166][e]);for(r[167]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ucb0b\ucb0c\ucb0d\ucb0e\ucb0f\ucb11\ucb12\ucb13\ucb15\ucb16\ucb17\ucb19\ucb1a\ucb1b\ucb1c\ucb1d\ucb1e\ucb1f\ucb22\ucb23\ucb24\ucb25\ucb26\ucb27\ucb28\ucb29\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ucb2a\ucb2b\ucb2c\ucb2d\ucb2e\ucb2f\ucb30\ucb31\ucb32\ucb33\ucb34\ucb35\ucb36\ucb37\ucb38\ucb39\ucb3a\ucb3b\ucb3c\ucb3d\ucb3e\ucb3f\ucb40\ucb42\ucb43\ucb44\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ucb45\ucb46\ucb47\ucb4a\ucb4b\ucb4d\ucb4e\ucb4f\ucb51\ucb52\ucb53\ucb54\ucb55\ucb56\ucb57\ucb5a\ucb5b\ucb5c\ucb5e\ucb5f\ucb60\ucb61\ucb62\ucb63\ucb65\ucb66\ucb67\ucb68\ucb69\ucb6a\ucb6b\ucb6c\u3395\u3396\u3397\u2113\u3398\u33c4\u33a3\u33a4\u33a5\u33a6\u3399\u339a\u339b\u339c\u339d\u339e\u339f\u33a0\u33a1\u33a2\u33ca\u338d\u338e\u338f\u33cf\u3388\u3389\u33c8\u33a7\u33a8\u33b0\u33b1\u33b2\u33b3\u33b4\u33b5\u33b6\u33b7\u33b8\u33b9\u3380\u3381\u3382\u3383\u3384\u33ba\u33bb\u33bc\u33bd\u33be\u33bf\u3390\u3391\u3392\u3393\u3394\u2126\u33c0\u33c1\u338a\u338b\u338c\u33d6\u33c5\u33ad\u33ae\u33af\u33db\u33a9\u33aa\u33ab\u33ac\u33dd\u33d0\u33d3\u33c3\u33c9\u33dc\u33c6\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[167].length;++e)65533!==r[167][e].charCodeAt(0)&&(n[r[167][e]]=42752+e,t[42752+e]=r[167][e]);for(r[168]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ucb6d\ucb6e\ucb6f\ucb70\ucb71\ucb72\ucb73\ucb74\ucb75\ucb76\ucb77\ucb7a\ucb7b\ucb7c\ucb7d\ucb7e\ucb7f\ucb80\ucb81\ucb82\ucb83\ucb84\ucb85\ucb86\ucb87\ucb88\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ucb89\ucb8a\ucb8b\ucb8c\ucb8d\ucb8e\ucb8f\ucb90\ucb91\ucb92\ucb93\ucb94\ucb95\ucb96\ucb97\ucb98\ucb99\ucb9a\ucb9b\ucb9d\ucb9e\ucb9f\ucba0\ucba1\ucba2\ucba3\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ucba4\ucba5\ucba6\ucba7\ucba8\ucba9\ucbaa\ucbab\ucbac\ucbad\ucbae\ucbaf\ucbb0\ucbb1\ucbb2\ucbb3\ucbb4\ucbb5\ucbb6\ucbb7\ucbb9\ucbba\ucbbb\ucbbc\ucbbd\ucbbe\ucbbf\ucbc0\ucbc1\ucbc2\ucbc3\ucbc4\xc6\xd0\xaa\u0126\ufffd\u0132\ufffd\u013f\u0141\xd8\u0152\xba\xde\u0166\u014a\ufffd\u3260\u3261\u3262\u3263\u3264\u3265\u3266\u3267\u3268\u3269\u326a\u326b\u326c\u326d\u326e\u326f\u3270\u3271\u3272\u3273\u3274\u3275\u3276\u3277\u3278\u3279\u327a\u327b\u24d0\u24d1\u24d2\u24d3\u24d4\u24d5\u24d6\u24d7\u24d8\u24d9\u24da\u24db\u24dc\u24dd\u24de\u24df\u24e0\u24e1\u24e2\u24e3\u24e4\u24e5\u24e6\u24e7\u24e8\u24e9\u2460\u2461\u2462\u2463\u2464\u2465\u2466\u2467\u2468\u2469\u246a\u246b\u246c\u246d\u246e\xbd\u2153\u2154\xbc\xbe\u215b\u215c\u215d\u215e\ufffd".split(""),e=0;e!=r[168].length;++e)65533!==r[168][e].charCodeAt(0)&&(n[r[168][e]]=43008+e,t[43008+e]=r[168][e]);for(r[169]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ucbc5\ucbc6\ucbc7\ucbc8\ucbc9\ucbca\ucbcb\ucbcc\ucbcd\ucbce\ucbcf\ucbd0\ucbd1\ucbd2\ucbd3\ucbd5\ucbd6\ucbd7\ucbd8\ucbd9\ucbda\ucbdb\ucbdc\ucbdd\ucbde\ucbdf\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ucbe0\ucbe1\ucbe2\ucbe3\ucbe5\ucbe6\ucbe8\ucbea\ucbeb\ucbec\ucbed\ucbee\ucbef\ucbf0\ucbf1\ucbf2\ucbf3\ucbf4\ucbf5\ucbf6\ucbf7\ucbf8\ucbf9\ucbfa\ucbfb\ucbfc\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ucbfd\ucbfe\ucbff\ucc00\ucc01\ucc02\ucc03\ucc04\ucc05\ucc06\ucc07\ucc08\ucc09\ucc0a\ucc0b\ucc0e\ucc0f\ucc11\ucc12\ucc13\ucc15\ucc16\ucc17\ucc18\ucc19\ucc1a\ucc1b\ucc1e\ucc1f\ucc20\ucc23\ucc24\xe6\u0111\xf0\u0127\u0131\u0133\u0138\u0140\u0142\xf8\u0153\xdf\xfe\u0167\u014b\u0149\u3200\u3201\u3202\u3203\u3204\u3205\u3206\u3207\u3208\u3209\u320a\u320b\u320c\u320d\u320e\u320f\u3210\u3211\u3212\u3213\u3214\u3215\u3216\u3217\u3218\u3219\u321a\u321b\u249c\u249d\u249e\u249f\u24a0\u24a1\u24a2\u24a3\u24a4\u24a5\u24a6\u24a7\u24a8\u24a9\u24aa\u24ab\u24ac\u24ad\u24ae\u24af\u24b0\u24b1\u24b2\u24b3\u24b4\u24b5\u2474\u2475\u2476\u2477\u2478\u2479\u247a\u247b\u247c\u247d\u247e\u247f\u2480\u2481\u2482\xb9\xb2\xb3\u2074\u207f\u2081\u2082\u2083\u2084\ufffd".split(""),e=0;e!=r[169].length;++e)65533!==r[169][e].charCodeAt(0)&&(n[r[169][e]]=43264+e,t[43264+e]=r[169][e]);for(r[170]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ucc25\ucc26\ucc2a\ucc2b\ucc2d\ucc2f\ucc31\ucc32\ucc33\ucc34\ucc35\ucc36\ucc37\ucc3a\ucc3f\ucc40\ucc41\ucc42\ucc43\ucc46\ucc47\ucc49\ucc4a\ucc4b\ucc4d\ucc4e\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ucc4f\ucc50\ucc51\ucc52\ucc53\ucc56\ucc5a\ucc5b\ucc5c\ucc5d\ucc5e\ucc5f\ucc61\ucc62\ucc63\ucc65\ucc67\ucc69\ucc6a\ucc6b\ucc6c\ucc6d\ucc6e\ucc6f\ucc71\ucc72\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ucc73\ucc74\ucc76\ucc77\ucc78\ucc79\ucc7a\ucc7b\ucc7c\ucc7d\ucc7e\ucc7f\ucc80\ucc81\ucc82\ucc83\ucc84\ucc85\ucc86\ucc87\ucc88\ucc89\ucc8a\ucc8b\ucc8c\ucc8d\ucc8e\ucc8f\ucc90\ucc91\ucc92\ucc93\u3041\u3042\u3043\u3044\u3045\u3046\u3047\u3048\u3049\u304a\u304b\u304c\u304d\u304e\u304f\u3050\u3051\u3052\u3053\u3054\u3055\u3056\u3057\u3058\u3059\u305a\u305b\u305c\u305d\u305e\u305f\u3060\u3061\u3062\u3063\u3064\u3065\u3066\u3067\u3068\u3069\u306a\u306b\u306c\u306d\u306e\u306f\u3070\u3071\u3072\u3073\u3074\u3075\u3076\u3077\u3078\u3079\u307a\u307b\u307c\u307d\u307e\u307f\u3080\u3081\u3082\u3083\u3084\u3085\u3086\u3087\u3088\u3089\u308a\u308b\u308c\u308d\u308e\u308f\u3090\u3091\u3092\u3093\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[170].length;++e)65533!==r[170][e].charCodeAt(0)&&(n[r[170][e]]=43520+e,t[43520+e]=r[170][e]);for(r[171]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ucc94\ucc95\ucc96\ucc97\ucc9a\ucc9b\ucc9d\ucc9e\ucc9f\ucca1\ucca2\ucca3\ucca4\ucca5\ucca6\ucca7\uccaa\uccae\uccaf\uccb0\uccb1\uccb2\uccb3\uccb6\uccb7\uccb9\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uccba\uccbb\uccbd\uccbe\uccbf\uccc0\uccc1\uccc2\uccc3\uccc6\uccc8\uccca\ucccb\ucccc\ucccd\uccce\ucccf\uccd1\uccd2\uccd3\uccd5\uccd6\uccd7\uccd8\uccd9\uccda\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uccdb\uccdc\uccdd\uccde\uccdf\ucce0\ucce1\ucce2\ucce3\ucce5\ucce6\ucce7\ucce8\ucce9\uccea\ucceb\ucced\uccee\uccef\uccf1\uccf2\uccf3\uccf4\uccf5\uccf6\uccf7\uccf8\uccf9\uccfa\uccfb\uccfc\uccfd\u30a1\u30a2\u30a3\u30a4\u30a5\u30a6\u30a7\u30a8\u30a9\u30aa\u30ab\u30ac\u30ad\u30ae\u30af\u30b0\u30b1\u30b2\u30b3\u30b4\u30b5\u30b6\u30b7\u30b8\u30b9\u30ba\u30bb\u30bc\u30bd\u30be\u30bf\u30c0\u30c1\u30c2\u30c3\u30c4\u30c5\u30c6\u30c7\u30c8\u30c9\u30ca\u30cb\u30cc\u30cd\u30ce\u30cf\u30d0\u30d1\u30d2\u30d3\u30d4\u30d5\u30d6\u30d7\u30d8\u30d9\u30da\u30db\u30dc\u30dd\u30de\u30df\u30e0\u30e1\u30e2\u30e3\u30e4\u30e5\u30e6\u30e7\u30e8\u30e9\u30ea\u30eb\u30ec\u30ed\u30ee\u30ef\u30f0\u30f1\u30f2\u30f3\u30f4\u30f5\u30f6\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[171].length;++e)65533!==r[171][e].charCodeAt(0)&&(n[r[171][e]]=43776+e,t[43776+e]=r[171][e]);for(r[172]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uccfe\uccff\ucd00\ucd02\ucd03\ucd04\ucd05\ucd06\ucd07\ucd0a\ucd0b\ucd0d\ucd0e\ucd0f\ucd11\ucd12\ucd13\ucd14\ucd15\ucd16\ucd17\ucd1a\ucd1c\ucd1e\ucd1f\ucd20\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ucd21\ucd22\ucd23\ucd25\ucd26\ucd27\ucd29\ucd2a\ucd2b\ucd2d\ucd2e\ucd2f\ucd30\ucd31\ucd32\ucd33\ucd34\ucd35\ucd36\ucd37\ucd38\ucd3a\ucd3b\ucd3c\ucd3d\ucd3e\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ucd3f\ucd40\ucd41\ucd42\ucd43\ucd44\ucd45\ucd46\ucd47\ucd48\ucd49\ucd4a\ucd4b\ucd4c\ucd4d\ucd4e\ucd4f\ucd50\ucd51\ucd52\ucd53\ucd54\ucd55\ucd56\ucd57\ucd58\ucd59\ucd5a\ucd5b\ucd5d\ucd5e\ucd5f\u0410\u0411\u0412\u0413\u0414\u0415\u0401\u0416\u0417\u0418\u0419\u041a\u041b\u041c\u041d\u041e\u041f\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042a\u042b\u042c\u042d\u042e\u042f\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0430\u0431\u0432\u0433\u0434\u0435\u0451\u0436\u0437\u0438\u0439\u043a\u043b\u043c\u043d\u043e\u043f\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044a\u044b\u044c\u044d\u044e\u044f\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[172].length;++e)65533!==r[172][e].charCodeAt(0)&&(n[r[172][e]]=44032+e,t[44032+e]=r[172][e]);for(r[173]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ucd61\ucd62\ucd63\ucd65\ucd66\ucd67\ucd68\ucd69\ucd6a\ucd6b\ucd6e\ucd70\ucd72\ucd73\ucd74\ucd75\ucd76\ucd77\ucd79\ucd7a\ucd7b\ucd7c\ucd7d\ucd7e\ucd7f\ucd80\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ucd81\ucd82\ucd83\ucd84\ucd85\ucd86\ucd87\ucd89\ucd8a\ucd8b\ucd8c\ucd8d\ucd8e\ucd8f\ucd90\ucd91\ucd92\ucd93\ucd96\ucd97\ucd99\ucd9a\ucd9b\ucd9d\ucd9e\ucd9f\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ucda0\ucda1\ucda2\ucda3\ucda6\ucda8\ucdaa\ucdab\ucdac\ucdad\ucdae\ucdaf\ucdb1\ucdb2\ucdb3\ucdb4\ucdb5\ucdb6\ucdb7\ucdb8\ucdb9\ucdba\ucdbb\ucdbc\ucdbd\ucdbe\ucdbf\ucdc0\ucdc1\ucdc2\ucdc3\ucdc5\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[173].length;++e)65533!==r[173][e].charCodeAt(0)&&(n[r[173][e]]=44288+e,t[44288+e]=r[173][e]);for(r[174]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ucdc6\ucdc7\ucdc8\ucdc9\ucdca\ucdcb\ucdcd\ucdce\ucdcf\ucdd1\ucdd2\ucdd3\ucdd4\ucdd5\ucdd6\ucdd7\ucdd8\ucdd9\ucdda\ucddb\ucddc\ucddd\ucdde\ucddf\ucde0\ucde1\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ucde2\ucde3\ucde4\ucde5\ucde6\ucde7\ucde9\ucdea\ucdeb\ucded\ucdee\ucdef\ucdf1\ucdf2\ucdf3\ucdf4\ucdf5\ucdf6\ucdf7\ucdfa\ucdfc\ucdfe\ucdff\uce00\uce01\uce02\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uce03\uce05\uce06\uce07\uce09\uce0a\uce0b\uce0d\uce0e\uce0f\uce10\uce11\uce12\uce13\uce15\uce16\uce17\uce18\uce1a\uce1b\uce1c\uce1d\uce1e\uce1f\uce22\uce23\uce25\uce26\uce27\uce29\uce2a\uce2b\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[174].length;++e)65533!==r[174][e].charCodeAt(0)&&(n[r[174][e]]=44544+e,t[44544+e]=r[174][e]);for(r[175]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uce2c\uce2d\uce2e\uce2f\uce32\uce34\uce36\uce37\uce38\uce39\uce3a\uce3b\uce3c\uce3d\uce3e\uce3f\uce40\uce41\uce42\uce43\uce44\uce45\uce46\uce47\uce48\uce49\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uce4a\uce4b\uce4c\uce4d\uce4e\uce4f\uce50\uce51\uce52\uce53\uce54\uce55\uce56\uce57\uce5a\uce5b\uce5d\uce5e\uce62\uce63\uce64\uce65\uce66\uce67\uce6a\uce6c\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uce6e\uce6f\uce70\uce71\uce72\uce73\uce76\uce77\uce79\uce7a\uce7b\uce7d\uce7e\uce7f\uce80\uce81\uce82\uce83\uce86\uce88\uce8a\uce8b\uce8c\uce8d\uce8e\uce8f\uce92\uce93\uce95\uce96\uce97\uce99\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[175].length;++e)65533!==r[175][e].charCodeAt(0)&&(n[r[175][e]]=44800+e,t[44800+e]=r[175][e]);for(r[176]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uce9a\uce9b\uce9c\uce9d\uce9e\uce9f\ucea2\ucea6\ucea7\ucea8\ucea9\uceaa\uceab\uceae\uceaf\uceb0\uceb1\uceb2\uceb3\uceb4\uceb5\uceb6\uceb7\uceb8\uceb9\uceba\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ucebb\ucebc\ucebd\ucebe\ucebf\ucec0\ucec2\ucec3\ucec4\ucec5\ucec6\ucec7\ucec8\ucec9\uceca\ucecb\ucecc\ucecd\ucece\ucecf\uced0\uced1\uced2\uced3\uced4\uced5\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uced6\uced7\uced8\uced9\uceda\ucedb\ucedc\ucedd\ucede\ucedf\ucee0\ucee1\ucee2\ucee3\ucee6\ucee7\ucee9\uceea\uceed\uceee\uceef\ucef0\ucef1\ucef2\ucef3\ucef6\ucefa\ucefb\ucefc\ucefd\ucefe\uceff\uac00\uac01\uac04\uac07\uac08\uac09\uac0a\uac10\uac11\uac12\uac13\uac14\uac15\uac16\uac17\uac19\uac1a\uac1b\uac1c\uac1d\uac20\uac24\uac2c\uac2d\uac2f\uac30\uac31\uac38\uac39\uac3c\uac40\uac4b\uac4d\uac54\uac58\uac5c\uac70\uac71\uac74\uac77\uac78\uac7a\uac80\uac81\uac83\uac84\uac85\uac86\uac89\uac8a\uac8b\uac8c\uac90\uac94\uac9c\uac9d\uac9f\uaca0\uaca1\uaca8\uaca9\uacaa\uacac\uacaf\uacb0\uacb8\uacb9\uacbb\uacbc\uacbd\uacc1\uacc4\uacc8\uaccc\uacd5\uacd7\uace0\uace1\uace4\uace7\uace8\uacea\uacec\uacef\uacf0\uacf1\uacf3\uacf5\uacf6\uacfc\uacfd\uad00\uad04\uad06\ufffd".split(""),e=0;e!=r[176].length;++e)65533!==r[176][e].charCodeAt(0)&&(n[r[176][e]]=45056+e,t[45056+e]=r[176][e]);for(r[177]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ucf02\ucf03\ucf05\ucf06\ucf07\ucf09\ucf0a\ucf0b\ucf0c\ucf0d\ucf0e\ucf0f\ucf12\ucf14\ucf16\ucf17\ucf18\ucf19\ucf1a\ucf1b\ucf1d\ucf1e\ucf1f\ucf21\ucf22\ucf23\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ucf25\ucf26\ucf27\ucf28\ucf29\ucf2a\ucf2b\ucf2e\ucf32\ucf33\ucf34\ucf35\ucf36\ucf37\ucf39\ucf3a\ucf3b\ucf3c\ucf3d\ucf3e\ucf3f\ucf40\ucf41\ucf42\ucf43\ucf44\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ucf45\ucf46\ucf47\ucf48\ucf49\ucf4a\ucf4b\ucf4c\ucf4d\ucf4e\ucf4f\ucf50\ucf51\ucf52\ucf53\ucf56\ucf57\ucf59\ucf5a\ucf5b\ucf5d\ucf5e\ucf5f\ucf60\ucf61\ucf62\ucf63\ucf66\ucf68\ucf6a\ucf6b\ucf6c\uad0c\uad0d\uad0f\uad11\uad18\uad1c\uad20\uad29\uad2c\uad2d\uad34\uad35\uad38\uad3c\uad44\uad45\uad47\uad49\uad50\uad54\uad58\uad61\uad63\uad6c\uad6d\uad70\uad73\uad74\uad75\uad76\uad7b\uad7c\uad7d\uad7f\uad81\uad82\uad88\uad89\uad8c\uad90\uad9c\uad9d\uada4\uadb7\uadc0\uadc1\uadc4\uadc8\uadd0\uadd1\uadd3\uaddc\uade0\uade4\uadf8\uadf9\uadfc\uadff\uae00\uae01\uae08\uae09\uae0b\uae0d\uae14\uae30\uae31\uae34\uae37\uae38\uae3a\uae40\uae41\uae43\uae45\uae46\uae4a\uae4c\uae4d\uae4e\uae50\uae54\uae56\uae5c\uae5d\uae5f\uae60\uae61\uae65\uae68\uae69\uae6c\uae70\uae78\ufffd".split(""),e=0;e!=r[177].length;++e)65533!==r[177][e].charCodeAt(0)&&(n[r[177][e]]=45312+e,t[45312+e]=r[177][e]);for(r[178]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ucf6d\ucf6e\ucf6f\ucf72\ucf73\ucf75\ucf76\ucf77\ucf79\ucf7a\ucf7b\ucf7c\ucf7d\ucf7e\ucf7f\ucf81\ucf82\ucf83\ucf84\ucf86\ucf87\ucf88\ucf89\ucf8a\ucf8b\ucf8d\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ucf8e\ucf8f\ucf90\ucf91\ucf92\ucf93\ucf94\ucf95\ucf96\ucf97\ucf98\ucf99\ucf9a\ucf9b\ucf9c\ucf9d\ucf9e\ucf9f\ucfa0\ucfa2\ucfa3\ucfa4\ucfa5\ucfa6\ucfa7\ucfa9\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ucfaa\ucfab\ucfac\ucfad\ucfae\ucfaf\ucfb1\ucfb2\ucfb3\ucfb4\ucfb5\ucfb6\ucfb7\ucfb8\ucfb9\ucfba\ucfbb\ucfbc\ucfbd\ucfbe\ucfbf\ucfc0\ucfc1\ucfc2\ucfc3\ucfc5\ucfc6\ucfc7\ucfc8\ucfc9\ucfca\ucfcb\uae79\uae7b\uae7c\uae7d\uae84\uae85\uae8c\uaebc\uaebd\uaebe\uaec0\uaec4\uaecc\uaecd\uaecf\uaed0\uaed1\uaed8\uaed9\uaedc\uaee8\uaeeb\uaeed\uaef4\uaef8\uaefc\uaf07\uaf08\uaf0d\uaf10\uaf2c\uaf2d\uaf30\uaf32\uaf34\uaf3c\uaf3d\uaf3f\uaf41\uaf42\uaf43\uaf48\uaf49\uaf50\uaf5c\uaf5d\uaf64\uaf65\uaf79\uaf80\uaf84\uaf88\uaf90\uaf91\uaf95\uaf9c\uafb8\uafb9\uafbc\uafc0\uafc7\uafc8\uafc9\uafcb\uafcd\uafce\uafd4\uafdc\uafe8\uafe9\uaff0\uaff1\uaff4\uaff8\ub000\ub001\ub004\ub00c\ub010\ub014\ub01c\ub01d\ub028\ub044\ub045\ub048\ub04a\ub04c\ub04e\ub053\ub054\ub055\ub057\ub059\ufffd".split(""),e=0;e!=r[178].length;++e)65533!==r[178][e].charCodeAt(0)&&(n[r[178][e]]=45568+e,t[45568+e]=r[178][e]);for(r[179]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ucfcc\ucfcd\ucfce\ucfcf\ucfd0\ucfd1\ucfd2\ucfd3\ucfd4\ucfd5\ucfd6\ucfd7\ucfd8\ucfd9\ucfda\ucfdb\ucfdc\ucfdd\ucfde\ucfdf\ucfe2\ucfe3\ucfe5\ucfe6\ucfe7\ucfe9\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ucfea\ucfeb\ucfec\ucfed\ucfee\ucfef\ucff2\ucff4\ucff6\ucff7\ucff8\ucff9\ucffa\ucffb\ucffd\ucffe\ucfff\ud001\ud002\ud003\ud005\ud006\ud007\ud008\ud009\ud00a\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud00b\ud00c\ud00d\ud00e\ud00f\ud010\ud012\ud013\ud014\ud015\ud016\ud017\ud019\ud01a\ud01b\ud01c\ud01d\ud01e\ud01f\ud020\ud021\ud022\ud023\ud024\ud025\ud026\ud027\ud028\ud029\ud02a\ud02b\ud02c\ub05d\ub07c\ub07d\ub080\ub084\ub08c\ub08d\ub08f\ub091\ub098\ub099\ub09a\ub09c\ub09f\ub0a0\ub0a1\ub0a2\ub0a8\ub0a9\ub0ab\ub0ac\ub0ad\ub0ae\ub0af\ub0b1\ub0b3\ub0b4\ub0b5\ub0b8\ub0bc\ub0c4\ub0c5\ub0c7\ub0c8\ub0c9\ub0d0\ub0d1\ub0d4\ub0d8\ub0e0\ub0e5\ub108\ub109\ub10b\ub10c\ub110\ub112\ub113\ub118\ub119\ub11b\ub11c\ub11d\ub123\ub124\ub125\ub128\ub12c\ub134\ub135\ub137\ub138\ub139\ub140\ub141\ub144\ub148\ub150\ub151\ub154\ub155\ub158\ub15c\ub160\ub178\ub179\ub17c\ub180\ub182\ub188\ub189\ub18b\ub18d\ub192\ub193\ub194\ub198\ub19c\ub1a8\ub1cc\ub1d0\ub1d4\ub1dc\ub1dd\ufffd".split(""),e=0;e!=r[179].length;++e)65533!==r[179][e].charCodeAt(0)&&(n[r[179][e]]=45824+e,t[45824+e]=r[179][e]);for(r[180]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud02e\ud02f\ud030\ud031\ud032\ud033\ud036\ud037\ud039\ud03a\ud03b\ud03d\ud03e\ud03f\ud040\ud041\ud042\ud043\ud046\ud048\ud04a\ud04b\ud04c\ud04d\ud04e\ud04f\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud051\ud052\ud053\ud055\ud056\ud057\ud059\ud05a\ud05b\ud05c\ud05d\ud05e\ud05f\ud061\ud062\ud063\ud064\ud065\ud066\ud067\ud068\ud069\ud06a\ud06b\ud06e\ud06f\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud071\ud072\ud073\ud075\ud076\ud077\ud078\ud079\ud07a\ud07b\ud07e\ud07f\ud080\ud082\ud083\ud084\ud085\ud086\ud087\ud088\ud089\ud08a\ud08b\ud08c\ud08d\ud08e\ud08f\ud090\ud091\ud092\ud093\ud094\ub1df\ub1e8\ub1e9\ub1ec\ub1f0\ub1f9\ub1fb\ub1fd\ub204\ub205\ub208\ub20b\ub20c\ub214\ub215\ub217\ub219\ub220\ub234\ub23c\ub258\ub25c\ub260\ub268\ub269\ub274\ub275\ub27c\ub284\ub285\ub289\ub290\ub291\ub294\ub298\ub299\ub29a\ub2a0\ub2a1\ub2a3\ub2a5\ub2a6\ub2aa\ub2ac\ub2b0\ub2b4\ub2c8\ub2c9\ub2cc\ub2d0\ub2d2\ub2d8\ub2d9\ub2db\ub2dd\ub2e2\ub2e4\ub2e5\ub2e6\ub2e8\ub2eb\ub2ec\ub2ed\ub2ee\ub2ef\ub2f3\ub2f4\ub2f5\ub2f7\ub2f8\ub2f9\ub2fa\ub2fb\ub2ff\ub300\ub301\ub304\ub308\ub310\ub311\ub313\ub314\ub315\ub31c\ub354\ub355\ub356\ub358\ub35b\ub35c\ub35e\ub35f\ub364\ub365\ufffd".split(""),e=0;e!=r[180].length;++e)65533!==r[180][e].charCodeAt(0)&&(n[r[180][e]]=46080+e,t[46080+e]=r[180][e]);for(r[181]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud095\ud096\ud097\ud098\ud099\ud09a\ud09b\ud09c\ud09d\ud09e\ud09f\ud0a0\ud0a1\ud0a2\ud0a3\ud0a6\ud0a7\ud0a9\ud0aa\ud0ab\ud0ad\ud0ae\ud0af\ud0b0\ud0b1\ud0b2\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud0b3\ud0b6\ud0b8\ud0ba\ud0bb\ud0bc\ud0bd\ud0be\ud0bf\ud0c2\ud0c3\ud0c5\ud0c6\ud0c7\ud0ca\ud0cb\ud0cc\ud0cd\ud0ce\ud0cf\ud0d2\ud0d6\ud0d7\ud0d8\ud0d9\ud0da\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud0db\ud0de\ud0df\ud0e1\ud0e2\ud0e3\ud0e5\ud0e6\ud0e7\ud0e8\ud0e9\ud0ea\ud0eb\ud0ee\ud0f2\ud0f3\ud0f4\ud0f5\ud0f6\ud0f7\ud0f9\ud0fa\ud0fb\ud0fc\ud0fd\ud0fe\ud0ff\ud100\ud101\ud102\ud103\ud104\ub367\ub369\ub36b\ub36e\ub370\ub371\ub374\ub378\ub380\ub381\ub383\ub384\ub385\ub38c\ub390\ub394\ub3a0\ub3a1\ub3a8\ub3ac\ub3c4\ub3c5\ub3c8\ub3cb\ub3cc\ub3ce\ub3d0\ub3d4\ub3d5\ub3d7\ub3d9\ub3db\ub3dd\ub3e0\ub3e4\ub3e8\ub3fc\ub410\ub418\ub41c\ub420\ub428\ub429\ub42b\ub434\ub450\ub451\ub454\ub458\ub460\ub461\ub463\ub465\ub46c\ub480\ub488\ub49d\ub4a4\ub4a8\ub4ac\ub4b5\ub4b7\ub4b9\ub4c0\ub4c4\ub4c8\ub4d0\ub4d5\ub4dc\ub4dd\ub4e0\ub4e3\ub4e4\ub4e6\ub4ec\ub4ed\ub4ef\ub4f1\ub4f8\ub514\ub515\ub518\ub51b\ub51c\ub524\ub525\ub527\ub528\ub529\ub52a\ub530\ub531\ub534\ub538\ufffd".split(""),e=0;e!=r[181].length;++e)65533!==r[181][e].charCodeAt(0)&&(n[r[181][e]]=46336+e,t[46336+e]=r[181][e]);for(r[182]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud105\ud106\ud107\ud108\ud109\ud10a\ud10b\ud10c\ud10e\ud10f\ud110\ud111\ud112\ud113\ud114\ud115\ud116\ud117\ud118\ud119\ud11a\ud11b\ud11c\ud11d\ud11e\ud11f\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud120\ud121\ud122\ud123\ud124\ud125\ud126\ud127\ud128\ud129\ud12a\ud12b\ud12c\ud12d\ud12e\ud12f\ud132\ud133\ud135\ud136\ud137\ud139\ud13b\ud13c\ud13d\ud13e\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud13f\ud142\ud146\ud147\ud148\ud149\ud14a\ud14b\ud14e\ud14f\ud151\ud152\ud153\ud155\ud156\ud157\ud158\ud159\ud15a\ud15b\ud15e\ud160\ud162\ud163\ud164\ud165\ud166\ud167\ud169\ud16a\ud16b\ud16d\ub540\ub541\ub543\ub544\ub545\ub54b\ub54c\ub54d\ub550\ub554\ub55c\ub55d\ub55f\ub560\ub561\ub5a0\ub5a1\ub5a4\ub5a8\ub5aa\ub5ab\ub5b0\ub5b1\ub5b3\ub5b4\ub5b5\ub5bb\ub5bc\ub5bd\ub5c0\ub5c4\ub5cc\ub5cd\ub5cf\ub5d0\ub5d1\ub5d8\ub5ec\ub610\ub611\ub614\ub618\ub625\ub62c\ub634\ub648\ub664\ub668\ub69c\ub69d\ub6a0\ub6a4\ub6ab\ub6ac\ub6b1\ub6d4\ub6f0\ub6f4\ub6f8\ub700\ub701\ub705\ub728\ub729\ub72c\ub72f\ub730\ub738\ub739\ub73b\ub744\ub748\ub74c\ub754\ub755\ub760\ub764\ub768\ub770\ub771\ub773\ub775\ub77c\ub77d\ub780\ub784\ub78c\ub78d\ub78f\ub790\ub791\ub792\ub796\ub797\ufffd".split(""),e=0;e!=r[182].length;++e)65533!==r[182][e].charCodeAt(0)&&(n[r[182][e]]=46592+e,t[46592+e]=r[182][e]);for(r[183]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud16e\ud16f\ud170\ud171\ud172\ud173\ud174\ud175\ud176\ud177\ud178\ud179\ud17a\ud17b\ud17d\ud17e\ud17f\ud180\ud181\ud182\ud183\ud185\ud186\ud187\ud189\ud18a\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud18b\ud18c\ud18d\ud18e\ud18f\ud190\ud191\ud192\ud193\ud194\ud195\ud196\ud197\ud198\ud199\ud19a\ud19b\ud19c\ud19d\ud19e\ud19f\ud1a2\ud1a3\ud1a5\ud1a6\ud1a7\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud1a9\ud1aa\ud1ab\ud1ac\ud1ad\ud1ae\ud1af\ud1b2\ud1b4\ud1b6\ud1b7\ud1b8\ud1b9\ud1bb\ud1bd\ud1be\ud1bf\ud1c1\ud1c2\ud1c3\ud1c4\ud1c5\ud1c6\ud1c7\ud1c8\ud1c9\ud1ca\ud1cb\ud1cc\ud1cd\ud1ce\ud1cf\ub798\ub799\ub79c\ub7a0\ub7a8\ub7a9\ub7ab\ub7ac\ub7ad\ub7b4\ub7b5\ub7b8\ub7c7\ub7c9\ub7ec\ub7ed\ub7f0\ub7f4\ub7fc\ub7fd\ub7ff\ub800\ub801\ub807\ub808\ub809\ub80c\ub810\ub818\ub819\ub81b\ub81d\ub824\ub825\ub828\ub82c\ub834\ub835\ub837\ub838\ub839\ub840\ub844\ub851\ub853\ub85c\ub85d\ub860\ub864\ub86c\ub86d\ub86f\ub871\ub878\ub87c\ub88d\ub8a8\ub8b0\ub8b4\ub8b8\ub8c0\ub8c1\ub8c3\ub8c5\ub8cc\ub8d0\ub8d4\ub8dd\ub8df\ub8e1\ub8e8\ub8e9\ub8ec\ub8f0\ub8f8\ub8f9\ub8fb\ub8fd\ub904\ub918\ub920\ub93c\ub93d\ub940\ub944\ub94c\ub94f\ub951\ub958\ub959\ub95c\ub960\ub968\ub969\ufffd".split(""),e=0;e!=r[183].length;++e)65533!==r[183][e].charCodeAt(0)&&(n[r[183][e]]=46848+e,t[46848+e]=r[183][e]);for(r[184]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud1d0\ud1d1\ud1d2\ud1d3\ud1d4\ud1d5\ud1d6\ud1d7\ud1d9\ud1da\ud1db\ud1dc\ud1dd\ud1de\ud1df\ud1e0\ud1e1\ud1e2\ud1e3\ud1e4\ud1e5\ud1e6\ud1e7\ud1e8\ud1e9\ud1ea\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud1eb\ud1ec\ud1ed\ud1ee\ud1ef\ud1f0\ud1f1\ud1f2\ud1f3\ud1f5\ud1f6\ud1f7\ud1f9\ud1fa\ud1fb\ud1fc\ud1fd\ud1fe\ud1ff\ud200\ud201\ud202\ud203\ud204\ud205\ud206\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud208\ud20a\ud20b\ud20c\ud20d\ud20e\ud20f\ud211\ud212\ud213\ud214\ud215\ud216\ud217\ud218\ud219\ud21a\ud21b\ud21c\ud21d\ud21e\ud21f\ud220\ud221\ud222\ud223\ud224\ud225\ud226\ud227\ud228\ud229\ub96b\ub96d\ub974\ub975\ub978\ub97c\ub984\ub985\ub987\ub989\ub98a\ub98d\ub98e\ub9ac\ub9ad\ub9b0\ub9b4\ub9bc\ub9bd\ub9bf\ub9c1\ub9c8\ub9c9\ub9cc\ub9ce\ub9cf\ub9d0\ub9d1\ub9d2\ub9d8\ub9d9\ub9db\ub9dd\ub9de\ub9e1\ub9e3\ub9e4\ub9e5\ub9e8\ub9ec\ub9f4\ub9f5\ub9f7\ub9f8\ub9f9\ub9fa\uba00\uba01\uba08\uba15\uba38\uba39\uba3c\uba40\uba42\uba48\uba49\uba4b\uba4d\uba4e\uba53\uba54\uba55\uba58\uba5c\uba64\uba65\uba67\uba68\uba69\uba70\uba71\uba74\uba78\uba83\uba84\uba85\uba87\uba8c\ubaa8\ubaa9\ubaab\ubaac\ubab0\ubab2\ubab8\ubab9\ubabb\ubabd\ubac4\ubac8\ubad8\ubad9\ubafc\ufffd".split(""),e=0;e!=r[184].length;++e)65533!==r[184][e].charCodeAt(0)&&(n[r[184][e]]=47104+e,t[47104+e]=r[184][e]);for(r[185]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud22a\ud22b\ud22e\ud22f\ud231\ud232\ud233\ud235\ud236\ud237\ud238\ud239\ud23a\ud23b\ud23e\ud240\ud242\ud243\ud244\ud245\ud246\ud247\ud249\ud24a\ud24b\ud24c\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud24d\ud24e\ud24f\ud250\ud251\ud252\ud253\ud254\ud255\ud256\ud257\ud258\ud259\ud25a\ud25b\ud25d\ud25e\ud25f\ud260\ud261\ud262\ud263\ud265\ud266\ud267\ud268\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud269\ud26a\ud26b\ud26c\ud26d\ud26e\ud26f\ud270\ud271\ud272\ud273\ud274\ud275\ud276\ud277\ud278\ud279\ud27a\ud27b\ud27c\ud27d\ud27e\ud27f\ud282\ud283\ud285\ud286\ud287\ud289\ud28a\ud28b\ud28c\ubb00\ubb04\ubb0d\ubb0f\ubb11\ubb18\ubb1c\ubb20\ubb29\ubb2b\ubb34\ubb35\ubb36\ubb38\ubb3b\ubb3c\ubb3d\ubb3e\ubb44\ubb45\ubb47\ubb49\ubb4d\ubb4f\ubb50\ubb54\ubb58\ubb61\ubb63\ubb6c\ubb88\ubb8c\ubb90\ubba4\ubba8\ubbac\ubbb4\ubbb7\ubbc0\ubbc4\ubbc8\ubbd0\ubbd3\ubbf8\ubbf9\ubbfc\ubbff\ubc00\ubc02\ubc08\ubc09\ubc0b\ubc0c\ubc0d\ubc0f\ubc11\ubc14\ubc15\ubc16\ubc17\ubc18\ubc1b\ubc1c\ubc1d\ubc1e\ubc1f\ubc24\ubc25\ubc27\ubc29\ubc2d\ubc30\ubc31\ubc34\ubc38\ubc40\ubc41\ubc43\ubc44\ubc45\ubc49\ubc4c\ubc4d\ubc50\ubc5d\ubc84\ubc85\ubc88\ubc8b\ubc8c\ubc8e\ubc94\ubc95\ubc97\ufffd".split(""),e=0;e!=r[185].length;++e)65533!==r[185][e].charCodeAt(0)&&(n[r[185][e]]=47360+e,t[47360+e]=r[185][e]);for(r[186]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud28d\ud28e\ud28f\ud292\ud293\ud294\ud296\ud297\ud298\ud299\ud29a\ud29b\ud29d\ud29e\ud29f\ud2a1\ud2a2\ud2a3\ud2a5\ud2a6\ud2a7\ud2a8\ud2a9\ud2aa\ud2ab\ud2ad\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud2ae\ud2af\ud2b0\ud2b2\ud2b3\ud2b4\ud2b5\ud2b6\ud2b7\ud2ba\ud2bb\ud2bd\ud2be\ud2c1\ud2c3\ud2c4\ud2c5\ud2c6\ud2c7\ud2ca\ud2cc\ud2cd\ud2ce\ud2cf\ud2d0\ud2d1\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud2d2\ud2d3\ud2d5\ud2d6\ud2d7\ud2d9\ud2da\ud2db\ud2dd\ud2de\ud2df\ud2e0\ud2e1\ud2e2\ud2e3\ud2e6\ud2e7\ud2e8\ud2e9\ud2ea\ud2eb\ud2ec\ud2ed\ud2ee\ud2ef\ud2f2\ud2f3\ud2f5\ud2f6\ud2f7\ud2f9\ud2fa\ubc99\ubc9a\ubca0\ubca1\ubca4\ubca7\ubca8\ubcb0\ubcb1\ubcb3\ubcb4\ubcb5\ubcbc\ubcbd\ubcc0\ubcc4\ubccd\ubccf\ubcd0\ubcd1\ubcd5\ubcd8\ubcdc\ubcf4\ubcf5\ubcf6\ubcf8\ubcfc\ubd04\ubd05\ubd07\ubd09\ubd10\ubd14\ubd24\ubd2c\ubd40\ubd48\ubd49\ubd4c\ubd50\ubd58\ubd59\ubd64\ubd68\ubd80\ubd81\ubd84\ubd87\ubd88\ubd89\ubd8a\ubd90\ubd91\ubd93\ubd95\ubd99\ubd9a\ubd9c\ubda4\ubdb0\ubdb8\ubdd4\ubdd5\ubdd8\ubddc\ubde9\ubdf0\ubdf4\ubdf8\ube00\ube03\ube05\ube0c\ube0d\ube10\ube14\ube1c\ube1d\ube1f\ube44\ube45\ube48\ube4c\ube4e\ube54\ube55\ube57\ube59\ube5a\ube5b\ube60\ube61\ube64\ufffd".split(""),e=0;e!=r[186].length;++e)65533!==r[186][e].charCodeAt(0)&&(n[r[186][e]]=47616+e,t[47616+e]=r[186][e]);for(r[187]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud2fb\ud2fc\ud2fd\ud2fe\ud2ff\ud302\ud304\ud306\ud307\ud308\ud309\ud30a\ud30b\ud30f\ud311\ud312\ud313\ud315\ud317\ud318\ud319\ud31a\ud31b\ud31e\ud322\ud323\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud324\ud326\ud327\ud32a\ud32b\ud32d\ud32e\ud32f\ud331\ud332\ud333\ud334\ud335\ud336\ud337\ud33a\ud33e\ud33f\ud340\ud341\ud342\ud343\ud346\ud347\ud348\ud349\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud34a\ud34b\ud34c\ud34d\ud34e\ud34f\ud350\ud351\ud352\ud353\ud354\ud355\ud356\ud357\ud358\ud359\ud35a\ud35b\ud35c\ud35d\ud35e\ud35f\ud360\ud361\ud362\ud363\ud364\ud365\ud366\ud367\ud368\ud369\ube68\ube6a\ube70\ube71\ube73\ube74\ube75\ube7b\ube7c\ube7d\ube80\ube84\ube8c\ube8d\ube8f\ube90\ube91\ube98\ube99\ubea8\ubed0\ubed1\ubed4\ubed7\ubed8\ubee0\ubee3\ubee4\ubee5\ubeec\ubf01\ubf08\ubf09\ubf18\ubf19\ubf1b\ubf1c\ubf1d\ubf40\ubf41\ubf44\ubf48\ubf50\ubf51\ubf55\ubf94\ubfb0\ubfc5\ubfcc\ubfcd\ubfd0\ubfd4\ubfdc\ubfdf\ubfe1\uc03c\uc051\uc058\uc05c\uc060\uc068\uc069\uc090\uc091\uc094\uc098\uc0a0\uc0a1\uc0a3\uc0a5\uc0ac\uc0ad\uc0af\uc0b0\uc0b3\uc0b4\uc0b5\uc0b6\uc0bc\uc0bd\uc0bf\uc0c0\uc0c1\uc0c5\uc0c8\uc0c9\uc0cc\uc0d0\uc0d8\uc0d9\uc0db\uc0dc\uc0dd\uc0e4\ufffd".split(""),e=0;e!=r[187].length;++e)65533!==r[187][e].charCodeAt(0)&&(n[r[187][e]]=47872+e,t[47872+e]=r[187][e]);for(r[188]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud36a\ud36b\ud36c\ud36d\ud36e\ud36f\ud370\ud371\ud372\ud373\ud374\ud375\ud376\ud377\ud378\ud379\ud37a\ud37b\ud37e\ud37f\ud381\ud382\ud383\ud385\ud386\ud387\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud388\ud389\ud38a\ud38b\ud38e\ud392\ud393\ud394\ud395\ud396\ud397\ud39a\ud39b\ud39d\ud39e\ud39f\ud3a1\ud3a2\ud3a3\ud3a4\ud3a5\ud3a6\ud3a7\ud3aa\ud3ac\ud3ae\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud3af\ud3b0\ud3b1\ud3b2\ud3b3\ud3b5\ud3b6\ud3b7\ud3b9\ud3ba\ud3bb\ud3bd\ud3be\ud3bf\ud3c0\ud3c1\ud3c2\ud3c3\ud3c6\ud3c7\ud3ca\ud3cb\ud3cc\ud3cd\ud3ce\ud3cf\ud3d1\ud3d2\ud3d3\ud3d4\ud3d5\ud3d6\uc0e5\uc0e8\uc0ec\uc0f4\uc0f5\uc0f7\uc0f9\uc100\uc104\uc108\uc110\uc115\uc11c\uc11d\uc11e\uc11f\uc120\uc123\uc124\uc126\uc127\uc12c\uc12d\uc12f\uc130\uc131\uc136\uc138\uc139\uc13c\uc140\uc148\uc149\uc14b\uc14c\uc14d\uc154\uc155\uc158\uc15c\uc164\uc165\uc167\uc168\uc169\uc170\uc174\uc178\uc185\uc18c\uc18d\uc18e\uc190\uc194\uc196\uc19c\uc19d\uc19f\uc1a1\uc1a5\uc1a8\uc1a9\uc1ac\uc1b0\uc1bd\uc1c4\uc1c8\uc1cc\uc1d4\uc1d7\uc1d8\uc1e0\uc1e4\uc1e8\uc1f0\uc1f1\uc1f3\uc1fc\uc1fd\uc200\uc204\uc20c\uc20d\uc20f\uc211\uc218\uc219\uc21c\uc21f\uc220\uc228\uc229\uc22b\uc22d\ufffd".split(""),e=0;e!=r[188].length;++e)65533!==r[188][e].charCodeAt(0)&&(n[r[188][e]]=48128+e,t[48128+e]=r[188][e]);for(r[189]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud3d7\ud3d9\ud3da\ud3db\ud3dc\ud3dd\ud3de\ud3df\ud3e0\ud3e2\ud3e4\ud3e5\ud3e6\ud3e7\ud3e8\ud3e9\ud3ea\ud3eb\ud3ee\ud3ef\ud3f1\ud3f2\ud3f3\ud3f5\ud3f6\ud3f7\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud3f8\ud3f9\ud3fa\ud3fb\ud3fe\ud400\ud402\ud403\ud404\ud405\ud406\ud407\ud409\ud40a\ud40b\ud40c\ud40d\ud40e\ud40f\ud410\ud411\ud412\ud413\ud414\ud415\ud416\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud417\ud418\ud419\ud41a\ud41b\ud41c\ud41e\ud41f\ud420\ud421\ud422\ud423\ud424\ud425\ud426\ud427\ud428\ud429\ud42a\ud42b\ud42c\ud42d\ud42e\ud42f\ud430\ud431\ud432\ud433\ud434\ud435\ud436\ud437\uc22f\uc231\uc232\uc234\uc248\uc250\uc251\uc254\uc258\uc260\uc265\uc26c\uc26d\uc270\uc274\uc27c\uc27d\uc27f\uc281\uc288\uc289\uc290\uc298\uc29b\uc29d\uc2a4\uc2a5\uc2a8\uc2ac\uc2ad\uc2b4\uc2b5\uc2b7\uc2b9\uc2dc\uc2dd\uc2e0\uc2e3\uc2e4\uc2eb\uc2ec\uc2ed\uc2ef\uc2f1\uc2f6\uc2f8\uc2f9\uc2fb\uc2fc\uc300\uc308\uc309\uc30c\uc30d\uc313\uc314\uc315\uc318\uc31c\uc324\uc325\uc328\uc329\uc345\uc368\uc369\uc36c\uc370\uc372\uc378\uc379\uc37c\uc37d\uc384\uc388\uc38c\uc3c0\uc3d8\uc3d9\uc3dc\uc3df\uc3e0\uc3e2\uc3e8\uc3e9\uc3ed\uc3f4\uc3f5\uc3f8\uc408\uc410\uc424\uc42c\uc430\ufffd".split(""),e=0;e!=r[189].length;++e)65533!==r[189][e].charCodeAt(0)&&(n[r[189][e]]=48384+e,t[48384+e]=r[189][e]);for(r[190]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud438\ud439\ud43a\ud43b\ud43c\ud43d\ud43e\ud43f\ud441\ud442\ud443\ud445\ud446\ud447\ud448\ud449\ud44a\ud44b\ud44c\ud44d\ud44e\ud44f\ud450\ud451\ud452\ud453\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud454\ud455\ud456\ud457\ud458\ud459\ud45a\ud45b\ud45d\ud45e\ud45f\ud461\ud462\ud463\ud465\ud466\ud467\ud468\ud469\ud46a\ud46b\ud46c\ud46e\ud470\ud471\ud472\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud473\ud474\ud475\ud476\ud477\ud47a\ud47b\ud47d\ud47e\ud481\ud483\ud484\ud485\ud486\ud487\ud48a\ud48c\ud48e\ud48f\ud490\ud491\ud492\ud493\ud495\ud496\ud497\ud498\ud499\ud49a\ud49b\ud49c\ud49d\uc434\uc43c\uc43d\uc448\uc464\uc465\uc468\uc46c\uc474\uc475\uc479\uc480\uc494\uc49c\uc4b8\uc4bc\uc4e9\uc4f0\uc4f1\uc4f4\uc4f8\uc4fa\uc4ff\uc500\uc501\uc50c\uc510\uc514\uc51c\uc528\uc529\uc52c\uc530\uc538\uc539\uc53b\uc53d\uc544\uc545\uc548\uc549\uc54a\uc54c\uc54d\uc54e\uc553\uc554\uc555\uc557\uc558\uc559\uc55d\uc55e\uc560\uc561\uc564\uc568\uc570\uc571\uc573\uc574\uc575\uc57c\uc57d\uc580\uc584\uc587\uc58c\uc58d\uc58f\uc591\uc595\uc597\uc598\uc59c\uc5a0\uc5a9\uc5b4\uc5b5\uc5b8\uc5b9\uc5bb\uc5bc\uc5bd\uc5be\uc5c4\uc5c5\uc5c6\uc5c7\uc5c8\uc5c9\uc5ca\uc5cc\uc5ce\ufffd".split(""),e=0;e!=r[190].length;++e)65533!==r[190][e].charCodeAt(0)&&(n[r[190][e]]=48640+e,t[48640+e]=r[190][e]);for(r[191]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud49e\ud49f\ud4a0\ud4a1\ud4a2\ud4a3\ud4a4\ud4a5\ud4a6\ud4a7\ud4a8\ud4aa\ud4ab\ud4ac\ud4ad\ud4ae\ud4af\ud4b0\ud4b1\ud4b2\ud4b3\ud4b4\ud4b5\ud4b6\ud4b7\ud4b8\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud4b9\ud4ba\ud4bb\ud4bc\ud4bd\ud4be\ud4bf\ud4c0\ud4c1\ud4c2\ud4c3\ud4c4\ud4c5\ud4c6\ud4c7\ud4c8\ud4c9\ud4ca\ud4cb\ud4cd\ud4ce\ud4cf\ud4d1\ud4d2\ud4d3\ud4d5\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud4d6\ud4d7\ud4d8\ud4d9\ud4da\ud4db\ud4dd\ud4de\ud4e0\ud4e1\ud4e2\ud4e3\ud4e4\ud4e5\ud4e6\ud4e7\ud4e9\ud4ea\ud4eb\ud4ed\ud4ee\ud4ef\ud4f1\ud4f2\ud4f3\ud4f4\ud4f5\ud4f6\ud4f7\ud4f9\ud4fa\ud4fc\uc5d0\uc5d1\uc5d4\uc5d8\uc5e0\uc5e1\uc5e3\uc5e5\uc5ec\uc5ed\uc5ee\uc5f0\uc5f4\uc5f6\uc5f7\uc5fc\uc5fd\uc5fe\uc5ff\uc600\uc601\uc605\uc606\uc607\uc608\uc60c\uc610\uc618\uc619\uc61b\uc61c\uc624\uc625\uc628\uc62c\uc62d\uc62e\uc630\uc633\uc634\uc635\uc637\uc639\uc63b\uc640\uc641\uc644\uc648\uc650\uc651\uc653\uc654\uc655\uc65c\uc65d\uc660\uc66c\uc66f\uc671\uc678\uc679\uc67c\uc680\uc688\uc689\uc68b\uc68d\uc694\uc695\uc698\uc69c\uc6a4\uc6a5\uc6a7\uc6a9\uc6b0\uc6b1\uc6b4\uc6b8\uc6b9\uc6ba\uc6c0\uc6c1\uc6c3\uc6c5\uc6cc\uc6cd\uc6d0\uc6d4\uc6dc\uc6dd\uc6e0\uc6e1\uc6e8\ufffd".split(""),e=0;e!=r[191].length;++e)65533!==r[191][e].charCodeAt(0)&&(n[r[191][e]]=48896+e,t[48896+e]=r[191][e]);for(r[192]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud4fe\ud4ff\ud500\ud501\ud502\ud503\ud505\ud506\ud507\ud509\ud50a\ud50b\ud50d\ud50e\ud50f\ud510\ud511\ud512\ud513\ud516\ud518\ud519\ud51a\ud51b\ud51c\ud51d\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud51e\ud51f\ud520\ud521\ud522\ud523\ud524\ud525\ud526\ud527\ud528\ud529\ud52a\ud52b\ud52c\ud52d\ud52e\ud52f\ud530\ud531\ud532\ud533\ud534\ud535\ud536\ud537\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud538\ud539\ud53a\ud53b\ud53e\ud53f\ud541\ud542\ud543\ud545\ud546\ud547\ud548\ud549\ud54a\ud54b\ud54e\ud550\ud552\ud553\ud554\ud555\ud556\ud557\ud55a\ud55b\ud55d\ud55e\ud55f\ud561\ud562\ud563\uc6e9\uc6ec\uc6f0\uc6f8\uc6f9\uc6fd\uc704\uc705\uc708\uc70c\uc714\uc715\uc717\uc719\uc720\uc721\uc724\uc728\uc730\uc731\uc733\uc735\uc737\uc73c\uc73d\uc740\uc744\uc74a\uc74c\uc74d\uc74f\uc751\uc752\uc753\uc754\uc755\uc756\uc757\uc758\uc75c\uc760\uc768\uc76b\uc774\uc775\uc778\uc77c\uc77d\uc77e\uc783\uc784\uc785\uc787\uc788\uc789\uc78a\uc78e\uc790\uc791\uc794\uc796\uc797\uc798\uc79a\uc7a0\uc7a1\uc7a3\uc7a4\uc7a5\uc7a6\uc7ac\uc7ad\uc7b0\uc7b4\uc7bc\uc7bd\uc7bf\uc7c0\uc7c1\uc7c8\uc7c9\uc7cc\uc7ce\uc7d0\uc7d8\uc7dd\uc7e4\uc7e8\uc7ec\uc800\uc801\uc804\uc808\uc80a\ufffd".split(""),e=0;e!=r[192].length;++e)65533!==r[192][e].charCodeAt(0)&&(n[r[192][e]]=49152+e,t[49152+e]=r[192][e]);for(r[193]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud564\ud566\ud567\ud56a\ud56c\ud56e\ud56f\ud570\ud571\ud572\ud573\ud576\ud577\ud579\ud57a\ud57b\ud57d\ud57e\ud57f\ud580\ud581\ud582\ud583\ud586\ud58a\ud58b\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud58c\ud58d\ud58e\ud58f\ud591\ud592\ud593\ud594\ud595\ud596\ud597\ud598\ud599\ud59a\ud59b\ud59c\ud59d\ud59e\ud59f\ud5a0\ud5a1\ud5a2\ud5a3\ud5a4\ud5a6\ud5a7\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud5a8\ud5a9\ud5aa\ud5ab\ud5ac\ud5ad\ud5ae\ud5af\ud5b0\ud5b1\ud5b2\ud5b3\ud5b4\ud5b5\ud5b6\ud5b7\ud5b8\ud5b9\ud5ba\ud5bb\ud5bc\ud5bd\ud5be\ud5bf\ud5c0\ud5c1\ud5c2\ud5c3\ud5c4\ud5c5\ud5c6\ud5c7\uc810\uc811\uc813\uc815\uc816\uc81c\uc81d\uc820\uc824\uc82c\uc82d\uc82f\uc831\uc838\uc83c\uc840\uc848\uc849\uc84c\uc84d\uc854\uc870\uc871\uc874\uc878\uc87a\uc880\uc881\uc883\uc885\uc886\uc887\uc88b\uc88c\uc88d\uc894\uc89d\uc89f\uc8a1\uc8a8\uc8bc\uc8bd\uc8c4\uc8c8\uc8cc\uc8d4\uc8d5\uc8d7\uc8d9\uc8e0\uc8e1\uc8e4\uc8f5\uc8fc\uc8fd\uc900\uc904\uc905\uc906\uc90c\uc90d\uc90f\uc911\uc918\uc92c\uc934\uc950\uc951\uc954\uc958\uc960\uc961\uc963\uc96c\uc970\uc974\uc97c\uc988\uc989\uc98c\uc990\uc998\uc999\uc99b\uc99d\uc9c0\uc9c1\uc9c4\uc9c7\uc9c8\uc9ca\uc9d0\uc9d1\uc9d3\ufffd".split(""),e=0;e!=r[193].length;++e)65533!==r[193][e].charCodeAt(0)&&(n[r[193][e]]=49408+e,t[49408+e]=r[193][e]);for(r[194]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud5ca\ud5cb\ud5cd\ud5ce\ud5cf\ud5d1\ud5d3\ud5d4\ud5d5\ud5d6\ud5d7\ud5da\ud5dc\ud5de\ud5df\ud5e0\ud5e1\ud5e2\ud5e3\ud5e6\ud5e7\ud5e9\ud5ea\ud5eb\ud5ed\ud5ee\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud5ef\ud5f0\ud5f1\ud5f2\ud5f3\ud5f6\ud5f8\ud5fa\ud5fb\ud5fc\ud5fd\ud5fe\ud5ff\ud602\ud603\ud605\ud606\ud607\ud609\ud60a\ud60b\ud60c\ud60d\ud60e\ud60f\ud612\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud616\ud617\ud618\ud619\ud61a\ud61b\ud61d\ud61e\ud61f\ud621\ud622\ud623\ud625\ud626\ud627\ud628\ud629\ud62a\ud62b\ud62c\ud62e\ud62f\ud630\ud631\ud632\ud633\ud634\ud635\ud636\ud637\ud63a\ud63b\uc9d5\uc9d6\uc9d9\uc9da\uc9dc\uc9dd\uc9e0\uc9e2\uc9e4\uc9e7\uc9ec\uc9ed\uc9ef\uc9f0\uc9f1\uc9f8\uc9f9\uc9fc\uca00\uca08\uca09\uca0b\uca0c\uca0d\uca14\uca18\uca29\uca4c\uca4d\uca50\uca54\uca5c\uca5d\uca5f\uca60\uca61\uca68\uca7d\uca84\uca98\ucabc\ucabd\ucac0\ucac4\ucacc\ucacd\ucacf\ucad1\ucad3\ucad8\ucad9\ucae0\ucaec\ucaf4\ucb08\ucb10\ucb14\ucb18\ucb20\ucb21\ucb41\ucb48\ucb49\ucb4c\ucb50\ucb58\ucb59\ucb5d\ucb64\ucb78\ucb79\ucb9c\ucbb8\ucbd4\ucbe4\ucbe7\ucbe9\ucc0c\ucc0d\ucc10\ucc14\ucc1c\ucc1d\ucc21\ucc22\ucc27\ucc28\ucc29\ucc2c\ucc2e\ucc30\ucc38\ucc39\ucc3b\ufffd".split(""),e=0;e!=r[194].length;++e)65533!==r[194][e].charCodeAt(0)&&(n[r[194][e]]=49664+e,t[49664+e]=r[194][e]);for(r[195]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud63d\ud63e\ud63f\ud641\ud642\ud643\ud644\ud646\ud647\ud64a\ud64c\ud64e\ud64f\ud650\ud652\ud653\ud656\ud657\ud659\ud65a\ud65b\ud65d\ud65e\ud65f\ud660\ud661\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud662\ud663\ud664\ud665\ud666\ud668\ud66a\ud66b\ud66c\ud66d\ud66e\ud66f\ud672\ud673\ud675\ud676\ud677\ud678\ud679\ud67a\ud67b\ud67c\ud67d\ud67e\ud67f\ud680\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud681\ud682\ud684\ud686\ud687\ud688\ud689\ud68a\ud68b\ud68e\ud68f\ud691\ud692\ud693\ud695\ud696\ud697\ud698\ud699\ud69a\ud69b\ud69c\ud69e\ud6a0\ud6a2\ud6a3\ud6a4\ud6a5\ud6a6\ud6a7\ud6a9\ud6aa\ucc3c\ucc3d\ucc3e\ucc44\ucc45\ucc48\ucc4c\ucc54\ucc55\ucc57\ucc58\ucc59\ucc60\ucc64\ucc66\ucc68\ucc70\ucc75\ucc98\ucc99\ucc9c\ucca0\ucca8\ucca9\uccab\uccac\uccad\uccb4\uccb5\uccb8\uccbc\uccc4\uccc5\uccc7\uccc9\uccd0\uccd4\ucce4\uccec\uccf0\ucd01\ucd08\ucd09\ucd0c\ucd10\ucd18\ucd19\ucd1b\ucd1d\ucd24\ucd28\ucd2c\ucd39\ucd5c\ucd60\ucd64\ucd6c\ucd6d\ucd6f\ucd71\ucd78\ucd88\ucd94\ucd95\ucd98\ucd9c\ucda4\ucda5\ucda7\ucda9\ucdb0\ucdc4\ucdcc\ucdd0\ucde8\ucdec\ucdf0\ucdf8\ucdf9\ucdfb\ucdfd\uce04\uce08\uce0c\uce14\uce19\uce20\uce21\uce24\uce28\uce30\uce31\uce33\uce35\ufffd".split(""),e=0;e!=r[195].length;++e)65533!==r[195][e].charCodeAt(0)&&(n[r[195][e]]=49920+e,t[49920+e]=r[195][e]);for(r[196]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud6ab\ud6ad\ud6ae\ud6af\ud6b1\ud6b2\ud6b3\ud6b4\ud6b5\ud6b6\ud6b7\ud6b8\ud6ba\ud6bc\ud6bd\ud6be\ud6bf\ud6c0\ud6c1\ud6c2\ud6c3\ud6c6\ud6c7\ud6c9\ud6ca\ud6cb\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud6cd\ud6ce\ud6cf\ud6d0\ud6d2\ud6d3\ud6d5\ud6d6\ud6d8\ud6da\ud6db\ud6dc\ud6dd\ud6de\ud6df\ud6e1\ud6e2\ud6e3\ud6e5\ud6e6\ud6e7\ud6e9\ud6ea\ud6eb\ud6ec\ud6ed\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud6ee\ud6ef\ud6f1\ud6f2\ud6f3\ud6f4\ud6f6\ud6f7\ud6f8\ud6f9\ud6fa\ud6fb\ud6fe\ud6ff\ud701\ud702\ud703\ud705\ud706\ud707\ud708\ud709\ud70a\ud70b\ud70c\ud70d\ud70e\ud70f\ud710\ud712\ud713\ud714\uce58\uce59\uce5c\uce5f\uce60\uce61\uce68\uce69\uce6b\uce6d\uce74\uce75\uce78\uce7c\uce84\uce85\uce87\uce89\uce90\uce91\uce94\uce98\ucea0\ucea1\ucea3\ucea4\ucea5\uceac\ucead\ucec1\ucee4\ucee5\ucee8\uceeb\uceec\ucef4\ucef5\ucef7\ucef8\ucef9\ucf00\ucf01\ucf04\ucf08\ucf10\ucf11\ucf13\ucf15\ucf1c\ucf20\ucf24\ucf2c\ucf2d\ucf2f\ucf30\ucf31\ucf38\ucf54\ucf55\ucf58\ucf5c\ucf64\ucf65\ucf67\ucf69\ucf70\ucf71\ucf74\ucf78\ucf80\ucf85\ucf8c\ucfa1\ucfa8\ucfb0\ucfc4\ucfe0\ucfe1\ucfe4\ucfe8\ucff0\ucff1\ucff3\ucff5\ucffc\ud000\ud004\ud011\ud018\ud02d\ud034\ud035\ud038\ud03c\ufffd".split(""),e=0;e!=r[196].length;++e)65533!==r[196][e].charCodeAt(0)&&(n[r[196][e]]=50176+e,t[50176+e]=r[196][e]);for(r[197]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud715\ud716\ud717\ud71a\ud71b\ud71d\ud71e\ud71f\ud721\ud722\ud723\ud724\ud725\ud726\ud727\ud72a\ud72c\ud72e\ud72f\ud730\ud731\ud732\ud733\ud736\ud737\ud739\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud73a\ud73b\ud73d\ud73e\ud73f\ud740\ud741\ud742\ud743\ud745\ud746\ud748\ud74a\ud74b\ud74c\ud74d\ud74e\ud74f\ud752\ud753\ud755\ud75a\ud75b\ud75c\ud75d\ud75e\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud75f\ud762\ud764\ud766\ud767\ud768\ud76a\ud76b\ud76d\ud76e\ud76f\ud771\ud772\ud773\ud775\ud776\ud777\ud778\ud779\ud77a\ud77b\ud77e\ud77f\ud780\ud782\ud783\ud784\ud785\ud786\ud787\ud78a\ud78b\ud044\ud045\ud047\ud049\ud050\ud054\ud058\ud060\ud06c\ud06d\ud070\ud074\ud07c\ud07d\ud081\ud0a4\ud0a5\ud0a8\ud0ac\ud0b4\ud0b5\ud0b7\ud0b9\ud0c0\ud0c1\ud0c4\ud0c8\ud0c9\ud0d0\ud0d1\ud0d3\ud0d4\ud0d5\ud0dc\ud0dd\ud0e0\ud0e4\ud0ec\ud0ed\ud0ef\ud0f0\ud0f1\ud0f8\ud10d\ud130\ud131\ud134\ud138\ud13a\ud140\ud141\ud143\ud144\ud145\ud14c\ud14d\ud150\ud154\ud15c\ud15d\ud15f\ud161\ud168\ud16c\ud17c\ud184\ud188\ud1a0\ud1a1\ud1a4\ud1a8\ud1b0\ud1b1\ud1b3\ud1b5\ud1ba\ud1bc\ud1c0\ud1d8\ud1f4\ud1f8\ud207\ud209\ud210\ud22c\ud22d\ud230\ud234\ud23c\ud23d\ud23f\ud241\ud248\ud25c\ufffd".split(""),e=0;e!=r[197].length;++e)65533!==r[197][e].charCodeAt(0)&&(n[r[197][e]]=50432+e,t[50432+e]=r[197][e]);for(r[198]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud78d\ud78e\ud78f\ud791\ud792\ud793\ud794\ud795\ud796\ud797\ud79a\ud79c\ud79e\ud79f\ud7a0\ud7a1\ud7a2\ud7a3\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud264\ud280\ud281\ud284\ud288\ud290\ud291\ud295\ud29c\ud2a0\ud2a4\ud2ac\ud2b1\ud2b8\ud2b9\ud2bc\ud2bf\ud2c0\ud2c2\ud2c8\ud2c9\ud2cb\ud2d4\ud2d8\ud2dc\ud2e4\ud2e5\ud2f0\ud2f1\ud2f4\ud2f8\ud300\ud301\ud303\ud305\ud30c\ud30d\ud30e\ud310\ud314\ud316\ud31c\ud31d\ud31f\ud320\ud321\ud325\ud328\ud329\ud32c\ud330\ud338\ud339\ud33b\ud33c\ud33d\ud344\ud345\ud37c\ud37d\ud380\ud384\ud38c\ud38d\ud38f\ud390\ud391\ud398\ud399\ud39c\ud3a0\ud3a8\ud3a9\ud3ab\ud3ad\ud3b4\ud3b8\ud3bc\ud3c4\ud3c5\ud3c8\ud3c9\ud3d0\ud3d8\ud3e1\ud3e3\ud3ec\ud3ed\ud3f0\ud3f4\ud3fc\ud3fd\ud3ff\ud401\ufffd".split(""),e=0;e!=r[198].length;++e)65533!==r[198][e].charCodeAt(0)&&(n[r[198][e]]=50688+e,t[50688+e]=r[198][e]);for(r[199]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud408\ud41d\ud440\ud444\ud45c\ud460\ud464\ud46d\ud46f\ud478\ud479\ud47c\ud47f\ud480\ud482\ud488\ud489\ud48b\ud48d\ud494\ud4a9\ud4cc\ud4d0\ud4d4\ud4dc\ud4df\ud4e8\ud4ec\ud4f0\ud4f8\ud4fb\ud4fd\ud504\ud508\ud50c\ud514\ud515\ud517\ud53c\ud53d\ud540\ud544\ud54c\ud54d\ud54f\ud551\ud558\ud559\ud55c\ud560\ud565\ud568\ud569\ud56b\ud56d\ud574\ud575\ud578\ud57c\ud584\ud585\ud587\ud588\ud589\ud590\ud5a5\ud5c8\ud5c9\ud5cc\ud5d0\ud5d2\ud5d8\ud5d9\ud5db\ud5dd\ud5e4\ud5e5\ud5e8\ud5ec\ud5f4\ud5f5\ud5f7\ud5f9\ud600\ud601\ud604\ud608\ud610\ud611\ud613\ud614\ud615\ud61c\ud620\ufffd".split(""),e=0;e!=r[199].length;++e)65533!==r[199][e].charCodeAt(0)&&(n[r[199][e]]=50944+e,t[50944+e]=r[199][e]);for(r[200]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ud624\ud62d\ud638\ud639\ud63c\ud640\ud645\ud648\ud649\ud64b\ud64d\ud651\ud654\ud655\ud658\ud65c\ud667\ud669\ud670\ud671\ud674\ud683\ud685\ud68c\ud68d\ud690\ud694\ud69d\ud69f\ud6a1\ud6a8\ud6ac\ud6b0\ud6b9\ud6bb\ud6c4\ud6c5\ud6c8\ud6cc\ud6d1\ud6d4\ud6d7\ud6d9\ud6e0\ud6e4\ud6e8\ud6f0\ud6f5\ud6fc\ud6fd\ud700\ud704\ud711\ud718\ud719\ud71c\ud720\ud728\ud729\ud72b\ud72d\ud734\ud735\ud738\ud73c\ud744\ud747\ud749\ud750\ud751\ud754\ud756\ud757\ud758\ud759\ud760\ud761\ud763\ud765\ud769\ud76c\ud770\ud774\ud77c\ud77d\ud781\ud788\ud789\ud78c\ud790\ud798\ud799\ud79b\ud79d\ufffd".split(""),e=0;e!=r[200].length;++e)65533!==r[200][e].charCodeAt(0)&&(n[r[200][e]]=51200+e,t[51200+e]=r[200][e]);for(r[202]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u4f3d\u4f73\u5047\u50f9\u52a0\u53ef\u5475\u54e5\u5609\u5ac1\u5bb6\u6687\u67b6\u67b7\u67ef\u6b4c\u73c2\u75c2\u7a3c\u82db\u8304\u8857\u8888\u8a36\u8cc8\u8dcf\u8efb\u8fe6\u99d5\u523b\u5374\u5404\u606a\u6164\u6bbc\u73cf\u811a\u89ba\u89d2\u95a3\u4f83\u520a\u58be\u5978\u59e6\u5e72\u5e79\u61c7\u63c0\u6746\u67ec\u687f\u6f97\u764e\u770b\u78f5\u7a08\u7aff\u7c21\u809d\u826e\u8271\u8aeb\u9593\u4e6b\u559d\u66f7\u6e34\u78a3\u7aed\u845b\u8910\u874e\u97a8\u52d8\u574e\u582a\u5d4c\u611f\u61be\u6221\u6562\u67d1\u6a44\u6e1b\u7518\u75b3\u76e3\u77b0\u7d3a\u90af\u9451\u9452\u9f95\ufffd".split(""),e=0;e!=r[202].length;++e)65533!==r[202][e].charCodeAt(0)&&(n[r[202][e]]=51712+e,t[51712+e]=r[202][e]);for(r[203]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5323\u5cac\u7532\u80db\u9240\u9598\u525b\u5808\u59dc\u5ca1\u5d17\u5eb7\u5f3a\u5f4a\u6177\u6c5f\u757a\u7586\u7ce0\u7d73\u7db1\u7f8c\u8154\u8221\u8591\u8941\u8b1b\u92fc\u964d\u9c47\u4ecb\u4ef7\u500b\u51f1\u584f\u6137\u613e\u6168\u6539\u69ea\u6f11\u75a5\u7686\u76d6\u7b87\u82a5\u84cb\uf900\u93a7\u958b\u5580\u5ba2\u5751\uf901\u7cb3\u7fb9\u91b5\u5028\u53bb\u5c45\u5de8\u62d2\u636e\u64da\u64e7\u6e20\u70ac\u795b\u8ddd\u8e1e\uf902\u907d\u9245\u92f8\u4e7e\u4ef6\u5065\u5dfe\u5efa\u6106\u6957\u8171\u8654\u8e47\u9375\u9a2b\u4e5e\u5091\u6770\u6840\u5109\u528d\u5292\u6aa2\ufffd".split(""),e=0;e!=r[203].length;++e)65533!==r[203][e].charCodeAt(0)&&(n[r[203][e]]=51968+e,t[51968+e]=r[203][e]);for(r[204]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u77bc\u9210\u9ed4\u52ab\u602f\u8ff2\u5048\u61a9\u63ed\u64ca\u683c\u6a84\u6fc0\u8188\u89a1\u9694\u5805\u727d\u72ac\u7504\u7d79\u7e6d\u80a9\u898b\u8b74\u9063\u9d51\u6289\u6c7a\u6f54\u7d50\u7f3a\u8a23\u517c\u614a\u7b9d\u8b19\u9257\u938c\u4eac\u4fd3\u501e\u50be\u5106\u52c1\u52cd\u537f\u5770\u5883\u5e9a\u5f91\u6176\u61ac\u64ce\u656c\u666f\u66bb\u66f4\u6897\u6d87\u7085\u70f1\u749f\u74a5\u74ca\u75d9\u786c\u78ec\u7adf\u7af6\u7d45\u7d93\u8015\u803f\u811b\u8396\u8b66\u8f15\u9015\u93e1\u9803\u9838\u9a5a\u9be8\u4fc2\u5553\u583a\u5951\u5b63\u5c46\u60b8\u6212\u6842\u68b0\ufffd".split(""),e=0;e!=r[204].length;++e)65533!==r[204][e].charCodeAt(0)&&(n[r[204][e]]=52224+e,t[52224+e]=r[204][e]);for(r[205]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u68e8\u6eaa\u754c\u7678\u78ce\u7a3d\u7cfb\u7e6b\u7e7c\u8a08\u8aa1\u8c3f\u968e\u9dc4\u53e4\u53e9\u544a\u5471\u56fa\u59d1\u5b64\u5c3b\u5eab\u62f7\u6537\u6545\u6572\u66a0\u67af\u69c1\u6cbd\u75fc\u7690\u777e\u7a3f\u7f94\u8003\u80a1\u818f\u82e6\u82fd\u83f0\u85c1\u8831\u88b4\u8aa5\uf903\u8f9c\u932e\u96c7\u9867\u9ad8\u9f13\u54ed\u659b\u66f2\u688f\u7a40\u8c37\u9d60\u56f0\u5764\u5d11\u6606\u68b1\u68cd\u6efe\u7428\u889e\u9be4\u6c68\uf904\u9aa8\u4f9b\u516c\u5171\u529f\u5b54\u5de5\u6050\u606d\u62f1\u63a7\u653b\u73d9\u7a7a\u86a3\u8ca2\u978f\u4e32\u5be1\u6208\u679c\u74dc\ufffd".split(""),e=0;e!=r[205].length;++e)65533!==r[205][e].charCodeAt(0)&&(n[r[205][e]]=52480+e,t[52480+e]=r[205][e]);for(r[206]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u79d1\u83d3\u8a87\u8ab2\u8de8\u904e\u934b\u9846\u5ed3\u69e8\u85ff\u90ed\uf905\u51a0\u5b98\u5bec\u6163\u68fa\u6b3e\u704c\u742f\u74d8\u7ba1\u7f50\u83c5\u89c0\u8cab\u95dc\u9928\u522e\u605d\u62ec\u9002\u4f8a\u5149\u5321\u58d9\u5ee3\u66e0\u6d38\u709a\u72c2\u73d6\u7b50\u80f1\u945b\u5366\u639b\u7f6b\u4e56\u5080\u584a\u58de\u602a\u6127\u62d0\u69d0\u9b41\u5b8f\u7d18\u80b1\u8f5f\u4ea4\u50d1\u54ac\u55ac\u5b0c\u5da0\u5de7\u652a\u654e\u6821\u6a4b\u72e1\u768e\u77ef\u7d5e\u7ff9\u81a0\u854e\u86df\u8f03\u8f4e\u90ca\u9903\u9a55\u9bab\u4e18\u4e45\u4e5d\u4ec7\u4ff1\u5177\u52fe\ufffd".split(""),e=0;e!=r[206].length;++e)65533!==r[206][e].charCodeAt(0)&&(n[r[206][e]]=52736+e,t[52736+e]=r[206][e]);for(r[207]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5340\u53e3\u53e5\u548e\u5614\u5775\u57a2\u5bc7\u5d87\u5ed0\u61fc\u62d8\u6551\u67b8\u67e9\u69cb\u6b50\u6bc6\u6bec\u6c42\u6e9d\u7078\u72d7\u7396\u7403\u77bf\u77e9\u7a76\u7d7f\u8009\u81fc\u8205\u820a\u82df\u8862\u8b33\u8cfc\u8ec0\u9011\u90b1\u9264\u92b6\u99d2\u9a45\u9ce9\u9dd7\u9f9c\u570b\u5c40\u83ca\u97a0\u97ab\u9eb4\u541b\u7a98\u7fa4\u88d9\u8ecd\u90e1\u5800\u5c48\u6398\u7a9f\u5bae\u5f13\u7a79\u7aae\u828e\u8eac\u5026\u5238\u52f8\u5377\u5708\u62f3\u6372\u6b0a\u6dc3\u7737\u53a5\u7357\u8568\u8e76\u95d5\u673a\u6ac3\u6f70\u8a6d\u8ecc\u994b\uf906\u6677\u6b78\u8cb4\ufffd".split(""),e=0;e!=r[207].length;++e)65533!==r[207][e].charCodeAt(0)&&(n[r[207][e]]=52992+e,t[52992+e]=r[207][e]);for(r[208]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9b3c\uf907\u53eb\u572d\u594e\u63c6\u69fb\u73ea\u7845\u7aba\u7ac5\u7cfe\u8475\u898f\u8d73\u9035\u95a8\u52fb\u5747\u7547\u7b60\u83cc\u921e\uf908\u6a58\u514b\u524b\u5287\u621f\u68d8\u6975\u9699\u50c5\u52a4\u52e4\u61c3\u65a4\u6839\u69ff\u747e\u7b4b\u82b9\u83eb\u89b2\u8b39\u8fd1\u9949\uf909\u4eca\u5997\u64d2\u6611\u6a8e\u7434\u7981\u79bd\u82a9\u887e\u887f\u895f\uf90a\u9326\u4f0b\u53ca\u6025\u6271\u6c72\u7d1a\u7d66\u4e98\u5162\u77dc\u80af\u4f01\u4f0e\u5176\u5180\u55dc\u5668\u573b\u57fa\u57fc\u5914\u5947\u5993\u5bc4\u5c90\u5d0e\u5df1\u5e7e\u5fcc\u6280\u65d7\u65e3\ufffd".split(""),e=0;e!=r[208].length;++e)65533!==r[208][e].charCodeAt(0)&&(n[r[208][e]]=53248+e,t[53248+e]=r[208][e]);for(r[209]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u671e\u671f\u675e\u68cb\u68c4\u6a5f\u6b3a\u6c23\u6c7d\u6c82\u6dc7\u7398\u7426\u742a\u7482\u74a3\u7578\u757f\u7881\u78ef\u7941\u7947\u7948\u797a\u7b95\u7d00\u7dba\u7f88\u8006\u802d\u808c\u8a18\u8b4f\u8c48\u8d77\u9321\u9324\u98e2\u9951\u9a0e\u9a0f\u9a65\u9e92\u7dca\u4f76\u5409\u62ee\u6854\u91d1\u55ab\u513a\uf90b\uf90c\u5a1c\u61e6\uf90d\u62cf\u62ff\uf90e\uf90f\uf910\uf911\uf912\uf913\u90a3\uf914\uf915\uf916\uf917\uf918\u8afe\uf919\uf91a\uf91b\uf91c\u6696\uf91d\u7156\uf91e\uf91f\u96e3\uf920\u634f\u637a\u5357\uf921\u678f\u6960\u6e73\uf922\u7537\uf923\uf924\uf925\ufffd".split(""),e=0;e!=r[209].length;++e)65533!==r[209][e].charCodeAt(0)&&(n[r[209][e]]=53504+e,t[53504+e]=r[209][e]);for(r[210]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7d0d\uf926\uf927\u8872\u56ca\u5a18\uf928\uf929\uf92a\uf92b\uf92c\u4e43\uf92d\u5167\u5948\u67f0\u8010\uf92e\u5973\u5e74\u649a\u79ca\u5ff5\u606c\u62c8\u637b\u5be7\u5bd7\u52aa\uf92f\u5974\u5f29\u6012\uf930\uf931\uf932\u7459\uf933\uf934\uf935\uf936\uf937\uf938\u99d1\uf939\uf93a\uf93b\uf93c\uf93d\uf93e\uf93f\uf940\uf941\uf942\uf943\u6fc3\uf944\uf945\u81bf\u8fb2\u60f1\uf946\uf947\u8166\uf948\uf949\u5c3f\uf94a\uf94b\uf94c\uf94d\uf94e\uf94f\uf950\uf951\u5ae9\u8a25\u677b\u7d10\uf952\uf953\uf954\uf955\uf956\uf957\u80fd\uf958\uf959\u5c3c\u6ce5\u533f\u6eba\u591a\u8336\ufffd".split(""),e=0;e!=r[210].length;++e)65533!==r[210][e].charCodeAt(0)&&(n[r[210][e]]=53760+e,t[53760+e]=r[210][e]);for(r[211]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u4e39\u4eb6\u4f46\u55ae\u5718\u58c7\u5f56\u65b7\u65e6\u6a80\u6bb5\u6e4d\u77ed\u7aef\u7c1e\u7dde\u86cb\u8892\u9132\u935b\u64bb\u6fbe\u737a\u75b8\u9054\u5556\u574d\u61ba\u64d4\u66c7\u6de1\u6e5b\u6f6d\u6fb9\u75f0\u8043\u81bd\u8541\u8983\u8ac7\u8b5a\u931f\u6c93\u7553\u7b54\u8e0f\u905d\u5510\u5802\u5858\u5e62\u6207\u649e\u68e0\u7576\u7cd6\u87b3\u9ee8\u4ee3\u5788\u576e\u5927\u5c0d\u5cb1\u5e36\u5f85\u6234\u64e1\u73b3\u81fa\u888b\u8cb8\u968a\u9edb\u5b85\u5fb7\u60b3\u5012\u5200\u5230\u5716\u5835\u5857\u5c0e\u5c60\u5cf6\u5d8b\u5ea6\u5f92\u60bc\u6311\u6389\u6417\u6843\ufffd".split(""),e=0;e!=r[211].length;++e)65533!==r[211][e].charCodeAt(0)&&(n[r[211][e]]=54016+e,t[54016+e]=r[211][e]);for(r[212]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u68f9\u6ac2\u6dd8\u6e21\u6ed4\u6fe4\u71fe\u76dc\u7779\u79b1\u7a3b\u8404\u89a9\u8ced\u8df3\u8e48\u9003\u9014\u9053\u90fd\u934d\u9676\u97dc\u6bd2\u7006\u7258\u72a2\u7368\u7763\u79bf\u7be4\u7e9b\u8b80\u58a9\u60c7\u6566\u65fd\u66be\u6c8c\u711e\u71c9\u8c5a\u9813\u4e6d\u7a81\u4edd\u51ac\u51cd\u52d5\u540c\u61a7\u6771\u6850\u68df\u6d1e\u6f7c\u75bc\u77b3\u7ae5\u80f4\u8463\u9285\u515c\u6597\u675c\u6793\u75d8\u7ac7\u8373\uf95a\u8c46\u9017\u982d\u5c6f\u81c0\u829a\u9041\u906f\u920d\u5f97\u5d9d\u6a59\u71c8\u767b\u7b49\u85e4\u8b04\u9127\u9a30\u5587\u61f6\uf95b\u7669\u7f85\ufffd".split(""),e=0;e!=r[212].length;++e)65533!==r[212][e].charCodeAt(0)&&(n[r[212][e]]=54272+e,t[54272+e]=r[212][e]);for(r[213]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u863f\u87ba\u88f8\u908f\uf95c\u6d1b\u70d9\u73de\u7d61\u843d\uf95d\u916a\u99f1\uf95e\u4e82\u5375\u6b04\u6b12\u703e\u721b\u862d\u9e1e\u524c\u8fa3\u5d50\u64e5\u652c\u6b16\u6feb\u7c43\u7e9c\u85cd\u8964\u89bd\u62c9\u81d8\u881f\u5eca\u6717\u6d6a\u72fc\u7405\u746f\u8782\u90de\u4f86\u5d0d\u5fa0\u840a\u51b7\u63a0\u7565\u4eae\u5006\u5169\u51c9\u6881\u6a11\u7cae\u7cb1\u7ce7\u826f\u8ad2\u8f1b\u91cf\u4fb6\u5137\u52f5\u5442\u5eec\u616e\u623e\u65c5\u6ada\u6ffe\u792a\u85dc\u8823\u95ad\u9a62\u9a6a\u9e97\u9ece\u529b\u66c6\u6b77\u701d\u792b\u8f62\u9742\u6190\u6200\u6523\u6f23\ufffd".split(""),e=0;e!=r[213].length;++e)65533!==r[213][e].charCodeAt(0)&&(n[r[213][e]]=54528+e,t[54528+e]=r[213][e]);for(r[214]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7149\u7489\u7df4\u806f\u84ee\u8f26\u9023\u934a\u51bd\u5217\u52a3\u6d0c\u70c8\u88c2\u5ec9\u6582\u6bae\u6fc2\u7c3e\u7375\u4ee4\u4f36\u56f9\uf95f\u5cba\u5dba\u601c\u73b2\u7b2d\u7f9a\u7fce\u8046\u901e\u9234\u96f6\u9748\u9818\u9f61\u4f8b\u6fa7\u79ae\u91b4\u96b7\u52de\uf960\u6488\u64c4\u6ad3\u6f5e\u7018\u7210\u76e7\u8001\u8606\u865c\u8def\u8f05\u9732\u9b6f\u9dfa\u9e75\u788c\u797f\u7da0\u83c9\u9304\u9e7f\u9e93\u8ad6\u58df\u5f04\u6727\u7027\u74cf\u7c60\u807e\u5121\u7028\u7262\u78ca\u8cc2\u8cda\u8cf4\u96f7\u4e86\u50da\u5bee\u5ed6\u6599\u71ce\u7642\u77ad\u804a\u84fc\ufffd".split(""),e=0;e!=r[214].length;++e)65533!==r[214][e].charCodeAt(0)&&(n[r[214][e]]=54784+e,t[54784+e]=r[214][e]);for(r[215]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u907c\u9b27\u9f8d\u58d8\u5a41\u5c62\u6a13\u6dda\u6f0f\u763b\u7d2f\u7e37\u851e\u8938\u93e4\u964b\u5289\u65d2\u67f3\u69b4\u6d41\u6e9c\u700f\u7409\u7460\u7559\u7624\u786b\u8b2c\u985e\u516d\u622e\u9678\u4f96\u502b\u5d19\u6dea\u7db8\u8f2a\u5f8b\u6144\u6817\uf961\u9686\u52d2\u808b\u51dc\u51cc\u695e\u7a1c\u7dbe\u83f1\u9675\u4fda\u5229\u5398\u540f\u550e\u5c65\u60a7\u674e\u68a8\u6d6c\u7281\u72f8\u7406\u7483\uf962\u75e2\u7c6c\u7f79\u7fb8\u8389\u88cf\u88e1\u91cc\u91d0\u96e2\u9bc9\u541d\u6f7e\u71d0\u7498\u85fa\u8eaa\u96a3\u9c57\u9e9f\u6797\u6dcb\u7433\u81e8\u9716\u782c\ufffd".split(""),e=0;e!=r[215].length;++e)65533!==r[215][e].charCodeAt(0)&&(n[r[215][e]]=55040+e,t[55040+e]=r[215][e]);for(r[216]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7acb\u7b20\u7c92\u6469\u746a\u75f2\u78bc\u78e8\u99ac\u9b54\u9ebb\u5bde\u5e55\u6f20\u819c\u83ab\u9088\u4e07\u534d\u5a29\u5dd2\u5f4e\u6162\u633d\u6669\u66fc\u6eff\u6f2b\u7063\u779e\u842c\u8513\u883b\u8f13\u9945\u9c3b\u551c\u62b9\u672b\u6cab\u8309\u896a\u977a\u4ea1\u5984\u5fd8\u5fd9\u671b\u7db2\u7f54\u8292\u832b\u83bd\u8f1e\u9099\u57cb\u59b9\u5a92\u5bd0\u6627\u679a\u6885\u6bcf\u7164\u7f75\u8cb7\u8ce3\u9081\u9b45\u8108\u8c8a\u964c\u9a40\u9ea5\u5b5f\u6c13\u731b\u76f2\u76df\u840c\u51aa\u8993\u514d\u5195\u52c9\u68c9\u6c94\u7704\u7720\u7dbf\u7dec\u9762\u9eb5\u6ec5\ufffd".split(""),e=0;e!=r[216].length;++e)65533!==r[216][e].charCodeAt(0)&&(n[r[216][e]]=55296+e,t[55296+e]=r[216][e]);for(r[217]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8511\u51a5\u540d\u547d\u660e\u669d\u6927\u6e9f\u76bf\u7791\u8317\u84c2\u879f\u9169\u9298\u9cf4\u8882\u4fae\u5192\u52df\u59c6\u5e3d\u6155\u6478\u6479\u66ae\u67d0\u6a21\u6bcd\u6bdb\u725f\u7261\u7441\u7738\u77db\u8017\u82bc\u8305\u8b00\u8b28\u8c8c\u6728\u6c90\u7267\u76ee\u7766\u7a46\u9da9\u6b7f\u6c92\u5922\u6726\u8499\u536f\u5893\u5999\u5edf\u63cf\u6634\u6773\u6e3a\u732b\u7ad7\u82d7\u9328\u52d9\u5deb\u61ae\u61cb\u620a\u62c7\u64ab\u65e0\u6959\u6b66\u6bcb\u7121\u73f7\u755d\u7e46\u821e\u8302\u856a\u8aa3\u8cbf\u9727\u9d61\u58a8\u9ed8\u5011\u520e\u543b\u554f\u6587\ufffd".split(""),e=0;e!=r[217].length;++e)65533!==r[217][e].charCodeAt(0)&&(n[r[217][e]]=55552+e,t[55552+e]=r[217][e]);for(r[218]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6c76\u7d0a\u7d0b\u805e\u868a\u9580\u96ef\u52ff\u6c95\u7269\u5473\u5a9a\u5c3e\u5d4b\u5f4c\u5fae\u672a\u68b6\u6963\u6e3c\u6e44\u7709\u7c73\u7f8e\u8587\u8b0e\u8ff7\u9761\u9ef4\u5cb7\u60b6\u610d\u61ab\u654f\u65fb\u65fc\u6c11\u6cef\u739f\u73c9\u7de1\u9594\u5bc6\u871c\u8b10\u525d\u535a\u62cd\u640f\u64b2\u6734\u6a38\u6cca\u73c0\u749e\u7b94\u7c95\u7e1b\u818a\u8236\u8584\u8feb\u96f9\u99c1\u4f34\u534a\u53cd\u53db\u62cc\u642c\u6500\u6591\u69c3\u6cee\u6f58\u73ed\u7554\u7622\u76e4\u76fc\u78d0\u78fb\u792c\u7d46\u822c\u87e0\u8fd4\u9812\u98ef\u52c3\u62d4\u64a5\u6e24\u6f51\ufffd".split(""),e=0;e!=r[218].length;++e)65533!==r[218][e].charCodeAt(0)&&(n[r[218][e]]=55808+e,t[55808+e]=r[218][e]);for(r[219]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u767c\u8dcb\u91b1\u9262\u9aee\u9b43\u5023\u508d\u574a\u59a8\u5c28\u5e47\u5f77\u623f\u653e\u65b9\u65c1\u6609\u678b\u699c\u6ec2\u78c5\u7d21\u80aa\u8180\u822b\u82b3\u84a1\u868c\u8a2a\u8b17\u90a6\u9632\u9f90\u500d\u4ff3\uf963\u57f9\u5f98\u62dc\u6392\u676f\u6e43\u7119\u76c3\u80cc\u80da\u88f4\u88f5\u8919\u8ce0\u8f29\u914d\u966a\u4f2f\u4f70\u5e1b\u67cf\u6822\u767d\u767e\u9b44\u5e61\u6a0a\u7169\u71d4\u756a\uf964\u7e41\u8543\u85e9\u98dc\u4f10\u7b4f\u7f70\u95a5\u51e1\u5e06\u68b5\u6c3e\u6c4e\u6cdb\u72af\u7bc4\u8303\u6cd5\u743a\u50fb\u5288\u58c1\u64d8\u6a97\u74a7\u7656\ufffd".split(""),e=0;e!=r[219].length;++e)65533!==r[219][e].charCodeAt(0)&&(n[r[219][e]]=56064+e,t[56064+e]=r[219][e]);for(r[220]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u78a7\u8617\u95e2\u9739\uf965\u535e\u5f01\u8b8a\u8fa8\u8faf\u908a\u5225\u77a5\u9c49\u9f08\u4e19\u5002\u5175\u5c5b\u5e77\u661e\u663a\u67c4\u68c5\u70b3\u7501\u75c5\u79c9\u7add\u8f27\u9920\u9a08\u4fdd\u5821\u5831\u5bf6\u666e\u6b65\u6d11\u6e7a\u6f7d\u73e4\u752b\u83e9\u88dc\u8913\u8b5c\u8f14\u4f0f\u50d5\u5310\u535c\u5b93\u5fa9\u670d\u798f\u8179\u832f\u8514\u8907\u8986\u8f39\u8f3b\u99a5\u9c12\u672c\u4e76\u4ff8\u5949\u5c01\u5cef\u5cf0\u6367\u68d2\u70fd\u71a2\u742b\u7e2b\u84ec\u8702\u9022\u92d2\u9cf3\u4e0d\u4ed8\u4fef\u5085\u5256\u526f\u5426\u5490\u57e0\u592b\u5a66\ufffd".split(""),e=0;e!=r[220].length;++e)65533!==r[220][e].charCodeAt(0)&&(n[r[220][e]]=56320+e,t[56320+e]=r[220][e]);for(r[221]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5b5a\u5b75\u5bcc\u5e9c\uf966\u6276\u6577\u65a7\u6d6e\u6ea5\u7236\u7b26\u7c3f\u7f36\u8150\u8151\u819a\u8240\u8299\u83a9\u8a03\u8ca0\u8ce6\u8cfb\u8d74\u8dba\u90e8\u91dc\u961c\u9644\u99d9\u9ce7\u5317\u5206\u5429\u5674\u58b3\u5954\u596e\u5fff\u61a4\u626e\u6610\u6c7e\u711a\u76c6\u7c89\u7cde\u7d1b\u82ac\u8cc1\u96f0\uf967\u4f5b\u5f17\u5f7f\u62c2\u5d29\u670b\u68da\u787c\u7e43\u9d6c\u4e15\u5099\u5315\u532a\u5351\u5983\u5a62\u5e87\u60b2\u618a\u6249\u6279\u6590\u6787\u69a7\u6bd4\u6bd6\u6bd7\u6bd8\u6cb8\uf968\u7435\u75fa\u7812\u7891\u79d5\u79d8\u7c83\u7dcb\u7fe1\u80a5\ufffd".split(""),e=0;e!=r[221].length;++e)65533!==r[221][e].charCodeAt(0)&&(n[r[221][e]]=56576+e,t[56576+e]=r[221][e]);for(r[222]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u813e\u81c2\u83f2\u871a\u88e8\u8ab9\u8b6c\u8cbb\u9119\u975e\u98db\u9f3b\u56ac\u5b2a\u5f6c\u658c\u6ab3\u6baf\u6d5c\u6ff1\u7015\u725d\u73ad\u8ca7\u8cd3\u983b\u6191\u6c37\u8058\u9a01\u4e4d\u4e8b\u4e9b\u4ed5\u4f3a\u4f3c\u4f7f\u4fdf\u50ff\u53f2\u53f8\u5506\u55e3\u56db\u58eb\u5962\u5a11\u5beb\u5bfa\u5c04\u5df3\u5e2b\u5f99\u601d\u6368\u659c\u65af\u67f6\u67fb\u68ad\u6b7b\u6c99\u6cd7\u6e23\u7009\u7345\u7802\u793e\u7940\u7960\u79c1\u7be9\u7d17\u7d72\u8086\u820d\u838e\u84d1\u86c7\u88df\u8a50\u8a5e\u8b1d\u8cdc\u8d66\u8fad\u90aa\u98fc\u99df\u9e9d\u524a\uf969\u6714\uf96a\ufffd".split(""),e=0;e!=r[222].length;++e)65533!==r[222][e].charCodeAt(0)&&(n[r[222][e]]=56832+e,t[56832+e]=r[222][e]);for(r[223]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5098\u522a\u5c71\u6563\u6c55\u73ca\u7523\u759d\u7b97\u849c\u9178\u9730\u4e77\u6492\u6bba\u715e\u85a9\u4e09\uf96b\u6749\u68ee\u6e17\u829f\u8518\u886b\u63f7\u6f81\u9212\u98af\u4e0a\u50b7\u50cf\u511f\u5546\u55aa\u5617\u5b40\u5c19\u5ce0\u5e38\u5e8a\u5ea0\u5ec2\u60f3\u6851\u6a61\u6e58\u723d\u7240\u72c0\u76f8\u7965\u7bb1\u7fd4\u88f3\u89f4\u8a73\u8c61\u8cde\u971c\u585e\u74bd\u8cfd\u55c7\uf96c\u7a61\u7d22\u8272\u7272\u751f\u7525\uf96d\u7b19\u5885\u58fb\u5dbc\u5e8f\u5eb6\u5f90\u6055\u6292\u637f\u654d\u6691\u66d9\u66f8\u6816\u68f2\u7280\u745e\u7b6e\u7d6e\u7dd6\u7f72\ufffd".split(""),e=0;e!=r[223].length;++e)65533!==r[223][e].charCodeAt(0)&&(n[r[223][e]]=57088+e,t[57088+e]=r[223][e]);for(r[224]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u80e5\u8212\u85af\u897f\u8a93\u901d\u92e4\u9ecd\u9f20\u5915\u596d\u5e2d\u60dc\u6614\u6673\u6790\u6c50\u6dc5\u6f5f\u77f3\u78a9\u84c6\u91cb\u932b\u4ed9\u50ca\u5148\u5584\u5b0b\u5ba3\u6247\u657e\u65cb\u6e32\u717d\u7401\u7444\u7487\u74bf\u766c\u79aa\u7dda\u7e55\u7fa8\u817a\u81b3\u8239\u861a\u87ec\u8a75\u8de3\u9078\u9291\u9425\u994d\u9bae\u5368\u5c51\u6954\u6cc4\u6d29\u6e2b\u820c\u859b\u893b\u8a2d\u8aaa\u96ea\u9f67\u5261\u66b9\u6bb2\u7e96\u87fe\u8d0d\u9583\u965d\u651d\u6d89\u71ee\uf96e\u57ce\u59d3\u5bac\u6027\u60fa\u6210\u661f\u665f\u7329\u73f9\u76db\u7701\u7b6c\ufffd".split(""),e=0;e!=r[224].length;++e)65533!==r[224][e].charCodeAt(0)&&(n[r[224][e]]=57344+e,t[57344+e]=r[224][e]);for(r[225]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8056\u8072\u8165\u8aa0\u9192\u4e16\u52e2\u6b72\u6d17\u7a05\u7b39\u7d30\uf96f\u8cb0\u53ec\u562f\u5851\u5bb5\u5c0f\u5c11\u5de2\u6240\u6383\u6414\u662d\u68b3\u6cbc\u6d88\u6eaf\u701f\u70a4\u71d2\u7526\u758f\u758e\u7619\u7b11\u7be0\u7c2b\u7d20\u7d39\u852c\u856d\u8607\u8a34\u900d\u9061\u90b5\u92b7\u97f6\u9a37\u4fd7\u5c6c\u675f\u6d91\u7c9f\u7e8c\u8b16\u8d16\u901f\u5b6b\u5dfd\u640d\u84c0\u905c\u98e1\u7387\u5b8b\u609a\u677e\u6dde\u8a1f\u8aa6\u9001\u980c\u5237\uf970\u7051\u788e\u9396\u8870\u91d7\u4fee\u53d7\u55fd\u56da\u5782\u58fd\u5ac2\u5b88\u5cab\u5cc0\u5e25\u6101\ufffd".split(""),e=0;e!=r[225].length;++e)65533!==r[225][e].charCodeAt(0)&&(n[r[225][e]]=57600+e,t[57600+e]=r[225][e]);for(r[226]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u620d\u624b\u6388\u641c\u6536\u6578\u6a39\u6b8a\u6c34\u6d19\u6f31\u71e7\u72e9\u7378\u7407\u74b2\u7626\u7761\u79c0\u7a57\u7aea\u7cb9\u7d8f\u7dac\u7e61\u7f9e\u8129\u8331\u8490\u84da\u85ea\u8896\u8ab0\u8b90\u8f38\u9042\u9083\u916c\u9296\u92b9\u968b\u96a7\u96a8\u96d6\u9700\u9808\u9996\u9ad3\u9b1a\u53d4\u587e\u5919\u5b70\u5bbf\u6dd1\u6f5a\u719f\u7421\u74b9\u8085\u83fd\u5de1\u5f87\u5faa\u6042\u65ec\u6812\u696f\u6a53\u6b89\u6d35\u6df3\u73e3\u76fe\u77ac\u7b4d\u7d14\u8123\u821c\u8340\u84f4\u8563\u8a62\u8ac4\u9187\u931e\u9806\u99b4\u620c\u8853\u8ff0\u9265\u5d07\u5d27\ufffd".split(""),e=0;e!=r[226].length;++e)65533!==r[226][e].charCodeAt(0)&&(n[r[226][e]]=57856+e,t[57856+e]=r[226][e]);for(r[227]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5d69\u745f\u819d\u8768\u6fd5\u62fe\u7fd2\u8936\u8972\u4e1e\u4e58\u50e7\u52dd\u5347\u627f\u6607\u7e69\u8805\u965e\u4f8d\u5319\u5636\u59cb\u5aa4\u5c38\u5c4e\u5c4d\u5e02\u5f11\u6043\u65bd\u662f\u6642\u67be\u67f4\u731c\u77e2\u793a\u7fc5\u8494\u84cd\u8996\u8a66\u8a69\u8ae1\u8c55\u8c7a\u57f4\u5bd4\u5f0f\u606f\u62ed\u690d\u6b96\u6e5c\u7184\u7bd2\u8755\u8b58\u8efe\u98df\u98fe\u4f38\u4f81\u4fe1\u547b\u5a20\u5bb8\u613c\u65b0\u6668\u71fc\u7533\u795e\u7d33\u814e\u81e3\u8398\u85aa\u85ce\u8703\u8a0a\u8eab\u8f9b\uf971\u8fc5\u5931\u5ba4\u5be6\u6089\u5be9\u5c0b\u5fc3\u6c81\ufffd".split(""),e=0;e!=r[227].length;++e)65533!==r[227][e].charCodeAt(0)&&(n[r[227][e]]=58112+e,t[58112+e]=r[227][e]);for(r[228]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uf972\u6df1\u700b\u751a\u82af\u8af6\u4ec0\u5341\uf973\u96d9\u6c0f\u4e9e\u4fc4\u5152\u555e\u5a25\u5ce8\u6211\u7259\u82bd\u83aa\u86fe\u8859\u8a1d\u963f\u96c5\u9913\u9d09\u9d5d\u580a\u5cb3\u5dbd\u5e44\u60e1\u6115\u63e1\u6a02\u6e25\u9102\u9354\u984e\u9c10\u9f77\u5b89\u5cb8\u6309\u664f\u6848\u773c\u96c1\u978d\u9854\u9b9f\u65a1\u8b01\u8ecb\u95bc\u5535\u5ca9\u5dd6\u5eb5\u6697\u764c\u83f4\u95c7\u58d3\u62bc\u72ce\u9d28\u4ef0\u592e\u600f\u663b\u6b83\u79e7\u9d26\u5393\u54c0\u57c3\u5d16\u611b\u66d6\u6daf\u788d\u827e\u9698\u9744\u5384\u627c\u6396\u6db2\u7e0a\u814b\u984d\ufffd".split(""),e=0;e!=r[228].length;++e)65533!==r[228][e].charCodeAt(0)&&(n[r[228][e]]=58368+e,t[58368+e]=r[228][e]);for(r[229]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6afb\u7f4c\u9daf\u9e1a\u4e5f\u503b\u51b6\u591c\u60f9\u63f6\u6930\u723a\u8036\uf974\u91ce\u5f31\uf975\uf976\u7d04\u82e5\u846f\u84bb\u85e5\u8e8d\uf977\u4f6f\uf978\uf979\u58e4\u5b43\u6059\u63da\u6518\u656d\u6698\uf97a\u694a\u6a23\u6d0b\u7001\u716c\u75d2\u760d\u79b3\u7a70\uf97b\u7f8a\uf97c\u8944\uf97d\u8b93\u91c0\u967d\uf97e\u990a\u5704\u5fa1\u65bc\u6f01\u7600\u79a6\u8a9e\u99ad\u9b5a\u9f6c\u5104\u61b6\u6291\u6a8d\u81c6\u5043\u5830\u5f66\u7109\u8a00\u8afa\u5b7c\u8616\u4ffa\u513c\u56b4\u5944\u63a9\u6df9\u5daa\u696d\u5186\u4e88\u4f59\uf97f\uf980\uf981\u5982\uf982\ufffd".split(""),e=0;e!=r[229].length;++e)65533!==r[229][e].charCodeAt(0)&&(n[r[229][e]]=58624+e,t[58624+e]=r[229][e]);for(r[230]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uf983\u6b5f\u6c5d\uf984\u74b5\u7916\uf985\u8207\u8245\u8339\u8f3f\u8f5d\uf986\u9918\uf987\uf988\uf989\u4ea6\uf98a\u57df\u5f79\u6613\uf98b\uf98c\u75ab\u7e79\u8b6f\uf98d\u9006\u9a5b\u56a5\u5827\u59f8\u5a1f\u5bb4\uf98e\u5ef6\uf98f\uf990\u6350\u633b\uf991\u693d\u6c87\u6cbf\u6d8e\u6d93\u6df5\u6f14\uf992\u70df\u7136\u7159\uf993\u71c3\u71d5\uf994\u784f\u786f\uf995\u7b75\u7de3\uf996\u7e2f\uf997\u884d\u8edf\uf998\uf999\uf99a\u925b\uf99b\u9cf6\uf99c\uf99d\uf99e\u6085\u6d85\uf99f\u71b1\uf9a0\uf9a1\u95b1\u53ad\uf9a2\uf9a3\uf9a4\u67d3\uf9a5\u708e\u7130\u7430\u8276\u82d2\ufffd".split(""),e=0;e!=r[230].length;++e)65533!==r[230][e].charCodeAt(0)&&(n[r[230][e]]=58880+e,t[58880+e]=r[230][e]);for(r[231]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uf9a6\u95bb\u9ae5\u9e7d\u66c4\uf9a7\u71c1\u8449\uf9a8\uf9a9\u584b\uf9aa\uf9ab\u5db8\u5f71\uf9ac\u6620\u668e\u6979\u69ae\u6c38\u6cf3\u6e36\u6f41\u6fda\u701b\u702f\u7150\u71df\u7370\uf9ad\u745b\uf9ae\u74d4\u76c8\u7a4e\u7e93\uf9af\uf9b0\u82f1\u8a60\u8fce\uf9b1\u9348\uf9b2\u9719\uf9b3\uf9b4\u4e42\u502a\uf9b5\u5208\u53e1\u66f3\u6c6d\u6fca\u730a\u777f\u7a62\u82ae\u85dd\u8602\uf9b6\u88d4\u8a63\u8b7d\u8c6b\uf9b7\u92b3\uf9b8\u9713\u9810\u4e94\u4f0d\u4fc9\u50b2\u5348\u543e\u5433\u55da\u5862\u58ba\u5967\u5a1b\u5be4\u609f\uf9b9\u61ca\u6556\u65ff\u6664\u68a7\u6c5a\u6fb3\ufffd".split(""),e=0;e!=r[231].length;++e)65533!==r[231][e].charCodeAt(0)&&(n[r[231][e]]=59136+e,t[59136+e]=r[231][e]);for(r[232]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u70cf\u71ac\u7352\u7b7d\u8708\u8aa4\u9c32\u9f07\u5c4b\u6c83\u7344\u7389\u923a\u6eab\u7465\u761f\u7a69\u7e15\u860a\u5140\u58c5\u64c1\u74ee\u7515\u7670\u7fc1\u9095\u96cd\u9954\u6e26\u74e6\u7aa9\u7aaa\u81e5\u86d9\u8778\u8a1b\u5a49\u5b8c\u5b9b\u68a1\u6900\u6d63\u73a9\u7413\u742c\u7897\u7de9\u7feb\u8118\u8155\u839e\u8c4c\u962e\u9811\u66f0\u5f80\u65fa\u6789\u6c6a\u738b\u502d\u5a03\u6b6a\u77ee\u5916\u5d6c\u5dcd\u7325\u754f\uf9ba\uf9bb\u50e5\u51f9\u582f\u592d\u5996\u59da\u5be5\uf9bc\uf9bd\u5da2\u62d7\u6416\u6493\u64fe\uf9be\u66dc\uf9bf\u6a48\uf9c0\u71ff\u7464\uf9c1\ufffd".split(""),e=0;e!=r[232].length;++e)65533!==r[232][e].charCodeAt(0)&&(n[r[232][e]]=59392+e,t[59392+e]=r[232][e]);for(r[233]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7a88\u7aaf\u7e47\u7e5e\u8000\u8170\uf9c2\u87ef\u8981\u8b20\u9059\uf9c3\u9080\u9952\u617e\u6b32\u6d74\u7e1f\u8925\u8fb1\u4fd1\u50ad\u5197\u52c7\u57c7\u5889\u5bb9\u5eb8\u6142\u6995\u6d8c\u6e67\u6eb6\u7194\u7462\u7528\u752c\u8073\u8338\u84c9\u8e0a\u9394\u93de\uf9c4\u4e8e\u4f51\u5076\u512a\u53c8\u53cb\u53f3\u5b87\u5bd3\u5c24\u611a\u6182\u65f4\u725b\u7397\u7440\u76c2\u7950\u7991\u79b9\u7d06\u7fbd\u828b\u85d5\u865e\u8fc2\u9047\u90f5\u91ea\u9685\u96e8\u96e9\u52d6\u5f67\u65ed\u6631\u682f\u715c\u7a36\u90c1\u980a\u4e91\uf9c5\u6a52\u6b9e\u6f90\u7189\u8018\u82b8\u8553\ufffd".split(""),e=0;e!=r[233].length;++e)65533!==r[233][e].charCodeAt(0)&&(n[r[233][e]]=59648+e,t[59648+e]=r[233][e]);for(r[234]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u904b\u9695\u96f2\u97fb\u851a\u9b31\u4e90\u718a\u96c4\u5143\u539f\u54e1\u5713\u5712\u57a3\u5a9b\u5ac4\u5bc3\u6028\u613f\u63f4\u6c85\u6d39\u6e72\u6e90\u7230\u733f\u7457\u82d1\u8881\u8f45\u9060\uf9c6\u9662\u9858\u9d1b\u6708\u8d8a\u925e\u4f4d\u5049\u50de\u5371\u570d\u59d4\u5a01\u5c09\u6170\u6690\u6e2d\u7232\u744b\u7def\u80c3\u840e\u8466\u853f\u875f\u885b\u8918\u8b02\u9055\u97cb\u9b4f\u4e73\u4f91\u5112\u516a\uf9c7\u552f\u55a9\u5b7a\u5ba5\u5e7c\u5e7d\u5ebe\u60a0\u60df\u6108\u6109\u63c4\u6538\u6709\uf9c8\u67d4\u67da\uf9c9\u6961\u6962\u6cb9\u6d27\uf9ca\u6e38\uf9cb\ufffd".split(""),e=0;e!=r[234].length;++e)65533!==r[234][e].charCodeAt(0)&&(n[r[234][e]]=59904+e,t[59904+e]=r[234][e]);for(r[235]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6fe1\u7336\u7337\uf9cc\u745c\u7531\uf9cd\u7652\uf9ce\uf9cf\u7dad\u81fe\u8438\u88d5\u8a98\u8adb\u8aed\u8e30\u8e42\u904a\u903e\u907a\u9149\u91c9\u936e\uf9d0\uf9d1\u5809\uf9d2\u6bd3\u8089\u80b2\uf9d3\uf9d4\u5141\u596b\u5c39\uf9d5\uf9d6\u6f64\u73a7\u80e4\u8d07\uf9d7\u9217\u958f\uf9d8\uf9d9\uf9da\uf9db\u807f\u620e\u701c\u7d68\u878d\uf9dc\u57a0\u6069\u6147\u6bb7\u8abe\u9280\u96b1\u4e59\u541f\u6deb\u852d\u9670\u97f3\u98ee\u63d6\u6ce3\u9091\u51dd\u61c9\u81ba\u9df9\u4f9d\u501a\u5100\u5b9c\u610f\u61ff\u64ec\u6905\u6bc5\u7591\u77e3\u7fa9\u8264\u858f\u87fb\u8863\u8abc\ufffd".split(""),e=0;e!=r[235].length;++e)65533!==r[235][e].charCodeAt(0)&&(n[r[235][e]]=60160+e,t[60160+e]=r[235][e]);for(r[236]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8b70\u91ab\u4e8c\u4ee5\u4f0a\uf9dd\uf9de\u5937\u59e8\uf9df\u5df2\u5f1b\u5f5b\u6021\uf9e0\uf9e1\uf9e2\uf9e3\u723e\u73e5\uf9e4\u7570\u75cd\uf9e5\u79fb\uf9e6\u800c\u8033\u8084\u82e1\u8351\uf9e7\uf9e8\u8cbd\u8cb3\u9087\uf9e9\uf9ea\u98f4\u990c\uf9eb\uf9ec\u7037\u76ca\u7fca\u7fcc\u7ffc\u8b1a\u4eba\u4ec1\u5203\u5370\uf9ed\u54bd\u56e0\u59fb\u5bc5\u5f15\u5fcd\u6e6e\uf9ee\uf9ef\u7d6a\u8335\uf9f0\u8693\u8a8d\uf9f1\u976d\u9777\uf9f2\uf9f3\u4e00\u4f5a\u4f7e\u58f9\u65e5\u6ea2\u9038\u93b0\u99b9\u4efb\u58ec\u598a\u59d9\u6041\uf9f4\uf9f5\u7a14\uf9f6\u834f\u8cc3\u5165\u5344\ufffd".split(""),e=0;e!=r[236].length;++e)65533!==r[236][e].charCodeAt(0)&&(n[r[236][e]]=60416+e,t[60416+e]=r[236][e]);for(r[237]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uf9f7\uf9f8\uf9f9\u4ecd\u5269\u5b55\u82bf\u4ed4\u523a\u54a8\u59c9\u59ff\u5b50\u5b57\u5b5c\u6063\u6148\u6ecb\u7099\u716e\u7386\u74f7\u75b5\u78c1\u7d2b\u8005\u81ea\u8328\u8517\u85c9\u8aee\u8cc7\u96cc\u4f5c\u52fa\u56bc\u65ab\u6628\u707c\u70b8\u7235\u7dbd\u828d\u914c\u96c0\u9d72\u5b71\u68e7\u6b98\u6f7a\u76de\u5c91\u66ab\u6f5b\u7bb4\u7c2a\u8836\u96dc\u4e08\u4ed7\u5320\u5834\u58bb\u58ef\u596c\u5c07\u5e33\u5e84\u5f35\u638c\u66b2\u6756\u6a1f\u6aa3\u6b0c\u6f3f\u7246\uf9fa\u7350\u748b\u7ae0\u7ca7\u8178\u81df\u81e7\u838a\u846c\u8523\u8594\u85cf\u88dd\u8d13\u91ac\u9577\ufffd".split(""),e=0;e!=r[237].length;++e)65533!==r[237][e].charCodeAt(0)&&(n[r[237][e]]=60672+e,t[60672+e]=r[237][e]);for(r[238]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u969c\u518d\u54c9\u5728\u5bb0\u624d\u6750\u683d\u6893\u6e3d\u6ed3\u707d\u7e21\u88c1\u8ca1\u8f09\u9f4b\u9f4e\u722d\u7b8f\u8acd\u931a\u4f47\u4f4e\u5132\u5480\u59d0\u5e95\u62b5\u6775\u696e\u6a17\u6cae\u6e1a\u72d9\u732a\u75bd\u7bb8\u7d35\u82e7\u83f9\u8457\u85f7\u8a5b\u8caf\u8e87\u9019\u90b8\u96ce\u9f5f\u52e3\u540a\u5ae1\u5bc2\u6458\u6575\u6ef4\u72c4\uf9fb\u7684\u7a4d\u7b1b\u7c4d\u7e3e\u7fdf\u837b\u8b2b\u8cca\u8d64\u8de1\u8e5f\u8fea\u8ff9\u9069\u93d1\u4f43\u4f7a\u50b3\u5168\u5178\u524d\u526a\u5861\u587c\u5960\u5c08\u5c55\u5edb\u609b\u6230\u6813\u6bbf\u6c08\u6fb1\ufffd".split(""),e=0;e!=r[238].length;++e)65533!==r[238][e].charCodeAt(0)&&(n[r[238][e]]=60928+e,t[60928+e]=r[238][e]);for(r[239]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u714e\u7420\u7530\u7538\u7551\u7672\u7b4c\u7b8b\u7bad\u7bc6\u7e8f\u8a6e\u8f3e\u8f49\u923f\u9293\u9322\u942b\u96fb\u985a\u986b\u991e\u5207\u622a\u6298\u6d59\u7664\u7aca\u7bc0\u7d76\u5360\u5cbe\u5e97\u6f38\u70b9\u7c98\u9711\u9b8e\u9ede\u63a5\u647a\u8776\u4e01\u4e95\u4ead\u505c\u5075\u5448\u59c3\u5b9a\u5e40\u5ead\u5ef7\u5f81\u60c5\u633a\u653f\u6574\u65cc\u6676\u6678\u67fe\u6968\u6a89\u6b63\u6c40\u6dc0\u6de8\u6e1f\u6e5e\u701e\u70a1\u738e\u73fd\u753a\u775b\u7887\u798e\u7a0b\u7a7d\u7cbe\u7d8e\u8247\u8a02\u8aea\u8c9e\u912d\u914a\u91d8\u9266\u92cc\u9320\u9706\u9756\ufffd".split(""),e=0;e!=r[239].length;++e)65533!==r[239][e].charCodeAt(0)&&(n[r[239][e]]=61184+e,t[61184+e]=r[239][e]);for(r[240]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u975c\u9802\u9f0e\u5236\u5291\u557c\u5824\u5e1d\u5f1f\u608c\u63d0\u68af\u6fdf\u796d\u7b2c\u81cd\u85ba\u88fd\u8af8\u8e44\u918d\u9664\u969b\u973d\u984c\u9f4a\u4fce\u5146\u51cb\u52a9\u5632\u5f14\u5f6b\u63aa\u64cd\u65e9\u6641\u66fa\u66f9\u671d\u689d\u68d7\u69fd\u6f15\u6f6e\u7167\u71e5\u722a\u74aa\u773a\u7956\u795a\u79df\u7a20\u7a95\u7c97\u7cdf\u7d44\u7e70\u8087\u85fb\u86a4\u8a54\u8abf\u8d99\u8e81\u9020\u906d\u91e3\u963b\u96d5\u9ce5\u65cf\u7c07\u8db3\u93c3\u5b58\u5c0a\u5352\u62d9\u731d\u5027\u5b97\u5f9e\u60b0\u616b\u68d5\u6dd9\u742e\u7a2e\u7d42\u7d9c\u7e31\u816b\ufffd".split(""),e=0;e!=r[240].length;++e)65533!==r[240][e].charCodeAt(0)&&(n[r[240][e]]=61440+e,t[61440+e]=r[240][e]);for(r[241]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8e2a\u8e35\u937e\u9418\u4f50\u5750\u5de6\u5ea7\u632b\u7f6a\u4e3b\u4f4f\u4f8f\u505a\u59dd\u80c4\u546a\u5468\u55fe\u594f\u5b99\u5dde\u5eda\u665d\u6731\u67f1\u682a\u6ce8\u6d32\u6e4a\u6f8d\u70b7\u73e0\u7587\u7c4c\u7d02\u7d2c\u7da2\u821f\u86db\u8a3b\u8a85\u8d70\u8e8a\u8f33\u9031\u914e\u9152\u9444\u99d0\u7af9\u7ca5\u4fca\u5101\u51c6\u57c8\u5bef\u5cfb\u6659\u6a3d\u6d5a\u6e96\u6fec\u710c\u756f\u7ae3\u8822\u9021\u9075\u96cb\u99ff\u8301\u4e2d\u4ef2\u8846\u91cd\u537d\u6adb\u696b\u6c41\u847a\u589e\u618e\u66fe\u62ef\u70dd\u7511\u75c7\u7e52\u84b8\u8b49\u8d08\u4e4b\u53ea\ufffd".split(""),e=0;e!=r[241].length;++e)65533!==r[241][e].charCodeAt(0)&&(n[r[241][e]]=61696+e,t[61696+e]=r[241][e]);for(r[242]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u54ab\u5730\u5740\u5fd7\u6301\u6307\u646f\u652f\u65e8\u667a\u679d\u67b3\u6b62\u6c60\u6c9a\u6f2c\u77e5\u7825\u7949\u7957\u7d19\u80a2\u8102\u81f3\u829d\u82b7\u8718\u8a8c\uf9fc\u8d04\u8dbe\u9072\u76f4\u7a19\u7a37\u7e54\u8077\u5507\u55d4\u5875\u632f\u6422\u6649\u664b\u686d\u699b\u6b84\u6d25\u6eb1\u73cd\u7468\u74a1\u755b\u75b9\u76e1\u771e\u778b\u79e6\u7e09\u7e1d\u81fb\u852f\u8897\u8a3a\u8cd1\u8eeb\u8fb0\u9032\u93ad\u9663\u9673\u9707\u4f84\u53f1\u59ea\u5ac9\u5e19\u684e\u74c6\u75be\u79e9\u7a92\u81a3\u86ed\u8cea\u8dcc\u8fed\u659f\u6715\uf9fd\u57f7\u6f57\u7ddd\u8f2f\ufffd".split(""),e=0;e!=r[242].length;++e)65533!==r[242][e].charCodeAt(0)&&(n[r[242][e]]=61952+e,t[61952+e]=r[242][e]);for(r[243]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u93f6\u96c6\u5fb5\u61f2\u6f84\u4e14\u4f98\u501f\u53c9\u55df\u5d6f\u5dee\u6b21\u6b64\u78cb\u7b9a\uf9fe\u8e49\u8eca\u906e\u6349\u643e\u7740\u7a84\u932f\u947f\u9f6a\u64b0\u6faf\u71e6\u74a8\u74da\u7ac4\u7c12\u7e82\u7cb2\u7e98\u8b9a\u8d0a\u947d\u9910\u994c\u5239\u5bdf\u64e6\u672d\u7d2e\u50ed\u53c3\u5879\u6158\u6159\u61fa\u65ac\u7ad9\u8b92\u8b96\u5009\u5021\u5275\u5531\u5a3c\u5ee0\u5f70\u6134\u655e\u660c\u6636\u66a2\u69cd\u6ec4\u6f32\u7316\u7621\u7a93\u8139\u8259\u83d6\u84bc\u50b5\u57f0\u5bc0\u5be8\u5f69\u63a1\u7826\u7db5\u83dc\u8521\u91c7\u91f5\u518a\u67f5\u7b56\ufffd".split(""),e=0;e!=r[243].length;++e)65533!==r[243][e].charCodeAt(0)&&(n[r[243][e]]=62208+e,t[62208+e]=r[243][e]);for(r[244]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8cac\u51c4\u59bb\u60bd\u8655\u501c\uf9ff\u5254\u5c3a\u617d\u621a\u62d3\u64f2\u65a5\u6ecc\u7620\u810a\u8e60\u965f\u96bb\u4edf\u5343\u5598\u5929\u5ddd\u64c5\u6cc9\u6dfa\u7394\u7a7f\u821b\u85a6\u8ce4\u8e10\u9077\u91e7\u95e1\u9621\u97c6\u51f8\u54f2\u5586\u5fb9\u64a4\u6f88\u7db4\u8f1f\u8f4d\u9435\u50c9\u5c16\u6cbe\u6dfb\u751b\u77bb\u7c3d\u7c64\u8a79\u8ac2\u581e\u59be\u5e16\u6377\u7252\u758a\u776b\u8adc\u8cbc\u8f12\u5ef3\u6674\u6df8\u807d\u83c1\u8acb\u9751\u9bd6\ufa00\u5243\u66ff\u6d95\u6eef\u7de0\u8ae6\u902e\u905e\u9ad4\u521d\u527f\u54e8\u6194\u6284\u62db\u68a2\ufffd".split(""),e=0;e!=r[244].length;++e)65533!==r[244][e].charCodeAt(0)&&(n[r[244][e]]=62464+e,t[62464+e]=r[244][e]);for(r[245]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6912\u695a\u6a35\u7092\u7126\u785d\u7901\u790e\u79d2\u7a0d\u8096\u8278\u82d5\u8349\u8549\u8c82\u8d85\u9162\u918b\u91ae\u4fc3\u56d1\u71ed\u77d7\u8700\u89f8\u5bf8\u5fd6\u6751\u90a8\u53e2\u585a\u5bf5\u60a4\u6181\u6460\u7e3d\u8070\u8525\u9283\u64ae\u50ac\u5d14\u6700\u589c\u62bd\u63a8\u690e\u6978\u6a1e\u6e6b\u76ba\u79cb\u82bb\u8429\u8acf\u8da8\u8ffd\u9112\u914b\u919c\u9310\u9318\u939a\u96db\u9a36\u9c0d\u4e11\u755c\u795d\u7afa\u7b51\u7bc9\u7e2e\u84c4\u8e59\u8e74\u8ef8\u9010\u6625\u693f\u7443\u51fa\u672e\u9edc\u5145\u5fe0\u6c96\u87f2\u885d\u8877\u60b4\u81b5\u8403\ufffd".split(""),e=0;e!=r[245].length;++e)65533!==r[245][e].charCodeAt(0)&&(n[r[245][e]]=62720+e,t[62720+e]=r[245][e]);for(r[246]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8d05\u53d6\u5439\u5634\u5a36\u5c31\u708a\u7fe0\u805a\u8106\u81ed\u8da3\u9189\u9a5f\u9df2\u5074\u4ec4\u53a0\u60fb\u6e2c\u5c64\u4f88\u5024\u55e4\u5cd9\u5e5f\u6065\u6894\u6cbb\u6dc4\u71be\u75d4\u75f4\u7661\u7a1a\u7a49\u7dc7\u7dfb\u7f6e\u81f4\u86a9\u8f1c\u96c9\u99b3\u9f52\u5247\u52c5\u98ed\u89aa\u4e03\u67d2\u6f06\u4fb5\u5be2\u6795\u6c88\u6d78\u741b\u7827\u91dd\u937c\u87c4\u79e4\u7a31\u5feb\u4ed6\u54a4\u553e\u58ae\u59a5\u60f0\u6253\u62d6\u6736\u6955\u8235\u9640\u99b1\u99dd\u502c\u5353\u5544\u577c\ufa01\u6258\ufa02\u64e2\u666b\u67dd\u6fc1\u6fef\u7422\u7438\u8a17\ufffd".split(""),e=0;e!=r[246].length;++e)65533!==r[246][e].charCodeAt(0)&&(n[r[246][e]]=62976+e,t[62976+e]=r[246][e]);for(r[247]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9438\u5451\u5606\u5766\u5f48\u619a\u6b4e\u7058\u70ad\u7dbb\u8a95\u596a\u812b\u63a2\u7708\u803d\u8caa\u5854\u642d\u69bb\u5b95\u5e11\u6e6f\ufa03\u8569\u514c\u53f0\u592a\u6020\u614b\u6b86\u6c70\u6cf0\u7b1e\u80ce\u82d4\u8dc6\u90b0\u98b1\ufa04\u64c7\u6fa4\u6491\u6504\u514e\u5410\u571f\u8a0e\u615f\u6876\ufa05\u75db\u7b52\u7d71\u901a\u5806\u69cc\u817f\u892a\u9000\u9839\u5078\u5957\u59ac\u6295\u900f\u9b2a\u615d\u7279\u95d6\u5761\u5a46\u5df4\u628a\u64ad\u64fa\u6777\u6ce2\u6d3e\u722c\u7436\u7834\u7f77\u82ad\u8ddb\u9817\u5224\u5742\u677f\u7248\u74e3\u8ca9\u8fa6\u9211\ufffd".split(""),e=0;e!=r[247].length;++e)65533!==r[247][e].charCodeAt(0)&&(n[r[247][e]]=63232+e,t[63232+e]=r[247][e]);for(r[248]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u962a\u516b\u53ed\u634c\u4f69\u5504\u6096\u6557\u6c9b\u6d7f\u724c\u72fd\u7a17\u8987\u8c9d\u5f6d\u6f8e\u70f9\u81a8\u610e\u4fbf\u504f\u6241\u7247\u7bc7\u7de8\u7fe9\u904d\u97ad\u9a19\u8cb6\u576a\u5e73\u67b0\u840d\u8a55\u5420\u5b16\u5e63\u5ee2\u5f0a\u6583\u80ba\u853d\u9589\u965b\u4f48\u5305\u530d\u530f\u5486\u54fa\u5703\u5e03\u6016\u629b\u62b1\u6355\ufa06\u6ce1\u6d66\u75b1\u7832\u80de\u812f\u82de\u8461\u84b2\u888d\u8912\u900b\u92ea\u98fd\u9b91\u5e45\u66b4\u66dd\u7011\u7206\ufa07\u4ff5\u527d\u5f6a\u6153\u6753\u6a19\u6f02\u74e2\u7968\u8868\u8c79\u98c7\u98c4\u9a43\ufffd".split(""),e=0;e!=r[248].length;++e)65533!==r[248][e].charCodeAt(0)&&(n[r[248][e]]=63488+e,t[63488+e]=r[248][e]);for(r[249]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u54c1\u7a1f\u6953\u8af7\u8c4a\u98a8\u99ae\u5f7c\u62ab\u75b2\u76ae\u88ab\u907f\u9642\u5339\u5f3c\u5fc5\u6ccc\u73cc\u7562\u758b\u7b46\u82fe\u999d\u4e4f\u903c\u4e0b\u4f55\u53a6\u590f\u5ec8\u6630\u6cb3\u7455\u8377\u8766\u8cc0\u9050\u971e\u9c15\u58d1\u5b78\u8650\u8b14\u9db4\u5bd2\u6068\u608d\u65f1\u6c57\u6f22\u6fa3\u701a\u7f55\u7ff0\u9591\u9592\u9650\u97d3\u5272\u8f44\u51fd\u542b\u54b8\u5563\u558a\u6abb\u6db5\u7dd8\u8266\u929c\u9677\u9e79\u5408\u54c8\u76d2\u86e4\u95a4\u95d4\u965c\u4ea2\u4f09\u59ee\u5ae6\u5df7\u6052\u6297\u676d\u6841\u6c86\u6e2f\u7f38\u809b\u822a\ufffd".split(""),e=0;e!=r[249].length;++e)65533!==r[249][e].charCodeAt(0)&&(n[r[249][e]]=63744+e,t[63744+e]=r[249][e]);for(r[250]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufa08\ufa09\u9805\u4ea5\u5055\u54b3\u5793\u595a\u5b69\u5bb3\u61c8\u6977\u6d77\u7023\u87f9\u89e3\u8a72\u8ae7\u9082\u99ed\u9ab8\u52be\u6838\u5016\u5e78\u674f\u8347\u884c\u4eab\u5411\u56ae\u73e6\u9115\u97ff\u9909\u9957\u9999\u5653\u589f\u865b\u8a31\u61b2\u6af6\u737b\u8ed2\u6b47\u96aa\u9a57\u5955\u7200\u8d6b\u9769\u4fd4\u5cf4\u5f26\u61f8\u665b\u6ceb\u70ab\u7384\u73b9\u73fe\u7729\u774d\u7d43\u7d62\u7e23\u8237\u8852\ufa0a\u8ce2\u9249\u986f\u5b51\u7a74\u8840\u9801\u5acc\u4fe0\u5354\u593e\u5cfd\u633e\u6d79\u72f9\u8105\u8107\u83a2\u92cf\u9830\u4ea8\u5144\u5211\u578b\ufffd".split(""),e=0;e!=r[250].length;++e)65533!==r[250][e].charCodeAt(0)&&(n[r[250][e]]=64e3+e,t[64e3+e]=r[250][e]);for(r[251]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5f62\u6cc2\u6ece\u7005\u7050\u70af\u7192\u73e9\u7469\u834a\u87a2\u8861\u9008\u90a2\u93a3\u99a8\u516e\u5f57\u60e0\u6167\u66b3\u8559\u8e4a\u91af\u978b\u4e4e\u4e92\u547c\u58d5\u58fa\u597d\u5cb5\u5f27\u6236\u6248\u660a\u6667\u6beb\u6d69\u6dcf\u6e56\u6ef8\u6f94\u6fe0\u6fe9\u705d\u72d0\u7425\u745a\u74e0\u7693\u795c\u7cca\u7e1e\u80e1\u82a6\u846b\u84bf\u864e\u865f\u8774\u8b77\u8c6a\u93ac\u9800\u9865\u60d1\u6216\u9177\u5a5a\u660f\u6df7\u6e3e\u743f\u9b42\u5ffd\u60da\u7b0f\u54c4\u5f18\u6c5e\u6cd3\u6d2a\u70d8\u7d05\u8679\u8a0c\u9d3b\u5316\u548c\u5b05\u6a3a\u706b\u7575\ufffd".split(""),e=0;e!=r[251].length;++e)65533!==r[251][e].charCodeAt(0)&&(n[r[251][e]]=64256+e,t[64256+e]=r[251][e]);for(r[252]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u798d\u79be\u82b1\u83ef\u8a71\u8b41\u8ca8\u9774\ufa0b\u64f4\u652b\u78ba\u78bb\u7a6b\u4e38\u559a\u5950\u5ba6\u5e7b\u60a3\u63db\u6b61\u6665\u6853\u6e19\u7165\u74b0\u7d08\u9084\u9a69\u9c25\u6d3b\u6ed1\u733e\u8c41\u95ca\u51f0\u5e4c\u5fa8\u604d\u60f6\u6130\u614c\u6643\u6644\u69a5\u6cc1\u6e5f\u6ec9\u6f62\u714c\u749c\u7687\u7bc1\u7c27\u8352\u8757\u9051\u968d\u9ec3\u532f\u56de\u5efb\u5f8a\u6062\u6094\u61f7\u6666\u6703\u6a9c\u6dee\u6fae\u7070\u736a\u7e6a\u81be\u8334\u86d4\u8aa8\u8cc4\u5283\u7372\u5b96\u6a6b\u9404\u54ee\u5686\u5b5d\u6548\u6585\u66c9\u689f\u6d8d\u6dc6\ufffd".split(""),e=0;e!=r[252].length;++e)65533!==r[252][e].charCodeAt(0)&&(n[r[252][e]]=64512+e,t[64512+e]=r[252][e]);for(r[253]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u723b\u80b4\u9175\u9a4d\u4faf\u5019\u539a\u540e\u543c\u5589\u55c5\u5e3f\u5f8c\u673d\u7166\u73dd\u9005\u52db\u52f3\u5864\u58ce\u7104\u718f\u71fb\u85b0\u8a13\u6688\u85a8\u55a7\u6684\u714a\u8431\u5349\u5599\u6bc1\u5f59\u5fbd\u63ee\u6689\u7147\u8af1\u8f1d\u9ebe\u4f11\u643a\u70cb\u7566\u8667\u6064\u8b4e\u9df8\u5147\u51f6\u5308\u6d36\u80f8\u9ed1\u6615\u6b23\u7098\u75d5\u5403\u5c79\u7d07\u8a16\u6b20\u6b3d\u6b46\u5438\u6070\u6d3d\u7fd5\u8208\u50d6\u51de\u559c\u566b\u56cd\u59ec\u5b09\u5e0c\u6199\u6198\u6231\u665e\u66e6\u7199\u71b9\u71ba\u72a7\u79a7\u7a00\u7fb2\u8a70\ufffd".split(""),e=0;e!=r[253].length;++e)65533!==r[253][e].charCodeAt(0)&&(n[r[253][e]]=64768+e,t[64768+e]=r[253][e]);return{enc:n,dec:t}}(),r[950]=function(){var e,t=[],n={},r=[];for(r[0]="\0\x01\x02\x03\x04\x05\x06\x07\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[0].length;++e)65533!==r[0][e].charCodeAt(0)&&(n[r[0][e]]=0+e,t[0+e]=r[0][e]);for(r[161]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u3000\uff0c\u3001\u3002\uff0e\u2027\uff1b\uff1a\uff1f\uff01\ufe30\u2026\u2025\ufe50\ufe51\ufe52\xb7\ufe54\ufe55\ufe56\ufe57\uff5c\u2013\ufe31\u2014\ufe33\u2574\ufe34\ufe4f\uff08\uff09\ufe35\ufe36\uff5b\uff5d\ufe37\ufe38\u3014\u3015\ufe39\ufe3a\u3010\u3011\ufe3b\ufe3c\u300a\u300b\ufe3d\ufe3e\u3008\u3009\ufe3f\ufe40\u300c\u300d\ufe41\ufe42\u300e\u300f\ufe43\ufe44\ufe59\ufe5a\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufe5b\ufe5c\ufe5d\ufe5e\u2018\u2019\u201c\u201d\u301d\u301e\u2035\u2032\uff03\uff06\uff0a\u203b\xa7\u3003\u25cb\u25cf\u25b3\u25b2\u25ce\u2606\u2605\u25c7\u25c6\u25a1\u25a0\u25bd\u25bc\u32a3\u2105\xaf\uffe3\uff3f\u02cd\ufe49\ufe4a\ufe4d\ufe4e\ufe4b\ufe4c\ufe5f\ufe60\ufe61\uff0b\uff0d\xd7\xf7\xb1\u221a\uff1c\uff1e\uff1d\u2266\u2267\u2260\u221e\u2252\u2261\ufe62\ufe63\ufe64\ufe65\ufe66\uff5e\u2229\u222a\u22a5\u2220\u221f\u22bf\u33d2\u33d1\u222b\u222e\u2235\u2234\u2640\u2642\u2295\u2299\u2191\u2193\u2190\u2192\u2196\u2197\u2199\u2198\u2225\u2223\uff0f\ufffd".split(""),e=0;e!=r[161].length;++e)65533!==r[161][e].charCodeAt(0)&&(n[r[161][e]]=41216+e,t[41216+e]=r[161][e]);for(r[162]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uff3c\u2215\ufe68\uff04\uffe5\u3012\uffe0\uffe1\uff05\uff20\u2103\u2109\ufe69\ufe6a\ufe6b\u33d5\u339c\u339d\u339e\u33ce\u33a1\u338e\u338f\u33c4\xb0\u5159\u515b\u515e\u515d\u5161\u5163\u55e7\u74e9\u7cce\u2581\u2582\u2583\u2584\u2585\u2586\u2587\u2588\u258f\u258e\u258d\u258c\u258b\u258a\u2589\u253c\u2534\u252c\u2524\u251c\u2594\u2500\u2502\u2595\u250c\u2510\u2514\u2518\u256d\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u256e\u2570\u256f\u2550\u255e\u256a\u2561\u25e2\u25e3\u25e5\u25e4\u2571\u2572\u2573\uff10\uff11\uff12\uff13\uff14\uff15\uff16\uff17\uff18\uff19\u2160\u2161\u2162\u2163\u2164\u2165\u2166\u2167\u2168\u2169\u3021\u3022\u3023\u3024\u3025\u3026\u3027\u3028\u3029\u5341\u5344\u5345\uff21\uff22\uff23\uff24\uff25\uff26\uff27\uff28\uff29\uff2a\uff2b\uff2c\uff2d\uff2e\uff2f\uff30\uff31\uff32\uff33\uff34\uff35\uff36\uff37\uff38\uff39\uff3a\uff41\uff42\uff43\uff44\uff45\uff46\uff47\uff48\uff49\uff4a\uff4b\uff4c\uff4d\uff4e\uff4f\uff50\uff51\uff52\uff53\uff54\uff55\uff56\ufffd".split(""),e=0;e!=r[162].length;++e)65533!==r[162][e].charCodeAt(0)&&(n[r[162][e]]=41472+e,t[41472+e]=r[162][e]);for(r[163]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uff57\uff58\uff59\uff5a\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039a\u039b\u039c\u039d\u039e\u039f\u03a0\u03a1\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9\u03b1\u03b2\u03b3\u03b4\u03b5\u03b6\u03b7\u03b8\u03b9\u03ba\u03bb\u03bc\u03bd\u03be\u03bf\u03c0\u03c1\u03c3\u03c4\u03c5\u03c6\u03c7\u03c8\u03c9\u3105\u3106\u3107\u3108\u3109\u310a\u310b\u310c\u310d\u310e\u310f\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u3110\u3111\u3112\u3113\u3114\u3115\u3116\u3117\u3118\u3119\u311a\u311b\u311c\u311d\u311e\u311f\u3120\u3121\u3122\u3123\u3124\u3125\u3126\u3127\u3128\u3129\u02d9\u02c9\u02ca\u02c7\u02cb\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u20ac\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[163].length;++e)65533!==r[163][e].charCodeAt(0)&&(n[r[163][e]]=41728+e,t[41728+e]=r[163][e]);for(r[164]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u4e00\u4e59\u4e01\u4e03\u4e43\u4e5d\u4e86\u4e8c\u4eba\u513f\u5165\u516b\u51e0\u5200\u5201\u529b\u5315\u5341\u535c\u53c8\u4e09\u4e0b\u4e08\u4e0a\u4e2b\u4e38\u51e1\u4e45\u4e48\u4e5f\u4e5e\u4e8e\u4ea1\u5140\u5203\u52fa\u5343\u53c9\u53e3\u571f\u58eb\u5915\u5927\u5973\u5b50\u5b51\u5b53\u5bf8\u5c0f\u5c22\u5c38\u5c71\u5ddd\u5de5\u5df1\u5df2\u5df3\u5dfe\u5e72\u5efe\u5f0b\u5f13\u624d\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u4e11\u4e10\u4e0d\u4e2d\u4e30\u4e39\u4e4b\u5c39\u4e88\u4e91\u4e95\u4e92\u4e94\u4ea2\u4ec1\u4ec0\u4ec3\u4ec6\u4ec7\u4ecd\u4eca\u4ecb\u4ec4\u5143\u5141\u5167\u516d\u516e\u516c\u5197\u51f6\u5206\u5207\u5208\u52fb\u52fe\u52ff\u5316\u5339\u5348\u5347\u5345\u535e\u5384\u53cb\u53ca\u53cd\u58ec\u5929\u592b\u592a\u592d\u5b54\u5c11\u5c24\u5c3a\u5c6f\u5df4\u5e7b\u5eff\u5f14\u5f15\u5fc3\u6208\u6236\u624b\u624e\u652f\u6587\u6597\u65a4\u65b9\u65e5\u66f0\u6708\u6728\u6b20\u6b62\u6b79\u6bcb\u6bd4\u6bdb\u6c0f\u6c34\u706b\u722a\u7236\u723b\u7247\u7259\u725b\u72ac\u738b\u4e19\ufffd".split(""),e=0;e!=r[164].length;++e)65533!==r[164][e].charCodeAt(0)&&(n[r[164][e]]=41984+e,t[41984+e]=r[164][e]);for(r[165]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u4e16\u4e15\u4e14\u4e18\u4e3b\u4e4d\u4e4f\u4e4e\u4ee5\u4ed8\u4ed4\u4ed5\u4ed6\u4ed7\u4ee3\u4ee4\u4ed9\u4ede\u5145\u5144\u5189\u518a\u51ac\u51f9\u51fa\u51f8\u520a\u52a0\u529f\u5305\u5306\u5317\u531d\u4edf\u534a\u5349\u5361\u5360\u536f\u536e\u53bb\u53ef\u53e4\u53f3\u53ec\u53ee\u53e9\u53e8\u53fc\u53f8\u53f5\u53eb\u53e6\u53ea\u53f2\u53f1\u53f0\u53e5\u53ed\u53fb\u56db\u56da\u5916\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u592e\u5931\u5974\u5976\u5b55\u5b83\u5c3c\u5de8\u5de7\u5de6\u5e02\u5e03\u5e73\u5e7c\u5f01\u5f18\u5f17\u5fc5\u620a\u6253\u6254\u6252\u6251\u65a5\u65e6\u672e\u672c\u672a\u672b\u672d\u6b63\u6bcd\u6c11\u6c10\u6c38\u6c41\u6c40\u6c3e\u72af\u7384\u7389\u74dc\u74e6\u7518\u751f\u7528\u7529\u7530\u7531\u7532\u7533\u758b\u767d\u76ae\u76bf\u76ee\u77db\u77e2\u77f3\u793a\u79be\u7a74\u7acb\u4e1e\u4e1f\u4e52\u4e53\u4e69\u4e99\u4ea4\u4ea6\u4ea5\u4eff\u4f09\u4f19\u4f0a\u4f15\u4f0d\u4f10\u4f11\u4f0f\u4ef2\u4ef6\u4efb\u4ef0\u4ef3\u4efd\u4f01\u4f0b\u5149\u5147\u5146\u5148\u5168\ufffd".split(""),e=0;e!=r[165].length;++e)65533!==r[165][e].charCodeAt(0)&&(n[r[165][e]]=42240+e,t[42240+e]=r[165][e]);for(r[166]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5171\u518d\u51b0\u5217\u5211\u5212\u520e\u5216\u52a3\u5308\u5321\u5320\u5370\u5371\u5409\u540f\u540c\u540a\u5410\u5401\u540b\u5404\u5411\u540d\u5408\u5403\u540e\u5406\u5412\u56e0\u56de\u56dd\u5733\u5730\u5728\u572d\u572c\u572f\u5729\u5919\u591a\u5937\u5938\u5984\u5978\u5983\u597d\u5979\u5982\u5981\u5b57\u5b58\u5b87\u5b88\u5b85\u5b89\u5bfa\u5c16\u5c79\u5dde\u5e06\u5e76\u5e74\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5f0f\u5f1b\u5fd9\u5fd6\u620e\u620c\u620d\u6210\u6263\u625b\u6258\u6536\u65e9\u65e8\u65ec\u65ed\u66f2\u66f3\u6709\u673d\u6734\u6731\u6735\u6b21\u6b64\u6b7b\u6c16\u6c5d\u6c57\u6c59\u6c5f\u6c60\u6c50\u6c55\u6c61\u6c5b\u6c4d\u6c4e\u7070\u725f\u725d\u767e\u7af9\u7c73\u7cf8\u7f36\u7f8a\u7fbd\u8001\u8003\u800c\u8012\u8033\u807f\u8089\u808b\u808c\u81e3\u81ea\u81f3\u81fc\u820c\u821b\u821f\u826e\u8272\u827e\u866b\u8840\u884c\u8863\u897f\u9621\u4e32\u4ea8\u4f4d\u4f4f\u4f47\u4f57\u4f5e\u4f34\u4f5b\u4f55\u4f30\u4f50\u4f51\u4f3d\u4f3a\u4f38\u4f43\u4f54\u4f3c\u4f46\u4f63\ufffd".split(""),e=0;e!=r[166].length;++e)65533!==r[166][e].charCodeAt(0)&&(n[r[166][e]]=42496+e,t[42496+e]=r[166][e]);for(r[167]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u4f5c\u4f60\u4f2f\u4f4e\u4f36\u4f59\u4f5d\u4f48\u4f5a\u514c\u514b\u514d\u5175\u51b6\u51b7\u5225\u5224\u5229\u522a\u5228\u52ab\u52a9\u52aa\u52ac\u5323\u5373\u5375\u541d\u542d\u541e\u543e\u5426\u544e\u5427\u5446\u5443\u5433\u5448\u5442\u541b\u5429\u544a\u5439\u543b\u5438\u542e\u5435\u5436\u5420\u543c\u5440\u5431\u542b\u541f\u542c\u56ea\u56f0\u56e4\u56eb\u574a\u5751\u5740\u574d\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5747\u574e\u573e\u5750\u574f\u573b\u58ef\u593e\u599d\u5992\u59a8\u599e\u59a3\u5999\u5996\u598d\u59a4\u5993\u598a\u59a5\u5b5d\u5b5c\u5b5a\u5b5b\u5b8c\u5b8b\u5b8f\u5c2c\u5c40\u5c41\u5c3f\u5c3e\u5c90\u5c91\u5c94\u5c8c\u5deb\u5e0c\u5e8f\u5e87\u5e8a\u5ef7\u5f04\u5f1f\u5f64\u5f62\u5f77\u5f79\u5fd8\u5fcc\u5fd7\u5fcd\u5ff1\u5feb\u5ff8\u5fea\u6212\u6211\u6284\u6297\u6296\u6280\u6276\u6289\u626d\u628a\u627c\u627e\u6279\u6273\u6292\u626f\u6298\u626e\u6295\u6293\u6291\u6286\u6539\u653b\u6538\u65f1\u66f4\u675f\u674e\u674f\u6750\u6751\u675c\u6756\u675e\u6749\u6746\u6760\ufffd".split(""),e=0;e!=r[167].length;++e)65533!==r[167][e].charCodeAt(0)&&(n[r[167][e]]=42752+e,t[42752+e]=r[167][e]);for(r[168]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6753\u6757\u6b65\u6bcf\u6c42\u6c5e\u6c99\u6c81\u6c88\u6c89\u6c85\u6c9b\u6c6a\u6c7a\u6c90\u6c70\u6c8c\u6c68\u6c96\u6c92\u6c7d\u6c83\u6c72\u6c7e\u6c74\u6c86\u6c76\u6c8d\u6c94\u6c98\u6c82\u7076\u707c\u707d\u7078\u7262\u7261\u7260\u72c4\u72c2\u7396\u752c\u752b\u7537\u7538\u7682\u76ef\u77e3\u79c1\u79c0\u79bf\u7a76\u7cfb\u7f55\u8096\u8093\u809d\u8098\u809b\u809a\u80b2\u826f\u8292\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u828b\u828d\u898b\u89d2\u8a00\u8c37\u8c46\u8c55\u8c9d\u8d64\u8d70\u8db3\u8eab\u8eca\u8f9b\u8fb0\u8fc2\u8fc6\u8fc5\u8fc4\u5de1\u9091\u90a2\u90aa\u90a6\u90a3\u9149\u91c6\u91cc\u9632\u962e\u9631\u962a\u962c\u4e26\u4e56\u4e73\u4e8b\u4e9b\u4e9e\u4eab\u4eac\u4f6f\u4f9d\u4f8d\u4f73\u4f7f\u4f6c\u4f9b\u4f8b\u4f86\u4f83\u4f70\u4f75\u4f88\u4f69\u4f7b\u4f96\u4f7e\u4f8f\u4f91\u4f7a\u5154\u5152\u5155\u5169\u5177\u5176\u5178\u51bd\u51fd\u523b\u5238\u5237\u523a\u5230\u522e\u5236\u5241\u52be\u52bb\u5352\u5354\u5353\u5351\u5366\u5377\u5378\u5379\u53d6\u53d4\u53d7\u5473\u5475\ufffd".split(""),e=0;e!=r[168].length;++e)65533!==r[168][e].charCodeAt(0)&&(n[r[168][e]]=43008+e,t[43008+e]=r[168][e]);for(r[169]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5496\u5478\u5495\u5480\u547b\u5477\u5484\u5492\u5486\u547c\u5490\u5471\u5476\u548c\u549a\u5462\u5468\u548b\u547d\u548e\u56fa\u5783\u5777\u576a\u5769\u5761\u5766\u5764\u577c\u591c\u5949\u5947\u5948\u5944\u5954\u59be\u59bb\u59d4\u59b9\u59ae\u59d1\u59c6\u59d0\u59cd\u59cb\u59d3\u59ca\u59af\u59b3\u59d2\u59c5\u5b5f\u5b64\u5b63\u5b97\u5b9a\u5b98\u5b9c\u5b99\u5b9b\u5c1a\u5c48\u5c45\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5c46\u5cb7\u5ca1\u5cb8\u5ca9\u5cab\u5cb1\u5cb3\u5e18\u5e1a\u5e16\u5e15\u5e1b\u5e11\u5e78\u5e9a\u5e97\u5e9c\u5e95\u5e96\u5ef6\u5f26\u5f27\u5f29\u5f80\u5f81\u5f7f\u5f7c\u5fdd\u5fe0\u5ffd\u5ff5\u5fff\u600f\u6014\u602f\u6035\u6016\u602a\u6015\u6021\u6027\u6029\u602b\u601b\u6216\u6215\u623f\u623e\u6240\u627f\u62c9\u62cc\u62c4\u62bf\u62c2\u62b9\u62d2\u62db\u62ab\u62d3\u62d4\u62cb\u62c8\u62a8\u62bd\u62bc\u62d0\u62d9\u62c7\u62cd\u62b5\u62da\u62b1\u62d8\u62d6\u62d7\u62c6\u62ac\u62ce\u653e\u65a7\u65bc\u65fa\u6614\u6613\u660c\u6606\u6602\u660e\u6600\u660f\u6615\u660a\ufffd".split(""),e=0;e!=r[169].length;++e)65533!==r[169][e].charCodeAt(0)&&(n[r[169][e]]=43264+e,t[43264+e]=r[169][e]);for(r[170]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6607\u670d\u670b\u676d\u678b\u6795\u6771\u679c\u6773\u6777\u6787\u679d\u6797\u676f\u6770\u677f\u6789\u677e\u6790\u6775\u679a\u6793\u677c\u676a\u6772\u6b23\u6b66\u6b67\u6b7f\u6c13\u6c1b\u6ce3\u6ce8\u6cf3\u6cb1\u6ccc\u6ce5\u6cb3\u6cbd\u6cbe\u6cbc\u6ce2\u6cab\u6cd5\u6cd3\u6cb8\u6cc4\u6cb9\u6cc1\u6cae\u6cd7\u6cc5\u6cf1\u6cbf\u6cbb\u6ce1\u6cdb\u6cca\u6cac\u6cef\u6cdc\u6cd6\u6ce0\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7095\u708e\u7092\u708a\u7099\u722c\u722d\u7238\u7248\u7267\u7269\u72c0\u72ce\u72d9\u72d7\u72d0\u73a9\u73a8\u739f\u73ab\u73a5\u753d\u759d\u7599\u759a\u7684\u76c2\u76f2\u76f4\u77e5\u77fd\u793e\u7940\u7941\u79c9\u79c8\u7a7a\u7a79\u7afa\u7cfe\u7f54\u7f8c\u7f8b\u8005\u80ba\u80a5\u80a2\u80b1\u80a1\u80ab\u80a9\u80b4\u80aa\u80af\u81e5\u81fe\u820d\u82b3\u829d\u8299\u82ad\u82bd\u829f\u82b9\u82b1\u82ac\u82a5\u82af\u82b8\u82a3\u82b0\u82be\u82b7\u864e\u8671\u521d\u8868\u8ecb\u8fce\u8fd4\u8fd1\u90b5\u90b8\u90b1\u90b6\u91c7\u91d1\u9577\u9580\u961c\u9640\u963f\u963b\u9644\ufffd".split(""),e=0;e!=r[170].length;++e)65533!==r[170][e].charCodeAt(0)&&(n[r[170][e]]=43520+e,t[43520+e]=r[170][e]);for(r[171]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9642\u96b9\u96e8\u9752\u975e\u4e9f\u4ead\u4eae\u4fe1\u4fb5\u4faf\u4fbf\u4fe0\u4fd1\u4fcf\u4fdd\u4fc3\u4fb6\u4fd8\u4fdf\u4fca\u4fd7\u4fae\u4fd0\u4fc4\u4fc2\u4fda\u4fce\u4fde\u4fb7\u5157\u5192\u5191\u51a0\u524e\u5243\u524a\u524d\u524c\u524b\u5247\u52c7\u52c9\u52c3\u52c1\u530d\u5357\u537b\u539a\u53db\u54ac\u54c0\u54a8\u54ce\u54c9\u54b8\u54a6\u54b3\u54c7\u54c2\u54bd\u54aa\u54c1\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u54c4\u54c8\u54af\u54ab\u54b1\u54bb\u54a9\u54a7\u54bf\u56ff\u5782\u578b\u57a0\u57a3\u57a2\u57ce\u57ae\u5793\u5955\u5951\u594f\u594e\u5950\u59dc\u59d8\u59ff\u59e3\u59e8\u5a03\u59e5\u59ea\u59da\u59e6\u5a01\u59fb\u5b69\u5ba3\u5ba6\u5ba4\u5ba2\u5ba5\u5c01\u5c4e\u5c4f\u5c4d\u5c4b\u5cd9\u5cd2\u5df7\u5e1d\u5e25\u5e1f\u5e7d\u5ea0\u5ea6\u5efa\u5f08\u5f2d\u5f65\u5f88\u5f85\u5f8a\u5f8b\u5f87\u5f8c\u5f89\u6012\u601d\u6020\u6025\u600e\u6028\u604d\u6070\u6068\u6062\u6046\u6043\u606c\u606b\u606a\u6064\u6241\u62dc\u6316\u6309\u62fc\u62ed\u6301\u62ee\u62fd\u6307\u62f1\u62f7\ufffd".split(""),e=0;e!=r[171].length;++e)65533!==r[171][e].charCodeAt(0)&&(n[r[171][e]]=43776+e,t[43776+e]=r[171][e]);for(r[172]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u62ef\u62ec\u62fe\u62f4\u6311\u6302\u653f\u6545\u65ab\u65bd\u65e2\u6625\u662d\u6620\u6627\u662f\u661f\u6628\u6631\u6624\u66f7\u67ff\u67d3\u67f1\u67d4\u67d0\u67ec\u67b6\u67af\u67f5\u67e9\u67ef\u67c4\u67d1\u67b4\u67da\u67e5\u67b8\u67cf\u67de\u67f3\u67b0\u67d9\u67e2\u67dd\u67d2\u6b6a\u6b83\u6b86\u6bb5\u6bd2\u6bd7\u6c1f\u6cc9\u6d0b\u6d32\u6d2a\u6d41\u6d25\u6d0c\u6d31\u6d1e\u6d17\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6d3b\u6d3d\u6d3e\u6d36\u6d1b\u6cf5\u6d39\u6d27\u6d38\u6d29\u6d2e\u6d35\u6d0e\u6d2b\u70ab\u70ba\u70b3\u70ac\u70af\u70ad\u70b8\u70ae\u70a4\u7230\u7272\u726f\u7274\u72e9\u72e0\u72e1\u73b7\u73ca\u73bb\u73b2\u73cd\u73c0\u73b3\u751a\u752d\u754f\u754c\u754e\u754b\u75ab\u75a4\u75a5\u75a2\u75a3\u7678\u7686\u7687\u7688\u76c8\u76c6\u76c3\u76c5\u7701\u76f9\u76f8\u7709\u770b\u76fe\u76fc\u7707\u77dc\u7802\u7814\u780c\u780d\u7946\u7949\u7948\u7947\u79b9\u79ba\u79d1\u79d2\u79cb\u7a7f\u7a81\u7aff\u7afd\u7c7d\u7d02\u7d05\u7d00\u7d09\u7d07\u7d04\u7d06\u7f38\u7f8e\u7fbf\u8004\ufffd".split(""),e=0;e!=r[172].length;++e)65533!==r[172][e].charCodeAt(0)&&(n[r[172][e]]=44032+e,t[44032+e]=r[172][e]);for(r[173]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8010\u800d\u8011\u8036\u80d6\u80e5\u80da\u80c3\u80c4\u80cc\u80e1\u80db\u80ce\u80de\u80e4\u80dd\u81f4\u8222\u82e7\u8303\u8305\u82e3\u82db\u82e6\u8304\u82e5\u8302\u8309\u82d2\u82d7\u82f1\u8301\u82dc\u82d4\u82d1\u82de\u82d3\u82df\u82ef\u8306\u8650\u8679\u867b\u867a\u884d\u886b\u8981\u89d4\u8a08\u8a02\u8a03\u8c9e\u8ca0\u8d74\u8d73\u8db4\u8ecd\u8ecc\u8ff0\u8fe6\u8fe2\u8fea\u8fe5\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8fed\u8feb\u8fe4\u8fe8\u90ca\u90ce\u90c1\u90c3\u914b\u914a\u91cd\u9582\u9650\u964b\u964c\u964d\u9762\u9769\u97cb\u97ed\u97f3\u9801\u98a8\u98db\u98df\u9996\u9999\u4e58\u4eb3\u500c\u500d\u5023\u4fef\u5026\u5025\u4ff8\u5029\u5016\u5006\u503c\u501f\u501a\u5012\u5011\u4ffa\u5000\u5014\u5028\u4ff1\u5021\u500b\u5019\u5018\u4ff3\u4fee\u502d\u502a\u4ffe\u502b\u5009\u517c\u51a4\u51a5\u51a2\u51cd\u51cc\u51c6\u51cb\u5256\u525c\u5254\u525b\u525d\u532a\u537f\u539f\u539d\u53df\u54e8\u5510\u5501\u5537\u54fc\u54e5\u54f2\u5506\u54fa\u5514\u54e9\u54ed\u54e1\u5509\u54ee\u54ea\ufffd".split(""),e=0;e!=r[173].length;++e)65533!==r[173][e].charCodeAt(0)&&(n[r[173][e]]=44288+e,t[44288+e]=r[173][e]);for(r[174]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u54e6\u5527\u5507\u54fd\u550f\u5703\u5704\u57c2\u57d4\u57cb\u57c3\u5809\u590f\u5957\u5958\u595a\u5a11\u5a18\u5a1c\u5a1f\u5a1b\u5a13\u59ec\u5a20\u5a23\u5a29\u5a25\u5a0c\u5a09\u5b6b\u5c58\u5bb0\u5bb3\u5bb6\u5bb4\u5bae\u5bb5\u5bb9\u5bb8\u5c04\u5c51\u5c55\u5c50\u5ced\u5cfd\u5cfb\u5cea\u5ce8\u5cf0\u5cf6\u5d01\u5cf4\u5dee\u5e2d\u5e2b\u5eab\u5ead\u5ea7\u5f31\u5f92\u5f91\u5f90\u6059\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6063\u6065\u6050\u6055\u606d\u6069\u606f\u6084\u609f\u609a\u608d\u6094\u608c\u6085\u6096\u6247\u62f3\u6308\u62ff\u634e\u633e\u632f\u6355\u6342\u6346\u634f\u6349\u633a\u6350\u633d\u632a\u632b\u6328\u634d\u634c\u6548\u6549\u6599\u65c1\u65c5\u6642\u6649\u664f\u6643\u6652\u664c\u6645\u6641\u66f8\u6714\u6715\u6717\u6821\u6838\u6848\u6846\u6853\u6839\u6842\u6854\u6829\u68b3\u6817\u684c\u6851\u683d\u67f4\u6850\u6840\u683c\u6843\u682a\u6845\u6813\u6818\u6841\u6b8a\u6b89\u6bb7\u6c23\u6c27\u6c28\u6c26\u6c24\u6cf0\u6d6a\u6d95\u6d88\u6d87\u6d66\u6d78\u6d77\u6d59\u6d93\ufffd".split(""),e=0;e!=r[174].length;++e)65533!==r[174][e].charCodeAt(0)&&(n[r[174][e]]=44544+e,t[44544+e]=r[174][e]);for(r[175]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6d6c\u6d89\u6d6e\u6d5a\u6d74\u6d69\u6d8c\u6d8a\u6d79\u6d85\u6d65\u6d94\u70ca\u70d8\u70e4\u70d9\u70c8\u70cf\u7239\u7279\u72fc\u72f9\u72fd\u72f8\u72f7\u7386\u73ed\u7409\u73ee\u73e0\u73ea\u73de\u7554\u755d\u755c\u755a\u7559\u75be\u75c5\u75c7\u75b2\u75b3\u75bd\u75bc\u75b9\u75c2\u75b8\u768b\u76b0\u76ca\u76cd\u76ce\u7729\u771f\u7720\u7728\u77e9\u7830\u7827\u7838\u781d\u7834\u7837\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7825\u782d\u7820\u781f\u7832\u7955\u7950\u7960\u795f\u7956\u795e\u795d\u7957\u795a\u79e4\u79e3\u79e7\u79df\u79e6\u79e9\u79d8\u7a84\u7a88\u7ad9\u7b06\u7b11\u7c89\u7d21\u7d17\u7d0b\u7d0a\u7d20\u7d22\u7d14\u7d10\u7d15\u7d1a\u7d1c\u7d0d\u7d19\u7d1b\u7f3a\u7f5f\u7f94\u7fc5\u7fc1\u8006\u8018\u8015\u8019\u8017\u803d\u803f\u80f1\u8102\u80f0\u8105\u80ed\u80f4\u8106\u80f8\u80f3\u8108\u80fd\u810a\u80fc\u80ef\u81ed\u81ec\u8200\u8210\u822a\u822b\u8228\u822c\u82bb\u832b\u8352\u8354\u834a\u8338\u8350\u8349\u8335\u8334\u834f\u8332\u8339\u8336\u8317\u8340\u8331\u8328\u8343\ufffd".split(""),e=0;e!=r[175].length;++e)65533!==r[175][e].charCodeAt(0)&&(n[r[175][e]]=44800+e,t[44800+e]=r[175][e]);for(r[176]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8654\u868a\u86aa\u8693\u86a4\u86a9\u868c\u86a3\u869c\u8870\u8877\u8881\u8882\u887d\u8879\u8a18\u8a10\u8a0e\u8a0c\u8a15\u8a0a\u8a17\u8a13\u8a16\u8a0f\u8a11\u8c48\u8c7a\u8c79\u8ca1\u8ca2\u8d77\u8eac\u8ed2\u8ed4\u8ecf\u8fb1\u9001\u9006\u8ff7\u9000\u8ffa\u8ff4\u9003\u8ffd\u9005\u8ff8\u9095\u90e1\u90dd\u90e2\u9152\u914d\u914c\u91d8\u91dd\u91d7\u91dc\u91d9\u9583\u9662\u9663\u9661\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u965b\u965d\u9664\u9658\u965e\u96bb\u98e2\u99ac\u9aa8\u9ad8\u9b25\u9b32\u9b3c\u4e7e\u507a\u507d\u505c\u5047\u5043\u504c\u505a\u5049\u5065\u5076\u504e\u5055\u5075\u5074\u5077\u504f\u500f\u506f\u506d\u515c\u5195\u51f0\u526a\u526f\u52d2\u52d9\u52d8\u52d5\u5310\u530f\u5319\u533f\u5340\u533e\u53c3\u66fc\u5546\u556a\u5566\u5544\u555e\u5561\u5543\u554a\u5531\u5556\u554f\u5555\u552f\u5564\u5538\u552e\u555c\u552c\u5563\u5533\u5541\u5557\u5708\u570b\u5709\u57df\u5805\u580a\u5806\u57e0\u57e4\u57fa\u5802\u5835\u57f7\u57f9\u5920\u5962\u5a36\u5a41\u5a49\u5a66\u5a6a\u5a40\ufffd".split(""),e=0;e!=r[176].length;++e)65533!==r[176][e].charCodeAt(0)&&(n[r[176][e]]=45056+e,t[45056+e]=r[176][e]);for(r[177]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5a3c\u5a62\u5a5a\u5a46\u5a4a\u5b70\u5bc7\u5bc5\u5bc4\u5bc2\u5bbf\u5bc6\u5c09\u5c08\u5c07\u5c60\u5c5c\u5c5d\u5d07\u5d06\u5d0e\u5d1b\u5d16\u5d22\u5d11\u5d29\u5d14\u5d19\u5d24\u5d27\u5d17\u5de2\u5e38\u5e36\u5e33\u5e37\u5eb7\u5eb8\u5eb6\u5eb5\u5ebe\u5f35\u5f37\u5f57\u5f6c\u5f69\u5f6b\u5f97\u5f99\u5f9e\u5f98\u5fa1\u5fa0\u5f9c\u607f\u60a3\u6089\u60a0\u60a8\u60cb\u60b4\u60e6\u60bd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u60c5\u60bb\u60b5\u60dc\u60bc\u60d8\u60d5\u60c6\u60df\u60b8\u60da\u60c7\u621a\u621b\u6248\u63a0\u63a7\u6372\u6396\u63a2\u63a5\u6377\u6367\u6398\u63aa\u6371\u63a9\u6389\u6383\u639b\u636b\u63a8\u6384\u6388\u6399\u63a1\u63ac\u6392\u638f\u6380\u637b\u6369\u6368\u637a\u655d\u6556\u6551\u6559\u6557\u555f\u654f\u6558\u6555\u6554\u659c\u659b\u65ac\u65cf\u65cb\u65cc\u65ce\u665d\u665a\u6664\u6668\u6666\u665e\u66f9\u52d7\u671b\u6881\u68af\u68a2\u6893\u68b5\u687f\u6876\u68b1\u68a7\u6897\u68b0\u6883\u68c4\u68ad\u6886\u6885\u6894\u689d\u68a8\u689f\u68a1\u6882\u6b32\u6bba\ufffd".split(""),e=0;e!=r[177].length;++e)65533!==r[177][e].charCodeAt(0)&&(n[r[177][e]]=45312+e,t[45312+e]=r[177][e]);for(r[178]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6beb\u6bec\u6c2b\u6d8e\u6dbc\u6df3\u6dd9\u6db2\u6de1\u6dcc\u6de4\u6dfb\u6dfa\u6e05\u6dc7\u6dcb\u6daf\u6dd1\u6dae\u6dde\u6df9\u6db8\u6df7\u6df5\u6dc5\u6dd2\u6e1a\u6db5\u6dda\u6deb\u6dd8\u6dea\u6df1\u6dee\u6de8\u6dc6\u6dc4\u6daa\u6dec\u6dbf\u6de6\u70f9\u7109\u710a\u70fd\u70ef\u723d\u727d\u7281\u731c\u731b\u7316\u7313\u7319\u7387\u7405\u740a\u7403\u7406\u73fe\u740d\u74e0\u74f6\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u74f7\u751c\u7522\u7565\u7566\u7562\u7570\u758f\u75d4\u75d5\u75b5\u75ca\u75cd\u768e\u76d4\u76d2\u76db\u7737\u773e\u773c\u7736\u7738\u773a\u786b\u7843\u784e\u7965\u7968\u796d\u79fb\u7a92\u7a95\u7b20\u7b28\u7b1b\u7b2c\u7b26\u7b19\u7b1e\u7b2e\u7c92\u7c97\u7c95\u7d46\u7d43\u7d71\u7d2e\u7d39\u7d3c\u7d40\u7d30\u7d33\u7d44\u7d2f\u7d42\u7d32\u7d31\u7f3d\u7f9e\u7f9a\u7fcc\u7fce\u7fd2\u801c\u804a\u8046\u812f\u8116\u8123\u812b\u8129\u8130\u8124\u8202\u8235\u8237\u8236\u8239\u838e\u839e\u8398\u8378\u83a2\u8396\u83bd\u83ab\u8392\u838a\u8393\u8389\u83a0\u8377\u837b\u837c\ufffd".split(""),e=0;e!=r[178].length;++e)65533!==r[178][e].charCodeAt(0)&&(n[r[178][e]]=45568+e,t[45568+e]=r[178][e]);for(r[179]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8386\u83a7\u8655\u5f6a\u86c7\u86c0\u86b6\u86c4\u86b5\u86c6\u86cb\u86b1\u86af\u86c9\u8853\u889e\u8888\u88ab\u8892\u8896\u888d\u888b\u8993\u898f\u8a2a\u8a1d\u8a23\u8a25\u8a31\u8a2d\u8a1f\u8a1b\u8a22\u8c49\u8c5a\u8ca9\u8cac\u8cab\u8ca8\u8caa\u8ca7\u8d67\u8d66\u8dbe\u8dba\u8edb\u8edf\u9019\u900d\u901a\u9017\u9023\u901f\u901d\u9010\u9015\u901e\u9020\u900f\u9022\u9016\u901b\u9014\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u90e8\u90ed\u90fd\u9157\u91ce\u91f5\u91e6\u91e3\u91e7\u91ed\u91e9\u9589\u966a\u9675\u9673\u9678\u9670\u9674\u9676\u9677\u966c\u96c0\u96ea\u96e9\u7ae0\u7adf\u9802\u9803\u9b5a\u9ce5\u9e75\u9e7f\u9ea5\u9ebb\u50a2\u508d\u5085\u5099\u5091\u5080\u5096\u5098\u509a\u6700\u51f1\u5272\u5274\u5275\u5269\u52de\u52dd\u52db\u535a\u53a5\u557b\u5580\u55a7\u557c\u558a\u559d\u5598\u5582\u559c\u55aa\u5594\u5587\u558b\u5583\u55b3\u55ae\u559f\u553e\u55b2\u559a\u55bb\u55ac\u55b1\u557e\u5589\u55ab\u5599\u570d\u582f\u582a\u5834\u5824\u5830\u5831\u5821\u581d\u5820\u58f9\u58fa\u5960\ufffd".split(""),e=0;e!=r[179].length;++e)65533!==r[179][e].charCodeAt(0)&&(n[r[179][e]]=45824+e,t[45824+e]=r[179][e]);for(r[180]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5a77\u5a9a\u5a7f\u5a92\u5a9b\u5aa7\u5b73\u5b71\u5bd2\u5bcc\u5bd3\u5bd0\u5c0a\u5c0b\u5c31\u5d4c\u5d50\u5d34\u5d47\u5dfd\u5e45\u5e3d\u5e40\u5e43\u5e7e\u5eca\u5ec1\u5ec2\u5ec4\u5f3c\u5f6d\u5fa9\u5faa\u5fa8\u60d1\u60e1\u60b2\u60b6\u60e0\u611c\u6123\u60fa\u6115\u60f0\u60fb\u60f4\u6168\u60f1\u610e\u60f6\u6109\u6100\u6112\u621f\u6249\u63a3\u638c\u63cf\u63c0\u63e9\u63c9\u63c6\u63cd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u63d2\u63e3\u63d0\u63e1\u63d6\u63ed\u63ee\u6376\u63f4\u63ea\u63db\u6452\u63da\u63f9\u655e\u6566\u6562\u6563\u6591\u6590\u65af\u666e\u6670\u6674\u6676\u666f\u6691\u667a\u667e\u6677\u66fe\u66ff\u671f\u671d\u68fa\u68d5\u68e0\u68d8\u68d7\u6905\u68df\u68f5\u68ee\u68e7\u68f9\u68d2\u68f2\u68e3\u68cb\u68cd\u690d\u6912\u690e\u68c9\u68da\u696e\u68fb\u6b3e\u6b3a\u6b3d\u6b98\u6b96\u6bbc\u6bef\u6c2e\u6c2f\u6c2c\u6e2f\u6e38\u6e54\u6e21\u6e32\u6e67\u6e4a\u6e20\u6e25\u6e23\u6e1b\u6e5b\u6e58\u6e24\u6e56\u6e6e\u6e2d\u6e26\u6e6f\u6e34\u6e4d\u6e3a\u6e2c\u6e43\u6e1d\u6e3e\u6ecb\ufffd".split(""),e=0;e!=r[180].length;++e)65533!==r[180][e].charCodeAt(0)&&(n[r[180][e]]=46080+e,t[46080+e]=r[180][e]);for(r[181]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6e89\u6e19\u6e4e\u6e63\u6e44\u6e72\u6e69\u6e5f\u7119\u711a\u7126\u7130\u7121\u7136\u716e\u711c\u724c\u7284\u7280\u7336\u7325\u7334\u7329\u743a\u742a\u7433\u7422\u7425\u7435\u7436\u7434\u742f\u741b\u7426\u7428\u7525\u7526\u756b\u756a\u75e2\u75db\u75e3\u75d9\u75d8\u75de\u75e0\u767b\u767c\u7696\u7693\u76b4\u76dc\u774f\u77ed\u785d\u786c\u786f\u7a0d\u7a08\u7a0b\u7a05\u7a00\u7a98\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7a97\u7a96\u7ae5\u7ae3\u7b49\u7b56\u7b46\u7b50\u7b52\u7b54\u7b4d\u7b4b\u7b4f\u7b51\u7c9f\u7ca5\u7d5e\u7d50\u7d68\u7d55\u7d2b\u7d6e\u7d72\u7d61\u7d66\u7d62\u7d70\u7d73\u5584\u7fd4\u7fd5\u800b\u8052\u8085\u8155\u8154\u814b\u8151\u814e\u8139\u8146\u813e\u814c\u8153\u8174\u8212\u821c\u83e9\u8403\u83f8\u840d\u83e0\u83c5\u840b\u83c1\u83ef\u83f1\u83f4\u8457\u840a\u83f0\u840c\u83cc\u83fd\u83f2\u83ca\u8438\u840e\u8404\u83dc\u8407\u83d4\u83df\u865b\u86df\u86d9\u86ed\u86d4\u86db\u86e4\u86d0\u86de\u8857\u88c1\u88c2\u88b1\u8983\u8996\u8a3b\u8a60\u8a55\u8a5e\u8a3c\u8a41\ufffd".split(""),e=0;e!=r[181].length;++e)65533!==r[181][e].charCodeAt(0)&&(n[r[181][e]]=46336+e,t[46336+e]=r[181][e]);for(r[182]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8a54\u8a5b\u8a50\u8a46\u8a34\u8a3a\u8a36\u8a56\u8c61\u8c82\u8caf\u8cbc\u8cb3\u8cbd\u8cc1\u8cbb\u8cc0\u8cb4\u8cb7\u8cb6\u8cbf\u8cb8\u8d8a\u8d85\u8d81\u8dce\u8ddd\u8dcb\u8dda\u8dd1\u8dcc\u8ddb\u8dc6\u8efb\u8ef8\u8efc\u8f9c\u902e\u9035\u9031\u9038\u9032\u9036\u9102\u90f5\u9109\u90fe\u9163\u9165\u91cf\u9214\u9215\u9223\u9209\u921e\u920d\u9210\u9207\u9211\u9594\u958f\u958b\u9591\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9593\u9592\u958e\u968a\u968e\u968b\u967d\u9685\u9686\u968d\u9672\u9684\u96c1\u96c5\u96c4\u96c6\u96c7\u96ef\u96f2\u97cc\u9805\u9806\u9808\u98e7\u98ea\u98ef\u98e9\u98f2\u98ed\u99ae\u99ad\u9ec3\u9ecd\u9ed1\u4e82\u50ad\u50b5\u50b2\u50b3\u50c5\u50be\u50ac\u50b7\u50bb\u50af\u50c7\u527f\u5277\u527d\u52df\u52e6\u52e4\u52e2\u52e3\u532f\u55df\u55e8\u55d3\u55e6\u55ce\u55dc\u55c7\u55d1\u55e3\u55e4\u55ef\u55da\u55e1\u55c5\u55c6\u55e5\u55c9\u5712\u5713\u585e\u5851\u5858\u5857\u585a\u5854\u586b\u584c\u586d\u584a\u5862\u5852\u584b\u5967\u5ac1\u5ac9\u5acc\u5abe\u5abd\u5abc\ufffd".split(""),e=0;e!=r[182].length;++e)65533!==r[182][e].charCodeAt(0)&&(n[r[182][e]]=46592+e,t[46592+e]=r[182][e]);for(r[183]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5ab3\u5ac2\u5ab2\u5d69\u5d6f\u5e4c\u5e79\u5ec9\u5ec8\u5f12\u5f59\u5fac\u5fae\u611a\u610f\u6148\u611f\u60f3\u611b\u60f9\u6101\u6108\u614e\u614c\u6144\u614d\u613e\u6134\u6127\u610d\u6106\u6137\u6221\u6222\u6413\u643e\u641e\u642a\u642d\u643d\u642c\u640f\u641c\u6414\u640d\u6436\u6416\u6417\u6406\u656c\u659f\u65b0\u6697\u6689\u6687\u6688\u6696\u6684\u6698\u668d\u6703\u6994\u696d\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u695a\u6977\u6960\u6954\u6975\u6930\u6982\u694a\u6968\u696b\u695e\u6953\u6979\u6986\u695d\u6963\u695b\u6b47\u6b72\u6bc0\u6bbf\u6bd3\u6bfd\u6ea2\u6eaf\u6ed3\u6eb6\u6ec2\u6e90\u6e9d\u6ec7\u6ec5\u6ea5\u6e98\u6ebc\u6eba\u6eab\u6ed1\u6e96\u6e9c\u6ec4\u6ed4\u6eaa\u6ea7\u6eb4\u714e\u7159\u7169\u7164\u7149\u7167\u715c\u716c\u7166\u714c\u7165\u715e\u7146\u7168\u7156\u723a\u7252\u7337\u7345\u733f\u733e\u746f\u745a\u7455\u745f\u745e\u7441\u743f\u7459\u745b\u745c\u7576\u7578\u7600\u75f0\u7601\u75f2\u75f1\u75fa\u75ff\u75f4\u75f3\u76de\u76df\u775b\u776b\u7766\u775e\u7763\ufffd".split(""),e=0;e!=r[183].length;++e)65533!==r[183][e].charCodeAt(0)&&(n[r[183][e]]=46848+e,t[46848+e]=r[183][e]);for(r[184]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7779\u776a\u776c\u775c\u7765\u7768\u7762\u77ee\u788e\u78b0\u7897\u7898\u788c\u7889\u787c\u7891\u7893\u787f\u797a\u797f\u7981\u842c\u79bd\u7a1c\u7a1a\u7a20\u7a14\u7a1f\u7a1e\u7a9f\u7aa0\u7b77\u7bc0\u7b60\u7b6e\u7b67\u7cb1\u7cb3\u7cb5\u7d93\u7d79\u7d91\u7d81\u7d8f\u7d5b\u7f6e\u7f69\u7f6a\u7f72\u7fa9\u7fa8\u7fa4\u8056\u8058\u8086\u8084\u8171\u8170\u8178\u8165\u816e\u8173\u816b\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8179\u817a\u8166\u8205\u8247\u8482\u8477\u843d\u8431\u8475\u8466\u846b\u8449\u846c\u845b\u843c\u8435\u8461\u8463\u8469\u846d\u8446\u865e\u865c\u865f\u86f9\u8713\u8708\u8707\u8700\u86fe\u86fb\u8702\u8703\u8706\u870a\u8859\u88df\u88d4\u88d9\u88dc\u88d8\u88dd\u88e1\u88ca\u88d5\u88d2\u899c\u89e3\u8a6b\u8a72\u8a73\u8a66\u8a69\u8a70\u8a87\u8a7c\u8a63\u8aa0\u8a71\u8a85\u8a6d\u8a62\u8a6e\u8a6c\u8a79\u8a7b\u8a3e\u8a68\u8c62\u8c8a\u8c89\u8cca\u8cc7\u8cc8\u8cc4\u8cb2\u8cc3\u8cc2\u8cc5\u8de1\u8ddf\u8de8\u8def\u8df3\u8dfa\u8dea\u8de4\u8de6\u8eb2\u8f03\u8f09\u8efe\u8f0a\ufffd".split(""),e=0;e!=r[184].length;++e)65533!==r[184][e].charCodeAt(0)&&(n[r[184][e]]=47104+e,t[47104+e]=r[184][e]);for(r[185]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8f9f\u8fb2\u904b\u904a\u9053\u9042\u9054\u903c\u9055\u9050\u9047\u904f\u904e\u904d\u9051\u903e\u9041\u9112\u9117\u916c\u916a\u9169\u91c9\u9237\u9257\u9238\u923d\u9240\u923e\u925b\u924b\u9264\u9251\u9234\u9249\u924d\u9245\u9239\u923f\u925a\u9598\u9698\u9694\u9695\u96cd\u96cb\u96c9\u96ca\u96f7\u96fb\u96f9\u96f6\u9756\u9774\u9776\u9810\u9811\u9813\u980a\u9812\u980c\u98fc\u98f4\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u98fd\u98fe\u99b3\u99b1\u99b4\u9ae1\u9ce9\u9e82\u9f0e\u9f13\u9f20\u50e7\u50ee\u50e5\u50d6\u50ed\u50da\u50d5\u50cf\u50d1\u50f1\u50ce\u50e9\u5162\u51f3\u5283\u5282\u5331\u53ad\u55fe\u5600\u561b\u5617\u55fd\u5614\u5606\u5609\u560d\u560e\u55f7\u5616\u561f\u5608\u5610\u55f6\u5718\u5716\u5875\u587e\u5883\u5893\u588a\u5879\u5885\u587d\u58fd\u5925\u5922\u5924\u596a\u5969\u5ae1\u5ae6\u5ae9\u5ad7\u5ad6\u5ad8\u5ae3\u5b75\u5bde\u5be7\u5be1\u5be5\u5be6\u5be8\u5be2\u5be4\u5bdf\u5c0d\u5c62\u5d84\u5d87\u5e5b\u5e63\u5e55\u5e57\u5e54\u5ed3\u5ed6\u5f0a\u5f46\u5f70\u5fb9\u6147\ufffd".split(""),e=0;e!=r[185].length;++e)65533!==r[185][e].charCodeAt(0)&&(n[r[185][e]]=47360+e,t[47360+e]=r[185][e]);for(r[186]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u613f\u614b\u6177\u6162\u6163\u615f\u615a\u6158\u6175\u622a\u6487\u6458\u6454\u64a4\u6478\u645f\u647a\u6451\u6467\u6434\u646d\u647b\u6572\u65a1\u65d7\u65d6\u66a2\u66a8\u669d\u699c\u69a8\u6995\u69c1\u69ae\u69d3\u69cb\u699b\u69b7\u69bb\u69ab\u69b4\u69d0\u69cd\u69ad\u69cc\u69a6\u69c3\u69a3\u6b49\u6b4c\u6c33\u6f33\u6f14\u6efe\u6f13\u6ef4\u6f29\u6f3e\u6f20\u6f2c\u6f0f\u6f02\u6f22\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6eff\u6eef\u6f06\u6f31\u6f38\u6f32\u6f23\u6f15\u6f2b\u6f2f\u6f88\u6f2a\u6eec\u6f01\u6ef2\u6ecc\u6ef7\u7194\u7199\u717d\u718a\u7184\u7192\u723e\u7292\u7296\u7344\u7350\u7464\u7463\u746a\u7470\u746d\u7504\u7591\u7627\u760d\u760b\u7609\u7613\u76e1\u76e3\u7784\u777d\u777f\u7761\u78c1\u789f\u78a7\u78b3\u78a9\u78a3\u798e\u798f\u798d\u7a2e\u7a31\u7aaa\u7aa9\u7aed\u7aef\u7ba1\u7b95\u7b8b\u7b75\u7b97\u7b9d\u7b94\u7b8f\u7bb8\u7b87\u7b84\u7cb9\u7cbd\u7cbe\u7dbb\u7db0\u7d9c\u7dbd\u7dbe\u7da0\u7dca\u7db4\u7db2\u7db1\u7dba\u7da2\u7dbf\u7db5\u7db8\u7dad\u7dd2\u7dc7\u7dac\ufffd".split(""),e=0;e!=r[186].length;++e)65533!==r[186][e].charCodeAt(0)&&(n[r[186][e]]=47616+e,t[47616+e]=r[186][e]);for(r[187]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7f70\u7fe0\u7fe1\u7fdf\u805e\u805a\u8087\u8150\u8180\u818f\u8188\u818a\u817f\u8182\u81e7\u81fa\u8207\u8214\u821e\u824b\u84c9\u84bf\u84c6\u84c4\u8499\u849e\u84b2\u849c\u84cb\u84b8\u84c0\u84d3\u8490\u84bc\u84d1\u84ca\u873f\u871c\u873b\u8722\u8725\u8734\u8718\u8755\u8737\u8729\u88f3\u8902\u88f4\u88f9\u88f8\u88fd\u88e8\u891a\u88ef\u8aa6\u8a8c\u8a9e\u8aa3\u8a8d\u8aa1\u8a93\u8aa4\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8aaa\u8aa5\u8aa8\u8a98\u8a91\u8a9a\u8aa7\u8c6a\u8c8d\u8c8c\u8cd3\u8cd1\u8cd2\u8d6b\u8d99\u8d95\u8dfc\u8f14\u8f12\u8f15\u8f13\u8fa3\u9060\u9058\u905c\u9063\u9059\u905e\u9062\u905d\u905b\u9119\u9118\u911e\u9175\u9178\u9177\u9174\u9278\u9280\u9285\u9298\u9296\u927b\u9293\u929c\u92a8\u927c\u9291\u95a1\u95a8\u95a9\u95a3\u95a5\u95a4\u9699\u969c\u969b\u96cc\u96d2\u9700\u977c\u9785\u97f6\u9817\u9818\u98af\u98b1\u9903\u9905\u990c\u9909\u99c1\u9aaf\u9ab0\u9ae6\u9b41\u9b42\u9cf4\u9cf6\u9cf3\u9ebc\u9f3b\u9f4a\u5104\u5100\u50fb\u50f5\u50f9\u5102\u5108\u5109\u5105\u51dc\ufffd".split(""),e=0;e!=r[187].length;++e)65533!==r[187][e].charCodeAt(0)&&(n[r[187][e]]=47872+e,t[47872+e]=r[187][e]);for(r[188]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5287\u5288\u5289\u528d\u528a\u52f0\u53b2\u562e\u563b\u5639\u5632\u563f\u5634\u5629\u5653\u564e\u5657\u5674\u5636\u562f\u5630\u5880\u589f\u589e\u58b3\u589c\u58ae\u58a9\u58a6\u596d\u5b09\u5afb\u5b0b\u5af5\u5b0c\u5b08\u5bee\u5bec\u5be9\u5beb\u5c64\u5c65\u5d9d\u5d94\u5e62\u5e5f\u5e61\u5ee2\u5eda\u5edf\u5edd\u5ee3\u5ee0\u5f48\u5f71\u5fb7\u5fb5\u6176\u6167\u616e\u615d\u6155\u6182\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u617c\u6170\u616b\u617e\u61a7\u6190\u61ab\u618e\u61ac\u619a\u61a4\u6194\u61ae\u622e\u6469\u646f\u6479\u649e\u64b2\u6488\u6490\u64b0\u64a5\u6493\u6495\u64a9\u6492\u64ae\u64ad\u64ab\u649a\u64ac\u6499\u64a2\u64b3\u6575\u6577\u6578\u66ae\u66ab\u66b4\u66b1\u6a23\u6a1f\u69e8\u6a01\u6a1e\u6a19\u69fd\u6a21\u6a13\u6a0a\u69f3\u6a02\u6a05\u69ed\u6a11\u6b50\u6b4e\u6ba4\u6bc5\u6bc6\u6f3f\u6f7c\u6f84\u6f51\u6f66\u6f54\u6f86\u6f6d\u6f5b\u6f78\u6f6e\u6f8e\u6f7a\u6f70\u6f64\u6f97\u6f58\u6ed5\u6f6f\u6f60\u6f5f\u719f\u71ac\u71b1\u71a8\u7256\u729b\u734e\u7357\u7469\u748b\u7483\ufffd".split(""),e=0;e!=r[188].length;++e)65533!==r[188][e].charCodeAt(0)&&(n[r[188][e]]=48128+e,t[48128+e]=r[188][e]);for(r[189]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u747e\u7480\u757f\u7620\u7629\u761f\u7624\u7626\u7621\u7622\u769a\u76ba\u76e4\u778e\u7787\u778c\u7791\u778b\u78cb\u78c5\u78ba\u78ca\u78be\u78d5\u78bc\u78d0\u7a3f\u7a3c\u7a40\u7a3d\u7a37\u7a3b\u7aaf\u7aae\u7bad\u7bb1\u7bc4\u7bb4\u7bc6\u7bc7\u7bc1\u7ba0\u7bcc\u7cca\u7de0\u7df4\u7def\u7dfb\u7dd8\u7dec\u7ddd\u7de8\u7de3\u7dda\u7dde\u7de9\u7d9e\u7dd9\u7df2\u7df9\u7f75\u7f77\u7faf\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7fe9\u8026\u819b\u819c\u819d\u81a0\u819a\u8198\u8517\u853d\u851a\u84ee\u852c\u852d\u8513\u8511\u8523\u8521\u8514\u84ec\u8525\u84ff\u8506\u8782\u8774\u8776\u8760\u8766\u8778\u8768\u8759\u8757\u874c\u8753\u885b\u885d\u8910\u8907\u8912\u8913\u8915\u890a\u8abc\u8ad2\u8ac7\u8ac4\u8a95\u8acb\u8af8\u8ab2\u8ac9\u8ac2\u8abf\u8ab0\u8ad6\u8acd\u8ab6\u8ab9\u8adb\u8c4c\u8c4e\u8c6c\u8ce0\u8cde\u8ce6\u8ce4\u8cec\u8ced\u8ce2\u8ce3\u8cdc\u8cea\u8ce1\u8d6d\u8d9f\u8da3\u8e2b\u8e10\u8e1d\u8e22\u8e0f\u8e29\u8e1f\u8e21\u8e1e\u8eba\u8f1d\u8f1b\u8f1f\u8f29\u8f26\u8f2a\u8f1c\u8f1e\ufffd".split(""),e=0;e!=r[189].length;++e)65533!==r[189][e].charCodeAt(0)&&(n[r[189][e]]=48384+e,t[48384+e]=r[189][e]);for(r[190]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8f25\u9069\u906e\u9068\u906d\u9077\u9130\u912d\u9127\u9131\u9187\u9189\u918b\u9183\u92c5\u92bb\u92b7\u92ea\u92ac\u92e4\u92c1\u92b3\u92bc\u92d2\u92c7\u92f0\u92b2\u95ad\u95b1\u9704\u9706\u9707\u9709\u9760\u978d\u978b\u978f\u9821\u982b\u981c\u98b3\u990a\u9913\u9912\u9918\u99dd\u99d0\u99df\u99db\u99d1\u99d5\u99d2\u99d9\u9ab7\u9aee\u9aef\u9b27\u9b45\u9b44\u9b77\u9b6f\u9d06\u9d09\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9d03\u9ea9\u9ebe\u9ece\u58a8\u9f52\u5112\u5118\u5114\u5110\u5115\u5180\u51aa\u51dd\u5291\u5293\u52f3\u5659\u566b\u5679\u5669\u5664\u5678\u566a\u5668\u5665\u5671\u566f\u566c\u5662\u5676\u58c1\u58be\u58c7\u58c5\u596e\u5b1d\u5b34\u5b78\u5bf0\u5c0e\u5f4a\u61b2\u6191\u61a9\u618a\u61cd\u61b6\u61be\u61ca\u61c8\u6230\u64c5\u64c1\u64cb\u64bb\u64bc\u64da\u64c4\u64c7\u64c2\u64cd\u64bf\u64d2\u64d4\u64be\u6574\u66c6\u66c9\u66b9\u66c4\u66c7\u66b8\u6a3d\u6a38\u6a3a\u6a59\u6a6b\u6a58\u6a39\u6a44\u6a62\u6a61\u6a4b\u6a47\u6a35\u6a5f\u6a48\u6b59\u6b77\u6c05\u6fc2\u6fb1\u6fa1\ufffd".split(""),e=0;e!=r[190].length;++e)65533!==r[190][e].charCodeAt(0)&&(n[r[190][e]]=48640+e,t[48640+e]=r[190][e]);for(r[191]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6fc3\u6fa4\u6fc1\u6fa7\u6fb3\u6fc0\u6fb9\u6fb6\u6fa6\u6fa0\u6fb4\u71be\u71c9\u71d0\u71d2\u71c8\u71d5\u71b9\u71ce\u71d9\u71dc\u71c3\u71c4\u7368\u749c\u74a3\u7498\u749f\u749e\u74e2\u750c\u750d\u7634\u7638\u763a\u76e7\u76e5\u77a0\u779e\u779f\u77a5\u78e8\u78da\u78ec\u78e7\u79a6\u7a4d\u7a4e\u7a46\u7a4c\u7a4b\u7aba\u7bd9\u7c11\u7bc9\u7be4\u7bdb\u7be1\u7be9\u7be6\u7cd5\u7cd6\u7e0a\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7e11\u7e08\u7e1b\u7e23\u7e1e\u7e1d\u7e09\u7e10\u7f79\u7fb2\u7ff0\u7ff1\u7fee\u8028\u81b3\u81a9\u81a8\u81fb\u8208\u8258\u8259\u854a\u8559\u8548\u8568\u8569\u8543\u8549\u856d\u856a\u855e\u8783\u879f\u879e\u87a2\u878d\u8861\u892a\u8932\u8925\u892b\u8921\u89aa\u89a6\u8ae6\u8afa\u8aeb\u8af1\u8b00\u8adc\u8ae7\u8aee\u8afe\u8b01\u8b02\u8af7\u8aed\u8af3\u8af6\u8afc\u8c6b\u8c6d\u8c93\u8cf4\u8e44\u8e31\u8e34\u8e42\u8e39\u8e35\u8f3b\u8f2f\u8f38\u8f33\u8fa8\u8fa6\u9075\u9074\u9078\u9072\u907c\u907a\u9134\u9192\u9320\u9336\u92f8\u9333\u932f\u9322\u92fc\u932b\u9304\u931a\ufffd".split(""),e=0;e!=r[191].length;++e)65533!==r[191][e].charCodeAt(0)&&(n[r[191][e]]=48896+e,t[48896+e]=r[191][e]);for(r[192]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9310\u9326\u9321\u9315\u932e\u9319\u95bb\u96a7\u96a8\u96aa\u96d5\u970e\u9711\u9716\u970d\u9713\u970f\u975b\u975c\u9766\u9798\u9830\u9838\u983b\u9837\u982d\u9839\u9824\u9910\u9928\u991e\u991b\u9921\u991a\u99ed\u99e2\u99f1\u9ab8\u9abc\u9afb\u9aed\u9b28\u9b91\u9d15\u9d23\u9d26\u9d28\u9d12\u9d1b\u9ed8\u9ed4\u9f8d\u9f9c\u512a\u511f\u5121\u5132\u52f5\u568e\u5680\u5690\u5685\u5687\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u568f\u58d5\u58d3\u58d1\u58ce\u5b30\u5b2a\u5b24\u5b7a\u5c37\u5c68\u5dbc\u5dba\u5dbd\u5db8\u5e6b\u5f4c\u5fbd\u61c9\u61c2\u61c7\u61e6\u61cb\u6232\u6234\u64ce\u64ca\u64d8\u64e0\u64f0\u64e6\u64ec\u64f1\u64e2\u64ed\u6582\u6583\u66d9\u66d6\u6a80\u6a94\u6a84\u6aa2\u6a9c\u6adb\u6aa3\u6a7e\u6a97\u6a90\u6aa0\u6b5c\u6bae\u6bda\u6c08\u6fd8\u6ff1\u6fdf\u6fe0\u6fdb\u6fe4\u6feb\u6fef\u6f80\u6fec\u6fe1\u6fe9\u6fd5\u6fee\u6ff0\u71e7\u71df\u71ee\u71e6\u71e5\u71ed\u71ec\u71f4\u71e0\u7235\u7246\u7370\u7372\u74a9\u74b0\u74a6\u74a8\u7646\u7642\u764c\u76ea\u77b3\u77aa\u77b0\u77ac\ufffd".split(""),e=0;e!=r[192].length;++e)65533!==r[192][e].charCodeAt(0)&&(n[r[192][e]]=49152+e,t[49152+e]=r[192][e]);for(r[193]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u77a7\u77ad\u77ef\u78f7\u78fa\u78f4\u78ef\u7901\u79a7\u79aa\u7a57\u7abf\u7c07\u7c0d\u7bfe\u7bf7\u7c0c\u7be0\u7ce0\u7cdc\u7cde\u7ce2\u7cdf\u7cd9\u7cdd\u7e2e\u7e3e\u7e46\u7e37\u7e32\u7e43\u7e2b\u7e3d\u7e31\u7e45\u7e41\u7e34\u7e39\u7e48\u7e35\u7e3f\u7e2f\u7f44\u7ff3\u7ffc\u8071\u8072\u8070\u806f\u8073\u81c6\u81c3\u81ba\u81c2\u81c0\u81bf\u81bd\u81c9\u81be\u81e8\u8209\u8271\u85aa\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8584\u857e\u859c\u8591\u8594\u85af\u859b\u8587\u85a8\u858a\u8667\u87c0\u87d1\u87b3\u87d2\u87c6\u87ab\u87bb\u87ba\u87c8\u87cb\u893b\u8936\u8944\u8938\u893d\u89ac\u8b0e\u8b17\u8b19\u8b1b\u8b0a\u8b20\u8b1d\u8b04\u8b10\u8c41\u8c3f\u8c73\u8cfa\u8cfd\u8cfc\u8cf8\u8cfb\u8da8\u8e49\u8e4b\u8e48\u8e4a\u8f44\u8f3e\u8f42\u8f45\u8f3f\u907f\u907d\u9084\u9081\u9082\u9080\u9139\u91a3\u919e\u919c\u934d\u9382\u9328\u9375\u934a\u9365\u934b\u9318\u937e\u936c\u935b\u9370\u935a\u9354\u95ca\u95cb\u95cc\u95c8\u95c6\u96b1\u96b8\u96d6\u971c\u971e\u97a0\u97d3\u9846\u98b6\u9935\u9a01\ufffd".split(""),e=0;e!=r[193].length;++e)65533!==r[193][e].charCodeAt(0)&&(n[r[193][e]]=49408+e,t[49408+e]=r[193][e]);for(r[194]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u99ff\u9bae\u9bab\u9baa\u9bad\u9d3b\u9d3f\u9e8b\u9ecf\u9ede\u9edc\u9edd\u9edb\u9f3e\u9f4b\u53e2\u5695\u56ae\u58d9\u58d8\u5b38\u5f5d\u61e3\u6233\u64f4\u64f2\u64fe\u6506\u64fa\u64fb\u64f7\u65b7\u66dc\u6726\u6ab3\u6aac\u6ac3\u6abb\u6ab8\u6ac2\u6aae\u6aaf\u6b5f\u6b78\u6baf\u7009\u700b\u6ffe\u7006\u6ffa\u7011\u700f\u71fb\u71fc\u71fe\u71f8\u7377\u7375\u74a7\u74bf\u7515\u7656\u7658\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7652\u77bd\u77bf\u77bb\u77bc\u790e\u79ae\u7a61\u7a62\u7a60\u7ac4\u7ac5\u7c2b\u7c27\u7c2a\u7c1e\u7c23\u7c21\u7ce7\u7e54\u7e55\u7e5e\u7e5a\u7e61\u7e52\u7e59\u7f48\u7ff9\u7ffb\u8077\u8076\u81cd\u81cf\u820a\u85cf\u85a9\u85cd\u85d0\u85c9\u85b0\u85ba\u85b9\u85a6\u87ef\u87ec\u87f2\u87e0\u8986\u89b2\u89f4\u8b28\u8b39\u8b2c\u8b2b\u8c50\u8d05\u8e59\u8e63\u8e66\u8e64\u8e5f\u8e55\u8ec0\u8f49\u8f4d\u9087\u9083\u9088\u91ab\u91ac\u91d0\u9394\u938a\u9396\u93a2\u93b3\u93ae\u93ac\u93b0\u9398\u939a\u9397\u95d4\u95d6\u95d0\u95d5\u96e2\u96dc\u96d9\u96db\u96de\u9724\u97a3\u97a6\ufffd".split(""),e=0;e!=r[194].length;++e)65533!==r[194][e].charCodeAt(0)&&(n[r[194][e]]=49664+e,t[49664+e]=r[194][e]);for(r[195]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u97ad\u97f9\u984d\u984f\u984c\u984e\u9853\u98ba\u993e\u993f\u993d\u992e\u99a5\u9a0e\u9ac1\u9b03\u9b06\u9b4f\u9b4e\u9b4d\u9bca\u9bc9\u9bfd\u9bc8\u9bc0\u9d51\u9d5d\u9d60\u9ee0\u9f15\u9f2c\u5133\u56a5\u58de\u58df\u58e2\u5bf5\u9f90\u5eec\u61f2\u61f7\u61f6\u61f5\u6500\u650f\u66e0\u66dd\u6ae5\u6add\u6ada\u6ad3\u701b\u701f\u7028\u701a\u701d\u7015\u7018\u7206\u720d\u7258\u72a2\u7378\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u737a\u74bd\u74ca\u74e3\u7587\u7586\u765f\u7661\u77c7\u7919\u79b1\u7a6b\u7a69\u7c3e\u7c3f\u7c38\u7c3d\u7c37\u7c40\u7e6b\u7e6d\u7e79\u7e69\u7e6a\u7f85\u7e73\u7fb6\u7fb9\u7fb8\u81d8\u85e9\u85dd\u85ea\u85d5\u85e4\u85e5\u85f7\u87fb\u8805\u880d\u87f9\u87fe\u8960\u895f\u8956\u895e\u8b41\u8b5c\u8b58\u8b49\u8b5a\u8b4e\u8b4f\u8b46\u8b59\u8d08\u8d0a\u8e7c\u8e72\u8e87\u8e76\u8e6c\u8e7a\u8e74\u8f54\u8f4e\u8fad\u908a\u908b\u91b1\u91ae\u93e1\u93d1\u93df\u93c3\u93c8\u93dc\u93dd\u93d6\u93e2\u93cd\u93d8\u93e4\u93d7\u93e8\u95dc\u96b4\u96e3\u972a\u9727\u9761\u97dc\u97fb\u985e\ufffd".split(""),e=0;e!=r[195].length;++e)65533!==r[195][e].charCodeAt(0)&&(n[r[195][e]]=49920+e,t[49920+e]=r[195][e]);for(r[196]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9858\u985b\u98bc\u9945\u9949\u9a16\u9a19\u9b0d\u9be8\u9be7\u9bd6\u9bdb\u9d89\u9d61\u9d72\u9d6a\u9d6c\u9e92\u9e97\u9e93\u9eb4\u52f8\u56a8\u56b7\u56b6\u56b4\u56bc\u58e4\u5b40\u5b43\u5b7d\u5bf6\u5dc9\u61f8\u61fa\u6518\u6514\u6519\u66e6\u6727\u6aec\u703e\u7030\u7032\u7210\u737b\u74cf\u7662\u7665\u7926\u792a\u792c\u792b\u7ac7\u7af6\u7c4c\u7c43\u7c4d\u7cef\u7cf0\u8fae\u7e7d\u7e7c\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7e82\u7f4c\u8000\u81da\u8266\u85fb\u85f9\u8611\u85fa\u8606\u860b\u8607\u860a\u8814\u8815\u8964\u89ba\u89f8\u8b70\u8b6c\u8b66\u8b6f\u8b5f\u8b6b\u8d0f\u8d0d\u8e89\u8e81\u8e85\u8e82\u91b4\u91cb\u9418\u9403\u93fd\u95e1\u9730\u98c4\u9952\u9951\u99a8\u9a2b\u9a30\u9a37\u9a35\u9c13\u9c0d\u9e79\u9eb5\u9ee8\u9f2f\u9f5f\u9f63\u9f61\u5137\u5138\u56c1\u56c0\u56c2\u5914\u5c6c\u5dcd\u61fc\u61fe\u651d\u651c\u6595\u66e9\u6afb\u6b04\u6afa\u6bb2\u704c\u721b\u72a7\u74d6\u74d4\u7669\u77d3\u7c50\u7e8f\u7e8c\u7fbc\u8617\u862d\u861a\u8823\u8822\u8821\u881f\u896a\u896c\u89bd\u8b74\ufffd".split(""),e=0;e!=r[196].length;++e)65533!==r[196][e].charCodeAt(0)&&(n[r[196][e]]=50176+e,t[50176+e]=r[196][e]);for(r[197]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8b77\u8b7d\u8d13\u8e8a\u8e8d\u8e8b\u8f5f\u8faf\u91ba\u942e\u9433\u9435\u943a\u9438\u9432\u942b\u95e2\u9738\u9739\u9732\u97ff\u9867\u9865\u9957\u9a45\u9a43\u9a40\u9a3e\u9acf\u9b54\u9b51\u9c2d\u9c25\u9daf\u9db4\u9dc2\u9db8\u9e9d\u9eef\u9f19\u9f5c\u9f66\u9f67\u513c\u513b\u56c8\u56ca\u56c9\u5b7f\u5dd4\u5dd2\u5f4e\u61ff\u6524\u6b0a\u6b61\u7051\u7058\u7380\u74e4\u758a\u766e\u766c\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u79b3\u7c60\u7c5f\u807e\u807d\u81df\u8972\u896f\u89fc\u8b80\u8d16\u8d17\u8e91\u8e93\u8f61\u9148\u9444\u9451\u9452\u973d\u973e\u97c3\u97c1\u986b\u9955\u9a55\u9a4d\u9ad2\u9b1a\u9c49\u9c31\u9c3e\u9c3b\u9dd3\u9dd7\u9f34\u9f6c\u9f6a\u9f94\u56cc\u5dd6\u6200\u6523\u652b\u652a\u66ec\u6b10\u74da\u7aca\u7c64\u7c63\u7c65\u7e93\u7e96\u7e94\u81e2\u8638\u863f\u8831\u8b8a\u9090\u908f\u9463\u9460\u9464\u9768\u986f\u995c\u9a5a\u9a5b\u9a57\u9ad3\u9ad4\u9ad1\u9c54\u9c57\u9c56\u9de5\u9e9f\u9ef4\u56d1\u58e9\u652c\u705e\u7671\u7672\u77d7\u7f50\u7f88\u8836\u8839\u8862\u8b93\u8b92\ufffd".split(""),e=0;e!=r[197].length;++e)65533!==r[197][e].charCodeAt(0)&&(n[r[197][e]]=50432+e,t[50432+e]=r[197][e]);for(r[198]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8b96\u8277\u8d1b\u91c0\u946a\u9742\u9748\u9744\u97c6\u9870\u9a5f\u9b22\u9b58\u9c5f\u9df9\u9dfa\u9e7c\u9e7d\u9f07\u9f77\u9f72\u5ef3\u6b16\u7063\u7c6c\u7c6e\u883b\u89c0\u8ea1\u91c1\u9472\u9470\u9871\u995e\u9ad6\u9b23\u9ecc\u7064\u77da\u8b9a\u9477\u97c9\u9a62\u9a65\u7e9c\u8b9c\u8eaa\u91c5\u947d\u947e\u947c\u9c77\u9c78\u9ef7\u8c54\u947f\u9e1a\u7228\u9a6a\u9b31\u9e1b\u9e1e\u7c72\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[198].length;++e)65533!==r[198][e].charCodeAt(0)&&(n[r[198][e]]=50688+e,t[50688+e]=r[198][e]);for(r[201]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u4e42\u4e5c\u51f5\u531a\u5382\u4e07\u4e0c\u4e47\u4e8d\u56d7\ufa0c\u5c6e\u5f73\u4e0f\u5187\u4e0e\u4e2e\u4e93\u4ec2\u4ec9\u4ec8\u5198\u52fc\u536c\u53b9\u5720\u5903\u592c\u5c10\u5dff\u65e1\u6bb3\u6bcc\u6c14\u723f\u4e31\u4e3c\u4ee8\u4edc\u4ee9\u4ee1\u4edd\u4eda\u520c\u531c\u534c\u5722\u5723\u5917\u592f\u5b81\u5b84\u5c12\u5c3b\u5c74\u5c73\u5e04\u5e80\u5e82\u5fc9\u6209\u6250\u6c15\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6c36\u6c43\u6c3f\u6c3b\u72ae\u72b0\u738a\u79b8\u808a\u961e\u4f0e\u4f18\u4f2c\u4ef5\u4f14\u4ef1\u4f00\u4ef7\u4f08\u4f1d\u4f02\u4f05\u4f22\u4f13\u4f04\u4ef4\u4f12\u51b1\u5213\u5209\u5210\u52a6\u5322\u531f\u534d\u538a\u5407\u56e1\u56df\u572e\u572a\u5734\u593c\u5980\u597c\u5985\u597b\u597e\u5977\u597f\u5b56\u5c15\u5c25\u5c7c\u5c7a\u5c7b\u5c7e\u5ddf\u5e75\u5e84\u5f02\u5f1a\u5f74\u5fd5\u5fd4\u5fcf\u625c\u625e\u6264\u6261\u6266\u6262\u6259\u6260\u625a\u6265\u65ef\u65ee\u673e\u6739\u6738\u673b\u673a\u673f\u673c\u6733\u6c18\u6c46\u6c52\u6c5c\u6c4f\u6c4a\u6c54\u6c4b\ufffd".split(""),e=0;e!=r[201].length;++e)65533!==r[201][e].charCodeAt(0)&&(n[r[201][e]]=51456+e,t[51456+e]=r[201][e]);for(r[202]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6c4c\u7071\u725e\u72b4\u72b5\u738e\u752a\u767f\u7a75\u7f51\u8278\u827c\u8280\u827d\u827f\u864d\u897e\u9099\u9097\u9098\u909b\u9094\u9622\u9624\u9620\u9623\u4f56\u4f3b\u4f62\u4f49\u4f53\u4f64\u4f3e\u4f67\u4f52\u4f5f\u4f41\u4f58\u4f2d\u4f33\u4f3f\u4f61\u518f\u51b9\u521c\u521e\u5221\u52ad\u52ae\u5309\u5363\u5372\u538e\u538f\u5430\u5437\u542a\u5454\u5445\u5419\u541c\u5425\u5418\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u543d\u544f\u5441\u5428\u5424\u5447\u56ee\u56e7\u56e5\u5741\u5745\u574c\u5749\u574b\u5752\u5906\u5940\u59a6\u5998\u59a0\u5997\u598e\u59a2\u5990\u598f\u59a7\u59a1\u5b8e\u5b92\u5c28\u5c2a\u5c8d\u5c8f\u5c88\u5c8b\u5c89\u5c92\u5c8a\u5c86\u5c93\u5c95\u5de0\u5e0a\u5e0e\u5e8b\u5e89\u5e8c\u5e88\u5e8d\u5f05\u5f1d\u5f78\u5f76\u5fd2\u5fd1\u5fd0\u5fed\u5fe8\u5fee\u5ff3\u5fe1\u5fe4\u5fe3\u5ffa\u5fef\u5ff7\u5ffb\u6000\u5ff4\u623a\u6283\u628c\u628e\u628f\u6294\u6287\u6271\u627b\u627a\u6270\u6281\u6288\u6277\u627d\u6272\u6274\u6537\u65f0\u65f4\u65f3\u65f2\u65f5\u6745\u6747\ufffd".split(""),e=0;e!=r[202].length;++e)65533!==r[202][e].charCodeAt(0)&&(n[r[202][e]]=51712+e,t[51712+e]=r[202][e]);for(r[203]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6759\u6755\u674c\u6748\u675d\u674d\u675a\u674b\u6bd0\u6c19\u6c1a\u6c78\u6c67\u6c6b\u6c84\u6c8b\u6c8f\u6c71\u6c6f\u6c69\u6c9a\u6c6d\u6c87\u6c95\u6c9c\u6c66\u6c73\u6c65\u6c7b\u6c8e\u7074\u707a\u7263\u72bf\u72bd\u72c3\u72c6\u72c1\u72ba\u72c5\u7395\u7397\u7393\u7394\u7392\u753a\u7539\u7594\u7595\u7681\u793d\u8034\u8095\u8099\u8090\u8092\u809c\u8290\u828f\u8285\u828e\u8291\u8293\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u828a\u8283\u8284\u8c78\u8fc9\u8fbf\u909f\u90a1\u90a5\u909e\u90a7\u90a0\u9630\u9628\u962f\u962d\u4e33\u4f98\u4f7c\u4f85\u4f7d\u4f80\u4f87\u4f76\u4f74\u4f89\u4f84\u4f77\u4f4c\u4f97\u4f6a\u4f9a\u4f79\u4f81\u4f78\u4f90\u4f9c\u4f94\u4f9e\u4f92\u4f82\u4f95\u4f6b\u4f6e\u519e\u51bc\u51be\u5235\u5232\u5233\u5246\u5231\u52bc\u530a\u530b\u533c\u5392\u5394\u5487\u547f\u5481\u5491\u5482\u5488\u546b\u547a\u547e\u5465\u546c\u5474\u5466\u548d\u546f\u5461\u5460\u5498\u5463\u5467\u5464\u56f7\u56f9\u576f\u5772\u576d\u576b\u5771\u5770\u5776\u5780\u5775\u577b\u5773\u5774\u5762\ufffd".split(""),e=0;e!=r[203].length;++e)65533!==r[203][e].charCodeAt(0)&&(n[r[203][e]]=51968+e,t[51968+e]=r[203][e]);for(r[204]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5768\u577d\u590c\u5945\u59b5\u59ba\u59cf\u59ce\u59b2\u59cc\u59c1\u59b6\u59bc\u59c3\u59d6\u59b1\u59bd\u59c0\u59c8\u59b4\u59c7\u5b62\u5b65\u5b93\u5b95\u5c44\u5c47\u5cae\u5ca4\u5ca0\u5cb5\u5caf\u5ca8\u5cac\u5c9f\u5ca3\u5cad\u5ca2\u5caa\u5ca7\u5c9d\u5ca5\u5cb6\u5cb0\u5ca6\u5e17\u5e14\u5e19\u5f28\u5f22\u5f23\u5f24\u5f54\u5f82\u5f7e\u5f7d\u5fde\u5fe5\u602d\u6026\u6019\u6032\u600b\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6034\u600a\u6017\u6033\u601a\u601e\u602c\u6022\u600d\u6010\u602e\u6013\u6011\u600c\u6009\u601c\u6214\u623d\u62ad\u62b4\u62d1\u62be\u62aa\u62b6\u62ca\u62ae\u62b3\u62af\u62bb\u62a9\u62b0\u62b8\u653d\u65a8\u65bb\u6609\u65fc\u6604\u6612\u6608\u65fb\u6603\u660b\u660d\u6605\u65fd\u6611\u6610\u66f6\u670a\u6785\u676c\u678e\u6792\u6776\u677b\u6798\u6786\u6784\u6774\u678d\u678c\u677a\u679f\u6791\u6799\u6783\u677d\u6781\u6778\u6779\u6794\u6b25\u6b80\u6b7e\u6bde\u6c1d\u6c93\u6cec\u6ceb\u6cee\u6cd9\u6cb6\u6cd4\u6cad\u6ce7\u6cb7\u6cd0\u6cc2\u6cba\u6cc3\u6cc6\u6ced\u6cf2\ufffd".split(""),e=0;e!=r[204].length;++e)65533!==r[204][e].charCodeAt(0)&&(n[r[204][e]]=52224+e,t[52224+e]=r[204][e]);for(r[205]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6cd2\u6cdd\u6cb4\u6c8a\u6c9d\u6c80\u6cde\u6cc0\u6d30\u6ccd\u6cc7\u6cb0\u6cf9\u6ccf\u6ce9\u6cd1\u7094\u7098\u7085\u7093\u7086\u7084\u7091\u7096\u7082\u709a\u7083\u726a\u72d6\u72cb\u72d8\u72c9\u72dc\u72d2\u72d4\u72da\u72cc\u72d1\u73a4\u73a1\u73ad\u73a6\u73a2\u73a0\u73ac\u739d\u74dd\u74e8\u753f\u7540\u753e\u758c\u7598\u76af\u76f3\u76f1\u76f0\u76f5\u77f8\u77fc\u77f9\u77fb\u77fa\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u77f7\u7942\u793f\u79c5\u7a78\u7a7b\u7afb\u7c75\u7cfd\u8035\u808f\u80ae\u80a3\u80b8\u80b5\u80ad\u8220\u82a0\u82c0\u82ab\u829a\u8298\u829b\u82b5\u82a7\u82ae\u82bc\u829e\u82ba\u82b4\u82a8\u82a1\u82a9\u82c2\u82a4\u82c3\u82b6\u82a2\u8670\u866f\u866d\u866e\u8c56\u8fd2\u8fcb\u8fd3\u8fcd\u8fd6\u8fd5\u8fd7\u90b2\u90b4\u90af\u90b3\u90b0\u9639\u963d\u963c\u963a\u9643\u4fcd\u4fc5\u4fd3\u4fb2\u4fc9\u4fcb\u4fc1\u4fd4\u4fdc\u4fd9\u4fbb\u4fb3\u4fdb\u4fc7\u4fd6\u4fba\u4fc0\u4fb9\u4fec\u5244\u5249\u52c0\u52c2\u533d\u537c\u5397\u5396\u5399\u5398\u54ba\u54a1\u54ad\u54a5\u54cf\ufffd".split(""),e=0;e!=r[205].length;++e)65533!==r[205][e].charCodeAt(0)&&(n[r[205][e]]=52480+e,t[52480+e]=r[205][e]);for(r[206]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u54c3\u830d\u54b7\u54ae\u54d6\u54b6\u54c5\u54c6\u54a0\u5470\u54bc\u54a2\u54be\u5472\u54de\u54b0\u57b5\u579e\u579f\u57a4\u578c\u5797\u579d\u579b\u5794\u5798\u578f\u5799\u57a5\u579a\u5795\u58f4\u590d\u5953\u59e1\u59de\u59ee\u5a00\u59f1\u59dd\u59fa\u59fd\u59fc\u59f6\u59e4\u59f2\u59f7\u59db\u59e9\u59f3\u59f5\u59e0\u59fe\u59f4\u59ed\u5ba8\u5c4c\u5cd0\u5cd8\u5ccc\u5cd7\u5ccb\u5cdb\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5cde\u5cda\u5cc9\u5cc7\u5cca\u5cd6\u5cd3\u5cd4\u5ccf\u5cc8\u5cc6\u5cce\u5cdf\u5cf8\u5df9\u5e21\u5e22\u5e23\u5e20\u5e24\u5eb0\u5ea4\u5ea2\u5e9b\u5ea3\u5ea5\u5f07\u5f2e\u5f56\u5f86\u6037\u6039\u6054\u6072\u605e\u6045\u6053\u6047\u6049\u605b\u604c\u6040\u6042\u605f\u6024\u6044\u6058\u6066\u606e\u6242\u6243\u62cf\u630d\u630b\u62f5\u630e\u6303\u62eb\u62f9\u630f\u630c\u62f8\u62f6\u6300\u6313\u6314\u62fa\u6315\u62fb\u62f0\u6541\u6543\u65aa\u65bf\u6636\u6621\u6632\u6635\u661c\u6626\u6622\u6633\u662b\u663a\u661d\u6634\u6639\u662e\u670f\u6710\u67c1\u67f2\u67c8\u67ba\ufffd".split(""),e=0;e!=r[206].length;++e)65533!==r[206][e].charCodeAt(0)&&(n[r[206][e]]=52736+e,t[52736+e]=r[206][e]);for(r[207]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u67dc\u67bb\u67f8\u67d8\u67c0\u67b7\u67c5\u67eb\u67e4\u67df\u67b5\u67cd\u67b3\u67f7\u67f6\u67ee\u67e3\u67c2\u67b9\u67ce\u67e7\u67f0\u67b2\u67fc\u67c6\u67ed\u67cc\u67ae\u67e6\u67db\u67fa\u67c9\u67ca\u67c3\u67ea\u67cb\u6b28\u6b82\u6b84\u6bb6\u6bd6\u6bd8\u6be0\u6c20\u6c21\u6d28\u6d34\u6d2d\u6d1f\u6d3c\u6d3f\u6d12\u6d0a\u6cda\u6d33\u6d04\u6d19\u6d3a\u6d1a\u6d11\u6d00\u6d1d\u6d42\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6d01\u6d18\u6d37\u6d03\u6d0f\u6d40\u6d07\u6d20\u6d2c\u6d08\u6d22\u6d09\u6d10\u70b7\u709f\u70be\u70b1\u70b0\u70a1\u70b4\u70b5\u70a9\u7241\u7249\u724a\u726c\u7270\u7273\u726e\u72ca\u72e4\u72e8\u72eb\u72df\u72ea\u72e6\u72e3\u7385\u73cc\u73c2\u73c8\u73c5\u73b9\u73b6\u73b5\u73b4\u73eb\u73bf\u73c7\u73be\u73c3\u73c6\u73b8\u73cb\u74ec\u74ee\u752e\u7547\u7548\u75a7\u75aa\u7679\u76c4\u7708\u7703\u7704\u7705\u770a\u76f7\u76fb\u76fa\u77e7\u77e8\u7806\u7811\u7812\u7805\u7810\u780f\u780e\u7809\u7803\u7813\u794a\u794c\u794b\u7945\u7944\u79d5\u79cd\u79cf\u79d6\u79ce\u7a80\ufffd".split(""),e=0;e!=r[207].length;++e)65533!==r[207][e].charCodeAt(0)&&(n[r[207][e]]=52992+e,t[52992+e]=r[207][e]);for(r[208]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7a7e\u7ad1\u7b00\u7b01\u7c7a\u7c78\u7c79\u7c7f\u7c80\u7c81\u7d03\u7d08\u7d01\u7f58\u7f91\u7f8d\u7fbe\u8007\u800e\u800f\u8014\u8037\u80d8\u80c7\u80e0\u80d1\u80c8\u80c2\u80d0\u80c5\u80e3\u80d9\u80dc\u80ca\u80d5\u80c9\u80cf\u80d7\u80e6\u80cd\u81ff\u8221\u8294\u82d9\u82fe\u82f9\u8307\u82e8\u8300\u82d5\u833a\u82eb\u82d6\u82f4\u82ec\u82e1\u82f2\u82f5\u830c\u82fb\u82f6\u82f0\u82ea\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u82e4\u82e0\u82fa\u82f3\u82ed\u8677\u8674\u867c\u8673\u8841\u884e\u8867\u886a\u8869\u89d3\u8a04\u8a07\u8d72\u8fe3\u8fe1\u8fee\u8fe0\u90f1\u90bd\u90bf\u90d5\u90c5\u90be\u90c7\u90cb\u90c8\u91d4\u91d3\u9654\u964f\u9651\u9653\u964a\u964e\u501e\u5005\u5007\u5013\u5022\u5030\u501b\u4ff5\u4ff4\u5033\u5037\u502c\u4ff6\u4ff7\u5017\u501c\u5020\u5027\u5035\u502f\u5031\u500e\u515a\u5194\u5193\u51ca\u51c4\u51c5\u51c8\u51ce\u5261\u525a\u5252\u525e\u525f\u5255\u5262\u52cd\u530e\u539e\u5526\u54e2\u5517\u5512\u54e7\u54f3\u54e4\u551a\u54ff\u5504\u5508\u54eb\u5511\u5505\u54f1\ufffd".split(""),e=0;e!=r[208].length;++e)65533!==r[208][e].charCodeAt(0)&&(n[r[208][e]]=53248+e,t[53248+e]=r[208][e]);for(r[209]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u550a\u54fb\u54f7\u54f8\u54e0\u550e\u5503\u550b\u5701\u5702\u57cc\u5832\u57d5\u57d2\u57ba\u57c6\u57bd\u57bc\u57b8\u57b6\u57bf\u57c7\u57d0\u57b9\u57c1\u590e\u594a\u5a19\u5a16\u5a2d\u5a2e\u5a15\u5a0f\u5a17\u5a0a\u5a1e\u5a33\u5b6c\u5ba7\u5bad\u5bac\u5c03\u5c56\u5c54\u5cec\u5cff\u5cee\u5cf1\u5cf7\u5d00\u5cf9\u5e29\u5e28\u5ea8\u5eae\u5eaa\u5eac\u5f33\u5f30\u5f67\u605d\u605a\u6067\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6041\u60a2\u6088\u6080\u6092\u6081\u609d\u6083\u6095\u609b\u6097\u6087\u609c\u608e\u6219\u6246\u62f2\u6310\u6356\u632c\u6344\u6345\u6336\u6343\u63e4\u6339\u634b\u634a\u633c\u6329\u6341\u6334\u6358\u6354\u6359\u632d\u6347\u6333\u635a\u6351\u6338\u6357\u6340\u6348\u654a\u6546\u65c6\u65c3\u65c4\u65c2\u664a\u665f\u6647\u6651\u6712\u6713\u681f\u681a\u6849\u6832\u6833\u683b\u684b\u684f\u6816\u6831\u681c\u6835\u682b\u682d\u682f\u684e\u6844\u6834\u681d\u6812\u6814\u6826\u6828\u682e\u684d\u683a\u6825\u6820\u6b2c\u6b2f\u6b2d\u6b31\u6b34\u6b6d\u8082\u6b88\u6be6\u6be4\ufffd".split(""),e=0;e!=r[209].length;++e)65533!==r[209][e].charCodeAt(0)&&(n[r[209][e]]=53504+e,t[53504+e]=r[209][e]);for(r[210]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6be8\u6be3\u6be2\u6be7\u6c25\u6d7a\u6d63\u6d64\u6d76\u6d0d\u6d61\u6d92\u6d58\u6d62\u6d6d\u6d6f\u6d91\u6d8d\u6def\u6d7f\u6d86\u6d5e\u6d67\u6d60\u6d97\u6d70\u6d7c\u6d5f\u6d82\u6d98\u6d2f\u6d68\u6d8b\u6d7e\u6d80\u6d84\u6d16\u6d83\u6d7b\u6d7d\u6d75\u6d90\u70dc\u70d3\u70d1\u70dd\u70cb\u7f39\u70e2\u70d7\u70d2\u70de\u70e0\u70d4\u70cd\u70c5\u70c6\u70c7\u70da\u70ce\u70e1\u7242\u7278\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7277\u7276\u7300\u72fa\u72f4\u72fe\u72f6\u72f3\u72fb\u7301\u73d3\u73d9\u73e5\u73d6\u73bc\u73e7\u73e3\u73e9\u73dc\u73d2\u73db\u73d4\u73dd\u73da\u73d7\u73d8\u73e8\u74de\u74df\u74f4\u74f5\u7521\u755b\u755f\u75b0\u75c1\u75bb\u75c4\u75c0\u75bf\u75b6\u75ba\u768a\u76c9\u771d\u771b\u7710\u7713\u7712\u7723\u7711\u7715\u7719\u771a\u7722\u7727\u7823\u782c\u7822\u7835\u782f\u7828\u782e\u782b\u7821\u7829\u7833\u782a\u7831\u7954\u795b\u794f\u795c\u7953\u7952\u7951\u79eb\u79ec\u79e0\u79ee\u79ed\u79ea\u79dc\u79de\u79dd\u7a86\u7a89\u7a85\u7a8b\u7a8c\u7a8a\u7a87\u7ad8\u7b10\ufffd".split(""),e=0;e!=r[210].length;++e)65533!==r[210][e].charCodeAt(0)&&(n[r[210][e]]=53760+e,t[53760+e]=r[210][e]);for(r[211]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7b04\u7b13\u7b05\u7b0f\u7b08\u7b0a\u7b0e\u7b09\u7b12\u7c84\u7c91\u7c8a\u7c8c\u7c88\u7c8d\u7c85\u7d1e\u7d1d\u7d11\u7d0e\u7d18\u7d16\u7d13\u7d1f\u7d12\u7d0f\u7d0c\u7f5c\u7f61\u7f5e\u7f60\u7f5d\u7f5b\u7f96\u7f92\u7fc3\u7fc2\u7fc0\u8016\u803e\u8039\u80fa\u80f2\u80f9\u80f5\u8101\u80fb\u8100\u8201\u822f\u8225\u8333\u832d\u8344\u8319\u8351\u8325\u8356\u833f\u8341\u8326\u831c\u8322\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8342\u834e\u831b\u832a\u8308\u833c\u834d\u8316\u8324\u8320\u8337\u832f\u8329\u8347\u8345\u834c\u8353\u831e\u832c\u834b\u8327\u8348\u8653\u8652\u86a2\u86a8\u8696\u868d\u8691\u869e\u8687\u8697\u8686\u868b\u869a\u8685\u86a5\u8699\u86a1\u86a7\u8695\u8698\u868e\u869d\u8690\u8694\u8843\u8844\u886d\u8875\u8876\u8872\u8880\u8871\u887f\u886f\u8883\u887e\u8874\u887c\u8a12\u8c47\u8c57\u8c7b\u8ca4\u8ca3\u8d76\u8d78\u8db5\u8db7\u8db6\u8ed1\u8ed3\u8ffe\u8ff5\u9002\u8fff\u8ffb\u9004\u8ffc\u8ff6\u90d6\u90e0\u90d9\u90da\u90e3\u90df\u90e5\u90d8\u90db\u90d7\u90dc\u90e4\u9150\ufffd".split(""),e=0;e!=r[211].length;++e)65533!==r[211][e].charCodeAt(0)&&(n[r[211][e]]=54016+e,t[54016+e]=r[211][e]);for(r[212]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u914e\u914f\u91d5\u91e2\u91da\u965c\u965f\u96bc\u98e3\u9adf\u9b2f\u4e7f\u5070\u506a\u5061\u505e\u5060\u5053\u504b\u505d\u5072\u5048\u504d\u5041\u505b\u504a\u5062\u5015\u5045\u505f\u5069\u506b\u5063\u5064\u5046\u5040\u506e\u5073\u5057\u5051\u51d0\u526b\u526d\u526c\u526e\u52d6\u52d3\u532d\u539c\u5575\u5576\u553c\u554d\u5550\u5534\u552a\u5551\u5562\u5536\u5535\u5530\u5552\u5545\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u550c\u5532\u5565\u554e\u5539\u5548\u552d\u553b\u5540\u554b\u570a\u5707\u57fb\u5814\u57e2\u57f6\u57dc\u57f4\u5800\u57ed\u57fd\u5808\u57f8\u580b\u57f3\u57cf\u5807\u57ee\u57e3\u57f2\u57e5\u57ec\u57e1\u580e\u57fc\u5810\u57e7\u5801\u580c\u57f1\u57e9\u57f0\u580d\u5804\u595c\u5a60\u5a58\u5a55\u5a67\u5a5e\u5a38\u5a35\u5a6d\u5a50\u5a5f\u5a65\u5a6c\u5a53\u5a64\u5a57\u5a43\u5a5d\u5a52\u5a44\u5a5b\u5a48\u5a8e\u5a3e\u5a4d\u5a39\u5a4c\u5a70\u5a69\u5a47\u5a51\u5a56\u5a42\u5a5c\u5b72\u5b6e\u5bc1\u5bc0\u5c59\u5d1e\u5d0b\u5d1d\u5d1a\u5d20\u5d0c\u5d28\u5d0d\u5d26\u5d25\u5d0f\ufffd".split(""),e=0;e!=r[212].length;++e)65533!==r[212][e].charCodeAt(0)&&(n[r[212][e]]=54272+e,t[54272+e]=r[212][e]);for(r[213]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5d30\u5d12\u5d23\u5d1f\u5d2e\u5e3e\u5e34\u5eb1\u5eb4\u5eb9\u5eb2\u5eb3\u5f36\u5f38\u5f9b\u5f96\u5f9f\u608a\u6090\u6086\u60be\u60b0\u60ba\u60d3\u60d4\u60cf\u60e4\u60d9\u60dd\u60c8\u60b1\u60db\u60b7\u60ca\u60bf\u60c3\u60cd\u60c0\u6332\u6365\u638a\u6382\u637d\u63bd\u639e\u63ad\u639d\u6397\u63ab\u638e\u636f\u6387\u6390\u636e\u63af\u6375\u639c\u636d\u63ae\u637c\u63a4\u633b\u639f\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6378\u6385\u6381\u6391\u638d\u6370\u6553\u65cd\u6665\u6661\u665b\u6659\u665c\u6662\u6718\u6879\u6887\u6890\u689c\u686d\u686e\u68ae\u68ab\u6956\u686f\u68a3\u68ac\u68a9\u6875\u6874\u68b2\u688f\u6877\u6892\u687c\u686b\u6872\u68aa\u6880\u6871\u687e\u689b\u6896\u688b\u68a0\u6889\u68a4\u6878\u687b\u6891\u688c\u688a\u687d\u6b36\u6b33\u6b37\u6b38\u6b91\u6b8f\u6b8d\u6b8e\u6b8c\u6c2a\u6dc0\u6dab\u6db4\u6db3\u6e74\u6dac\u6de9\u6de2\u6db7\u6df6\u6dd4\u6e00\u6dc8\u6de0\u6ddf\u6dd6\u6dbe\u6de5\u6ddc\u6ddd\u6ddb\u6df4\u6dca\u6dbd\u6ded\u6df0\u6dba\u6dd5\u6dc2\u6dcf\u6dc9\ufffd".split(""),e=0;e!=r[213].length;++e)65533!==r[213][e].charCodeAt(0)&&(n[r[213][e]]=54528+e,t[54528+e]=r[213][e]);for(r[214]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6dd0\u6df2\u6dd3\u6dfd\u6dd7\u6dcd\u6de3\u6dbb\u70fa\u710d\u70f7\u7117\u70f4\u710c\u70f0\u7104\u70f3\u7110\u70fc\u70ff\u7106\u7113\u7100\u70f8\u70f6\u710b\u7102\u710e\u727e\u727b\u727c\u727f\u731d\u7317\u7307\u7311\u7318\u730a\u7308\u72ff\u730f\u731e\u7388\u73f6\u73f8\u73f5\u7404\u7401\u73fd\u7407\u7400\u73fa\u73fc\u73ff\u740c\u740b\u73f4\u7408\u7564\u7563\u75ce\u75d2\u75cf\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u75cb\u75cc\u75d1\u75d0\u768f\u7689\u76d3\u7739\u772f\u772d\u7731\u7732\u7734\u7733\u773d\u7725\u773b\u7735\u7848\u7852\u7849\u784d\u784a\u784c\u7826\u7845\u7850\u7964\u7967\u7969\u796a\u7963\u796b\u7961\u79bb\u79fa\u79f8\u79f6\u79f7\u7a8f\u7a94\u7a90\u7b35\u7b47\u7b34\u7b25\u7b30\u7b22\u7b24\u7b33\u7b18\u7b2a\u7b1d\u7b31\u7b2b\u7b2d\u7b2f\u7b32\u7b38\u7b1a\u7b23\u7c94\u7c98\u7c96\u7ca3\u7d35\u7d3d\u7d38\u7d36\u7d3a\u7d45\u7d2c\u7d29\u7d41\u7d47\u7d3e\u7d3f\u7d4a\u7d3b\u7d28\u7f63\u7f95\u7f9c\u7f9d\u7f9b\u7fca\u7fcb\u7fcd\u7fd0\u7fd1\u7fc7\u7fcf\u7fc9\u801f\ufffd".split(""),e=0;e!=r[214].length;++e)65533!==r[214][e].charCodeAt(0)&&(n[r[214][e]]=54784+e,t[54784+e]=r[214][e]);for(r[215]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u801e\u801b\u8047\u8043\u8048\u8118\u8125\u8119\u811b\u812d\u811f\u812c\u811e\u8121\u8115\u8127\u811d\u8122\u8211\u8238\u8233\u823a\u8234\u8232\u8274\u8390\u83a3\u83a8\u838d\u837a\u8373\u83a4\u8374\u838f\u8381\u8395\u8399\u8375\u8394\u83a9\u837d\u8383\u838c\u839d\u839b\u83aa\u838b\u837e\u83a5\u83af\u8388\u8397\u83b0\u837f\u83a6\u8387\u83ae\u8376\u839a\u8659\u8656\u86bf\u86b7\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u86c2\u86c1\u86c5\u86ba\u86b0\u86c8\u86b9\u86b3\u86b8\u86cc\u86b4\u86bb\u86bc\u86c3\u86bd\u86be\u8852\u8889\u8895\u88a8\u88a2\u88aa\u889a\u8891\u88a1\u889f\u8898\u88a7\u8899\u889b\u8897\u88a4\u88ac\u888c\u8893\u888e\u8982\u89d6\u89d9\u89d5\u8a30\u8a27\u8a2c\u8a1e\u8c39\u8c3b\u8c5c\u8c5d\u8c7d\u8ca5\u8d7d\u8d7b\u8d79\u8dbc\u8dc2\u8db9\u8dbf\u8dc1\u8ed8\u8ede\u8edd\u8edc\u8ed7\u8ee0\u8ee1\u9024\u900b\u9011\u901c\u900c\u9021\u90ef\u90ea\u90f0\u90f4\u90f2\u90f3\u90d4\u90eb\u90ec\u90e9\u9156\u9158\u915a\u9153\u9155\u91ec\u91f4\u91f1\u91f3\u91f8\u91e4\u91f9\u91ea\ufffd".split(""),e=0;e!=r[215].length;++e)65533!==r[215][e].charCodeAt(0)&&(n[r[215][e]]=55040+e,t[55040+e]=r[215][e]);for(r[216]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u91eb\u91f7\u91e8\u91ee\u957a\u9586\u9588\u967c\u966d\u966b\u9671\u966f\u96bf\u976a\u9804\u98e5\u9997\u509b\u5095\u5094\u509e\u508b\u50a3\u5083\u508c\u508e\u509d\u5068\u509c\u5092\u5082\u5087\u515f\u51d4\u5312\u5311\u53a4\u53a7\u5591\u55a8\u55a5\u55ad\u5577\u5645\u55a2\u5593\u5588\u558f\u55b5\u5581\u55a3\u5592\u55a4\u557d\u558c\u55a6\u557f\u5595\u55a1\u558e\u570c\u5829\u5837\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5819\u581e\u5827\u5823\u5828\u57f5\u5848\u5825\u581c\u581b\u5833\u583f\u5836\u582e\u5839\u5838\u582d\u582c\u583b\u5961\u5aaf\u5a94\u5a9f\u5a7a\u5aa2\u5a9e\u5a78\u5aa6\u5a7c\u5aa5\u5aac\u5a95\u5aae\u5a37\u5a84\u5a8a\u5a97\u5a83\u5a8b\u5aa9\u5a7b\u5a7d\u5a8c\u5a9c\u5a8f\u5a93\u5a9d\u5bea\u5bcd\u5bcb\u5bd4\u5bd1\u5bca\u5bce\u5c0c\u5c30\u5d37\u5d43\u5d6b\u5d41\u5d4b\u5d3f\u5d35\u5d51\u5d4e\u5d55\u5d33\u5d3a\u5d52\u5d3d\u5d31\u5d59\u5d42\u5d39\u5d49\u5d38\u5d3c\u5d32\u5d36\u5d40\u5d45\u5e44\u5e41\u5f58\u5fa6\u5fa5\u5fab\u60c9\u60b9\u60cc\u60e2\u60ce\u60c4\u6114\ufffd".split(""),e=0;e!=r[216].length;++e)65533!==r[216][e].charCodeAt(0)&&(n[r[216][e]]=55296+e,t[55296+e]=r[216][e]);for(r[217]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u60f2\u610a\u6116\u6105\u60f5\u6113\u60f8\u60fc\u60fe\u60c1\u6103\u6118\u611d\u6110\u60ff\u6104\u610b\u624a\u6394\u63b1\u63b0\u63ce\u63e5\u63e8\u63ef\u63c3\u649d\u63f3\u63ca\u63e0\u63f6\u63d5\u63f2\u63f5\u6461\u63df\u63be\u63dd\u63dc\u63c4\u63d8\u63d3\u63c2\u63c7\u63cc\u63cb\u63c8\u63f0\u63d7\u63d9\u6532\u6567\u656a\u6564\u655c\u6568\u6565\u658c\u659d\u659e\u65ae\u65d0\u65d2\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u667c\u666c\u667b\u6680\u6671\u6679\u666a\u6672\u6701\u690c\u68d3\u6904\u68dc\u692a\u68ec\u68ea\u68f1\u690f\u68d6\u68f7\u68eb\u68e4\u68f6\u6913\u6910\u68f3\u68e1\u6907\u68cc\u6908\u6970\u68b4\u6911\u68ef\u68c6\u6914\u68f8\u68d0\u68fd\u68fc\u68e8\u690b\u690a\u6917\u68ce\u68c8\u68dd\u68de\u68e6\u68f4\u68d1\u6906\u68d4\u68e9\u6915\u6925\u68c7\u6b39\u6b3b\u6b3f\u6b3c\u6b94\u6b97\u6b99\u6b95\u6bbd\u6bf0\u6bf2\u6bf3\u6c30\u6dfc\u6e46\u6e47\u6e1f\u6e49\u6e88\u6e3c\u6e3d\u6e45\u6e62\u6e2b\u6e3f\u6e41\u6e5d\u6e73\u6e1c\u6e33\u6e4b\u6e40\u6e51\u6e3b\u6e03\u6e2e\u6e5e\ufffd".split(""),e=0;e!=r[217].length;++e)65533!==r[217][e].charCodeAt(0)&&(n[r[217][e]]=55552+e,t[55552+e]=r[217][e]);for(r[218]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6e68\u6e5c\u6e61\u6e31\u6e28\u6e60\u6e71\u6e6b\u6e39\u6e22\u6e30\u6e53\u6e65\u6e27\u6e78\u6e64\u6e77\u6e55\u6e79\u6e52\u6e66\u6e35\u6e36\u6e5a\u7120\u711e\u712f\u70fb\u712e\u7131\u7123\u7125\u7122\u7132\u711f\u7128\u713a\u711b\u724b\u725a\u7288\u7289\u7286\u7285\u728b\u7312\u730b\u7330\u7322\u7331\u7333\u7327\u7332\u732d\u7326\u7323\u7335\u730c\u742e\u742c\u7430\u742b\u7416\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u741a\u7421\u742d\u7431\u7424\u7423\u741d\u7429\u7420\u7432\u74fb\u752f\u756f\u756c\u75e7\u75da\u75e1\u75e6\u75dd\u75df\u75e4\u75d7\u7695\u7692\u76da\u7746\u7747\u7744\u774d\u7745\u774a\u774e\u774b\u774c\u77de\u77ec\u7860\u7864\u7865\u785c\u786d\u7871\u786a\u786e\u7870\u7869\u7868\u785e\u7862\u7974\u7973\u7972\u7970\u7a02\u7a0a\u7a03\u7a0c\u7a04\u7a99\u7ae6\u7ae4\u7b4a\u7b3b\u7b44\u7b48\u7b4c\u7b4e\u7b40\u7b58\u7b45\u7ca2\u7c9e\u7ca8\u7ca1\u7d58\u7d6f\u7d63\u7d53\u7d56\u7d67\u7d6a\u7d4f\u7d6d\u7d5c\u7d6b\u7d52\u7d54\u7d69\u7d51\u7d5f\u7d4e\u7f3e\u7f3f\u7f65\ufffd".split(""),e=0;e!=r[218].length;++e)65533!==r[218][e].charCodeAt(0)&&(n[r[218][e]]=55808+e,t[55808+e]=r[218][e]);for(r[219]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7f66\u7fa2\u7fa0\u7fa1\u7fd7\u8051\u804f\u8050\u80fe\u80d4\u8143\u814a\u8152\u814f\u8147\u813d\u814d\u813a\u81e6\u81ee\u81f7\u81f8\u81f9\u8204\u823c\u823d\u823f\u8275\u833b\u83cf\u83f9\u8423\u83c0\u83e8\u8412\u83e7\u83e4\u83fc\u83f6\u8410\u83c6\u83c8\u83eb\u83e3\u83bf\u8401\u83dd\u83e5\u83d8\u83ff\u83e1\u83cb\u83ce\u83d6\u83f5\u83c9\u8409\u840f\u83de\u8411\u8406\u83c2\u83f3\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u83d5\u83fa\u83c7\u83d1\u83ea\u8413\u83c3\u83ec\u83ee\u83c4\u83fb\u83d7\u83e2\u841b\u83db\u83fe\u86d8\u86e2\u86e6\u86d3\u86e3\u86da\u86ea\u86dd\u86eb\u86dc\u86ec\u86e9\u86d7\u86e8\u86d1\u8848\u8856\u8855\u88ba\u88d7\u88b9\u88b8\u88c0\u88be\u88b6\u88bc\u88b7\u88bd\u88b2\u8901\u88c9\u8995\u8998\u8997\u89dd\u89da\u89db\u8a4e\u8a4d\u8a39\u8a59\u8a40\u8a57\u8a58\u8a44\u8a45\u8a52\u8a48\u8a51\u8a4a\u8a4c\u8a4f\u8c5f\u8c81\u8c80\u8cba\u8cbe\u8cb0\u8cb9\u8cb5\u8d84\u8d80\u8d89\u8dd8\u8dd3\u8dcd\u8dc7\u8dd6\u8ddc\u8dcf\u8dd5\u8dd9\u8dc8\u8dd7\u8dc5\u8eef\u8ef7\u8efa\ufffd".split(""),e=0;e!=r[219].length;++e)65533!==r[219][e].charCodeAt(0)&&(n[r[219][e]]=56064+e,t[56064+e]=r[219][e]);for(r[220]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8ef9\u8ee6\u8eee\u8ee5\u8ef5\u8ee7\u8ee8\u8ef6\u8eeb\u8ef1\u8eec\u8ef4\u8ee9\u902d\u9034\u902f\u9106\u912c\u9104\u90ff\u90fc\u9108\u90f9\u90fb\u9101\u9100\u9107\u9105\u9103\u9161\u9164\u915f\u9162\u9160\u9201\u920a\u9225\u9203\u921a\u9226\u920f\u920c\u9200\u9212\u91ff\u91fd\u9206\u9204\u9227\u9202\u921c\u9224\u9219\u9217\u9205\u9216\u957b\u958d\u958c\u9590\u9687\u967e\u9688\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9689\u9683\u9680\u96c2\u96c8\u96c3\u96f1\u96f0\u976c\u9770\u976e\u9807\u98a9\u98eb\u9ce6\u9ef9\u4e83\u4e84\u4eb6\u50bd\u50bf\u50c6\u50ae\u50c4\u50ca\u50b4\u50c8\u50c2\u50b0\u50c1\u50ba\u50b1\u50cb\u50c9\u50b6\u50b8\u51d7\u527a\u5278\u527b\u527c\u55c3\u55db\u55cc\u55d0\u55cb\u55ca\u55dd\u55c0\u55d4\u55c4\u55e9\u55bf\u55d2\u558d\u55cf\u55d5\u55e2\u55d6\u55c8\u55f2\u55cd\u55d9\u55c2\u5714\u5853\u5868\u5864\u584f\u584d\u5849\u586f\u5855\u584e\u585d\u5859\u5865\u585b\u583d\u5863\u5871\u58fc\u5ac7\u5ac4\u5acb\u5aba\u5ab8\u5ab1\u5ab5\u5ab0\u5abf\u5ac8\u5abb\u5ac6\ufffd".split(""),e=0;e!=r[220].length;++e)65533!==r[220][e].charCodeAt(0)&&(n[r[220][e]]=56320+e,t[56320+e]=r[220][e]);for(r[221]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5ab7\u5ac0\u5aca\u5ab4\u5ab6\u5acd\u5ab9\u5a90\u5bd6\u5bd8\u5bd9\u5c1f\u5c33\u5d71\u5d63\u5d4a\u5d65\u5d72\u5d6c\u5d5e\u5d68\u5d67\u5d62\u5df0\u5e4f\u5e4e\u5e4a\u5e4d\u5e4b\u5ec5\u5ecc\u5ec6\u5ecb\u5ec7\u5f40\u5faf\u5fad\u60f7\u6149\u614a\u612b\u6145\u6136\u6132\u612e\u6146\u612f\u614f\u6129\u6140\u6220\u9168\u6223\u6225\u6224\u63c5\u63f1\u63eb\u6410\u6412\u6409\u6420\u6424\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6433\u6443\u641f\u6415\u6418\u6439\u6437\u6422\u6423\u640c\u6426\u6430\u6428\u6441\u6435\u642f\u640a\u641a\u6440\u6425\u6427\u640b\u63e7\u641b\u642e\u6421\u640e\u656f\u6592\u65d3\u6686\u668c\u6695\u6690\u668b\u668a\u6699\u6694\u6678\u6720\u6966\u695f\u6938\u694e\u6962\u6971\u693f\u6945\u696a\u6939\u6942\u6957\u6959\u697a\u6948\u6949\u6935\u696c\u6933\u693d\u6965\u68f0\u6978\u6934\u6969\u6940\u696f\u6944\u6976\u6958\u6941\u6974\u694c\u693b\u694b\u6937\u695c\u694f\u6951\u6932\u6952\u692f\u697b\u693c\u6b46\u6b45\u6b43\u6b42\u6b48\u6b41\u6b9b\ufa0d\u6bfb\u6bfc\ufffd".split(""),e=0;e!=r[221].length;++e)65533!==r[221][e].charCodeAt(0)&&(n[r[221][e]]=56576+e,t[56576+e]=r[221][e]);for(r[222]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6bf9\u6bf7\u6bf8\u6e9b\u6ed6\u6ec8\u6e8f\u6ec0\u6e9f\u6e93\u6e94\u6ea0\u6eb1\u6eb9\u6ec6\u6ed2\u6ebd\u6ec1\u6e9e\u6ec9\u6eb7\u6eb0\u6ecd\u6ea6\u6ecf\u6eb2\u6ebe\u6ec3\u6edc\u6ed8\u6e99\u6e92\u6e8e\u6e8d\u6ea4\u6ea1\u6ebf\u6eb3\u6ed0\u6eca\u6e97\u6eae\u6ea3\u7147\u7154\u7152\u7163\u7160\u7141\u715d\u7162\u7172\u7178\u716a\u7161\u7142\u7158\u7143\u714b\u7170\u715f\u7150\u7153\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7144\u714d\u715a\u724f\u728d\u728c\u7291\u7290\u728e\u733c\u7342\u733b\u733a\u7340\u734a\u7349\u7444\u744a\u744b\u7452\u7451\u7457\u7440\u744f\u7450\u744e\u7442\u7446\u744d\u7454\u74e1\u74ff\u74fe\u74fd\u751d\u7579\u7577\u6983\u75ef\u760f\u7603\u75f7\u75fe\u75fc\u75f9\u75f8\u7610\u75fb\u75f6\u75ed\u75f5\u75fd\u7699\u76b5\u76dd\u7755\u775f\u7760\u7752\u7756\u775a\u7769\u7767\u7754\u7759\u776d\u77e0\u7887\u789a\u7894\u788f\u7884\u7895\u7885\u7886\u78a1\u7883\u7879\u7899\u7880\u7896\u787b\u797c\u7982\u797d\u7979\u7a11\u7a18\u7a19\u7a12\u7a17\u7a15\u7a22\u7a13\ufffd".split(""),e=0;e!=r[222].length;++e)65533!==r[222][e].charCodeAt(0)&&(n[r[222][e]]=56832+e,t[56832+e]=r[222][e]);for(r[223]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7a1b\u7a10\u7aa3\u7aa2\u7a9e\u7aeb\u7b66\u7b64\u7b6d\u7b74\u7b69\u7b72\u7b65\u7b73\u7b71\u7b70\u7b61\u7b78\u7b76\u7b63\u7cb2\u7cb4\u7caf\u7d88\u7d86\u7d80\u7d8d\u7d7f\u7d85\u7d7a\u7d8e\u7d7b\u7d83\u7d7c\u7d8c\u7d94\u7d84\u7d7d\u7d92\u7f6d\u7f6b\u7f67\u7f68\u7f6c\u7fa6\u7fa5\u7fa7\u7fdb\u7fdc\u8021\u8164\u8160\u8177\u815c\u8169\u815b\u8162\u8172\u6721\u815e\u8176\u8167\u816f\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8144\u8161\u821d\u8249\u8244\u8240\u8242\u8245\u84f1\u843f\u8456\u8476\u8479\u848f\u848d\u8465\u8451\u8440\u8486\u8467\u8430\u844d\u847d\u845a\u8459\u8474\u8473\u845d\u8507\u845e\u8437\u843a\u8434\u847a\u8443\u8478\u8432\u8445\u8429\u83d9\u844b\u842f\u8442\u842d\u845f\u8470\u8439\u844e\u844c\u8452\u846f\u84c5\u848e\u843b\u8447\u8436\u8433\u8468\u847e\u8444\u842b\u8460\u8454\u846e\u8450\u870b\u8704\u86f7\u870c\u86fa\u86d6\u86f5\u874d\u86f8\u870e\u8709\u8701\u86f6\u870d\u8705\u88d6\u88cb\u88cd\u88ce\u88de\u88db\u88da\u88cc\u88d0\u8985\u899b\u89df\u89e5\u89e4\ufffd".split(""),e=0;e!=r[223].length;++e)65533!==r[223][e].charCodeAt(0)&&(n[r[223][e]]=57088+e,t[57088+e]=r[223][e]);for(r[224]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u89e1\u89e0\u89e2\u89dc\u89e6\u8a76\u8a86\u8a7f\u8a61\u8a3f\u8a77\u8a82\u8a84\u8a75\u8a83\u8a81\u8a74\u8a7a\u8c3c\u8c4b\u8c4a\u8c65\u8c64\u8c66\u8c86\u8c84\u8c85\u8ccc\u8d68\u8d69\u8d91\u8d8c\u8d8e\u8d8f\u8d8d\u8d93\u8d94\u8d90\u8d92\u8df0\u8de0\u8dec\u8df1\u8dee\u8dd0\u8de9\u8de3\u8de2\u8de7\u8df2\u8deb\u8df4\u8f06\u8eff\u8f01\u8f00\u8f05\u8f07\u8f08\u8f02\u8f0b\u9052\u903f\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9044\u9049\u903d\u9110\u910d\u910f\u9111\u9116\u9114\u910b\u910e\u916e\u916f\u9248\u9252\u9230\u923a\u9266\u9233\u9265\u925e\u9283\u922e\u924a\u9246\u926d\u926c\u924f\u9260\u9267\u926f\u9236\u9261\u9270\u9231\u9254\u9263\u9250\u9272\u924e\u9253\u924c\u9256\u9232\u959f\u959c\u959e\u959b\u9692\u9693\u9691\u9697\u96ce\u96fa\u96fd\u96f8\u96f5\u9773\u9777\u9778\u9772\u980f\u980d\u980e\u98ac\u98f6\u98f9\u99af\u99b2\u99b0\u99b5\u9aad\u9aab\u9b5b\u9cea\u9ced\u9ce7\u9e80\u9efd\u50e6\u50d4\u50d7\u50e8\u50f3\u50db\u50ea\u50dd\u50e4\u50d3\u50ec\u50f0\u50ef\u50e3\u50e0\ufffd".split(""),e=0;e!=r[224].length;++e)65533!==r[224][e].charCodeAt(0)&&(n[r[224][e]]=57344+e,t[57344+e]=r[224][e]);for(r[225]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u51d8\u5280\u5281\u52e9\u52eb\u5330\u53ac\u5627\u5615\u560c\u5612\u55fc\u560f\u561c\u5601\u5613\u5602\u55fa\u561d\u5604\u55ff\u55f9\u5889\u587c\u5890\u5898\u5886\u5881\u587f\u5874\u588b\u587a\u5887\u5891\u588e\u5876\u5882\u5888\u587b\u5894\u588f\u58fe\u596b\u5adc\u5aee\u5ae5\u5ad5\u5aea\u5ada\u5aed\u5aeb\u5af3\u5ae2\u5ae0\u5adb\u5aec\u5ade\u5add\u5ad9\u5ae8\u5adf\u5b77\u5be0\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5be3\u5c63\u5d82\u5d80\u5d7d\u5d86\u5d7a\u5d81\u5d77\u5d8a\u5d89\u5d88\u5d7e\u5d7c\u5d8d\u5d79\u5d7f\u5e58\u5e59\u5e53\u5ed8\u5ed1\u5ed7\u5ece\u5edc\u5ed5\u5ed9\u5ed2\u5ed4\u5f44\u5f43\u5f6f\u5fb6\u612c\u6128\u6141\u615e\u6171\u6173\u6152\u6153\u6172\u616c\u6180\u6174\u6154\u617a\u615b\u6165\u613b\u616a\u6161\u6156\u6229\u6227\u622b\u642b\u644d\u645b\u645d\u6474\u6476\u6472\u6473\u647d\u6475\u6466\u64a6\u644e\u6482\u645e\u645c\u644b\u6453\u6460\u6450\u647f\u643f\u646c\u646b\u6459\u6465\u6477\u6573\u65a0\u66a1\u66a0\u669f\u6705\u6704\u6722\u69b1\u69b6\u69c9\ufffd".split(""),e=0;e!=r[225].length;++e)65533!==r[225][e].charCodeAt(0)&&(n[r[225][e]]=57600+e,t[57600+e]=r[225][e]);for(r[226]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u69a0\u69ce\u6996\u69b0\u69ac\u69bc\u6991\u6999\u698e\u69a7\u698d\u69a9\u69be\u69af\u69bf\u69c4\u69bd\u69a4\u69d4\u69b9\u69ca\u699a\u69cf\u69b3\u6993\u69aa\u69a1\u699e\u69d9\u6997\u6990\u69c2\u69b5\u69a5\u69c6\u6b4a\u6b4d\u6b4b\u6b9e\u6b9f\u6ba0\u6bc3\u6bc4\u6bfe\u6ece\u6ef5\u6ef1\u6f03\u6f25\u6ef8\u6f37\u6efb\u6f2e\u6f09\u6f4e\u6f19\u6f1a\u6f27\u6f18\u6f3b\u6f12\u6eed\u6f0a\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6f36\u6f73\u6ef9\u6eee\u6f2d\u6f40\u6f30\u6f3c\u6f35\u6eeb\u6f07\u6f0e\u6f43\u6f05\u6efd\u6ef6\u6f39\u6f1c\u6efc\u6f3a\u6f1f\u6f0d\u6f1e\u6f08\u6f21\u7187\u7190\u7189\u7180\u7185\u7182\u718f\u717b\u7186\u7181\u7197\u7244\u7253\u7297\u7295\u7293\u7343\u734d\u7351\u734c\u7462\u7473\u7471\u7475\u7472\u7467\u746e\u7500\u7502\u7503\u757d\u7590\u7616\u7608\u760c\u7615\u7611\u760a\u7614\u76b8\u7781\u777c\u7785\u7782\u776e\u7780\u776f\u777e\u7783\u78b2\u78aa\u78b4\u78ad\u78a8\u787e\u78ab\u789e\u78a5\u78a0\u78ac\u78a2\u78a4\u7998\u798a\u798b\u7996\u7995\u7994\u7993\ufffd".split(""),e=0;e!=r[226].length;++e)65533!==r[226][e].charCodeAt(0)&&(n[r[226][e]]=57856+e,t[57856+e]=r[226][e]);for(r[227]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7997\u7988\u7992\u7990\u7a2b\u7a4a\u7a30\u7a2f\u7a28\u7a26\u7aa8\u7aab\u7aac\u7aee\u7b88\u7b9c\u7b8a\u7b91\u7b90\u7b96\u7b8d\u7b8c\u7b9b\u7b8e\u7b85\u7b98\u5284\u7b99\u7ba4\u7b82\u7cbb\u7cbf\u7cbc\u7cba\u7da7\u7db7\u7dc2\u7da3\u7daa\u7dc1\u7dc0\u7dc5\u7d9d\u7dce\u7dc4\u7dc6\u7dcb\u7dcc\u7daf\u7db9\u7d96\u7dbc\u7d9f\u7da6\u7dae\u7da9\u7da1\u7dc9\u7f73\u7fe2\u7fe3\u7fe5\u7fde\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8024\u805d\u805c\u8189\u8186\u8183\u8187\u818d\u818c\u818b\u8215\u8497\u84a4\u84a1\u849f\u84ba\u84ce\u84c2\u84ac\u84ae\u84ab\u84b9\u84b4\u84c1\u84cd\u84aa\u849a\u84b1\u84d0\u849d\u84a7\u84bb\u84a2\u8494\u84c7\u84cc\u849b\u84a9\u84af\u84a8\u84d6\u8498\u84b6\u84cf\u84a0\u84d7\u84d4\u84d2\u84db\u84b0\u8491\u8661\u8733\u8723\u8728\u876b\u8740\u872e\u871e\u8721\u8719\u871b\u8743\u872c\u8741\u873e\u8746\u8720\u8732\u872a\u872d\u873c\u8712\u873a\u8731\u8735\u8742\u8726\u8727\u8738\u8724\u871a\u8730\u8711\u88f7\u88e7\u88f1\u88f2\u88fa\u88fe\u88ee\u88fc\u88f6\u88fb\ufffd".split(""),e=0;e!=r[227].length;++e)65533!==r[227][e].charCodeAt(0)&&(n[r[227][e]]=58112+e,t[58112+e]=r[227][e]);for(r[228]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u88f0\u88ec\u88eb\u899d\u89a1\u899f\u899e\u89e9\u89eb\u89e8\u8aab\u8a99\u8a8b\u8a92\u8a8f\u8a96\u8c3d\u8c68\u8c69\u8cd5\u8ccf\u8cd7\u8d96\u8e09\u8e02\u8dff\u8e0d\u8dfd\u8e0a\u8e03\u8e07\u8e06\u8e05\u8dfe\u8e00\u8e04\u8f10\u8f11\u8f0e\u8f0d\u9123\u911c\u9120\u9122\u911f\u911d\u911a\u9124\u9121\u911b\u917a\u9172\u9179\u9173\u92a5\u92a4\u9276\u929b\u927a\u92a0\u9294\u92aa\u928d\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u92a6\u929a\u92ab\u9279\u9297\u927f\u92a3\u92ee\u928e\u9282\u9295\u92a2\u927d\u9288\u92a1\u928a\u9286\u928c\u9299\u92a7\u927e\u9287\u92a9\u929d\u928b\u922d\u969e\u96a1\u96ff\u9758\u977d\u977a\u977e\u9783\u9780\u9782\u977b\u9784\u9781\u977f\u97ce\u97cd\u9816\u98ad\u98ae\u9902\u9900\u9907\u999d\u999c\u99c3\u99b9\u99bb\u99ba\u99c2\u99bd\u99c7\u9ab1\u9ae3\u9ae7\u9b3e\u9b3f\u9b60\u9b61\u9b5f\u9cf1\u9cf2\u9cf5\u9ea7\u50ff\u5103\u5130\u50f8\u5106\u5107\u50f6\u50fe\u510b\u510c\u50fd\u510a\u528b\u528c\u52f1\u52ef\u5648\u5642\u564c\u5635\u5641\u564a\u5649\u5646\u5658\ufffd".split(""),e=0;e!=r[228].length;++e)65533!==r[228][e].charCodeAt(0)&&(n[r[228][e]]=58368+e,t[58368+e]=r[228][e]);for(r[229]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u565a\u5640\u5633\u563d\u562c\u563e\u5638\u562a\u563a\u571a\u58ab\u589d\u58b1\u58a0\u58a3\u58af\u58ac\u58a5\u58a1\u58ff\u5aff\u5af4\u5afd\u5af7\u5af6\u5b03\u5af8\u5b02\u5af9\u5b01\u5b07\u5b05\u5b0f\u5c67\u5d99\u5d97\u5d9f\u5d92\u5da2\u5d93\u5d95\u5da0\u5d9c\u5da1\u5d9a\u5d9e\u5e69\u5e5d\u5e60\u5e5c\u7df3\u5edb\u5ede\u5ee1\u5f49\u5fb2\u618b\u6183\u6179\u61b1\u61b0\u61a2\u6189\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u619b\u6193\u61af\u61ad\u619f\u6192\u61aa\u61a1\u618d\u6166\u61b3\u622d\u646e\u6470\u6496\u64a0\u6485\u6497\u649c\u648f\u648b\u648a\u648c\u64a3\u649f\u6468\u64b1\u6498\u6576\u657a\u6579\u657b\u65b2\u65b3\u66b5\u66b0\u66a9\u66b2\u66b7\u66aa\u66af\u6a00\u6a06\u6a17\u69e5\u69f8\u6a15\u69f1\u69e4\u6a20\u69ff\u69ec\u69e2\u6a1b\u6a1d\u69fe\u6a27\u69f2\u69ee\u6a14\u69f7\u69e7\u6a40\u6a08\u69e6\u69fb\u6a0d\u69fc\u69eb\u6a09\u6a04\u6a18\u6a25\u6a0f\u69f6\u6a26\u6a07\u69f4\u6a16\u6b51\u6ba5\u6ba3\u6ba2\u6ba6\u6c01\u6c00\u6bff\u6c02\u6f41\u6f26\u6f7e\u6f87\u6fc6\u6f92\ufffd".split(""),e=0;e!=r[229].length;++e)65533!==r[229][e].charCodeAt(0)&&(n[r[229][e]]=58624+e,t[58624+e]=r[229][e]);for(r[230]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6f8d\u6f89\u6f8c\u6f62\u6f4f\u6f85\u6f5a\u6f96\u6f76\u6f6c\u6f82\u6f55\u6f72\u6f52\u6f50\u6f57\u6f94\u6f93\u6f5d\u6f00\u6f61\u6f6b\u6f7d\u6f67\u6f90\u6f53\u6f8b\u6f69\u6f7f\u6f95\u6f63\u6f77\u6f6a\u6f7b\u71b2\u71af\u719b\u71b0\u71a0\u719a\u71a9\u71b5\u719d\u71a5\u719e\u71a4\u71a1\u71aa\u719c\u71a7\u71b3\u7298\u729a\u7358\u7352\u735e\u735f\u7360\u735d\u735b\u7361\u735a\u7359\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7362\u7487\u7489\u748a\u7486\u7481\u747d\u7485\u7488\u747c\u7479\u7508\u7507\u757e\u7625\u761e\u7619\u761d\u761c\u7623\u761a\u7628\u761b\u769c\u769d\u769e\u769b\u778d\u778f\u7789\u7788\u78cd\u78bb\u78cf\u78cc\u78d1\u78ce\u78d4\u78c8\u78c3\u78c4\u78c9\u799a\u79a1\u79a0\u799c\u79a2\u799b\u6b76\u7a39\u7ab2\u7ab4\u7ab3\u7bb7\u7bcb\u7bbe\u7bac\u7bce\u7baf\u7bb9\u7bca\u7bb5\u7cc5\u7cc8\u7ccc\u7ccb\u7df7\u7ddb\u7dea\u7de7\u7dd7\u7de1\u7e03\u7dfa\u7de6\u7df6\u7df1\u7df0\u7dee\u7ddf\u7f76\u7fac\u7fb0\u7fad\u7fed\u7feb\u7fea\u7fec\u7fe6\u7fe8\u8064\u8067\u81a3\u819f\ufffd".split(""),e=0;e!=r[230].length;++e)65533!==r[230][e].charCodeAt(0)&&(n[r[230][e]]=58880+e,t[58880+e]=r[230][e]);for(r[231]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u819e\u8195\u81a2\u8199\u8197\u8216\u824f\u8253\u8252\u8250\u824e\u8251\u8524\u853b\u850f\u8500\u8529\u850e\u8509\u850d\u851f\u850a\u8527\u851c\u84fb\u852b\u84fa\u8508\u850c\u84f4\u852a\u84f2\u8515\u84f7\u84eb\u84f3\u84fc\u8512\u84ea\u84e9\u8516\u84fe\u8528\u851d\u852e\u8502\u84fd\u851e\u84f6\u8531\u8526\u84e7\u84e8\u84f0\u84ef\u84f9\u8518\u8520\u8530\u850b\u8519\u852f\u8662\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8756\u8763\u8764\u8777\u87e1\u8773\u8758\u8754\u875b\u8752\u8761\u875a\u8751\u875e\u876d\u876a\u8750\u874e\u875f\u875d\u876f\u876c\u877a\u876e\u875c\u8765\u874f\u877b\u8775\u8762\u8767\u8769\u885a\u8905\u890c\u8914\u890b\u8917\u8918\u8919\u8906\u8916\u8911\u890e\u8909\u89a2\u89a4\u89a3\u89ed\u89f0\u89ec\u8acf\u8ac6\u8ab8\u8ad3\u8ad1\u8ad4\u8ad5\u8abb\u8ad7\u8abe\u8ac0\u8ac5\u8ad8\u8ac3\u8aba\u8abd\u8ad9\u8c3e\u8c4d\u8c8f\u8ce5\u8cdf\u8cd9\u8ce8\u8cda\u8cdd\u8ce7\u8da0\u8d9c\u8da1\u8d9b\u8e20\u8e23\u8e25\u8e24\u8e2e\u8e15\u8e1b\u8e16\u8e11\u8e19\u8e26\u8e27\ufffd".split(""),e=0;e!=r[231].length;++e)65533!==r[231][e].charCodeAt(0)&&(n[r[231][e]]=59136+e,t[59136+e]=r[231][e]);for(r[232]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8e14\u8e12\u8e18\u8e13\u8e1c\u8e17\u8e1a\u8f2c\u8f24\u8f18\u8f1a\u8f20\u8f23\u8f16\u8f17\u9073\u9070\u906f\u9067\u906b\u912f\u912b\u9129\u912a\u9132\u9126\u912e\u9185\u9186\u918a\u9181\u9182\u9184\u9180\u92d0\u92c3\u92c4\u92c0\u92d9\u92b6\u92cf\u92f1\u92df\u92d8\u92e9\u92d7\u92dd\u92cc\u92ef\u92c2\u92e8\u92ca\u92c8\u92ce\u92e6\u92cd\u92d5\u92c9\u92e0\u92de\u92e7\u92d1\u92d3\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u92b5\u92e1\u92c6\u92b4\u957c\u95ac\u95ab\u95ae\u95b0\u96a4\u96a2\u96d3\u9705\u9708\u9702\u975a\u978a\u978e\u9788\u97d0\u97cf\u981e\u981d\u9826\u9829\u9828\u9820\u981b\u9827\u98b2\u9908\u98fa\u9911\u9914\u9916\u9917\u9915\u99dc\u99cd\u99cf\u99d3\u99d4\u99ce\u99c9\u99d6\u99d8\u99cb\u99d7\u99cc\u9ab3\u9aec\u9aeb\u9af3\u9af2\u9af1\u9b46\u9b43\u9b67\u9b74\u9b71\u9b66\u9b76\u9b75\u9b70\u9b68\u9b64\u9b6c\u9cfc\u9cfa\u9cfd\u9cff\u9cf7\u9d07\u9d00\u9cf9\u9cfb\u9d08\u9d05\u9d04\u9e83\u9ed3\u9f0f\u9f10\u511c\u5113\u5117\u511a\u5111\u51de\u5334\u53e1\u5670\u5660\u566e\ufffd".split(""),e=0;e!=r[232].length;++e)65533!==r[232][e].charCodeAt(0)&&(n[r[232][e]]=59392+e,t[59392+e]=r[232][e]);for(r[233]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5673\u5666\u5663\u566d\u5672\u565e\u5677\u571c\u571b\u58c8\u58bd\u58c9\u58bf\u58ba\u58c2\u58bc\u58c6\u5b17\u5b19\u5b1b\u5b21\u5b14\u5b13\u5b10\u5b16\u5b28\u5b1a\u5b20\u5b1e\u5bef\u5dac\u5db1\u5da9\u5da7\u5db5\u5db0\u5dae\u5daa\u5da8\u5db2\u5dad\u5daf\u5db4\u5e67\u5e68\u5e66\u5e6f\u5ee9\u5ee7\u5ee6\u5ee8\u5ee5\u5f4b\u5fbc\u619d\u61a8\u6196\u61c5\u61b4\u61c6\u61c1\u61cc\u61ba\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u61bf\u61b8\u618c\u64d7\u64d6\u64d0\u64cf\u64c9\u64bd\u6489\u64c3\u64db\u64f3\u64d9\u6533\u657f\u657c\u65a2\u66c8\u66be\u66c0\u66ca\u66cb\u66cf\u66bd\u66bb\u66ba\u66cc\u6723\u6a34\u6a66\u6a49\u6a67\u6a32\u6a68\u6a3e\u6a5d\u6a6d\u6a76\u6a5b\u6a51\u6a28\u6a5a\u6a3b\u6a3f\u6a41\u6a6a\u6a64\u6a50\u6a4f\u6a54\u6a6f\u6a69\u6a60\u6a3c\u6a5e\u6a56\u6a55\u6a4d\u6a4e\u6a46\u6b55\u6b54\u6b56\u6ba7\u6baa\u6bab\u6bc8\u6bc7\u6c04\u6c03\u6c06\u6fad\u6fcb\u6fa3\u6fc7\u6fbc\u6fce\u6fc8\u6f5e\u6fc4\u6fbd\u6f9e\u6fca\u6fa8\u7004\u6fa5\u6fae\u6fba\u6fac\u6faa\u6fcf\u6fbf\u6fb8\ufffd".split(""),e=0;e!=r[233].length;++e)65533!==r[233][e].charCodeAt(0)&&(n[r[233][e]]=59648+e,t[59648+e]=r[233][e]);for(r[234]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6fa2\u6fc9\u6fab\u6fcd\u6faf\u6fb2\u6fb0\u71c5\u71c2\u71bf\u71b8\u71d6\u71c0\u71c1\u71cb\u71d4\u71ca\u71c7\u71cf\u71bd\u71d8\u71bc\u71c6\u71da\u71db\u729d\u729e\u7369\u7366\u7367\u736c\u7365\u736b\u736a\u747f\u749a\u74a0\u7494\u7492\u7495\u74a1\u750b\u7580\u762f\u762d\u7631\u763d\u7633\u763c\u7635\u7632\u7630\u76bb\u76e6\u779a\u779d\u77a1\u779c\u779b\u77a2\u77a3\u7795\u7799\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7797\u78dd\u78e9\u78e5\u78ea\u78de\u78e3\u78db\u78e1\u78e2\u78ed\u78df\u78e0\u79a4\u7a44\u7a48\u7a47\u7ab6\u7ab8\u7ab5\u7ab1\u7ab7\u7bde\u7be3\u7be7\u7bdd\u7bd5\u7be5\u7bda\u7be8\u7bf9\u7bd4\u7bea\u7be2\u7bdc\u7beb\u7bd8\u7bdf\u7cd2\u7cd4\u7cd7\u7cd0\u7cd1\u7e12\u7e21\u7e17\u7e0c\u7e1f\u7e20\u7e13\u7e0e\u7e1c\u7e15\u7e1a\u7e22\u7e0b\u7e0f\u7e16\u7e0d\u7e14\u7e25\u7e24\u7f43\u7f7b\u7f7c\u7f7a\u7fb1\u7fef\u802a\u8029\u806c\u81b1\u81a6\u81ae\u81b9\u81b5\u81ab\u81b0\u81ac\u81b4\u81b2\u81b7\u81a7\u81f2\u8255\u8256\u8257\u8556\u8545\u856b\u854d\u8553\u8561\u8558\ufffd".split(""),e=0;e!=r[234].length;++e)65533!==r[234][e].charCodeAt(0)&&(n[r[234][e]]=59904+e,t[59904+e]=r[234][e]);for(r[235]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8540\u8546\u8564\u8541\u8562\u8544\u8551\u8547\u8563\u853e\u855b\u8571\u854e\u856e\u8575\u8555\u8567\u8560\u858c\u8566\u855d\u8554\u8565\u856c\u8663\u8665\u8664\u879b\u878f\u8797\u8793\u8792\u8788\u8781\u8796\u8798\u8779\u8787\u87a3\u8785\u8790\u8791\u879d\u8784\u8794\u879c\u879a\u8789\u891e\u8926\u8930\u892d\u892e\u8927\u8931\u8922\u8929\u8923\u892f\u892c\u891f\u89f1\u8ae0\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8ae2\u8af2\u8af4\u8af5\u8add\u8b14\u8ae4\u8adf\u8af0\u8ac8\u8ade\u8ae1\u8ae8\u8aff\u8aef\u8afb\u8c91\u8c92\u8c90\u8cf5\u8cee\u8cf1\u8cf0\u8cf3\u8d6c\u8d6e\u8da5\u8da7\u8e33\u8e3e\u8e38\u8e40\u8e45\u8e36\u8e3c\u8e3d\u8e41\u8e30\u8e3f\u8ebd\u8f36\u8f2e\u8f35\u8f32\u8f39\u8f37\u8f34\u9076\u9079\u907b\u9086\u90fa\u9133\u9135\u9136\u9193\u9190\u9191\u918d\u918f\u9327\u931e\u9308\u931f\u9306\u930f\u937a\u9338\u933c\u931b\u9323\u9312\u9301\u9346\u932d\u930e\u930d\u92cb\u931d\u92fa\u9325\u9313\u92f9\u92f7\u9334\u9302\u9324\u92ff\u9329\u9339\u9335\u932a\u9314\u930c\ufffd".split(""),e=0;e!=r[235].length;++e)65533!==r[235][e].charCodeAt(0)&&(n[r[235][e]]=60160+e,t[60160+e]=r[235][e]);for(r[236]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u930b\u92fe\u9309\u9300\u92fb\u9316\u95bc\u95cd\u95be\u95b9\u95ba\u95b6\u95bf\u95b5\u95bd\u96a9\u96d4\u970b\u9712\u9710\u9799\u9797\u9794\u97f0\u97f8\u9835\u982f\u9832\u9924\u991f\u9927\u9929\u999e\u99ee\u99ec\u99e5\u99e4\u99f0\u99e3\u99ea\u99e9\u99e7\u9ab9\u9abf\u9ab4\u9abb\u9af6\u9afa\u9af9\u9af7\u9b33\u9b80\u9b85\u9b87\u9b7c\u9b7e\u9b7b\u9b82\u9b93\u9b92\u9b90\u9b7a\u9b95\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9b7d\u9b88\u9d25\u9d17\u9d20\u9d1e\u9d14\u9d29\u9d1d\u9d18\u9d22\u9d10\u9d19\u9d1f\u9e88\u9e86\u9e87\u9eae\u9ead\u9ed5\u9ed6\u9efa\u9f12\u9f3d\u5126\u5125\u5122\u5124\u5120\u5129\u52f4\u5693\u568c\u568d\u5686\u5684\u5683\u567e\u5682\u567f\u5681\u58d6\u58d4\u58cf\u58d2\u5b2d\u5b25\u5b32\u5b23\u5b2c\u5b27\u5b26\u5b2f\u5b2e\u5b7b\u5bf1\u5bf2\u5db7\u5e6c\u5e6a\u5fbe\u5fbb\u61c3\u61b5\u61bc\u61e7\u61e0\u61e5\u61e4\u61e8\u61de\u64ef\u64e9\u64e3\u64eb\u64e4\u64e8\u6581\u6580\u65b6\u65da\u66d2\u6a8d\u6a96\u6a81\u6aa5\u6a89\u6a9f\u6a9b\u6aa1\u6a9e\u6a87\u6a93\u6a8e\ufffd".split(""),e=0;e!=r[236].length;++e)65533!==r[236][e].charCodeAt(0)&&(n[r[236][e]]=60416+e,t[60416+e]=r[236][e]);for(r[237]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6a95\u6a83\u6aa8\u6aa4\u6a91\u6a7f\u6aa6\u6a9a\u6a85\u6a8c\u6a92\u6b5b\u6bad\u6c09\u6fcc\u6fa9\u6ff4\u6fd4\u6fe3\u6fdc\u6fed\u6fe7\u6fe6\u6fde\u6ff2\u6fdd\u6fe2\u6fe8\u71e1\u71f1\u71e8\u71f2\u71e4\u71f0\u71e2\u7373\u736e\u736f\u7497\u74b2\u74ab\u7490\u74aa\u74ad\u74b1\u74a5\u74af\u7510\u7511\u7512\u750f\u7584\u7643\u7648\u7649\u7647\u76a4\u76e9\u77b5\u77ab\u77b2\u77b7\u77b6\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u77b4\u77b1\u77a8\u77f0\u78f3\u78fd\u7902\u78fb\u78fc\u78f2\u7905\u78f9\u78fe\u7904\u79ab\u79a8\u7a5c\u7a5b\u7a56\u7a58\u7a54\u7a5a\u7abe\u7ac0\u7ac1\u7c05\u7c0f\u7bf2\u7c00\u7bff\u7bfb\u7c0e\u7bf4\u7c0b\u7bf3\u7c02\u7c09\u7c03\u7c01\u7bf8\u7bfd\u7c06\u7bf0\u7bf1\u7c10\u7c0a\u7ce8\u7e2d\u7e3c\u7e42\u7e33\u9848\u7e38\u7e2a\u7e49\u7e40\u7e47\u7e29\u7e4c\u7e30\u7e3b\u7e36\u7e44\u7e3a\u7f45\u7f7f\u7f7e\u7f7d\u7ff4\u7ff2\u802c\u81bb\u81c4\u81cc\u81ca\u81c5\u81c7\u81bc\u81e9\u825b\u825a\u825c\u8583\u8580\u858f\u85a7\u8595\u85a0\u858b\u85a3\u857b\u85a4\u859a\u859e\ufffd".split(""),e=0;e!=r[237].length;++e)65533!==r[237][e].charCodeAt(0)&&(n[r[237][e]]=60672+e,t[60672+e]=r[237][e]);for(r[238]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8577\u857c\u8589\u85a1\u857a\u8578\u8557\u858e\u8596\u8586\u858d\u8599\u859d\u8581\u85a2\u8582\u8588\u8585\u8579\u8576\u8598\u8590\u859f\u8668\u87be\u87aa\u87ad\u87c5\u87b0\u87ac\u87b9\u87b5\u87bc\u87ae\u87c9\u87c3\u87c2\u87cc\u87b7\u87af\u87c4\u87ca\u87b4\u87b6\u87bf\u87b8\u87bd\u87de\u87b2\u8935\u8933\u893c\u893e\u8941\u8952\u8937\u8942\u89ad\u89af\u89ae\u89f2\u89f3\u8b1e\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8b18\u8b16\u8b11\u8b05\u8b0b\u8b22\u8b0f\u8b12\u8b15\u8b07\u8b0d\u8b08\u8b06\u8b1c\u8b13\u8b1a\u8c4f\u8c70\u8c72\u8c71\u8c6f\u8c95\u8c94\u8cf9\u8d6f\u8e4e\u8e4d\u8e53\u8e50\u8e4c\u8e47\u8f43\u8f40\u9085\u907e\u9138\u919a\u91a2\u919b\u9199\u919f\u91a1\u919d\u91a0\u93a1\u9383\u93af\u9364\u9356\u9347\u937c\u9358\u935c\u9376\u9349\u9350\u9351\u9360\u936d\u938f\u934c\u936a\u9379\u9357\u9355\u9352\u934f\u9371\u9377\u937b\u9361\u935e\u9363\u9367\u9380\u934e\u9359\u95c7\u95c0\u95c9\u95c3\u95c5\u95b7\u96ae\u96b0\u96ac\u9720\u971f\u9718\u971d\u9719\u979a\u97a1\u979c\ufffd".split(""),e=0;e!=r[238].length;++e)65533!==r[238][e].charCodeAt(0)&&(n[r[238][e]]=60928+e,t[60928+e]=r[238][e]);for(r[239]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u979e\u979d\u97d5\u97d4\u97f1\u9841\u9844\u984a\u9849\u9845\u9843\u9925\u992b\u992c\u992a\u9933\u9932\u992f\u992d\u9931\u9930\u9998\u99a3\u99a1\u9a02\u99fa\u99f4\u99f7\u99f9\u99f8\u99f6\u99fb\u99fd\u99fe\u99fc\u9a03\u9abe\u9afe\u9afd\u9b01\u9afc\u9b48\u9b9a\u9ba8\u9b9e\u9b9b\u9ba6\u9ba1\u9ba5\u9ba4\u9b86\u9ba2\u9ba0\u9baf\u9d33\u9d41\u9d67\u9d36\u9d2e\u9d2f\u9d31\u9d38\u9d30\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9d45\u9d42\u9d43\u9d3e\u9d37\u9d40\u9d3d\u7ff5\u9d2d\u9e8a\u9e89\u9e8d\u9eb0\u9ec8\u9eda\u9efb\u9eff\u9f24\u9f23\u9f22\u9f54\u9fa0\u5131\u512d\u512e\u5698\u569c\u5697\u569a\u569d\u5699\u5970\u5b3c\u5c69\u5c6a\u5dc0\u5e6d\u5e6e\u61d8\u61df\u61ed\u61ee\u61f1\u61ea\u61f0\u61eb\u61d6\u61e9\u64ff\u6504\u64fd\u64f8\u6501\u6503\u64fc\u6594\u65db\u66da\u66db\u66d8\u6ac5\u6ab9\u6abd\u6ae1\u6ac6\u6aba\u6ab6\u6ab7\u6ac7\u6ab4\u6aad\u6b5e\u6bc9\u6c0b\u7007\u700c\u700d\u7001\u7005\u7014\u700e\u6fff\u7000\u6ffb\u7026\u6ffc\u6ff7\u700a\u7201\u71ff\u71f9\u7203\u71fd\u7376\ufffd".split(""),e=0;e!=r[239].length;++e)65533!==r[239][e].charCodeAt(0)&&(n[r[239][e]]=61184+e,t[61184+e]=r[239][e]);for(r[240]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u74b8\u74c0\u74b5\u74c1\u74be\u74b6\u74bb\u74c2\u7514\u7513\u765c\u7664\u7659\u7650\u7653\u7657\u765a\u76a6\u76bd\u76ec\u77c2\u77ba\u78ff\u790c\u7913\u7914\u7909\u7910\u7912\u7911\u79ad\u79ac\u7a5f\u7c1c\u7c29\u7c19\u7c20\u7c1f\u7c2d\u7c1d\u7c26\u7c28\u7c22\u7c25\u7c30\u7e5c\u7e50\u7e56\u7e63\u7e58\u7e62\u7e5f\u7e51\u7e60\u7e57\u7e53\u7fb5\u7fb3\u7ff7\u7ff8\u8075\u81d1\u81d2\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u81d0\u825f\u825e\u85b4\u85c6\u85c0\u85c3\u85c2\u85b3\u85b5\u85bd\u85c7\u85c4\u85bf\u85cb\u85ce\u85c8\u85c5\u85b1\u85b6\u85d2\u8624\u85b8\u85b7\u85be\u8669\u87e7\u87e6\u87e2\u87db\u87eb\u87ea\u87e5\u87df\u87f3\u87e4\u87d4\u87dc\u87d3\u87ed\u87d8\u87e3\u87a4\u87d7\u87d9\u8801\u87f4\u87e8\u87dd\u8953\u894b\u894f\u894c\u8946\u8950\u8951\u8949\u8b2a\u8b27\u8b23\u8b33\u8b30\u8b35\u8b47\u8b2f\u8b3c\u8b3e\u8b31\u8b25\u8b37\u8b26\u8b36\u8b2e\u8b24\u8b3b\u8b3d\u8b3a\u8c42\u8c75\u8c99\u8c98\u8c97\u8cfe\u8d04\u8d02\u8d00\u8e5c\u8e62\u8e60\u8e57\u8e56\u8e5e\u8e65\u8e67\ufffd".split(""),e=0;e!=r[240].length;++e)65533!==r[240][e].charCodeAt(0)&&(n[r[240][e]]=61440+e,t[61440+e]=r[240][e]);for(r[241]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8e5b\u8e5a\u8e61\u8e5d\u8e69\u8e54\u8f46\u8f47\u8f48\u8f4b\u9128\u913a\u913b\u913e\u91a8\u91a5\u91a7\u91af\u91aa\u93b5\u938c\u9392\u93b7\u939b\u939d\u9389\u93a7\u938e\u93aa\u939e\u93a6\u9395\u9388\u9399\u939f\u938d\u93b1\u9391\u93b2\u93a4\u93a8\u93b4\u93a3\u93a5\u95d2\u95d3\u95d1\u96b3\u96d7\u96da\u5dc2\u96df\u96d8\u96dd\u9723\u9722\u9725\u97ac\u97ae\u97a8\u97ab\u97a4\u97aa\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u97a2\u97a5\u97d7\u97d9\u97d6\u97d8\u97fa\u9850\u9851\u9852\u98b8\u9941\u993c\u993a\u9a0f\u9a0b\u9a09\u9a0d\u9a04\u9a11\u9a0a\u9a05\u9a07\u9a06\u9ac0\u9adc\u9b08\u9b04\u9b05\u9b29\u9b35\u9b4a\u9b4c\u9b4b\u9bc7\u9bc6\u9bc3\u9bbf\u9bc1\u9bb5\u9bb8\u9bd3\u9bb6\u9bc4\u9bb9\u9bbd\u9d5c\u9d53\u9d4f\u9d4a\u9d5b\u9d4b\u9d59\u9d56\u9d4c\u9d57\u9d52\u9d54\u9d5f\u9d58\u9d5a\u9e8e\u9e8c\u9edf\u9f01\u9f00\u9f16\u9f25\u9f2b\u9f2a\u9f29\u9f28\u9f4c\u9f55\u5134\u5135\u5296\u52f7\u53b4\u56ab\u56ad\u56a6\u56a7\u56aa\u56ac\u58da\u58dd\u58db\u5912\u5b3d\u5b3e\u5b3f\u5dc3\u5e70\ufffd".split(""),e=0;e!=r[241].length;++e)65533!==r[241][e].charCodeAt(0)&&(n[r[241][e]]=61696+e,t[61696+e]=r[241][e]);for(r[242]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5fbf\u61fb\u6507\u6510\u650d\u6509\u650c\u650e\u6584\u65de\u65dd\u66de\u6ae7\u6ae0\u6acc\u6ad1\u6ad9\u6acb\u6adf\u6adc\u6ad0\u6aeb\u6acf\u6acd\u6ade\u6b60\u6bb0\u6c0c\u7019\u7027\u7020\u7016\u702b\u7021\u7022\u7023\u7029\u7017\u7024\u701c\u702a\u720c\u720a\u7207\u7202\u7205\u72a5\u72a6\u72a4\u72a3\u72a1\u74cb\u74c5\u74b7\u74c3\u7516\u7660\u77c9\u77ca\u77c4\u77f1\u791d\u791b\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7921\u791c\u7917\u791e\u79b0\u7a67\u7a68\u7c33\u7c3c\u7c39\u7c2c\u7c3b\u7cec\u7cea\u7e76\u7e75\u7e78\u7e70\u7e77\u7e6f\u7e7a\u7e72\u7e74\u7e68\u7f4b\u7f4a\u7f83\u7f86\u7fb7\u7ffd\u7ffe\u8078\u81d7\u81d5\u8264\u8261\u8263\u85eb\u85f1\u85ed\u85d9\u85e1\u85e8\u85da\u85d7\u85ec\u85f2\u85f8\u85d8\u85df\u85e3\u85dc\u85d1\u85f0\u85e6\u85ef\u85de\u85e2\u8800\u87fa\u8803\u87f6\u87f7\u8809\u880c\u880b\u8806\u87fc\u8808\u87ff\u880a\u8802\u8962\u895a\u895b\u8957\u8961\u895c\u8958\u895d\u8959\u8988\u89b7\u89b6\u89f6\u8b50\u8b48\u8b4a\u8b40\u8b53\u8b56\u8b54\u8b4b\u8b55\ufffd".split(""),e=0;e!=r[242].length;++e)65533!==r[242][e].charCodeAt(0)&&(n[r[242][e]]=61952+e,t[61952+e]=r[242][e]);for(r[243]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8b51\u8b42\u8b52\u8b57\u8c43\u8c77\u8c76\u8c9a\u8d06\u8d07\u8d09\u8dac\u8daa\u8dad\u8dab\u8e6d\u8e78\u8e73\u8e6a\u8e6f\u8e7b\u8ec2\u8f52\u8f51\u8f4f\u8f50\u8f53\u8fb4\u9140\u913f\u91b0\u91ad\u93de\u93c7\u93cf\u93c2\u93da\u93d0\u93f9\u93ec\u93cc\u93d9\u93a9\u93e6\u93ca\u93d4\u93ee\u93e3\u93d5\u93c4\u93ce\u93c0\u93d2\u93e7\u957d\u95da\u95db\u96e1\u9729\u972b\u972c\u9728\u9726\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u97b3\u97b7\u97b6\u97dd\u97de\u97df\u985c\u9859\u985d\u9857\u98bf\u98bd\u98bb\u98be\u9948\u9947\u9943\u99a6\u99a7\u9a1a\u9a15\u9a25\u9a1d\u9a24\u9a1b\u9a22\u9a20\u9a27\u9a23\u9a1e\u9a1c\u9a14\u9ac2\u9b0b\u9b0a\u9b0e\u9b0c\u9b37\u9bea\u9beb\u9be0\u9bde\u9be4\u9be6\u9be2\u9bf0\u9bd4\u9bd7\u9bec\u9bdc\u9bd9\u9be5\u9bd5\u9be1\u9bda\u9d77\u9d81\u9d8a\u9d84\u9d88\u9d71\u9d80\u9d78\u9d86\u9d8b\u9d8c\u9d7d\u9d6b\u9d74\u9d75\u9d70\u9d69\u9d85\u9d73\u9d7b\u9d82\u9d6f\u9d79\u9d7f\u9d87\u9d68\u9e94\u9e91\u9ec0\u9efc\u9f2d\u9f40\u9f41\u9f4d\u9f56\u9f57\u9f58\u5337\u56b2\ufffd".split(""),e=0;e!=r[243].length;++e)65533!==r[243][e].charCodeAt(0)&&(n[r[243][e]]=62208+e,t[62208+e]=r[243][e]);for(r[244]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u56b5\u56b3\u58e3\u5b45\u5dc6\u5dc7\u5eee\u5eef\u5fc0\u5fc1\u61f9\u6517\u6516\u6515\u6513\u65df\u66e8\u66e3\u66e4\u6af3\u6af0\u6aea\u6ae8\u6af9\u6af1\u6aee\u6aef\u703c\u7035\u702f\u7037\u7034\u7031\u7042\u7038\u703f\u703a\u7039\u7040\u703b\u7033\u7041\u7213\u7214\u72a8\u737d\u737c\u74ba\u76ab\u76aa\u76be\u76ed\u77cc\u77ce\u77cf\u77cd\u77f2\u7925\u7923\u7927\u7928\u7924\u7929\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u79b2\u7a6e\u7a6c\u7a6d\u7af7\u7c49\u7c48\u7c4a\u7c47\u7c45\u7cee\u7e7b\u7e7e\u7e81\u7e80\u7fba\u7fff\u8079\u81db\u81d9\u820b\u8268\u8269\u8622\u85ff\u8601\u85fe\u861b\u8600\u85f6\u8604\u8609\u8605\u860c\u85fd\u8819\u8810\u8811\u8817\u8813\u8816\u8963\u8966\u89b9\u89f7\u8b60\u8b6a\u8b5d\u8b68\u8b63\u8b65\u8b67\u8b6d\u8dae\u8e86\u8e88\u8e84\u8f59\u8f56\u8f57\u8f55\u8f58\u8f5a\u908d\u9143\u9141\u91b7\u91b5\u91b2\u91b3\u940b\u9413\u93fb\u9420\u940f\u9414\u93fe\u9415\u9410\u9428\u9419\u940d\u93f5\u9400\u93f7\u9407\u940e\u9416\u9412\u93fa\u9409\u93f8\u940a\u93ff\ufffd".split(""),e=0;e!=r[244].length;++e)65533!==r[244][e].charCodeAt(0)&&(n[r[244][e]]=62464+e,t[62464+e]=r[244][e]);for(r[245]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u93fc\u940c\u93f6\u9411\u9406\u95de\u95e0\u95df\u972e\u972f\u97b9\u97bb\u97fd\u97fe\u9860\u9862\u9863\u985f\u98c1\u98c2\u9950\u994e\u9959\u994c\u994b\u9953\u9a32\u9a34\u9a31\u9a2c\u9a2a\u9a36\u9a29\u9a2e\u9a38\u9a2d\u9ac7\u9aca\u9ac6\u9b10\u9b12\u9b11\u9c0b\u9c08\u9bf7\u9c05\u9c12\u9bf8\u9c40\u9c07\u9c0e\u9c06\u9c17\u9c14\u9c09\u9d9f\u9d99\u9da4\u9d9d\u9d92\u9d98\u9d90\u9d9b\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9da0\u9d94\u9d9c\u9daa\u9d97\u9da1\u9d9a\u9da2\u9da8\u9d9e\u9da3\u9dbf\u9da9\u9d96\u9da6\u9da7\u9e99\u9e9b\u9e9a\u9ee5\u9ee4\u9ee7\u9ee6\u9f30\u9f2e\u9f5b\u9f60\u9f5e\u9f5d\u9f59\u9f91\u513a\u5139\u5298\u5297\u56c3\u56bd\u56be\u5b48\u5b47\u5dcb\u5dcf\u5ef1\u61fd\u651b\u6b02\u6afc\u6b03\u6af8\u6b00\u7043\u7044\u704a\u7048\u7049\u7045\u7046\u721d\u721a\u7219\u737e\u7517\u766a\u77d0\u792d\u7931\u792f\u7c54\u7c53\u7cf2\u7e8a\u7e87\u7e88\u7e8b\u7e86\u7e8d\u7f4d\u7fbb\u8030\u81dd\u8618\u862a\u8626\u861f\u8623\u861c\u8619\u8627\u862e\u8621\u8620\u8629\u861e\u8625\ufffd".split(""),e=0;e!=r[245].length;++e)65533!==r[245][e].charCodeAt(0)&&(n[r[245][e]]=62720+e,t[62720+e]=r[245][e]);for(r[246]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8829\u881d\u881b\u8820\u8824\u881c\u882b\u884a\u896d\u8969\u896e\u896b\u89fa\u8b79\u8b78\u8b45\u8b7a\u8b7b\u8d10\u8d14\u8daf\u8e8e\u8e8c\u8f5e\u8f5b\u8f5d\u9146\u9144\u9145\u91b9\u943f\u943b\u9436\u9429\u943d\u943c\u9430\u9439\u942a\u9437\u942c\u9440\u9431\u95e5\u95e4\u95e3\u9735\u973a\u97bf\u97e1\u9864\u98c9\u98c6\u98c0\u9958\u9956\u9a39\u9a3d\u9a46\u9a44\u9a42\u9a41\u9a3a\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9a3f\u9acd\u9b15\u9b17\u9b18\u9b16\u9b3a\u9b52\u9c2b\u9c1d\u9c1c\u9c2c\u9c23\u9c28\u9c29\u9c24\u9c21\u9db7\u9db6\u9dbc\u9dc1\u9dc7\u9dca\u9dcf\u9dbe\u9dc5\u9dc3\u9dbb\u9db5\u9dce\u9db9\u9dba\u9dac\u9dc8\u9db1\u9dad\u9dcc\u9db3\u9dcd\u9db2\u9e7a\u9e9c\u9eeb\u9eee\u9eed\u9f1b\u9f18\u9f1a\u9f31\u9f4e\u9f65\u9f64\u9f92\u4eb9\u56c6\u56c5\u56cb\u5971\u5b4b\u5b4c\u5dd5\u5dd1\u5ef2\u6521\u6520\u6526\u6522\u6b0b\u6b08\u6b09\u6c0d\u7055\u7056\u7057\u7052\u721e\u721f\u72a9\u737f\u74d8\u74d5\u74d9\u74d7\u766d\u76ad\u7935\u79b4\u7a70\u7a71\u7c57\u7c5c\u7c59\u7c5b\u7c5a\ufffd".split(""),e=0;e!=r[246].length;++e)65533!==r[246][e].charCodeAt(0)&&(n[r[246][e]]=62976+e,t[62976+e]=r[246][e]);for(r[247]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7cf4\u7cf1\u7e91\u7f4f\u7f87\u81de\u826b\u8634\u8635\u8633\u862c\u8632\u8636\u882c\u8828\u8826\u882a\u8825\u8971\u89bf\u89be\u89fb\u8b7e\u8b84\u8b82\u8b86\u8b85\u8b7f\u8d15\u8e95\u8e94\u8e9a\u8e92\u8e90\u8e96\u8e97\u8f60\u8f62\u9147\u944c\u9450\u944a\u944b\u944f\u9447\u9445\u9448\u9449\u9446\u973f\u97e3\u986a\u9869\u98cb\u9954\u995b\u9a4e\u9a53\u9a54\u9a4c\u9a4f\u9a48\u9a4a\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9a49\u9a52\u9a50\u9ad0\u9b19\u9b2b\u9b3b\u9b56\u9b55\u9c46\u9c48\u9c3f\u9c44\u9c39\u9c33\u9c41\u9c3c\u9c37\u9c34\u9c32\u9c3d\u9c36\u9ddb\u9dd2\u9dde\u9dda\u9dcb\u9dd0\u9ddc\u9dd1\u9ddf\u9de9\u9dd9\u9dd8\u9dd6\u9df5\u9dd5\u9ddd\u9eb6\u9ef0\u9f35\u9f33\u9f32\u9f42\u9f6b\u9f95\u9fa2\u513d\u5299\u58e8\u58e7\u5972\u5b4d\u5dd8\u882f\u5f4f\u6201\u6203\u6204\u6529\u6525\u6596\u66eb\u6b11\u6b12\u6b0f\u6bca\u705b\u705a\u7222\u7382\u7381\u7383\u7670\u77d4\u7c67\u7c66\u7e95\u826c\u863a\u8640\u8639\u863c\u8631\u863b\u863e\u8830\u8832\u882e\u8833\u8976\u8974\u8973\u89fe\ufffd".split(""),e=0;e!=r[247].length;++e)65533!==r[247][e].charCodeAt(0)&&(n[r[247][e]]=63232+e,t[63232+e]=r[247][e]);for(r[248]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8b8c\u8b8e\u8b8b\u8b88\u8c45\u8d19\u8e98\u8f64\u8f63\u91bc\u9462\u9455\u945d\u9457\u945e\u97c4\u97c5\u9800\u9a56\u9a59\u9b1e\u9b1f\u9b20\u9c52\u9c58\u9c50\u9c4a\u9c4d\u9c4b\u9c55\u9c59\u9c4c\u9c4e\u9dfb\u9df7\u9def\u9de3\u9deb\u9df8\u9de4\u9df6\u9de1\u9dee\u9de6\u9df2\u9df0\u9de2\u9dec\u9df4\u9df3\u9de8\u9ded\u9ec2\u9ed0\u9ef2\u9ef3\u9f06\u9f1c\u9f38\u9f37\u9f36\u9f43\u9f4f\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9f71\u9f70\u9f6e\u9f6f\u56d3\u56cd\u5b4e\u5c6d\u652d\u66ed\u66ee\u6b13\u705f\u7061\u705d\u7060\u7223\u74db\u74e5\u77d5\u7938\u79b7\u79b6\u7c6a\u7e97\u7f89\u826d\u8643\u8838\u8837\u8835\u884b\u8b94\u8b95\u8e9e\u8e9f\u8ea0\u8e9d\u91be\u91bd\u91c2\u946b\u9468\u9469\u96e5\u9746\u9743\u9747\u97c7\u97e5\u9a5e\u9ad5\u9b59\u9c63\u9c67\u9c66\u9c62\u9c5e\u9c60\u9e02\u9dfe\u9e07\u9e03\u9e06\u9e05\u9e00\u9e01\u9e09\u9dff\u9dfd\u9e04\u9ea0\u9f1e\u9f46\u9f74\u9f75\u9f76\u56d4\u652e\u65b8\u6b18\u6b19\u6b17\u6b1a\u7062\u7226\u72aa\u77d8\u77d9\u7939\u7c69\u7c6b\u7cf6\u7e9a\ufffd".split(""),e=0;e!=r[248].length;++e)65533!==r[248][e].charCodeAt(0)&&(n[r[248][e]]=63488+e,t[63488+e]=r[248][e]);for(r[249]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7e98\u7e9b\u7e99\u81e0\u81e1\u8646\u8647\u8648\u8979\u897a\u897c\u897b\u89ff\u8b98\u8b99\u8ea5\u8ea4\u8ea3\u946e\u946d\u946f\u9471\u9473\u9749\u9872\u995f\u9c68\u9c6e\u9c6d\u9e0b\u9e0d\u9e10\u9e0f\u9e12\u9e11\u9ea1\u9ef5\u9f09\u9f47\u9f78\u9f7b\u9f7a\u9f79\u571e\u7066\u7c6f\u883c\u8db2\u8ea6\u91c3\u9474\u9478\u9476\u9475\u9a60\u9c74\u9c73\u9c71\u9c75\u9e14\u9e13\u9ef6\u9f0a\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9fa4\u7068\u7065\u7cf7\u866a\u883e\u883d\u883f\u8b9e\u8c9c\u8ea9\u8ec9\u974b\u9873\u9874\u98cc\u9961\u99ab\u9a64\u9a66\u9a67\u9b24\u9e15\u9e17\u9f48\u6207\u6b1e\u7227\u864c\u8ea8\u9482\u9480\u9481\u9a69\u9a68\u9b2e\u9e19\u7229\u864b\u8b9f\u9483\u9c79\u9eb7\u7675\u9a6b\u9c7a\u9e1d\u7069\u706a\u9ea4\u9f7e\u9f49\u9f98\u7881\u92b9\u88cf\u58bb\u6052\u7ca7\u5afa\u2554\u2566\u2557\u2560\u256c\u2563\u255a\u2569\u255d\u2552\u2564\u2555\u255e\u256a\u2561\u2558\u2567\u255b\u2553\u2565\u2556\u255f\u256b\u2562\u2559\u2568\u255c\u2551\u2550\u256d\u256e\u2570\u256f\u2593\ufffd".split(""),e=0;e!=r[249].length;++e)65533!==r[249][e].charCodeAt(0)&&(n[r[249][e]]=63744+e,t[63744+e]=r[249][e]);return{enc:n,dec:t}}(),r[1250]=function(){for(var e="\0\x01\x02\x03\x04\x05\x06\x07\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\u20ac\ufffd\u201a\ufffd\u201e\u2026\u2020\u2021\ufffd\u2030\u0160\u2039\u015a\u0164\u017d\u0179\ufffd\u2018\u2019\u201c\u201d\u2022\u2013\u2014\ufffd\u2122\u0161\u203a\u015b\u0165\u017e\u017a\xa0\u02c7\u02d8\u0141\xa4\u0104\xa6\xa7\xa8\xa9\u015e\xab\xac\xad\xae\u017b\xb0\xb1\u02db\u0142\xb4\xb5\xb6\xb7\xb8\u0105\u015f\xbb\u013d\u02dd\u013e\u017c\u0154\xc1\xc2\u0102\xc4\u0139\u0106\xc7\u010c\xc9\u0118\xcb\u011a\xcd\xce\u010e\u0110\u0143\u0147\xd3\xd4\u0150\xd6\xd7\u0158\u016e\xda\u0170\xdc\xdd\u0162\xdf\u0155\xe1\xe2\u0103\xe4\u013a\u0107\xe7\u010d\xe9\u0119\xeb\u011b\xed\xee\u010f\u0111\u0144\u0148\xf3\xf4\u0151\xf6\xf7\u0159\u016f\xfa\u0171\xfc\xfd\u0163\u02d9",t=[],n={},r=0;r!=e.length;++r)65533!==e.charCodeAt(r)&&(n[e.charAt(r)]=r),t[r]=e.charAt(r);return{enc:n,dec:t}}(),r[1251]=function(){for(var e="\0\x01\x02\x03\x04\x05\x06\x07\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\u0402\u0403\u201a\u0453\u201e\u2026\u2020\u2021\u20ac\u2030\u0409\u2039\u040a\u040c\u040b\u040f\u0452\u2018\u2019\u201c\u201d\u2022\u2013\u2014\ufffd\u2122\u0459\u203a\u045a\u045c\u045b\u045f\xa0\u040e\u045e\u0408\xa4\u0490\xa6\xa7\u0401\xa9\u0404\xab\xac\xad\xae\u0407\xb0\xb1\u0406\u0456\u0491\xb5\xb6\xb7\u0451\u2116\u0454\xbb\u0458\u0405\u0455\u0457\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041a\u041b\u041c\u041d\u041e\u041f\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042a\u042b\u042c\u042d\u042e\u042f\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043a\u043b\u043c\u043d\u043e\u043f\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044a\u044b\u044c\u044d\u044e\u044f",t=[],n={},r=0;r!=e.length;++r)65533!==e.charCodeAt(r)&&(n[e.charAt(r)]=r),t[r]=e.charAt(r);return{enc:n,dec:t}}(),r[1252]=function(){for(var e="\0\x01\x02\x03\x04\x05\x06\x07\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\u20ac\ufffd\u201a\u0192\u201e\u2026\u2020\u2021\u02c6\u2030\u0160\u2039\u0152\ufffd\u017d\ufffd\ufffd\u2018\u2019\u201c\u201d\u2022\u2013\u2014\u02dc\u2122\u0161\u203a\u0153\ufffd\u017e\u0178\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",t=[],n={},r=0;r!=e.length;++r)65533!==e.charCodeAt(r)&&(n[e.charAt(r)]=r),t[r]=e.charAt(r);return{enc:n,dec:t}}(),r[1253]=function(){for(var e="\0\x01\x02\x03\x04\x05\x06\x07\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\u20ac\ufffd\u201a\u0192\u201e\u2026\u2020\u2021\ufffd\u2030\ufffd\u2039\ufffd\ufffd\ufffd\ufffd\ufffd\u2018\u2019\u201c\u201d\u2022\u2013\u2014\ufffd\u2122\ufffd\u203a\ufffd\ufffd\ufffd\ufffd\xa0\u0385\u0386\xa3\xa4\xa5\xa6\xa7\xa8\xa9\ufffd\xab\xac\xad\xae\u2015\xb0\xb1\xb2\xb3\u0384\xb5\xb6\xb7\u0388\u0389\u038a\xbb\u038c\xbd\u038e\u038f\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039a\u039b\u039c\u039d\u039e\u039f\u03a0\u03a1\ufffd\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9\u03aa\u03ab\u03ac\u03ad\u03ae\u03af\u03b0\u03b1\u03b2\u03b3\u03b4\u03b5\u03b6\u03b7\u03b8\u03b9\u03ba\u03bb\u03bc\u03bd\u03be\u03bf\u03c0\u03c1\u03c2\u03c3\u03c4\u03c5\u03c6\u03c7\u03c8\u03c9\u03ca\u03cb\u03cc\u03cd\u03ce\ufffd",t=[],n={},r=0;r!=e.length;++r)65533!==e.charCodeAt(r)&&(n[e.charAt(r)]=r),t[r]=e.charAt(r);return{enc:n,dec:t}}(),r[1254]=function(){for(var e="\0\x01\x02\x03\x04\x05\x06\x07\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\u20ac\ufffd\u201a\u0192\u201e\u2026\u2020\u2021\u02c6\u2030\u0160\u2039\u0152\ufffd\ufffd\ufffd\ufffd\u2018\u2019\u201c\u201d\u2022\u2013\u2014\u02dc\u2122\u0161\u203a\u0153\ufffd\ufffd\u0178\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\u011e\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\u0130\u015e\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\u011f\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\u0131\u015f\xff",t=[],n={},r=0;r!=e.length;++r)65533!==e.charCodeAt(r)&&(n[e.charAt(r)]=r),t[r]=e.charAt(r);return{enc:n,dec:t}}(),r[1255]=function(){for(var e="\0\x01\x02\x03\x04\x05\x06\x07\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\u20ac\ufffd\u201a\u0192\u201e\u2026\u2020\u2021\u02c6\u2030\ufffd\u2039\ufffd\ufffd\ufffd\ufffd\ufffd\u2018\u2019\u201c\u201d\u2022\u2013\u2014\u02dc\u2122\ufffd\u203a\ufffd\ufffd\ufffd\ufffd\xa0\xa1\xa2\xa3\u20aa\xa5\xa6\xa7\xa8\xa9\xd7\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xf7\xbb\xbc\xbd\xbe\xbf\u05b0\u05b1\u05b2\u05b3\u05b4\u05b5\u05b6\u05b7\u05b8\u05b9\ufffd\u05bb\u05bc\u05bd\u05be\u05bf\u05c0\u05c1\u05c2\u05c3\u05f0\u05f1\u05f2\u05f3\u05f4\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u05d0\u05d1\u05d2\u05d3\u05d4\u05d5\u05d6\u05d7\u05d8\u05d9\u05da\u05db\u05dc\u05dd\u05de\u05df\u05e0\u05e1\u05e2\u05e3\u05e4\u05e5\u05e6\u05e7\u05e8\u05e9\u05ea\ufffd\ufffd\u200e\u200f\ufffd",t=[],n={},r=0;r!=e.length;++r)65533!==e.charCodeAt(r)&&(n[e.charAt(r)]=r),t[r]=e.charAt(r);return{enc:n,dec:t}}(),r[1256]=function(){for(var e="\0\x01\x02\x03\x04\x05\x06\x07\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\u20ac\u067e\u201a\u0192\u201e\u2026\u2020\u2021\u02c6\u2030\u0679\u2039\u0152\u0686\u0698\u0688\u06af\u2018\u2019\u201c\u201d\u2022\u2013\u2014\u06a9\u2122\u0691\u203a\u0153\u200c\u200d\u06ba\xa0\u060c\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\u06be\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\u061b\xbb\xbc\xbd\xbe\u061f\u06c1\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062a\u062b\u062c\u062d\u062e\u062f\u0630\u0631\u0632\u0633\u0634\u0635\u0636\xd7\u0637\u0638\u0639\u063a\u0640\u0641\u0642\u0643\xe0\u0644\xe2\u0645\u0646\u0647\u0648\xe7\xe8\xe9\xea\xeb\u0649\u064a\xee\xef\u064b\u064c\u064d\u064e\xf4\u064f\u0650\xf7\u0651\xf9\u0652\xfb\xfc\u200e\u200f\u06d2",t=[],n={},r=0;r!=e.length;++r)65533!==e.charCodeAt(r)&&(n[e.charAt(r)]=r),t[r]=e.charAt(r);return{enc:n,dec:t}}(),r[1257]=function(){for(var e="\0\x01\x02\x03\x04\x05\x06\x07\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\u20ac\ufffd\u201a\ufffd\u201e\u2026\u2020\u2021\ufffd\u2030\ufffd\u2039\ufffd\xa8\u02c7\xb8\ufffd\u2018\u2019\u201c\u201d\u2022\u2013\u2014\ufffd\u2122\ufffd\u203a\ufffd\xaf\u02db\ufffd\xa0\ufffd\xa2\xa3\xa4\ufffd\xa6\xa7\xd8\xa9\u0156\xab\xac\xad\xae\xc6\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xf8\xb9\u0157\xbb\xbc\xbd\xbe\xe6\u0104\u012e\u0100\u0106\xc4\xc5\u0118\u0112\u010c\xc9\u0179\u0116\u0122\u0136\u012a\u013b\u0160\u0143\u0145\xd3\u014c\xd5\xd6\xd7\u0172\u0141\u015a\u016a\xdc\u017b\u017d\xdf\u0105\u012f\u0101\u0107\xe4\xe5\u0119\u0113\u010d\xe9\u017a\u0117\u0123\u0137\u012b\u013c\u0161\u0144\u0146\xf3\u014d\xf5\xf6\xf7\u0173\u0142\u015b\u016b\xfc\u017c\u017e\u02d9",t=[],n={},r=0;r!=e.length;++r)65533!==e.charCodeAt(r)&&(n[e.charAt(r)]=r),t[r]=e.charAt(r);return{enc:n,dec:t}}(),r[1258]=function(){for(var e="\0\x01\x02\x03\x04\x05\x06\x07\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\u20ac\ufffd\u201a\u0192\u201e\u2026\u2020\u2021\u02c6\u2030\ufffd\u2039\u0152\ufffd\ufffd\ufffd\ufffd\u2018\u2019\u201c\u201d\u2022\u2013\u2014\u02dc\u2122\ufffd\u203a\u0153\ufffd\ufffd\u0178\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\u0102\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\u0300\xcd\xce\xcf\u0110\xd1\u0309\xd3\xd4\u01a0\xd6\xd7\xd8\xd9\xda\xdb\xdc\u01af\u0303\xdf\xe0\xe1\xe2\u0103\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\u0301\xed\xee\xef\u0111\xf1\u0323\xf3\xf4\u01a1\xf6\xf7\xf8\xf9\xfa\xfb\xfc\u01b0\u20ab\xff",t=[],n={},r=0;r!=e.length;++r)65533!==e.charCodeAt(r)&&(n[e.charAt(r)]=r),t[r]=e.charAt(r);return{enc:n,dec:t}}(),r[1e4]=function(){for(var e="\0\x01\x02\x03\x04\x05\x06\x07\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\xc4\xc5\xc7\xc9\xd1\xd6\xdc\xe1\xe0\xe2\xe4\xe3\xe5\xe7\xe9\xe8\xea\xeb\xed\xec\xee\xef\xf1\xf3\xf2\xf4\xf6\xf5\xfa\xf9\xfb\xfc\u2020\xb0\xa2\xa3\xa7\u2022\xb6\xdf\xae\xa9\u2122\xb4\xa8\u2260\xc6\xd8\u221e\xb1\u2264\u2265\xa5\xb5\u2202\u2211\u220f\u03c0\u222b\xaa\xba\u2126\xe6\xf8\xbf\xa1\xac\u221a\u0192\u2248\u2206\xab\xbb\u2026\xa0\xc0\xc3\xd5\u0152\u0153\u2013\u2014\u201c\u201d\u2018\u2019\xf7\u25ca\xff\u0178\u2044\xa4\u2039\u203a\ufb01\ufb02\u2021\xb7\u201a\u201e\u2030\xc2\xca\xc1\xcb\xc8\xcd\xce\xcf\xcc\xd3\xd4\ufffd\xd2\xda\xdb\xd9\u0131\u02c6\u02dc\xaf\u02d8\u02d9\u02da\xb8\u02dd\u02db\u02c7",t=[],n={},r=0;r!=e.length;++r)65533!==e.charCodeAt(r)&&(n[e.charAt(r)]=r),t[r]=e.charAt(r);return{enc:n,dec:t}}(),r[10006]=function(){for(var e="\0\x01\x02\x03\x04\x05\x06\x07\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\xc4\xb9\xb2\xc9\xb3\xd6\xdc\u0385\xe0\xe2\xe4\u0384\xa8\xe7\xe9\xe8\xea\xeb\xa3\u2122\xee\xef\u2022\xbd\u2030\xf4\xf6\xa6\xad\xf9\xfb\xfc\u2020\u0393\u0394\u0398\u039b\u039e\u03a0\xdf\xae\xa9\u03a3\u03aa\xa7\u2260\xb0\u0387\u0391\xb1\u2264\u2265\xa5\u0392\u0395\u0396\u0397\u0399\u039a\u039c\u03a6\u03ab\u03a8\u03a9\u03ac\u039d\xac\u039f\u03a1\u2248\u03a4\xab\xbb\u2026\xa0\u03a5\u03a7\u0386\u0388\u0153\u2013\u2015\u201c\u201d\u2018\u2019\xf7\u0389\u038a\u038c\u038e\u03ad\u03ae\u03af\u03cc\u038f\u03cd\u03b1\u03b2\u03c8\u03b4\u03b5\u03c6\u03b3\u03b7\u03b9\u03be\u03ba\u03bb\u03bc\u03bd\u03bf\u03c0\u03ce\u03c1\u03c3\u03c4\u03b8\u03c9\u03c2\u03c7\u03c5\u03b6\u03ca\u03cb\u0390\u03b0\ufffd",t=[],n={},r=0;r!=e.length;++r)65533!==e.charCodeAt(r)&&(n[e.charAt(r)]=r),t[r]=e.charAt(r);return{enc:n,dec:t}}(),r[10007]=function(){for(var e="\0\x01\x02\x03\x04\x05\x06\x07\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041a\u041b\u041c\u041d\u041e\u041f\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042a\u042b\u042c\u042d\u042e\u042f\u2020\xb0\xa2\xa3\xa7\u2022\xb6\u0406\xae\xa9\u2122\u0402\u0452\u2260\u0403\u0453\u221e\xb1\u2264\u2265\u0456\xb5\u2202\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040a\u045a\u0458\u0405\xac\u221a\u0192\u2248\u2206\xab\xbb\u2026\xa0\u040b\u045b\u040c\u045c\u0455\u2013\u2014\u201c\u201d\u2018\u2019\xf7\u201e\u040e\u045e\u040f\u045f\u2116\u0401\u0451\u044f\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043a\u043b\u043c\u043d\u043e\u043f\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044a\u044b\u044c\u044d\u044e\xa4",t=[],n={},r=0;r!=e.length;++r)65533!==e.charCodeAt(r)&&(n[e.charAt(r)]=r),t[r]=e.charAt(r);return{enc:n,dec:t}}(),r[10008]=function(){var e,t=[],n={},r=[];for(r[0]="\0\x01\x02\x03\x04\x05\x06\x07\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\uf8d8\uf8d9\uf8da\uf8db\uf8dc\uf8dd\uf8de\uf8df\uf8e0\uf8e1\uf8e2\uf8e3\uf8e4\uf8e5\uf8e6\uf8e7\uf8e8\uf8e9\uf8ea\uf8eb\uf8ec\uf8ed\uf8ee\uf8ef\uf8f0\uf8f1\uf8f2\uf8f3\uf8f4\uf8f5\uf8f6\uf8f7\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uf8f8\uf8f9\uf8fa\uf8fb\uf8fc\uf8fd\uf8fe\uf8ff".split(""),e=0;e!=r[0].length;++e)65533!==r[0][e].charCodeAt(0)&&(n[r[0][e]]=0+e,t[0+e]=r[0][e]);for(r[161]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u3000\u3001\u3002\u30fb\u02c9\u02c7\xa8\u3003\u3005\u2015\uff5e\ufffd\u2026\u2018\u2019\u201c\u201d\u3014\u3015\u3008\u3009\u300a\u300b\u300c\u300d\u300e\u300f\u3016\u3017\u3010\u3011\xb1\xd7\xf7\u2236\u2227\u2228\u2211\u220f\u222a\u2229\u2208\u2237\u221a\u22a5\u2225\u2220\u2312\u2299\u222b\u222e\u2261\u224c\u2248\u223d\u221d\u2260\u226e\u226f\u2264\u2265\u221e\u2235\u2234\u2642\u2640\xb0\u2032\u2033\u2103\uff04\xa4\uffe0\uffe1\u2030\xa7\u2116\u2606\u2605\u25cb\u25cf\u25ce\u25c7\u25c6\u25a1\u25a0\u25b3\u25b2\u203b\u2192\u2190\u2191\u2193\u3013\ufffd".split(""),e=0;e!=r[161].length;++e)65533!==r[161][e].charCodeAt(0)&&(n[r[161][e]]=41216+e,t[41216+e]=r[161][e]);for(r[162]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u2488\u2489\u248a\u248b\u248c\u248d\u248e\u248f\u2490\u2491\u2492\u2493\u2494\u2495\u2496\u2497\u2498\u2499\u249a\u249b\u2474\u2475\u2476\u2477\u2478\u2479\u247a\u247b\u247c\u247d\u247e\u247f\u2480\u2481\u2482\u2483\u2484\u2485\u2486\u2487\u2460\u2461\u2462\u2463\u2464\u2465\u2466\u2467\u2468\u2469\ufffd\ufffd\u3220\u3221\u3222\u3223\u3224\u3225\u3226\u3227\u3228\u3229\ufffd\ufffd\u2160\u2161\u2162\u2163\u2164\u2165\u2166\u2167\u2168\u2169\u216a\u216b\ufffd\ufffd\ufffd".split(""),e=0;e!=r[162].length;++e)65533!==r[162][e].charCodeAt(0)&&(n[r[162][e]]=41472+e,t[41472+e]=r[162][e]);for(r[163]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\uff01\uff02\uff03\uffe5\uff05\uff06\uff07\uff08\uff09\uff0a\uff0b\uff0c\uff0d\uff0e\uff0f\uff10\uff11\uff12\uff13\uff14\uff15\uff16\uff17\uff18\uff19\uff1a\uff1b\uff1c\uff1d\uff1e\uff1f\uff20\uff21\uff22\uff23\uff24\uff25\uff26\uff27\uff28\uff29\uff2a\uff2b\uff2c\uff2d\uff2e\uff2f\uff30\uff31\uff32\uff33\uff34\uff35\uff36\uff37\uff38\uff39\uff3a\uff3b\uff3c\uff3d\uff3e\uff3f\uff40\uff41\uff42\uff43\uff44\uff45\uff46\uff47\uff48\uff49\uff4a\uff4b\uff4c\uff4d\uff4e\uff4f\uff50\uff51\uff52\uff53\uff54\uff55\uff56\uff57\uff58\uff59\uff5a\uff5b\uff5c\uff5d\uffe3\ufffd".split(""),e=0;e!=r[163].length;++e)65533!==r[163][e].charCodeAt(0)&&(n[r[163][e]]=41728+e,t[41728+e]=r[163][e]);for(r[164]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u3041\u3042\u3043\u3044\u3045\u3046\u3047\u3048\u3049\u304a\u304b\u304c\u304d\u304e\u304f\u3050\u3051\u3052\u3053\u3054\u3055\u3056\u3057\u3058\u3059\u305a\u305b\u305c\u305d\u305e\u305f\u3060\u3061\u3062\u3063\u3064\u3065\u3066\u3067\u3068\u3069\u306a\u306b\u306c\u306d\u306e\u306f\u3070\u3071\u3072\u3073\u3074\u3075\u3076\u3077\u3078\u3079\u307a\u307b\u307c\u307d\u307e\u307f\u3080\u3081\u3082\u3083\u3084\u3085\u3086\u3087\u3088\u3089\u308a\u308b\u308c\u308d\u308e\u308f\u3090\u3091\u3092\u3093\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[164].length;++e)65533!==r[164][e].charCodeAt(0)&&(n[r[164][e]]=41984+e,t[41984+e]=r[164][e]);for(r[165]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u30a1\u30a2\u30a3\u30a4\u30a5\u30a6\u30a7\u30a8\u30a9\u30aa\u30ab\u30ac\u30ad\u30ae\u30af\u30b0\u30b1\u30b2\u30b3\u30b4\u30b5\u30b6\u30b7\u30b8\u30b9\u30ba\u30bb\u30bc\u30bd\u30be\u30bf\u30c0\u30c1\u30c2\u30c3\u30c4\u30c5\u30c6\u30c7\u30c8\u30c9\u30ca\u30cb\u30cc\u30cd\u30ce\u30cf\u30d0\u30d1\u30d2\u30d3\u30d4\u30d5\u30d6\u30d7\u30d8\u30d9\u30da\u30db\u30dc\u30dd\u30de\u30df\u30e0\u30e1\u30e2\u30e3\u30e4\u30e5\u30e6\u30e7\u30e8\u30e9\u30ea\u30eb\u30ec\u30ed\u30ee\u30ef\u30f0\u30f1\u30f2\u30f3\u30f4\u30f5\u30f6\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[165].length;++e)65533!==r[165][e].charCodeAt(0)&&(n[r[165][e]]=42240+e,t[42240+e]=r[165][e]);for(r[166]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039a\u039b\u039c\u039d\u039e\u039f\u03a0\u03a1\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u03b1\u03b2\u03b3\u03b4\u03b5\u03b6\u03b7\u03b8\u03b9\u03ba\u03bb\u03bc\u03bd\u03be\u03bf\u03c0\u03c1\u03c3\u03c4\u03c5\u03c6\u03c7\u03c8\u03c9\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[166].length;++e)65533!==r[166][e].charCodeAt(0)&&(n[r[166][e]]=42496+e,t[42496+e]=r[166][e]);for(r[167]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0410\u0411\u0412\u0413\u0414\u0415\u0401\u0416\u0417\u0418\u0419\u041a\u041b\u041c\u041d\u041e\u041f\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042a\u042b\u042c\u042d\u042e\u042f\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0430\u0431\u0432\u0433\u0434\u0435\u0451\u0436\u0437\u0438\u0439\u043a\u043b\u043c\u043d\u043e\u043f\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044a\u044b\u044c\u044d\u044e\u044f\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[167].length;++e)65533!==r[167][e].charCodeAt(0)&&(n[r[167][e]]=42752+e,t[42752+e]=r[167][e]);for(r[168]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0101\xe1\u01ce\xe0\u0113\xe9\u011b\xe8\u012b\xed\u01d0\xec\u014d\xf3\u01d2\xf2\u016b\xfa\u01d4\xf9\u01d6\u01d8\u01da\u01dc\xfc\xea\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u3105\u3106\u3107\u3108\u3109\u310a\u310b\u310c\u310d\u310e\u310f\u3110\u3111\u3112\u3113\u3114\u3115\u3116\u3117\u3118\u3119\u311a\u311b\u311c\u311d\u311e\u311f\u3120\u3121\u3122\u3123\u3124\u3125\u3126\u3127\u3128\u3129\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[168].length;++e)65533!==r[168][e].charCodeAt(0)&&(n[r[168][e]]=43008+e,t[43008+e]=r[168][e]);for(r[169]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u2500\u2501\u2502\u2503\u2504\u2505\u2506\u2507\u2508\u2509\u250a\u250b\u250c\u250d\u250e\u250f\u2510\u2511\u2512\u2513\u2514\u2515\u2516\u2517\u2518\u2519\u251a\u251b\u251c\u251d\u251e\u251f\u2520\u2521\u2522\u2523\u2524\u2525\u2526\u2527\u2528\u2529\u252a\u252b\u252c\u252d\u252e\u252f\u2530\u2531\u2532\u2533\u2534\u2535\u2536\u2537\u2538\u2539\u253a\u253b\u253c\u253d\u253e\u253f\u2540\u2541\u2542\u2543\u2544\u2545\u2546\u2547\u2548\u2549\u254a\u254b\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[169].length;++e)65533!==r[169][e].charCodeAt(0)&&(n[r[169][e]]=43264+e,t[43264+e]=r[169][e]);for(r[176]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u554a\u963f\u57c3\u6328\u54ce\u5509\u54c0\u7691\u764c\u853c\u77ee\u827e\u788d\u7231\u9698\u978d\u6c28\u5b89\u4ffa\u6309\u6697\u5cb8\u80fa\u6848\u80ae\u6602\u76ce\u51f9\u6556\u71ac\u7ff1\u8884\u50b2\u5965\u61ca\u6fb3\u82ad\u634c\u6252\u53ed\u5427\u7b06\u516b\u75a4\u5df4\u62d4\u8dcb\u9776\u628a\u8019\u575d\u9738\u7f62\u7238\u767d\u67cf\u767e\u6446\u4f70\u8d25\u62dc\u7a17\u6591\u73ed\u642c\u6273\u822c\u9881\u677f\u7248\u626e\u62cc\u4f34\u74e3\u534a\u529e\u7eca\u90a6\u5e2e\u6886\u699c\u8180\u7ed1\u68d2\u78c5\u868c\u9551\u508d\u8c24\u82de\u80de\u5305\u8912\u5265\ufffd".split(""),e=0;e!=r[176].length;++e)65533!==r[176][e].charCodeAt(0)&&(n[r[176][e]]=45056+e,t[45056+e]=r[176][e]);for(r[177]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8584\u96f9\u4fdd\u5821\u9971\u5b9d\u62b1\u62a5\u66b4\u8c79\u9c8d\u7206\u676f\u7891\u60b2\u5351\u5317\u8f88\u80cc\u8d1d\u94a1\u500d\u72c8\u5907\u60eb\u7119\u88ab\u5954\u82ef\u672c\u7b28\u5d29\u7ef7\u752d\u6cf5\u8e66\u8ff8\u903c\u9f3b\u6bd4\u9119\u7b14\u5f7c\u78a7\u84d6\u853d\u6bd5\u6bd9\u6bd6\u5e01\u5e87\u75f9\u95ed\u655d\u5f0a\u5fc5\u8f9f\u58c1\u81c2\u907f\u965b\u97ad\u8fb9\u7f16\u8d2c\u6241\u4fbf\u53d8\u535e\u8fa8\u8fa9\u8fab\u904d\u6807\u5f6a\u8198\u8868\u9cd6\u618b\u522b\u762a\u5f6c\u658c\u6fd2\u6ee8\u5bbe\u6448\u5175\u51b0\u67c4\u4e19\u79c9\u997c\u70b3\ufffd".split(""),e=0;e!=r[177].length;++e)65533!==r[177][e].charCodeAt(0)&&(n[r[177][e]]=45312+e,t[45312+e]=r[177][e]);for(r[178]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u75c5\u5e76\u73bb\u83e0\u64ad\u62e8\u94b5\u6ce2\u535a\u52c3\u640f\u94c2\u7b94\u4f2f\u5e1b\u8236\u8116\u818a\u6e24\u6cca\u9a73\u6355\u535c\u54fa\u8865\u57e0\u4e0d\u5e03\u6b65\u7c3f\u90e8\u6016\u64e6\u731c\u88c1\u6750\u624d\u8d22\u776c\u8e29\u91c7\u5f69\u83dc\u8521\u9910\u53c2\u8695\u6b8b\u60ed\u60e8\u707f\u82cd\u8231\u4ed3\u6ca7\u85cf\u64cd\u7cd9\u69fd\u66f9\u8349\u5395\u7b56\u4fa7\u518c\u6d4b\u5c42\u8e6d\u63d2\u53c9\u832c\u8336\u67e5\u78b4\u643d\u5bdf\u5c94\u5dee\u8be7\u62c6\u67f4\u8c7a\u6400\u63ba\u8749\u998b\u8c17\u7f20\u94f2\u4ea7\u9610\u98a4\u660c\u7316\ufffd".split(""),e=0;e!=r[178].length;++e)65533!==r[178][e].charCodeAt(0)&&(n[r[178][e]]=45568+e,t[45568+e]=r[178][e]);for(r[179]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u573a\u5c1d\u5e38\u957f\u507f\u80a0\u5382\u655e\u7545\u5531\u5021\u8d85\u6284\u949e\u671d\u5632\u6f6e\u5de2\u5435\u7092\u8f66\u626f\u64a4\u63a3\u5f7b\u6f88\u90f4\u81e3\u8fb0\u5c18\u6668\u5ff1\u6c89\u9648\u8d81\u886c\u6491\u79f0\u57ce\u6a59\u6210\u5448\u4e58\u7a0b\u60e9\u6f84\u8bda\u627f\u901e\u9a8b\u79e4\u5403\u75f4\u6301\u5319\u6c60\u8fdf\u5f1b\u9a70\u803b\u9f7f\u4f88\u5c3a\u8d64\u7fc5\u65a5\u70bd\u5145\u51b2\u866b\u5d07\u5ba0\u62bd\u916c\u7574\u8e0c\u7a20\u6101\u7b79\u4ec7\u7ef8\u7785\u4e11\u81ed\u521d\u51fa\u6a71\u53a8\u8e87\u9504\u96cf\u6ec1\u9664\u695a\ufffd".split(""),e=0;e!=r[179].length;++e)65533!==r[179][e].charCodeAt(0)&&(n[r[179][e]]=45824+e,t[45824+e]=r[179][e]);for(r[180]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7840\u50a8\u77d7\u6410\u89e6\u5904\u63e3\u5ddd\u7a7f\u693d\u4f20\u8239\u5598\u4e32\u75ae\u7a97\u5e62\u5e8a\u95ef\u521b\u5439\u708a\u6376\u9524\u5782\u6625\u693f\u9187\u5507\u6df3\u7eaf\u8822\u6233\u7ef0\u75b5\u8328\u78c1\u96cc\u8f9e\u6148\u74f7\u8bcd\u6b64\u523a\u8d50\u6b21\u806a\u8471\u56f1\u5306\u4ece\u4e1b\u51d1\u7c97\u918b\u7c07\u4fc3\u8e7f\u7be1\u7a9c\u6467\u5d14\u50ac\u8106\u7601\u7cb9\u6dec\u7fe0\u6751\u5b58\u5bf8\u78cb\u64ae\u6413\u63aa\u632b\u9519\u642d\u8fbe\u7b54\u7629\u6253\u5927\u5446\u6b79\u50a3\u6234\u5e26\u6b86\u4ee3\u8d37\u888b\u5f85\u902e\ufffd".split(""),e=0;e!=r[180].length;++e)65533!==r[180][e].charCodeAt(0)&&(n[r[180][e]]=46080+e,t[46080+e]=r[180][e]);for(r[181]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6020\u803d\u62c5\u4e39\u5355\u90f8\u63b8\u80c6\u65e6\u6c2e\u4f46\u60ee\u6de1\u8bde\u5f39\u86cb\u5f53\u6321\u515a\u8361\u6863\u5200\u6363\u8e48\u5012\u5c9b\u7977\u5bfc\u5230\u7a3b\u60bc\u9053\u76d7\u5fb7\u5f97\u7684\u8e6c\u706f\u767b\u7b49\u77aa\u51f3\u9093\u5824\u4f4e\u6ef4\u8fea\u654c\u7b1b\u72c4\u6da4\u7fdf\u5ae1\u62b5\u5e95\u5730\u8482\u7b2c\u5e1d\u5f1f\u9012\u7f14\u98a0\u6382\u6ec7\u7898\u70b9\u5178\u975b\u57ab\u7535\u4f43\u7538\u5e97\u60e6\u5960\u6dc0\u6bbf\u7889\u53fc\u96d5\u51cb\u5201\u6389\u540a\u9493\u8c03\u8dcc\u7239\u789f\u8776\u8fed\u8c0d\u53e0\ufffd".split(""),e=0;e!=r[181].length;++e)65533!==r[181][e].charCodeAt(0)&&(n[r[181][e]]=46336+e,t[46336+e]=r[181][e]);for(r[182]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u4e01\u76ef\u53ee\u9489\u9876\u9f0e\u952d\u5b9a\u8ba2\u4e22\u4e1c\u51ac\u8463\u61c2\u52a8\u680b\u4f97\u606b\u51bb\u6d1e\u515c\u6296\u6597\u9661\u8c46\u9017\u75d8\u90fd\u7763\u6bd2\u728a\u72ec\u8bfb\u5835\u7779\u8d4c\u675c\u9540\u809a\u5ea6\u6e21\u5992\u7aef\u77ed\u953b\u6bb5\u65ad\u7f0e\u5806\u5151\u961f\u5bf9\u58a9\u5428\u8e72\u6566\u987f\u56e4\u949d\u76fe\u9041\u6387\u54c6\u591a\u593a\u579b\u8eb2\u6735\u8dfa\u8235\u5241\u60f0\u5815\u86fe\u5ce8\u9e45\u4fc4\u989d\u8bb9\u5a25\u6076\u5384\u627c\u904f\u9102\u997f\u6069\u800c\u513f\u8033\u5c14\u9975\u6d31\u4e8c\ufffd".split(""),e=0;e!=r[182].length;++e)65533!==r[182][e].charCodeAt(0)&&(n[r[182][e]]=46592+e,t[46592+e]=r[182][e]);for(r[183]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8d30\u53d1\u7f5a\u7b4f\u4f10\u4e4f\u9600\u6cd5\u73d0\u85e9\u5e06\u756a\u7ffb\u6a0a\u77fe\u9492\u7e41\u51e1\u70e6\u53cd\u8fd4\u8303\u8d29\u72af\u996d\u6cdb\u574a\u82b3\u65b9\u80aa\u623f\u9632\u59a8\u4eff\u8bbf\u7eba\u653e\u83f2\u975e\u5561\u98de\u80a5\u532a\u8bfd\u5420\u80ba\u5e9f\u6cb8\u8d39\u82ac\u915a\u5429\u6c1b\u5206\u7eb7\u575f\u711a\u6c7e\u7c89\u594b\u4efd\u5fff\u6124\u7caa\u4e30\u5c01\u67ab\u8702\u5cf0\u950b\u98ce\u75af\u70fd\u9022\u51af\u7f1d\u8bbd\u5949\u51e4\u4f5b\u5426\u592b\u6577\u80a4\u5b75\u6276\u62c2\u8f90\u5e45\u6c1f\u7b26\u4f0f\u4fd8\u670d\ufffd".split(""),e=0;e!=r[183].length;++e)65533!==r[183][e].charCodeAt(0)&&(n[r[183][e]]=46848+e,t[46848+e]=r[183][e]);for(r[184]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6d6e\u6daa\u798f\u88b1\u5f17\u752b\u629a\u8f85\u4fef\u91dc\u65a7\u812f\u8151\u5e9c\u8150\u8d74\u526f\u8986\u8d4b\u590d\u5085\u4ed8\u961c\u7236\u8179\u8d1f\u5bcc\u8ba3\u9644\u5987\u7f1a\u5490\u5676\u560e\u8be5\u6539\u6982\u9499\u76d6\u6e89\u5e72\u7518\u6746\u67d1\u7aff\u809d\u8d76\u611f\u79c6\u6562\u8d63\u5188\u521a\u94a2\u7f38\u809b\u7eb2\u5c97\u6e2f\u6760\u7bd9\u768b\u9ad8\u818f\u7f94\u7cd5\u641e\u9550\u7a3f\u544a\u54e5\u6b4c\u6401\u6208\u9e3d\u80f3\u7599\u5272\u9769\u845b\u683c\u86e4\u9601\u9694\u94ec\u4e2a\u5404\u7ed9\u6839\u8ddf\u8015\u66f4\u5e9a\u7fb9\ufffd".split(""),e=0;e!=r[184].length;++e)65533!==r[184][e].charCodeAt(0)&&(n[r[184][e]]=47104+e,t[47104+e]=r[184][e]);for(r[185]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u57c2\u803f\u6897\u5de5\u653b\u529f\u606d\u9f9a\u4f9b\u8eac\u516c\u5bab\u5f13\u5de9\u6c5e\u62f1\u8d21\u5171\u94a9\u52fe\u6c9f\u82df\u72d7\u57a2\u6784\u8d2d\u591f\u8f9c\u83c7\u5495\u7b8d\u4f30\u6cbd\u5b64\u59d1\u9f13\u53e4\u86ca\u9aa8\u8c37\u80a1\u6545\u987e\u56fa\u96c7\u522e\u74dc\u5250\u5be1\u6302\u8902\u4e56\u62d0\u602a\u68fa\u5173\u5b98\u51a0\u89c2\u7ba1\u9986\u7f50\u60ef\u704c\u8d2f\u5149\u5e7f\u901b\u7470\u89c4\u572d\u7845\u5f52\u9f9f\u95fa\u8f68\u9b3c\u8be1\u7678\u6842\u67dc\u8dea\u8d35\u523d\u8f8a\u6eda\u68cd\u9505\u90ed\u56fd\u679c\u88f9\u8fc7\u54c8\ufffd".split(""),e=0;e!=r[185].length;++e)65533!==r[185][e].charCodeAt(0)&&(n[r[185][e]]=47360+e,t[47360+e]=r[185][e]);for(r[186]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9ab8\u5b69\u6d77\u6c26\u4ea5\u5bb3\u9a87\u9163\u61a8\u90af\u97e9\u542b\u6db5\u5bd2\u51fd\u558a\u7f55\u7ff0\u64bc\u634d\u65f1\u61be\u608d\u710a\u6c57\u6c49\u592f\u676d\u822a\u58d5\u568e\u8c6a\u6beb\u90dd\u597d\u8017\u53f7\u6d69\u5475\u559d\u8377\u83cf\u6838\u79be\u548c\u4f55\u5408\u76d2\u8c89\u9602\u6cb3\u6db8\u8d6b\u8910\u9e64\u8d3a\u563f\u9ed1\u75d5\u5f88\u72e0\u6068\u54fc\u4ea8\u6a2a\u8861\u6052\u8f70\u54c4\u70d8\u8679\u9e3f\u6d2a\u5b8f\u5f18\u7ea2\u5589\u4faf\u7334\u543c\u539a\u5019\u540e\u547c\u4e4e\u5ffd\u745a\u58f6\u846b\u80e1\u8774\u72d0\u7cca\u6e56\ufffd".split(""),e=0;e!=r[186].length;++e)65533!==r[186][e].charCodeAt(0)&&(n[r[186][e]]=47616+e,t[47616+e]=r[186][e]);for(r[187]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5f27\u864e\u552c\u62a4\u4e92\u6caa\u6237\u82b1\u54d7\u534e\u733e\u6ed1\u753b\u5212\u5316\u8bdd\u69d0\u5f8a\u6000\u6dee\u574f\u6b22\u73af\u6853\u8fd8\u7f13\u6362\u60a3\u5524\u75ea\u8c62\u7115\u6da3\u5ba6\u5e7b\u8352\u614c\u9ec4\u78fa\u8757\u7c27\u7687\u51f0\u60f6\u714c\u6643\u5e4c\u604d\u8c0e\u7070\u6325\u8f89\u5fbd\u6062\u86d4\u56de\u6bc1\u6094\u6167\u5349\u60e0\u6666\u8d3f\u79fd\u4f1a\u70e9\u6c47\u8bb3\u8bf2\u7ed8\u8364\u660f\u5a5a\u9b42\u6d51\u6df7\u8c41\u6d3b\u4f19\u706b\u83b7\u6216\u60d1\u970d\u8d27\u7978\u51fb\u573e\u57fa\u673a\u7578\u7a3d\u79ef\u7b95\ufffd".split(""),e=0;e!=r[187].length;++e)65533!==r[187][e].charCodeAt(0)&&(n[r[187][e]]=47872+e,t[47872+e]=r[187][e]);for(r[188]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u808c\u9965\u8ff9\u6fc0\u8ba5\u9e21\u59ec\u7ee9\u7f09\u5409\u6781\u68d8\u8f91\u7c4d\u96c6\u53ca\u6025\u75be\u6c72\u5373\u5ac9\u7ea7\u6324\u51e0\u810a\u5df1\u84df\u6280\u5180\u5b63\u4f0e\u796d\u5242\u60b8\u6d4e\u5bc4\u5bc2\u8ba1\u8bb0\u65e2\u5fcc\u9645\u5993\u7ee7\u7eaa\u5609\u67b7\u5939\u4f73\u5bb6\u52a0\u835a\u988a\u8d3e\u7532\u94be\u5047\u7a3c\u4ef7\u67b6\u9a7e\u5ac1\u6b7c\u76d1\u575a\u5c16\u7b3a\u95f4\u714e\u517c\u80a9\u8270\u5978\u7f04\u8327\u68c0\u67ec\u78b1\u7877\u62e3\u6361\u7b80\u4fed\u526a\u51cf\u8350\u69db\u9274\u8df5\u8d31\u89c1\u952e\u7bad\u4ef6\ufffd".split(""),e=0;e!=r[188].length;++e)65533!==r[188][e].charCodeAt(0)&&(n[r[188][e]]=48128+e,t[48128+e]=r[188][e]);for(r[189]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5065\u8230\u5251\u996f\u6e10\u6e85\u6da7\u5efa\u50f5\u59dc\u5c06\u6d46\u6c5f\u7586\u848b\u6868\u5956\u8bb2\u5320\u9171\u964d\u8549\u6912\u7901\u7126\u80f6\u4ea4\u90ca\u6d47\u9a84\u5a07\u56bc\u6405\u94f0\u77eb\u4fa5\u811a\u72e1\u89d2\u997a\u7f34\u7ede\u527f\u6559\u9175\u8f7f\u8f83\u53eb\u7a96\u63ed\u63a5\u7686\u79f8\u8857\u9636\u622a\u52ab\u8282\u6854\u6770\u6377\u776b\u7aed\u6d01\u7ed3\u89e3\u59d0\u6212\u85c9\u82a5\u754c\u501f\u4ecb\u75a5\u8beb\u5c4a\u5dfe\u7b4b\u65a4\u91d1\u4eca\u6d25\u895f\u7d27\u9526\u4ec5\u8c28\u8fdb\u9773\u664b\u7981\u8fd1\u70ec\u6d78\ufffd".split(""),e=0;e!=r[189].length;++e)65533!==r[189][e].charCodeAt(0)&&(n[r[189][e]]=48384+e,t[48384+e]=r[189][e]);for(r[190]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5c3d\u52b2\u8346\u5162\u830e\u775b\u6676\u9cb8\u4eac\u60ca\u7cbe\u7cb3\u7ecf\u4e95\u8b66\u666f\u9888\u9759\u5883\u656c\u955c\u5f84\u75c9\u9756\u7adf\u7ade\u51c0\u70af\u7a98\u63ea\u7a76\u7ea0\u7396\u97ed\u4e45\u7078\u4e5d\u9152\u53a9\u6551\u65e7\u81fc\u8205\u548e\u5c31\u759a\u97a0\u62d8\u72d9\u75bd\u5c45\u9a79\u83ca\u5c40\u5480\u77e9\u4e3e\u6cae\u805a\u62d2\u636e\u5de8\u5177\u8ddd\u8e1e\u952f\u4ff1\u53e5\u60e7\u70ac\u5267\u6350\u9e43\u5a1f\u5026\u7737\u5377\u7ee2\u6485\u652b\u6289\u6398\u5014\u7235\u89c9\u51b3\u8bc0\u7edd\u5747\u83cc\u94a7\u519b\u541b\u5cfb\ufffd".split(""),e=0;e!=r[190].length;++e)65533!==r[190][e].charCodeAt(0)&&(n[r[190][e]]=48640+e,t[48640+e]=r[190][e]);for(r[191]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u4fca\u7ae3\u6d5a\u90e1\u9a8f\u5580\u5496\u5361\u54af\u5f00\u63e9\u6977\u51ef\u6168\u520a\u582a\u52d8\u574e\u780d\u770b\u5eb7\u6177\u7ce0\u625b\u6297\u4ea2\u7095\u8003\u62f7\u70e4\u9760\u5777\u82db\u67ef\u68f5\u78d5\u9897\u79d1\u58f3\u54b3\u53ef\u6e34\u514b\u523b\u5ba2\u8bfe\u80af\u5543\u57a6\u6073\u5751\u542d\u7a7a\u6050\u5b54\u63a7\u62a0\u53e3\u6263\u5bc7\u67af\u54ed\u7a9f\u82e6\u9177\u5e93\u88e4\u5938\u57ae\u630e\u8de8\u80ef\u5757\u7b77\u4fa9\u5feb\u5bbd\u6b3e\u5321\u7b50\u72c2\u6846\u77ff\u7736\u65f7\u51b5\u4e8f\u76d4\u5cbf\u7aa5\u8475\u594e\u9b41\u5080\ufffd".split(""),e=0;e!=r[191].length;++e)65533!==r[191][e].charCodeAt(0)&&(n[r[191][e]]=48896+e,t[48896+e]=r[191][e]);for(r[192]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9988\u6127\u6e83\u5764\u6606\u6346\u56f0\u62ec\u6269\u5ed3\u9614\u5783\u62c9\u5587\u8721\u814a\u8fa3\u5566\u83b1\u6765\u8d56\u84dd\u5a6a\u680f\u62e6\u7bee\u9611\u5170\u6f9c\u8c30\u63fd\u89c8\u61d2\u7f06\u70c2\u6ee5\u7405\u6994\u72fc\u5eca\u90ce\u6717\u6d6a\u635e\u52b3\u7262\u8001\u4f6c\u59e5\u916a\u70d9\u6d9d\u52d2\u4e50\u96f7\u956d\u857e\u78ca\u7d2f\u5121\u5792\u64c2\u808b\u7c7b\u6cea\u68f1\u695e\u51b7\u5398\u68a8\u7281\u9ece\u7bf1\u72f8\u79bb\u6f13\u7406\u674e\u91cc\u9ca4\u793c\u8389\u8354\u540f\u6817\u4e3d\u5389\u52b1\u783e\u5386\u5229\u5088\u4f8b\u4fd0\ufffd".split(""),e=0;e!=r[192].length;++e)65533!==r[192][e].charCodeAt(0)&&(n[r[192][e]]=49152+e,t[49152+e]=r[192][e]);for(r[193]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u75e2\u7acb\u7c92\u6ca5\u96b6\u529b\u7483\u54e9\u4fe9\u8054\u83b2\u8fde\u9570\u5ec9\u601c\u6d9f\u5e18\u655b\u8138\u94fe\u604b\u70bc\u7ec3\u7cae\u51c9\u6881\u7cb1\u826f\u4e24\u8f86\u91cf\u667e\u4eae\u8c05\u64a9\u804a\u50da\u7597\u71ce\u5be5\u8fbd\u6f66\u4e86\u6482\u9563\u5ed6\u6599\u5217\u88c2\u70c8\u52a3\u730e\u7433\u6797\u78f7\u9716\u4e34\u90bb\u9cde\u6dcb\u51db\u8d41\u541d\u62ce\u73b2\u83f1\u96f6\u9f84\u94c3\u4f36\u7f9a\u51cc\u7075\u9675\u5cad\u9886\u53e6\u4ee4\u6e9c\u7409\u69b4\u786b\u998f\u7559\u5218\u7624\u6d41\u67f3\u516d\u9f99\u804b\u5499\u7b3c\u7abf\ufffd".split(""),e=0;e!=r[193].length;++e)65533!==r[193][e].charCodeAt(0)&&(n[r[193][e]]=49408+e,t[49408+e]=r[193][e]);for(r[194]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9686\u5784\u62e2\u9647\u697c\u5a04\u6402\u7bd3\u6f0f\u964b\u82a6\u5362\u9885\u5e90\u7089\u63b3\u5364\u864f\u9c81\u9e93\u788c\u9732\u8def\u8d42\u9e7f\u6f5e\u7984\u5f55\u9646\u622e\u9a74\u5415\u94dd\u4fa3\u65c5\u5c65\u5c61\u7f15\u8651\u6c2f\u5f8b\u7387\u6ee4\u7eff\u5ce6\u631b\u5b6a\u6ee6\u5375\u4e71\u63a0\u7565\u62a1\u8f6e\u4f26\u4ed1\u6ca6\u7eb6\u8bba\u841d\u87ba\u7f57\u903b\u9523\u7ba9\u9aa1\u88f8\u843d\u6d1b\u9a86\u7edc\u5988\u9ebb\u739b\u7801\u8682\u9a6c\u9a82\u561b\u5417\u57cb\u4e70\u9ea6\u5356\u8fc8\u8109\u7792\u9992\u86ee\u6ee1\u8513\u66fc\u6162\u6f2b\ufffd".split(""),e=0;e!=r[194].length;++e)65533!==r[194][e].charCodeAt(0)&&(n[r[194][e]]=49664+e,t[49664+e]=r[194][e]);for(r[195]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8c29\u8292\u832b\u76f2\u6c13\u5fd9\u83bd\u732b\u8305\u951a\u6bdb\u77db\u94c6\u536f\u8302\u5192\u5e3d\u8c8c\u8d38\u4e48\u73ab\u679a\u6885\u9176\u9709\u7164\u6ca1\u7709\u5a92\u9541\u6bcf\u7f8e\u6627\u5bd0\u59b9\u5a9a\u95e8\u95f7\u4eec\u840c\u8499\u6aac\u76df\u9530\u731b\u68a6\u5b5f\u772f\u919a\u9761\u7cdc\u8ff7\u8c1c\u5f25\u7c73\u79d8\u89c5\u6ccc\u871c\u5bc6\u5e42\u68c9\u7720\u7ef5\u5195\u514d\u52c9\u5a29\u7f05\u9762\u82d7\u63cf\u7784\u85d0\u79d2\u6e3a\u5e99\u5999\u8511\u706d\u6c11\u62bf\u76bf\u654f\u60af\u95fd\u660e\u879f\u9e23\u94ed\u540d\u547d\u8c2c\u6478\ufffd".split(""),e=0;e!=r[195].length;++e)65533!==r[195][e].charCodeAt(0)&&(n[r[195][e]]=49920+e,t[49920+e]=r[195][e]);for(r[196]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6479\u8611\u6a21\u819c\u78e8\u6469\u9b54\u62b9\u672b\u83ab\u58a8\u9ed8\u6cab\u6f20\u5bde\u964c\u8c0b\u725f\u67d0\u62c7\u7261\u4ea9\u59c6\u6bcd\u5893\u66ae\u5e55\u52df\u6155\u6728\u76ee\u7766\u7267\u7a46\u62ff\u54ea\u5450\u94a0\u90a3\u5a1c\u7eb3\u6c16\u4e43\u5976\u8010\u5948\u5357\u7537\u96be\u56ca\u6320\u8111\u607c\u95f9\u6dd6\u5462\u9981\u5185\u5ae9\u80fd\u59ae\u9713\u502a\u6ce5\u5c3c\u62df\u4f60\u533f\u817b\u9006\u6eba\u852b\u62c8\u5e74\u78be\u64b5\u637b\u5ff5\u5a18\u917f\u9e1f\u5c3f\u634f\u8042\u5b7d\u556e\u954a\u954d\u6d85\u60a8\u67e0\u72de\u51dd\u5b81\ufffd".split(""),e=0;e!=r[196].length;++e)65533!==r[196][e].charCodeAt(0)&&(n[r[196][e]]=50176+e,t[50176+e]=r[196][e]);for(r[197]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u62e7\u6cde\u725b\u626d\u94ae\u7ebd\u8113\u6d53\u519c\u5f04\u5974\u52aa\u6012\u5973\u6696\u8650\u759f\u632a\u61e6\u7cef\u8bfa\u54e6\u6b27\u9e25\u6bb4\u85d5\u5455\u5076\u6ca4\u556a\u8db4\u722c\u5e15\u6015\u7436\u62cd\u6392\u724c\u5f98\u6e43\u6d3e\u6500\u6f58\u76d8\u78d0\u76fc\u7554\u5224\u53db\u4e53\u5e9e\u65c1\u802a\u80d6\u629b\u5486\u5228\u70ae\u888d\u8dd1\u6ce1\u5478\u80da\u57f9\u88f4\u8d54\u966a\u914d\u4f69\u6c9b\u55b7\u76c6\u7830\u62a8\u70f9\u6f8e\u5f6d\u84ec\u68da\u787c\u7bf7\u81a8\u670b\u9e4f\u6367\u78b0\u576f\u7812\u9739\u6279\u62ab\u5288\u7435\u6bd7\ufffd".split(""),e=0;e!=r[197].length;++e)65533!==r[197][e].charCodeAt(0)&&(n[r[197][e]]=50432+e,t[50432+e]=r[197][e]);for(r[198]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5564\u813e\u75b2\u76ae\u5339\u75de\u50fb\u5c41\u8b6c\u7bc7\u504f\u7247\u9a97\u98d8\u6f02\u74e2\u7968\u6487\u77a5\u62fc\u9891\u8d2b\u54c1\u8058\u4e52\u576a\u82f9\u840d\u5e73\u51ed\u74f6\u8bc4\u5c4f\u5761\u6cfc\u9887\u5a46\u7834\u9b44\u8feb\u7c95\u5256\u6251\u94fa\u4ec6\u8386\u8461\u83e9\u84b2\u57d4\u6734\u5703\u666e\u6d66\u8c31\u66dd\u7011\u671f\u6b3a\u6816\u621a\u59bb\u4e03\u51c4\u6f06\u67d2\u6c8f\u5176\u68cb\u5947\u6b67\u7566\u5d0e\u8110\u9f50\u65d7\u7948\u7941\u9a91\u8d77\u5c82\u4e5e\u4f01\u542f\u5951\u780c\u5668\u6c14\u8fc4\u5f03\u6c7d\u6ce3\u8bab\u6390\ufffd".split(""),e=0;e!=r[198].length;++e)65533!==r[198][e].charCodeAt(0)&&(n[r[198][e]]=50688+e,t[50688+e]=r[198][e]);for(r[199]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6070\u6d3d\u7275\u6266\u948e\u94c5\u5343\u8fc1\u7b7e\u4edf\u8c26\u4e7e\u9ed4\u94b1\u94b3\u524d\u6f5c\u9063\u6d45\u8c34\u5811\u5d4c\u6b20\u6b49\u67aa\u545b\u8154\u7f8c\u5899\u8537\u5f3a\u62a2\u6a47\u9539\u6572\u6084\u6865\u77a7\u4e54\u4fa8\u5de7\u9798\u64ac\u7fd8\u5ced\u4fcf\u7a8d\u5207\u8304\u4e14\u602f\u7a83\u94a6\u4fb5\u4eb2\u79e6\u7434\u52e4\u82b9\u64d2\u79bd\u5bdd\u6c81\u9752\u8f7b\u6c22\u503e\u537f\u6e05\u64ce\u6674\u6c30\u60c5\u9877\u8bf7\u5e86\u743c\u7a77\u79cb\u4e18\u90b1\u7403\u6c42\u56da\u914b\u6cc5\u8d8b\u533a\u86c6\u66f2\u8eaf\u5c48\u9a71\u6e20\ufffd".split(""),e=0;e!=r[199].length;++e)65533!==r[199][e].charCodeAt(0)&&(n[r[199][e]]=50944+e,t[50944+e]=r[199][e]);for(r[200]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u53d6\u5a36\u9f8b\u8da3\u53bb\u5708\u98a7\u6743\u919b\u6cc9\u5168\u75ca\u62f3\u72ac\u5238\u529d\u7f3a\u7094\u7638\u5374\u9e4a\u69b7\u786e\u96c0\u88d9\u7fa4\u7136\u71c3\u5189\u67d3\u74e4\u58e4\u6518\u56b7\u8ba9\u9976\u6270\u7ed5\u60f9\u70ed\u58ec\u4ec1\u4eba\u5fcd\u97e7\u4efb\u8ba4\u5203\u598a\u7eab\u6254\u4ecd\u65e5\u620e\u8338\u84c9\u8363\u878d\u7194\u6eb6\u5bb9\u7ed2\u5197\u63c9\u67d4\u8089\u8339\u8815\u5112\u5b7a\u5982\u8fb1\u4e73\u6c5d\u5165\u8925\u8f6f\u962e\u854a\u745e\u9510\u95f0\u6da6\u82e5\u5f31\u6492\u6d12\u8428\u816e\u9cc3\u585e\u8d5b\u4e09\u53c1\ufffd".split(""),e=0;e!=r[200].length;++e)65533!==r[200][e].charCodeAt(0)&&(n[r[200][e]]=51200+e,t[51200+e]=r[200][e]);for(r[201]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u4f1e\u6563\u6851\u55d3\u4e27\u6414\u9a9a\u626b\u5ac2\u745f\u8272\u6da9\u68ee\u50e7\u838e\u7802\u6740\u5239\u6c99\u7eb1\u50bb\u5565\u715e\u7b5b\u6652\u73ca\u82eb\u6749\u5c71\u5220\u717d\u886b\u95ea\u9655\u64c5\u8d61\u81b3\u5584\u6c55\u6247\u7f2e\u5892\u4f24\u5546\u8d4f\u664c\u4e0a\u5c1a\u88f3\u68a2\u634e\u7a0d\u70e7\u828d\u52fa\u97f6\u5c11\u54e8\u90b5\u7ecd\u5962\u8d4a\u86c7\u820c\u820d\u8d66\u6444\u5c04\u6151\u6d89\u793e\u8bbe\u7837\u7533\u547b\u4f38\u8eab\u6df1\u5a20\u7ec5\u795e\u6c88\u5ba1\u5a76\u751a\u80be\u614e\u6e17\u58f0\u751f\u7525\u7272\u5347\u7ef3\ufffd".split(""),e=0;e!=r[201].length;++e)65533!==r[201][e].charCodeAt(0)&&(n[r[201][e]]=51456+e,t[51456+e]=r[201][e]);for(r[202]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7701\u76db\u5269\u80dc\u5723\u5e08\u5931\u72ee\u65bd\u6e7f\u8bd7\u5c38\u8671\u5341\u77f3\u62fe\u65f6\u4ec0\u98df\u8680\u5b9e\u8bc6\u53f2\u77e2\u4f7f\u5c4e\u9a76\u59cb\u5f0f\u793a\u58eb\u4e16\u67ff\u4e8b\u62ed\u8a93\u901d\u52bf\u662f\u55dc\u566c\u9002\u4ed5\u4f8d\u91ca\u9970\u6c0f\u5e02\u6043\u5ba4\u89c6\u8bd5\u6536\u624b\u9996\u5b88\u5bff\u6388\u552e\u53d7\u7626\u517d\u852c\u67a2\u68b3\u6b8a\u6292\u8f93\u53d4\u8212\u6dd1\u758f\u4e66\u8d4e\u5b70\u719f\u85af\u6691\u66d9\u7f72\u8700\u9ecd\u9f20\u5c5e\u672f\u8ff0\u6811\u675f\u620d\u7ad6\u5885\u5eb6\u6570\u6f31\ufffd".split(""),e=0;e!=r[202].length;++e)65533!==r[202][e].charCodeAt(0)&&(n[r[202][e]]=51712+e,t[51712+e]=r[202][e]);for(r[203]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6055\u5237\u800d\u6454\u8870\u7529\u5e05\u6813\u62f4\u971c\u53cc\u723d\u8c01\u6c34\u7761\u7a0e\u542e\u77ac\u987a\u821c\u8bf4\u7855\u6714\u70c1\u65af\u6495\u5636\u601d\u79c1\u53f8\u4e1d\u6b7b\u8086\u5bfa\u55e3\u56db\u4f3a\u4f3c\u9972\u5df3\u677e\u8038\u6002\u9882\u9001\u5b8b\u8bbc\u8bf5\u641c\u8258\u64de\u55fd\u82cf\u9165\u4fd7\u7d20\u901f\u7c9f\u50f3\u5851\u6eaf\u5bbf\u8bc9\u8083\u9178\u849c\u7b97\u867d\u968b\u968f\u7ee5\u9ad3\u788e\u5c81\u7a57\u9042\u96a7\u795f\u5b59\u635f\u7b0b\u84d1\u68ad\u5506\u7f29\u7410\u7d22\u9501\u6240\u584c\u4ed6\u5b83\u5979\u5854\ufffd".split(""),e=0;e!=r[203].length;++e)65533!==r[203][e].charCodeAt(0)&&(n[r[203][e]]=51968+e,t[51968+e]=r[203][e]);for(r[204]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u736d\u631e\u8e4b\u8e0f\u80ce\u82d4\u62ac\u53f0\u6cf0\u915e\u592a\u6001\u6c70\u574d\u644a\u8d2a\u762b\u6ee9\u575b\u6a80\u75f0\u6f6d\u8c2d\u8c08\u5766\u6bef\u8892\u78b3\u63a2\u53f9\u70ad\u6c64\u5858\u642a\u5802\u68e0\u819b\u5510\u7cd6\u5018\u8eba\u6dcc\u8d9f\u70eb\u638f\u6d9b\u6ed4\u7ee6\u8404\u6843\u9003\u6dd8\u9676\u8ba8\u5957\u7279\u85e4\u817e\u75bc\u8a8a\u68af\u5254\u8e22\u9511\u63d0\u9898\u8e44\u557c\u4f53\u66ff\u568f\u60d5\u6d95\u5243\u5c49\u5929\u6dfb\u586b\u7530\u751c\u606c\u8214\u8146\u6311\u6761\u8fe2\u773a\u8df3\u8d34\u94c1\u5e16\u5385\u542c\u70c3\ufffd".split(""),e=0;e!=r[204].length;++e)65533!==r[204][e].charCodeAt(0)&&(n[r[204][e]]=52224+e,t[52224+e]=r[204][e]);for(r[205]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6c40\u5ef7\u505c\u4ead\u5ead\u633a\u8247\u901a\u6850\u916e\u77b3\u540c\u94dc\u5f64\u7ae5\u6876\u6345\u7b52\u7edf\u75db\u5077\u6295\u5934\u900f\u51f8\u79c3\u7a81\u56fe\u5f92\u9014\u6d82\u5c60\u571f\u5410\u5154\u6e4d\u56e2\u63a8\u9893\u817f\u8715\u892a\u9000\u541e\u5c6f\u81c0\u62d6\u6258\u8131\u9e35\u9640\u9a6e\u9a7c\u692d\u59a5\u62d3\u553e\u6316\u54c7\u86d9\u6d3c\u5a03\u74e6\u889c\u6b6a\u5916\u8c4c\u5f2f\u6e7e\u73a9\u987d\u4e38\u70f7\u5b8c\u7897\u633d\u665a\u7696\u60cb\u5b9b\u5a49\u4e07\u8155\u6c6a\u738b\u4ea1\u6789\u7f51\u5f80\u65fa\u671b\u5fd8\u5984\u5a01\ufffd".split(""),e=0;e!=r[205].length;++e)65533!==r[205][e].charCodeAt(0)&&(n[r[205][e]]=52480+e,t[52480+e]=r[205][e]);for(r[206]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5dcd\u5fae\u5371\u97e6\u8fdd\u6845\u56f4\u552f\u60df\u4e3a\u6f4d\u7ef4\u82c7\u840e\u59d4\u4f1f\u4f2a\u5c3e\u7eac\u672a\u851a\u5473\u754f\u80c3\u5582\u9b4f\u4f4d\u6e2d\u8c13\u5c09\u6170\u536b\u761f\u6e29\u868a\u6587\u95fb\u7eb9\u543b\u7a33\u7d0a\u95ee\u55e1\u7fc1\u74ee\u631d\u8717\u6da1\u7a9d\u6211\u65a1\u5367\u63e1\u6c83\u5deb\u545c\u94a8\u4e4c\u6c61\u8bec\u5c4b\u65e0\u829c\u68a7\u543e\u5434\u6bcb\u6b66\u4e94\u6342\u5348\u821e\u4f0d\u4fae\u575e\u620a\u96fe\u6664\u7269\u52ff\u52a1\u609f\u8bef\u6614\u7199\u6790\u897f\u7852\u77fd\u6670\u563b\u5438\u9521\u727a\ufffd".split(""),e=0;e!=r[206].length;++e)65533!==r[206][e].charCodeAt(0)&&(n[r[206][e]]=52736+e,t[52736+e]=r[206][e]);for(r[207]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7a00\u606f\u5e0c\u6089\u819d\u5915\u60dc\u7184\u70ef\u6eaa\u6c50\u7280\u6a84\u88ad\u5e2d\u4e60\u5ab3\u559c\u94e3\u6d17\u7cfb\u9699\u620f\u7ec6\u778e\u867e\u5323\u971e\u8f96\u6687\u5ce1\u4fa0\u72ed\u4e0b\u53a6\u590f\u5413\u6380\u9528\u5148\u4ed9\u9c9c\u7ea4\u54b8\u8d24\u8854\u8237\u95f2\u6d8e\u5f26\u5acc\u663e\u9669\u73b0\u732e\u53bf\u817a\u9985\u7fa1\u5baa\u9677\u9650\u7ebf\u76f8\u53a2\u9576\u9999\u7bb1\u8944\u6e58\u4e61\u7fd4\u7965\u8be6\u60f3\u54cd\u4eab\u9879\u5df7\u6a61\u50cf\u5411\u8c61\u8427\u785d\u9704\u524a\u54ee\u56a3\u9500\u6d88\u5bb5\u6dc6\u6653\ufffd".split(""),e=0;e!=r[207].length;++e)65533!==r[207][e].charCodeAt(0)&&(n[r[207][e]]=52992+e,t[52992+e]=r[207][e]);for(r[208]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5c0f\u5b5d\u6821\u8096\u5578\u7b11\u6548\u6954\u4e9b\u6b47\u874e\u978b\u534f\u631f\u643a\u90aa\u659c\u80c1\u8c10\u5199\u68b0\u5378\u87f9\u61c8\u6cc4\u6cfb\u8c22\u5c51\u85aa\u82af\u950c\u6b23\u8f9b\u65b0\u5ffb\u5fc3\u4fe1\u8845\u661f\u8165\u7329\u60fa\u5174\u5211\u578b\u5f62\u90a2\u884c\u9192\u5e78\u674f\u6027\u59d3\u5144\u51f6\u80f8\u5308\u6c79\u96c4\u718a\u4f11\u4fee\u7f9e\u673d\u55c5\u9508\u79c0\u8896\u7ee3\u589f\u620c\u9700\u865a\u5618\u987b\u5f90\u8bb8\u84c4\u9157\u53d9\u65ed\u5e8f\u755c\u6064\u7d6e\u5a7f\u7eea\u7eed\u8f69\u55a7\u5ba3\u60ac\u65cb\u7384\ufffd".split(""),e=0;e!=r[208].length;++e)65533!==r[208][e].charCodeAt(0)&&(n[r[208][e]]=53248+e,t[53248+e]=r[208][e]);for(r[209]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9009\u7663\u7729\u7eda\u9774\u859b\u5b66\u7a74\u96ea\u8840\u52cb\u718f\u5faa\u65ec\u8be2\u5bfb\u9a6f\u5de1\u6b89\u6c5b\u8bad\u8baf\u900a\u8fc5\u538b\u62bc\u9e26\u9e2d\u5440\u4e2b\u82bd\u7259\u869c\u5d16\u8859\u6daf\u96c5\u54d1\u4e9a\u8bb6\u7109\u54bd\u9609\u70df\u6df9\u76d0\u4e25\u7814\u8712\u5ca9\u5ef6\u8a00\u989c\u960e\u708e\u6cbf\u5944\u63a9\u773c\u884d\u6f14\u8273\u5830\u71d5\u538c\u781a\u96c1\u5501\u5f66\u7130\u5bb4\u8c1a\u9a8c\u6b83\u592e\u9e2f\u79e7\u6768\u626c\u4f6f\u75a1\u7f8a\u6d0b\u9633\u6c27\u4ef0\u75d2\u517b\u6837\u6f3e\u9080\u8170\u5996\u7476\ufffd".split(""),e=0;e!=r[209].length;++e)65533!==r[209][e].charCodeAt(0)&&(n[r[209][e]]=53504+e,t[53504+e]=r[209][e]);for(r[210]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6447\u5c27\u9065\u7a91\u8c23\u59da\u54ac\u8200\u836f\u8981\u8000\u6930\u564e\u8036\u7237\u91ce\u51b6\u4e5f\u9875\u6396\u4e1a\u53f6\u66f3\u814b\u591c\u6db2\u4e00\u58f9\u533b\u63d6\u94f1\u4f9d\u4f0a\u8863\u9890\u5937\u9057\u79fb\u4eea\u80f0\u7591\u6c82\u5b9c\u59e8\u5f5d\u6905\u8681\u501a\u5df2\u4e59\u77e3\u4ee5\u827a\u6291\u6613\u9091\u5c79\u4ebf\u5f79\u81c6\u9038\u8084\u75ab\u4ea6\u88d4\u610f\u6bc5\u5fc6\u4e49\u76ca\u6ea2\u8be3\u8bae\u8c0a\u8bd1\u5f02\u7ffc\u7fcc\u7ece\u8335\u836b\u56e0\u6bb7\u97f3\u9634\u59fb\u541f\u94f6\u6deb\u5bc5\u996e\u5c39\u5f15\u9690\ufffd".split(""),e=0;e!=r[210].length;++e)65533!==r[210][e].charCodeAt(0)&&(n[r[210][e]]=53760+e,t[53760+e]=r[210][e]);for(r[211]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5370\u82f1\u6a31\u5a74\u9e70\u5e94\u7f28\u83b9\u8424\u8425\u8367\u8747\u8fce\u8d62\u76c8\u5f71\u9896\u786c\u6620\u54df\u62e5\u4f63\u81c3\u75c8\u5eb8\u96cd\u8e0a\u86f9\u548f\u6cf3\u6d8c\u6c38\u607f\u52c7\u7528\u5e7d\u4f18\u60a0\u5fe7\u5c24\u7531\u90ae\u94c0\u72b9\u6cb9\u6e38\u9149\u6709\u53cb\u53f3\u4f51\u91c9\u8bf1\u53c8\u5e7c\u8fc2\u6de4\u4e8e\u76c2\u6986\u865e\u611a\u8206\u4f59\u4fde\u903e\u9c7c\u6109\u6e1d\u6e14\u9685\u4e88\u5a31\u96e8\u4e0e\u5c7f\u79b9\u5b87\u8bed\u7fbd\u7389\u57df\u828b\u90c1\u5401\u9047\u55bb\u5cea\u5fa1\u6108\u6b32\u72f1\u80b2\u8a89\ufffd".split(""),e=0;e!=r[211].length;++e)65533!==r[211][e].charCodeAt(0)&&(n[r[211][e]]=54016+e,t[54016+e]=r[211][e]);for(r[212]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6d74\u5bd3\u88d5\u9884\u8c6b\u9a6d\u9e33\u6e0a\u51a4\u5143\u57a3\u8881\u539f\u63f4\u8f95\u56ed\u5458\u5706\u733f\u6e90\u7f18\u8fdc\u82d1\u613f\u6028\u9662\u66f0\u7ea6\u8d8a\u8dc3\u94a5\u5cb3\u7ca4\u6708\u60a6\u9605\u8018\u4e91\u90e7\u5300\u9668\u5141\u8fd0\u8574\u915d\u6655\u97f5\u5b55\u531d\u7838\u6742\u683d\u54c9\u707e\u5bb0\u8f7d\u518d\u5728\u54b1\u6512\u6682\u8d5e\u8d43\u810f\u846c\u906d\u7cdf\u51ff\u85fb\u67a3\u65e9\u6fa1\u86a4\u8e81\u566a\u9020\u7682\u7076\u71e5\u8d23\u62e9\u5219\u6cfd\u8d3c\u600e\u589e\u618e\u66fe\u8d60\u624e\u55b3\u6e23\u672d\u8f67\ufffd".split(""),e=0;e!=r[212].length;++e)65533!==r[212][e].charCodeAt(0)&&(n[r[212][e]]=54272+e,t[54272+e]=r[212][e]);for(r[213]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u94e1\u95f8\u7728\u6805\u69a8\u548b\u4e4d\u70b8\u8bc8\u6458\u658b\u5b85\u7a84\u503a\u5be8\u77bb\u6be1\u8a79\u7c98\u6cbe\u76cf\u65a9\u8f97\u5d2d\u5c55\u8638\u6808\u5360\u6218\u7ad9\u6e5b\u7efd\u6a1f\u7ae0\u5f70\u6f33\u5f20\u638c\u6da8\u6756\u4e08\u5e10\u8d26\u4ed7\u80c0\u7634\u969c\u62db\u662d\u627e\u6cbc\u8d75\u7167\u7f69\u5146\u8087\u53ec\u906e\u6298\u54f2\u86f0\u8f99\u8005\u9517\u8517\u8fd9\u6d59\u73cd\u659f\u771f\u7504\u7827\u81fb\u8d1e\u9488\u4fa6\u6795\u75b9\u8bca\u9707\u632f\u9547\u9635\u84b8\u6323\u7741\u5f81\u72f0\u4e89\u6014\u6574\u62ef\u6b63\u653f\ufffd".split(""),e=0;e!=r[213].length;++e)65533!==r[213][e].charCodeAt(0)&&(n[r[213][e]]=54528+e,t[54528+e]=r[213][e]);for(r[214]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5e27\u75c7\u90d1\u8bc1\u829d\u679d\u652f\u5431\u8718\u77e5\u80a2\u8102\u6c41\u4e4b\u7ec7\u804c\u76f4\u690d\u6b96\u6267\u503c\u4f84\u5740\u6307\u6b62\u8dbe\u53ea\u65e8\u7eb8\u5fd7\u631a\u63b7\u81f3\u81f4\u7f6e\u5e1c\u5cd9\u5236\u667a\u79e9\u7a1a\u8d28\u7099\u75d4\u6ede\u6cbb\u7a92\u4e2d\u76c5\u5fe0\u949f\u8877\u7ec8\u79cd\u80bf\u91cd\u4ef2\u4f17\u821f\u5468\u5dde\u6d32\u8bcc\u7ca5\u8f74\u8098\u5e1a\u5492\u76b1\u5b99\u663c\u9aa4\u73e0\u682a\u86db\u6731\u732a\u8bf8\u8bdb\u9010\u7af9\u70db\u716e\u62c4\u77a9\u5631\u4e3b\u8457\u67f1\u52a9\u86c0\u8d2e\u94f8\u7b51\ufffd".split(""),e=0;e!=r[214].length;++e)65533!==r[214][e].charCodeAt(0)&&(n[r[214][e]]=54784+e,t[54784+e]=r[214][e]);for(r[215]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u4f4f\u6ce8\u795d\u9a7b\u6293\u722a\u62fd\u4e13\u7816\u8f6c\u64b0\u8d5a\u7bc6\u6869\u5e84\u88c5\u5986\u649e\u58ee\u72b6\u690e\u9525\u8ffd\u8d58\u5760\u7f00\u8c06\u51c6\u6349\u62d9\u5353\u684c\u7422\u8301\u914c\u5544\u7740\u707c\u6d4a\u5179\u54a8\u8d44\u59ff\u6ecb\u6dc4\u5b5c\u7d2b\u4ed4\u7c7d\u6ed3\u5b50\u81ea\u6e0d\u5b57\u9b03\u68d5\u8e2a\u5b97\u7efc\u603b\u7eb5\u90b9\u8d70\u594f\u63cd\u79df\u8db3\u5352\u65cf\u7956\u8bc5\u963b\u7ec4\u94bb\u7e82\u5634\u9189\u6700\u7f6a\u5c0a\u9075\u6628\u5de6\u4f50\u67de\u505a\u4f5c\u5750\u5ea7\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd".split(""),e=0;e!=r[215].length;++e)65533!==r[215][e].charCodeAt(0)&&(n[r[215][e]]=55040+e,t[55040+e]=r[215][e]);for(r[216]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u4e8d\u4e0c\u5140\u4e10\u5eff\u5345\u4e15\u4e98\u4e1e\u9b32\u5b6c\u5669\u4e28\u79ba\u4e3f\u5315\u4e47\u592d\u723b\u536e\u6c10\u56df\u80e4\u9997\u6bd3\u777e\u9f17\u4e36\u4e9f\u9f10\u4e5c\u4e69\u4e93\u8288\u5b5b\u556c\u560f\u4ec4\u538d\u539d\u53a3\u53a5\u53ae\u9765\u8d5d\u531a\u53f5\u5326\u532e\u533e\u8d5c\u5366\u5363\u5202\u5208\u520e\u522d\u5233\u523f\u5240\u524c\u525e\u5261\u525c\u84af\u527d\u5282\u5281\u5290\u5293\u5182\u7f54\u4ebb\u4ec3\u4ec9\u4ec2\u4ee8\u4ee1\u4eeb\u4ede\u4f1b\u4ef3\u4f22\u4f64\u4ef5\u4f25\u4f27\u4f09\u4f2b\u4f5e\u4f67\u6538\u4f5a\u4f5d\ufffd".split(""),e=0;e!=r[216].length;++e)65533!==r[216][e].charCodeAt(0)&&(n[r[216][e]]=55296+e,t[55296+e]=r[216][e]);for(r[217]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u4f5f\u4f57\u4f32\u4f3d\u4f76\u4f74\u4f91\u4f89\u4f83\u4f8f\u4f7e\u4f7b\u4faa\u4f7c\u4fac\u4f94\u4fe6\u4fe8\u4fea\u4fc5\u4fda\u4fe3\u4fdc\u4fd1\u4fdf\u4ff8\u5029\u504c\u4ff3\u502c\u500f\u502e\u502d\u4ffe\u501c\u500c\u5025\u5028\u507e\u5043\u5055\u5048\u504e\u506c\u507b\u50a5\u50a7\u50a9\u50ba\u50d6\u5106\u50ed\u50ec\u50e6\u50ee\u5107\u510b\u4edd\u6c3d\u4f58\u4f65\u4fce\u9fa0\u6c46\u7c74\u516e\u5dfd\u9ec9\u9998\u5181\u5914\u52f9\u530d\u8a07\u5310\u51eb\u5919\u5155\u4ea0\u5156\u4eb3\u886e\u88a4\u4eb5\u8114\u88d2\u7980\u5b34\u8803\u7fb8\u51ab\u51b1\u51bd\u51bc\ufffd".split(""),e=0;e!=r[217].length;++e)65533!==r[217][e].charCodeAt(0)&&(n[r[217][e]]=55552+e,t[55552+e]=r[217][e]);for(r[218]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u51c7\u5196\u51a2\u51a5\u8ba0\u8ba6\u8ba7\u8baa\u8bb4\u8bb5\u8bb7\u8bc2\u8bc3\u8bcb\u8bcf\u8bce\u8bd2\u8bd3\u8bd4\u8bd6\u8bd8\u8bd9\u8bdc\u8bdf\u8be0\u8be4\u8be8\u8be9\u8bee\u8bf0\u8bf3\u8bf6\u8bf9\u8bfc\u8bff\u8c00\u8c02\u8c04\u8c07\u8c0c\u8c0f\u8c11\u8c12\u8c14\u8c15\u8c16\u8c19\u8c1b\u8c18\u8c1d\u8c1f\u8c20\u8c21\u8c25\u8c27\u8c2a\u8c2b\u8c2e\u8c2f\u8c32\u8c33\u8c35\u8c36\u5369\u537a\u961d\u9622\u9621\u9631\u962a\u963d\u963c\u9642\u9649\u9654\u965f\u9667\u966c\u9672\u9674\u9688\u968d\u9697\u96b0\u9097\u909b\u909d\u9099\u90ac\u90a1\u90b4\u90b3\u90b6\u90ba\ufffd".split(""),e=0;e!=r[218].length;++e)65533!==r[218][e].charCodeAt(0)&&(n[r[218][e]]=55808+e,t[55808+e]=r[218][e]);for(r[219]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u90b8\u90b0\u90cf\u90c5\u90be\u90d0\u90c4\u90c7\u90d3\u90e6\u90e2\u90dc\u90d7\u90db\u90eb\u90ef\u90fe\u9104\u9122\u911e\u9123\u9131\u912f\u9139\u9143\u9146\u520d\u5942\u52a2\u52ac\u52ad\u52be\u54ff\u52d0\u52d6\u52f0\u53df\u71ee\u77cd\u5ef4\u51f5\u51fc\u9b2f\u53b6\u5f01\u755a\u5def\u574c\u57a9\u57a1\u587e\u58bc\u58c5\u58d1\u5729\u572c\u572a\u5733\u5739\u572e\u572f\u575c\u573b\u5742\u5769\u5785\u576b\u5786\u577c\u577b\u5768\u576d\u5776\u5773\u57ad\u57a4\u578c\u57b2\u57cf\u57a7\u57b4\u5793\u57a0\u57d5\u57d8\u57da\u57d9\u57d2\u57b8\u57f4\u57ef\u57f8\u57e4\u57dd\ufffd".split(""),e=0;e!=r[219].length;++e)65533!==r[219][e].charCodeAt(0)&&(n[r[219][e]]=56064+e,t[56064+e]=r[219][e]);for(r[220]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u580b\u580d\u57fd\u57ed\u5800\u581e\u5819\u5844\u5820\u5865\u586c\u5881\u5889\u589a\u5880\u99a8\u9f19\u61ff\u8279\u827d\u827f\u828f\u828a\u82a8\u8284\u828e\u8291\u8297\u8299\u82ab\u82b8\u82be\u82b0\u82c8\u82ca\u82e3\u8298\u82b7\u82ae\u82cb\u82cc\u82c1\u82a9\u82b4\u82a1\u82aa\u829f\u82c4\u82ce\u82a4\u82e1\u8309\u82f7\u82e4\u830f\u8307\u82dc\u82f4\u82d2\u82d8\u830c\u82fb\u82d3\u8311\u831a\u8306\u8314\u8315\u82e0\u82d5\u831c\u8351\u835b\u835c\u8308\u8392\u833c\u8334\u8331\u839b\u835e\u832f\u834f\u8347\u8343\u835f\u8340\u8317\u8360\u832d\u833a\u8333\u8366\u8365\ufffd".split(""),e=0;e!=r[220].length;++e)65533!==r[220][e].charCodeAt(0)&&(n[r[220][e]]=56320+e,t[56320+e]=r[220][e]);for(r[221]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8368\u831b\u8369\u836c\u836a\u836d\u836e\u83b0\u8378\u83b3\u83b4\u83a0\u83aa\u8393\u839c\u8385\u837c\u83b6\u83a9\u837d\u83b8\u837b\u8398\u839e\u83a8\u83ba\u83bc\u83c1\u8401\u83e5\u83d8\u5807\u8418\u840b\u83dd\u83fd\u83d6\u841c\u8438\u8411\u8406\u83d4\u83df\u840f\u8403\u83f8\u83f9\u83ea\u83c5\u83c0\u8426\u83f0\u83e1\u845c\u8451\u845a\u8459\u8473\u8487\u8488\u847a\u8489\u8478\u843c\u8446\u8469\u8476\u848c\u848e\u8431\u846d\u84c1\u84cd\u84d0\u84e6\u84bd\u84d3\u84ca\u84bf\u84ba\u84e0\u84a1\u84b9\u84b4\u8497\u84e5\u84e3\u850c\u750d\u8538\u84f0\u8539\u851f\u853a\ufffd".split(""),e=0;e!=r[221].length;++e)65533!==r[221][e].charCodeAt(0)&&(n[r[221][e]]=56576+e,t[56576+e]=r[221][e]);for(r[222]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8556\u853b\u84ff\u84fc\u8559\u8548\u8568\u8564\u855e\u857a\u77a2\u8543\u8572\u857b\u85a4\u85a8\u8587\u858f\u8579\u85ae\u859c\u8585\u85b9\u85b7\u85b0\u85d3\u85c1\u85dc\u85ff\u8627\u8605\u8629\u8616\u863c\u5efe\u5f08\u593c\u5941\u8037\u5955\u595a\u5958\u530f\u5c22\u5c25\u5c2c\u5c34\u624c\u626a\u629f\u62bb\u62ca\u62da\u62d7\u62ee\u6322\u62f6\u6339\u634b\u6343\u63ad\u63f6\u6371\u637a\u638e\u63b4\u636d\u63ac\u638a\u6369\u63ae\u63bc\u63f2\u63f8\u63e0\u63ff\u63c4\u63de\u63ce\u6452\u63c6\u63be\u6445\u6441\u640b\u641b\u6420\u640c\u6426\u6421\u645e\u6484\u646d\u6496\ufffd".split(""),e=0;e!=r[222].length;++e)65533!==r[222][e].charCodeAt(0)&&(n[r[222][e]]=56832+e,t[56832+e]=r[222][e]);for(r[223]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u647a\u64b7\u64b8\u6499\u64ba\u64c0\u64d0\u64d7\u64e4\u64e2\u6509\u6525\u652e\u5f0b\u5fd2\u7519\u5f11\u535f\u53f1\u53fd\u53e9\u53e8\u53fb\u5412\u5416\u5406\u544b\u5452\u5453\u5454\u5456\u5443\u5421\u5457\u5459\u5423\u5432\u5482\u5494\u5477\u5471\u5464\u549a\u549b\u5484\u5476\u5466\u549d\u54d0\u54ad\u54c2\u54b4\u54d2\u54a7\u54a6\u54d3\u54d4\u5472\u54a3\u54d5\u54bb\u54bf\u54cc\u54d9\u54da\u54dc\u54a9\u54aa\u54a4\u54dd\u54cf\u54de\u551b\u54e7\u5520\u54fd\u5514\u54f3\u5522\u5523\u550f\u5511\u5527\u552a\u5567\u558f\u55b5\u5549\u556d\u5541\u5555\u553f\u5550\u553c\ufffd".split(""),e=0;e!=r[223].length;++e)65533!==r[223][e].charCodeAt(0)&&(n[r[223][e]]=57088+e,t[57088+e]=r[223][e]);for(r[224]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5537\u5556\u5575\u5576\u5577\u5533\u5530\u555c\u558b\u55d2\u5583\u55b1\u55b9\u5588\u5581\u559f\u557e\u55d6\u5591\u557b\u55df\u55bd\u55be\u5594\u5599\u55ea\u55f7\u55c9\u561f\u55d1\u55eb\u55ec\u55d4\u55e6\u55dd\u55c4\u55ef\u55e5\u55f2\u55f3\u55cc\u55cd\u55e8\u55f5\u55e4\u8f94\u561e\u5608\u560c\u5601\u5624\u5623\u55fe\u5600\u5627\u562d\u5658\u5639\u5657\u562c\u564d\u5662\u5659\u565c\u564c\u5654\u5686\u5664\u5671\u566b\u567b\u567c\u5685\u5693\u56af\u56d4\u56d7\u56dd\u56e1\u56f5\u56eb\u56f9\u56ff\u5704\u570a\u5709\u571c\u5e0f\u5e19\u5e14\u5e11\u5e31\u5e3b\u5e3c\ufffd".split(""),e=0;e!=r[224].length;++e)65533!==r[224][e].charCodeAt(0)&&(n[r[224][e]]=57344+e,t[57344+e]=r[224][e]);for(r[225]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5e37\u5e44\u5e54\u5e5b\u5e5e\u5e61\u5c8c\u5c7a\u5c8d\u5c90\u5c96\u5c88\u5c98\u5c99\u5c91\u5c9a\u5c9c\u5cb5\u5ca2\u5cbd\u5cac\u5cab\u5cb1\u5ca3\u5cc1\u5cb7\u5cc4\u5cd2\u5ce4\u5ccb\u5ce5\u5d02\u5d03\u5d27\u5d26\u5d2e\u5d24\u5d1e\u5d06\u5d1b\u5d58\u5d3e\u5d34\u5d3d\u5d6c\u5d5b\u5d6f\u5d5d\u5d6b\u5d4b\u5d4a\u5d69\u5d74\u5d82\u5d99\u5d9d\u8c73\u5db7\u5dc5\u5f73\u5f77\u5f82\u5f87\u5f89\u5f8c\u5f95\u5f99\u5f9c\u5fa8\u5fad\u5fb5\u5fbc\u8862\u5f61\u72ad\u72b0\u72b4\u72b7\u72b8\u72c3\u72c1\u72ce\u72cd\u72d2\u72e8\u72ef\u72e9\u72f2\u72f4\u72f7\u7301\u72f3\u7303\u72fa\ufffd".split(""),e=0;e!=r[225].length;++e)65533!==r[225][e].charCodeAt(0)&&(n[r[225][e]]=57600+e,t[57600+e]=r[225][e]);for(r[226]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u72fb\u7317\u7313\u7321\u730a\u731e\u731d\u7315\u7322\u7339\u7325\u732c\u7338\u7331\u7350\u734d\u7357\u7360\u736c\u736f\u737e\u821b\u5925\u98e7\u5924\u5902\u9963\u9967\u9968\u9969\u996a\u996b\u996c\u9974\u9977\u997d\u9980\u9984\u9987\u998a\u998d\u9990\u9991\u9993\u9994\u9995\u5e80\u5e91\u5e8b\u5e96\u5ea5\u5ea0\u5eb9\u5eb5\u5ebe\u5eb3\u8d53\u5ed2\u5ed1\u5edb\u5ee8\u5eea\u81ba\u5fc4\u5fc9\u5fd6\u5fcf\u6003\u5fee\u6004\u5fe1\u5fe4\u5ffe\u6005\u6006\u5fea\u5fed\u5ff8\u6019\u6035\u6026\u601b\u600f\u600d\u6029\u602b\u600a\u603f\u6021\u6078\u6079\u607b\u607a\u6042\ufffd".split(""),e=0;e!=r[226].length;++e)65533!==r[226][e].charCodeAt(0)&&(n[r[226][e]]=57856+e,t[57856+e]=r[226][e]);for(r[227]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u606a\u607d\u6096\u609a\u60ad\u609d\u6083\u6092\u608c\u609b\u60ec\u60bb\u60b1\u60dd\u60d8\u60c6\u60da\u60b4\u6120\u6126\u6115\u6123\u60f4\u6100\u610e\u612b\u614a\u6175\u61ac\u6194\u61a7\u61b7\u61d4\u61f5\u5fdd\u96b3\u95e9\u95eb\u95f1\u95f3\u95f5\u95f6\u95fc\u95fe\u9603\u9604\u9606\u9608\u960a\u960b\u960c\u960d\u960f\u9612\u9615\u9616\u9617\u9619\u961a\u4e2c\u723f\u6215\u6c35\u6c54\u6c5c\u6c4a\u6ca3\u6c85\u6c90\u6c94\u6c8c\u6c68\u6c69\u6c74\u6c76\u6c86\u6ca9\u6cd0\u6cd4\u6cad\u6cf7\u6cf8\u6cf1\u6cd7\u6cb2\u6ce0\u6cd6\u6cfa\u6ceb\u6cee\u6cb1\u6cd3\u6cef\u6cfe\ufffd".split(""),e=0;e!=r[227].length;++e)65533!==r[227][e].charCodeAt(0)&&(n[r[227][e]]=58112+e,t[58112+e]=r[227][e]);for(r[228]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6d39\u6d27\u6d0c\u6d43\u6d48\u6d07\u6d04\u6d19\u6d0e\u6d2b\u6d4d\u6d2e\u6d35\u6d1a\u6d4f\u6d52\u6d54\u6d33\u6d91\u6d6f\u6d9e\u6da0\u6d5e\u6d93\u6d94\u6d5c\u6d60\u6d7c\u6d63\u6e1a\u6dc7\u6dc5\u6dde\u6e0e\u6dbf\u6de0\u6e11\u6de6\u6ddd\u6dd9\u6e16\u6dab\u6e0c\u6dae\u6e2b\u6e6e\u6e4e\u6e6b\u6eb2\u6e5f\u6e86\u6e53\u6e54\u6e32\u6e25\u6e44\u6edf\u6eb1\u6e98\u6ee0\u6f2d\u6ee2\u6ea5\u6ea7\u6ebd\u6ebb\u6eb7\u6ed7\u6eb4\u6ecf\u6e8f\u6ec2\u6e9f\u6f62\u6f46\u6f47\u6f24\u6f15\u6ef9\u6f2f\u6f36\u6f4b\u6f74\u6f2a\u6f09\u6f29\u6f89\u6f8d\u6f8c\u6f78\u6f72\u6f7c\u6f7a\u6fd1\ufffd".split(""),e=0;e!=r[228].length;++e)65533!==r[228][e].charCodeAt(0)&&(n[r[228][e]]=58368+e,t[58368+e]=r[228][e]);for(r[229]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6fc9\u6fa7\u6fb9\u6fb6\u6fc2\u6fe1\u6fee\u6fde\u6fe0\u6fef\u701a\u7023\u701b\u7039\u7035\u704f\u705e\u5b80\u5b84\u5b95\u5b93\u5ba5\u5bb8\u752f\u9a9e\u6434\u5be4\u5bee\u8930\u5bf0\u8e47\u8b07\u8fb6\u8fd3\u8fd5\u8fe5\u8fee\u8fe4\u8fe9\u8fe6\u8ff3\u8fe8\u9005\u9004\u900b\u9026\u9011\u900d\u9016\u9021\u9035\u9036\u902d\u902f\u9044\u9051\u9052\u9050\u9068\u9058\u9062\u905b\u66b9\u9074\u907d\u9082\u9088\u9083\u908b\u5f50\u5f57\u5f56\u5f58\u5c3b\u54ab\u5c50\u5c59\u5b71\u5c63\u5c66\u7fbc\u5f2a\u5f29\u5f2d\u8274\u5f3c\u9b3b\u5c6e\u5981\u5983\u598d\u59a9\u59aa\u59a3\ufffd".split(""),e=0;e!=r[229].length;++e)65533!==r[229][e].charCodeAt(0)&&(n[r[229][e]]=58624+e,t[58624+e]=r[229][e]);for(r[230]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u5997\u59ca\u59ab\u599e\u59a4\u59d2\u59b2\u59af\u59d7\u59be\u5a05\u5a06\u59dd\u5a08\u59e3\u59d8\u59f9\u5a0c\u5a09\u5a32\u5a34\u5a11\u5a23\u5a13\u5a40\u5a67\u5a4a\u5a55\u5a3c\u5a62\u5a75\u80ec\u5aaa\u5a9b\u5a77\u5a7a\u5abe\u5aeb\u5ab2\u5ad2\u5ad4\u5ab8\u5ae0\u5ae3\u5af1\u5ad6\u5ae6\u5ad8\u5adc\u5b09\u5b17\u5b16\u5b32\u5b37\u5b40\u5c15\u5c1c\u5b5a\u5b65\u5b73\u5b51\u5b53\u5b62\u9a75\u9a77\u9a78\u9a7a\u9a7f\u9a7d\u9a80\u9a81\u9a85\u9a88\u9a8a\u9a90\u9a92\u9a93\u9a96\u9a98\u9a9b\u9a9c\u9a9d\u9a9f\u9aa0\u9aa2\u9aa3\u9aa5\u9aa7\u7e9f\u7ea1\u7ea3\u7ea5\u7ea8\u7ea9\ufffd".split(""),e=0;e!=r[230].length;++e)65533!==r[230][e].charCodeAt(0)&&(n[r[230][e]]=58880+e,t[58880+e]=r[230][e]);for(r[231]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7ead\u7eb0\u7ebe\u7ec0\u7ec1\u7ec2\u7ec9\u7ecb\u7ecc\u7ed0\u7ed4\u7ed7\u7edb\u7ee0\u7ee1\u7ee8\u7eeb\u7eee\u7eef\u7ef1\u7ef2\u7f0d\u7ef6\u7efa\u7efb\u7efe\u7f01\u7f02\u7f03\u7f07\u7f08\u7f0b\u7f0c\u7f0f\u7f11\u7f12\u7f17\u7f19\u7f1c\u7f1b\u7f1f\u7f21\u7f22\u7f23\u7f24\u7f25\u7f26\u7f27\u7f2a\u7f2b\u7f2c\u7f2d\u7f2f\u7f30\u7f31\u7f32\u7f33\u7f35\u5e7a\u757f\u5ddb\u753e\u9095\u738e\u7391\u73ae\u73a2\u739f\u73cf\u73c2\u73d1\u73b7\u73b3\u73c0\u73c9\u73c8\u73e5\u73d9\u987c\u740a\u73e9\u73e7\u73de\u73ba\u73f2\u740f\u742a\u745b\u7426\u7425\u7428\u7430\u742e\u742c\ufffd".split(""),e=0;e!=r[231].length;++e)65533!==r[231][e].charCodeAt(0)&&(n[r[231][e]]=59136+e,t[59136+e]=r[231][e]);for(r[232]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u741b\u741a\u7441\u745c\u7457\u7455\u7459\u7477\u746d\u747e\u749c\u748e\u7480\u7481\u7487\u748b\u749e\u74a8\u74a9\u7490\u74a7\u74d2\u74ba\u97ea\u97eb\u97ec\u674c\u6753\u675e\u6748\u6769\u67a5\u6787\u676a\u6773\u6798\u67a7\u6775\u67a8\u679e\u67ad\u678b\u6777\u677c\u67f0\u6809\u67d8\u680a\u67e9\u67b0\u680c\u67d9\u67b5\u67da\u67b3\u67dd\u6800\u67c3\u67b8\u67e2\u680e\u67c1\u67fd\u6832\u6833\u6860\u6861\u684e\u6862\u6844\u6864\u6883\u681d\u6855\u6866\u6841\u6867\u6840\u683e\u684a\u6849\u6829\u68b5\u688f\u6874\u6877\u6893\u686b\u68c2\u696e\u68fc\u691f\u6920\u68f9\ufffd".split(""),e=0;e!=r[232].length;++e)65533!==r[232][e].charCodeAt(0)&&(n[r[232][e]]=59392+e,t[59392+e]=r[232][e]);for(r[233]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u6924\u68f0\u690b\u6901\u6957\u68e3\u6910\u6971\u6939\u6960\u6942\u695d\u6984\u696b\u6980\u6998\u6978\u6934\u69cc\u6987\u6988\u69ce\u6989\u6966\u6963\u6979\u699b\u69a7\u69bb\u69ab\u69ad\u69d4\u69b1\u69c1\u69ca\u69df\u6995\u69e0\u698d\u69ff\u6a2f\u69ed\u6a17\u6a18\u6a65\u69f2\u6a44\u6a3e\u6aa0\u6a50\u6a5b\u6a35\u6a8e\u6a79\u6a3d\u6a28\u6a58\u6a7c\u6a91\u6a90\u6aa9\u6a97\u6aab\u7337\u7352\u6b81\u6b82\u6b87\u6b84\u6b92\u6b93\u6b8d\u6b9a\u6b9b\u6ba1\u6baa\u8f6b\u8f6d\u8f71\u8f72\u8f73\u8f75\u8f76\u8f78\u8f77\u8f79\u8f7a\u8f7c\u8f7e\u8f81\u8f82\u8f84\u8f87\u8f8b\ufffd".split(""),e=0;e!=r[233].length;++e)65533!==r[233][e].charCodeAt(0)&&(n[r[233][e]]=59648+e,t[59648+e]=r[233][e]);for(r[234]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u8f8d\u8f8e\u8f8f\u8f98\u8f9a\u8ece\u620b\u6217\u621b\u621f\u6222\u6221\u6225\u6224\u622c\u81e7\u74ef\u74f4\u74ff\u750f\u7511\u7513\u6534\u65ee\u65ef\u65f0\u660a\u6619\u6772\u6603\u6615\u6600\u7085\u66f7\u661d\u6634\u6631\u6636\u6635\u8006\u665f\u6654\u6641\u664f\u6656\u6661\u6657\u6677\u6684\u668c\u66a7\u669d\u66be\u66db\u66dc\u66e6\u66e9\u8d32\u8d33\u8d36\u8d3b\u8d3d\u8d40\u8d45\u8d46\u8d48\u8d49\u8d47\u8d4d\u8d55\u8d59\u89c7\u89ca\u89cb\u89cc\u89ce\u89cf\u89d0\u89d1\u726e\u729f\u725d\u7266\u726f\u727e\u727f\u7284\u728b\u728d\u728f\u7292\u6308\u6332\u63b0\ufffd".split(""),e=0;e!=r[234].length;++e)65533!==r[234][e].charCodeAt(0)&&(n[r[234][e]]=59904+e,t[59904+e]=r[234][e]);for(r[235]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u643f\u64d8\u8004\u6bea\u6bf3\u6bfd\u6bf5\u6bf9\u6c05\u6c07\u6c06\u6c0d\u6c15\u6c18\u6c19\u6c1a\u6c21\u6c29\u6c24\u6c2a\u6c32\u6535\u6555\u656b\u724d\u7252\u7256\u7230\u8662\u5216\u809f\u809c\u8093\u80bc\u670a\u80bd\u80b1\u80ab\u80ad\u80b4\u80b7\u80e7\u80e8\u80e9\u80ea\u80db\u80c2\u80c4\u80d9\u80cd\u80d7\u6710\u80dd\u80eb\u80f1\u80f4\u80ed\u810d\u810e\u80f2\u80fc\u6715\u8112\u8c5a\u8136\u811e\u812c\u8118\u8132\u8148\u814c\u8153\u8174\u8159\u815a\u8171\u8160\u8169\u817c\u817d\u816d\u8167\u584d\u5ab5\u8188\u8182\u8191\u6ed5\u81a3\u81aa\u81cc\u6726\u81ca\u81bb\ufffd".split(""),e=0;e!=r[235].length;++e)65533!==r[235][e].charCodeAt(0)&&(n[r[235][e]]=60160+e,t[60160+e]=r[235][e]);for(r[236]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u81c1\u81a6\u6b24\u6b37\u6b39\u6b43\u6b46\u6b59\u98d1\u98d2\u98d3\u98d5\u98d9\u98da\u6bb3\u5f40\u6bc2\u89f3\u6590\u9f51\u6593\u65bc\u65c6\u65c4\u65c3\u65cc\u65ce\u65d2\u65d6\u7080\u709c\u7096\u709d\u70bb\u70c0\u70b7\u70ab\u70b1\u70e8\u70ca\u7110\u7113\u7116\u712f\u7131\u7173\u715c\u7168\u7145\u7172\u714a\u7178\u717a\u7198\u71b3\u71b5\u71a8\u71a0\u71e0\u71d4\u71e7\u71f9\u721d\u7228\u706c\u7118\u7166\u71b9\u623e\u623d\u6243\u6248\u6249\u793b\u7940\u7946\u7949\u795b\u795c\u7953\u795a\u7962\u7957\u7960\u796f\u7967\u797a\u7985\u798a\u799a\u79a7\u79b3\u5fd1\u5fd0\ufffd".split(""),e=0;e!=r[236].length;++e)65533!==r[236][e].charCodeAt(0)&&(n[r[236][e]]=60416+e,t[60416+e]=r[236][e]);for(r[237]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u603c\u605d\u605a\u6067\u6041\u6059\u6063\u60ab\u6106\u610d\u615d\u61a9\u619d\u61cb\u61d1\u6206\u8080\u807f\u6c93\u6cf6\u6dfc\u77f6\u77f8\u7800\u7809\u7817\u7818\u7811\u65ab\u782d\u781c\u781d\u7839\u783a\u783b\u781f\u783c\u7825\u782c\u7823\u7829\u784e\u786d\u7856\u7857\u7826\u7850\u7847\u784c\u786a\u789b\u7893\u789a\u7887\u789c\u78a1\u78a3\u78b2\u78b9\u78a5\u78d4\u78d9\u78c9\u78ec\u78f2\u7905\u78f4\u7913\u7924\u791e\u7934\u9f9b\u9ef9\u9efb\u9efc\u76f1\u7704\u770d\u76f9\u7707\u7708\u771a\u7722\u7719\u772d\u7726\u7735\u7738\u7750\u7751\u7747\u7743\u775a\u7768\ufffd".split(""),e=0;e!=r[237].length;++e)65533!==r[237][e].charCodeAt(0)&&(n[r[237][e]]=60672+e,t[60672+e]=r[237][e]);for(r[238]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7762\u7765\u777f\u778d\u777d\u7780\u778c\u7791\u779f\u77a0\u77b0\u77b5\u77bd\u753a\u7540\u754e\u754b\u7548\u755b\u7572\u7579\u7583\u7f58\u7f61\u7f5f\u8a48\u7f68\u7f74\u7f71\u7f79\u7f81\u7f7e\u76cd\u76e5\u8832\u9485\u9486\u9487\u948b\u948a\u948c\u948d\u948f\u9490\u9494\u9497\u9495\u949a\u949b\u949c\u94a3\u94a4\u94ab\u94aa\u94ad\u94ac\u94af\u94b0\u94b2\u94b4\u94b6\u94b7\u94b8\u94b9\u94ba\u94bc\u94bd\u94bf\u94c4\u94c8\u94c9\u94ca\u94cb\u94cc\u94cd\u94ce\u94d0\u94d1\u94d2\u94d5\u94d6\u94d7\u94d9\u94d8\u94db\u94de\u94df\u94e0\u94e2\u94e4\u94e5\u94e7\u94e8\u94ea\ufffd".split(""),e=0;e!=r[238].length;++e)65533!==r[238][e].charCodeAt(0)&&(n[r[238][e]]=60928+e,t[60928+e]=r[238][e]);for(r[239]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u94e9\u94eb\u94ee\u94ef\u94f3\u94f4\u94f5\u94f7\u94f9\u94fc\u94fd\u94ff\u9503\u9502\u9506\u9507\u9509\u950a\u950d\u950e\u950f\u9512\u9513\u9514\u9515\u9516\u9518\u951b\u951d\u951e\u951f\u9522\u952a\u952b\u9529\u952c\u9531\u9532\u9534\u9536\u9537\u9538\u953c\u953e\u953f\u9542\u9535\u9544\u9545\u9546\u9549\u954c\u954e\u954f\u9552\u9553\u9554\u9556\u9557\u9558\u9559\u955b\u955e\u955f\u955d\u9561\u9562\u9564\u9565\u9566\u9567\u9568\u9569\u956a\u956b\u956c\u956f\u9571\u9572\u9573\u953a\u77e7\u77ec\u96c9\u79d5\u79ed\u79e3\u79eb\u7a06\u5d47\u7a03\u7a02\u7a1e\u7a14\ufffd".split(""),e=0;e!=r[239].length;++e)65533!==r[239][e].charCodeAt(0)&&(n[r[239][e]]=61184+e,t[61184+e]=r[239][e]);for(r[240]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7a39\u7a37\u7a51\u9ecf\u99a5\u7a70\u7688\u768e\u7693\u7699\u76a4\u74de\u74e0\u752c\u9e20\u9e22\u9e28\u9e29\u9e2a\u9e2b\u9e2c\u9e32\u9e31\u9e36\u9e38\u9e37\u9e39\u9e3a\u9e3e\u9e41\u9e42\u9e44\u9e46\u9e47\u9e48\u9e49\u9e4b\u9e4c\u9e4e\u9e51\u9e55\u9e57\u9e5a\u9e5b\u9e5c\u9e5e\u9e63\u9e66\u9e67\u9e68\u9e69\u9e6a\u9e6b\u9e6c\u9e71\u9e6d\u9e73\u7592\u7594\u7596\u75a0\u759d\u75ac\u75a3\u75b3\u75b4\u75b8\u75c4\u75b1\u75b0\u75c3\u75c2\u75d6\u75cd\u75e3\u75e8\u75e6\u75e4\u75eb\u75e7\u7603\u75f1\u75fc\u75ff\u7610\u7600\u7605\u760c\u7617\u760a\u7625\u7618\u7615\u7619\ufffd".split(""),e=0;e!=r[240].length;++e)65533!==r[240][e].charCodeAt(0)&&(n[r[240][e]]=61440+e,t[61440+e]=r[240][e]);for(r[241]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u761b\u763c\u7622\u7620\u7640\u762d\u7630\u763f\u7635\u7643\u763e\u7633\u764d\u765e\u7654\u765c\u7656\u766b\u766f\u7fca\u7ae6\u7a78\u7a79\u7a80\u7a86\u7a88\u7a95\u7aa6\u7aa0\u7aac\u7aa8\u7aad\u7ab3\u8864\u8869\u8872\u887d\u887f\u8882\u88a2\u88c6\u88b7\u88bc\u88c9\u88e2\u88ce\u88e3\u88e5\u88f1\u891a\u88fc\u88e8\u88fe\u88f0\u8921\u8919\u8913\u891b\u890a\u8934\u892b\u8936\u8941\u8966\u897b\u758b\u80e5\u76b2\u76b4\u77dc\u8012\u8014\u8016\u801c\u8020\u8022\u8025\u8026\u8027\u8029\u8028\u8031\u800b\u8035\u8043\u8046\u804d\u8052\u8069\u8071\u8983\u9878\u9880\u9883\ufffd".split(""),e=0;e!=r[241].length;++e)65533!==r[241][e].charCodeAt(0)&&(n[r[241][e]]=61696+e,t[61696+e]=r[241][e]);for(r[242]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9889\u988c\u988d\u988f\u9894\u989a\u989b\u989e\u989f\u98a1\u98a2\u98a5\u98a6\u864d\u8654\u866c\u866e\u867f\u867a\u867c\u867b\u86a8\u868d\u868b\u86ac\u869d\u86a7\u86a3\u86aa\u8693\u86a9\u86b6\u86c4\u86b5\u86ce\u86b0\u86ba\u86b1\u86af\u86c9\u86cf\u86b4\u86e9\u86f1\u86f2\u86ed\u86f3\u86d0\u8713\u86de\u86f4\u86df\u86d8\u86d1\u8703\u8707\u86f8\u8708\u870a\u870d\u8709\u8723\u873b\u871e\u8725\u872e\u871a\u873e\u8748\u8734\u8731\u8729\u8737\u873f\u8782\u8722\u877d\u877e\u877b\u8760\u8770\u874c\u876e\u878b\u8753\u8763\u877c\u8764\u8759\u8765\u8793\u87af\u87a8\u87d2\ufffd".split(""),e=0;e!=r[242].length;++e)65533!==r[242][e].charCodeAt(0)&&(n[r[242][e]]=61952+e,t[61952+e]=r[242][e]);for(r[243]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u87c6\u8788\u8785\u87ad\u8797\u8783\u87ab\u87e5\u87ac\u87b5\u87b3\u87cb\u87d3\u87bd\u87d1\u87c0\u87ca\u87db\u87ea\u87e0\u87ee\u8816\u8813\u87fe\u880a\u881b\u8821\u8839\u883c\u7f36\u7f42\u7f44\u7f45\u8210\u7afa\u7afd\u7b08\u7b03\u7b04\u7b15\u7b0a\u7b2b\u7b0f\u7b47\u7b38\u7b2a\u7b19\u7b2e\u7b31\u7b20\u7b25\u7b24\u7b33\u7b3e\u7b1e\u7b58\u7b5a\u7b45\u7b75\u7b4c\u7b5d\u7b60\u7b6e\u7b7b\u7b62\u7b72\u7b71\u7b90\u7ba6\u7ba7\u7bb8\u7bac\u7b9d\u7ba8\u7b85\u7baa\u7b9c\u7ba2\u7bab\u7bb4\u7bd1\u7bc1\u7bcc\u7bdd\u7bda\u7be5\u7be6\u7bea\u7c0c\u7bfe\u7bfc\u7c0f\u7c16\u7c0b\ufffd".split(""),e=0;e!=r[243].length;++e)65533!==r[243][e].charCodeAt(0)&&(n[r[243][e]]=62208+e,t[62208+e]=r[243][e]);for(r[244]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u7c1f\u7c2a\u7c26\u7c38\u7c41\u7c40\u81fe\u8201\u8202\u8204\u81ec\u8844\u8221\u8222\u8223\u822d\u822f\u8228\u822b\u8238\u823b\u8233\u8234\u823e\u8244\u8249\u824b\u824f\u825a\u825f\u8268\u887e\u8885\u8888\u88d8\u88df\u895e\u7f9d\u7f9f\u7fa7\u7faf\u7fb0\u7fb2\u7c7c\u6549\u7c91\u7c9d\u7c9c\u7c9e\u7ca2\u7cb2\u7cbc\u7cbd\u7cc1\u7cc7\u7ccc\u7ccd\u7cc8\u7cc5\u7cd7\u7ce8\u826e\u66a8\u7fbf\u7fce\u7fd5\u7fe5\u7fe1\u7fe6\u7fe9\u7fee\u7ff3\u7cf8\u7d77\u7da6\u7dae\u7e47\u7e9b\u9eb8\u9eb4\u8d73\u8d84\u8d94\u8d91\u8db1\u8d67\u8d6d\u8c47\u8c49\u914a\u9150\u914e\u914f\u9164\ufffd".split(""),e=0;e!=r[244].length;++e)65533!==r[244][e].charCodeAt(0)&&(n[r[244][e]]=62464+e,t[62464+e]=r[244][e]);for(r[245]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9162\u9161\u9170\u9169\u916f\u917d\u917e\u9172\u9174\u9179\u918c\u9185\u9190\u918d\u9191\u91a2\u91a3\u91aa\u91ad\u91ae\u91af\u91b5\u91b4\u91ba\u8c55\u9e7e\u8db8\u8deb\u8e05\u8e59\u8e69\u8db5\u8dbf\u8dbc\u8dba\u8dc4\u8dd6\u8dd7\u8dda\u8dde\u8dce\u8dcf\u8ddb\u8dc6\u8dec\u8df7\u8df8\u8de3\u8df9\u8dfb\u8de4\u8e09\u8dfd\u8e14\u8e1d\u8e1f\u8e2c\u8e2e\u8e23\u8e2f\u8e3a\u8e40\u8e39\u8e35\u8e3d\u8e31\u8e49\u8e41\u8e42\u8e51\u8e52\u8e4a\u8e70\u8e76\u8e7c\u8e6f\u8e74\u8e85\u8e8f\u8e94\u8e90\u8e9c\u8e9e\u8c78\u8c82\u8c8a\u8c85\u8c98\u8c94\u659b\u89d6\u89de\u89da\u89dc\ufffd".split(""),e=0;e!=r[245].length;++e)65533!==r[245][e].charCodeAt(0)&&(n[r[245][e]]=62720+e,t[62720+e]=r[245][e]);for(r[246]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u89e5\u89eb\u89ef\u8a3e\u8b26\u9753\u96e9\u96f3\u96ef\u9706\u9701\u9708\u970f\u970e\u972a\u972d\u9730\u973e\u9f80\u9f83\u9f85\u9f86\u9f87\u9f88\u9f89\u9f8a\u9f8c\u9efe\u9f0b\u9f0d\u96b9\u96bc\u96bd\u96ce\u96d2\u77bf\u96e0\u928e\u92ae\u92c8\u933e\u936a\u93ca\u938f\u943e\u946b\u9c7f\u9c82\u9c85\u9c86\u9c87\u9c88\u7a23\u9c8b\u9c8e\u9c90\u9c91\u9c92\u9c94\u9c95\u9c9a\u9c9b\u9c9e\u9c9f\u9ca0\u9ca1\u9ca2\u9ca3\u9ca5\u9ca6\u9ca7\u9ca8\u9ca9\u9cab\u9cad\u9cae\u9cb0\u9cb1\u9cb2\u9cb3\u9cb4\u9cb5\u9cb6\u9cb7\u9cba\u9cbb\u9cbc\u9cbd\u9cc4\u9cc5\u9cc6\u9cc7\u9cca\u9ccb\ufffd".split(""),e=0;e!=r[246].length;++e)65533!==r[246][e].charCodeAt(0)&&(n[r[246][e]]=62976+e,t[62976+e]=r[246][e]);for(r[247]="\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u9ccc\u9ccd\u9cce\u9ccf\u9cd0\u9cd3\u9cd4\u9cd5\u9cd7\u9cd8\u9cd9\u9cdc\u9cdd\u9cdf\u9ce2\u977c\u9785\u9791\u9792\u9794\u97af\u97ab\u97a3\u97b2\u97b4\u9ab1\u9ab0\u9ab7\u9e58\u9ab6\u9aba\u9abc\u9ac1\u9ac0\u9ac5\u9ac2\u9acb\u9acc\u9ad1\u9b45\u9b43\u9b47\u9b49\u9b48\u9b4d\u9b51\u98e8\u990d\u992e\u9955\u9954\u9adf\u9ae1\u9ae6\u9aef\u9aeb\u9afb\u9aed\u9af9\u9b08\u9b0f\u9b13\u9b1f\u9b23\u9ebd\u9ebe\u7e3b\u9e82\u9e87\u9e88\u9e8b\u9e92\u93d6\u9e9d\u9e9f\u9edb\u9edc\u9edd\u9ee0\u9edf\u9ee2\u9ee9\u9ee7\u9ee5\u9eea\u9eef\u9f22\u9f2c\u9f2f\u9f39\u9f37\u9f3d\u9f3e\u9f44\ufffd".split(""),e=0;e!=r[247].length;++e)65533!==r[247][e].charCodeAt(0)&&(n[r[247][e]]=63232+e,t[63232+e]=r[247][e]);return{enc:n,dec:t}}(),r[10029]=function(){for(var e="\0\x01\x02\x03\x04\x05\x06\x07\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\xc4\u0100\u0101\xc9\u0104\xd6\xdc\xe1\u0105\u010c\xe4\u010d\u0106\u0107\xe9\u0179\u017a\u010e\xed\u010f\u0112\u0113\u0116\xf3\u0117\xf4\xf6\xf5\xfa\u011a\u011b\xfc\u2020\xb0\u0118\xa3\xa7\u2022\xb6\xdf\xae\xa9\u2122\u0119\xa8\u2260\u0123\u012e\u012f\u012a\u2264\u2265\u012b\u0136\u2202\u2211\u0142\u013b\u013c\u013d\u013e\u0139\u013a\u0145\u0146\u0143\xac\u221a\u0144\u0147\u2206\xab\xbb\u2026\xa0\u0148\u0150\xd5\u0151\u014c\u2013\u2014\u201c\u201d\u2018\u2019\xf7\u25ca\u014d\u0154\u0155\u0158\u2039\u203a\u0159\u0156\u0157\u0160\u201a\u201e\u0161\u015a\u015b\xc1\u0164\u0165\xcd\u017d\u017e\u016a\xd3\xd4\u016b\u016e\xda\u016f\u0170\u0171\u0172\u0173\xdd\xfd\u0137\u017b\u0141\u017c\u0122\u02c7",t=[],n={},r=0;r!=e.length;++r)65533!==e.charCodeAt(r)&&(n[e.charAt(r)]=r),t[r]=e.charAt(r);return{enc:n,dec:t}}(),r[10079]=function(){for(var e="\0\x01\x02\x03\x04\x05\x06\x07\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\xc4\xc5\xc7\xc9\xd1\xd6\xdc\xe1\xe0\xe2\xe4\xe3\xe5\xe7\xe9\xe8\xea\xeb\xed\xec\xee\xef\xf1\xf3\xf2\xf4\xf6\xf5\xfa\xf9\xfb\xfc\xdd\xb0\xa2\xa3\xa7\u2022\xb6\xdf\xae\xa9\u2122\xb4\xa8\u2260\xc6\xd8\u221e\xb1\u2264\u2265\xa5\xb5\u2202\u2211\u220f\u03c0\u222b\xaa\xba\u2126\xe6\xf8\xbf\xa1\xac\u221a\u0192\u2248\u2206\xab\xbb\u2026\xa0\xc0\xc3\xd5\u0152\u0153\u2013\u2014\u201c\u201d\u2018\u2019\xf7\u25ca\xff\u0178\u2044\xa4\xd0\xf0\xde\xfe\xfd\xb7\u201a\u201e\u2030\xc2\xca\xc1\xcb\xc8\xcd\xce\xcf\xcc\xd3\xd4\ufffd\xd2\xda\xdb\xd9\u0131\u02c6\u02dc\xaf\u02d8\u02d9\u02da\xb8\u02dd\u02db\u02c7",t=[],n={},r=0;r!=e.length;++r)65533!==e.charCodeAt(r)&&(n[e.charAt(r)]=r),t[r]=e.charAt(r);return{enc:n,dec:t}}(),r[10081]=function(){for(var e="\0\x01\x02\x03\x04\x05\x06\x07\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\xc4\xc5\xc7\xc9\xd1\xd6\xdc\xe1\xe0\xe2\xe4\xe3\xe5\xe7\xe9\xe8\xea\xeb\xed\xec\xee\xef\xf1\xf3\xf2\xf4\xf6\xf5\xfa\xf9\xfb\xfc\u2020\xb0\xa2\xa3\xa7\u2022\xb6\xdf\xae\xa9\u2122\xb4\xa8\u2260\xc6\xd8\u221e\xb1\u2264\u2265\xa5\xb5\u2202\u2211\u220f\u03c0\u222b\xaa\xba\u2126\xe6\xf8\xbf\xa1\xac\u221a\u0192\u2248\u2206\xab\xbb\u2026\xa0\xc0\xc3\xd5\u0152\u0153\u2013\u2014\u201c\u201d\u2018\u2019\xf7\u25ca\xff\u0178\u011e\u011f\u0130\u0131\u015e\u015f\u2021\xb7\u201a\u201e\u2030\xc2\xca\xc1\xcb\xc8\xcd\xce\xcf\xcc\xd3\xd4\ufffd\xd2\xda\xdb\xd9\ufffd\u02c6\u02dc\xaf\u02d8\u02d9\u02da\xb8\u02dd\u02db\u02c7",t=[],n={},r=0;r!=e.length;++r)65533!==e.charCodeAt(r)&&(n[e.charAt(r)]=r),t[r]=e.charAt(r);return{enc:n,dec:t}}(),e.exports&&"undefined"==typeof DO_NOT_EXPORT_CODEPAGE&&(e.exports=r),function(t,n){"use strict";if(void 0===r){var i=r;e.exports&&"undefined"==typeof DO_NOT_EXPORT_CODEPAGE?e.exports=n(i):t.cptable=n(i)}else r=n(r)}(this,(function(e){"use strict";var t={1200:"utf16le",1201:"utf16be",12e3:"utf32le",12001:"utf32be",16969:"utf64le",20127:"ascii",65e3:"utf7",65001:"utf8"},n=[874,1250,1251,1252,1253,1254,1255,1256,1e4],r=[932,936,949,950],i=[65001],s={},o={},a={},c={},l=function(e){return String.fromCharCode(e)},h=function(e){return e.charCodeAt(0)},d="undefined"!=typeof Buffer,u=function(){};if(d){var f=!Buffer.from;if(!f)try{Buffer.from("foo","utf8")}catch(k){f=!0}u=f?function(e,t){return t?new Buffer(e,t):new Buffer(e)}:Buffer.from.bind(Buffer),Buffer.allocUnsafe||(Buffer.allocUnsafe=function(e){return new Buffer(e)});var g=1024,p=Buffer.allocUnsafe(g),m=function(t){var n=function(e){for(var t=Buffer.allocUnsafe(65536),n=0;n<65536;++n)t[n]=0;for(var r=Object.keys(e),i=r.length,s=0,o=r[s];s>10&1023)],r[o++]=n[56320+(1023&c)]));r=r.slice(0,o)}else for(r=Buffer.allocUnsafe(i),s=0;s>8}return function(e){var t=e.length,n=0,i=0;if(2*t>g&&(g=2*t,p=Buffer.allocUnsafe(g)),Buffer.isBuffer(e))for(n=0;n>8}return function(e,t){var n=e.length,i=Buffer.allocUnsafe(2*n),s=0,o=0,a=0,c=0,l=0;if("string"==typeof e){for(s=c=0;s0&&(i[c++]=r[o]);i=i.slice(0,c)}else if(Buffer.isBuffer(e)){for(s=c=0;s0&&(i[c++]=r[o])):(i[c++]=r[1+(o=2*(55296+((a=o-65536)>>10&1023)))]||r[o],r[o+1]>0&&(i[c++]=r[o]),i[c++]=r[1+(o=2*(56320+(1023&a)))]||r[o],r[o+1]>0&&(i[c++]=r[o]));i=i.slice(0,c)}else for(s=c=0;s0&&(i[c++]=r[o]);return t&&"buf"!==t?"arr"!==t?i.toString("binary"):[].slice.call(i):i}},v=function(t){var n,r=e[t].dec,i=Buffer.allocUnsafe(131072),s=0,o=0,a=0,c=0;for(c=0;c<65536;++c)i[2*c]=255,i[2*c+1]=253;for(s=0;s>8);return function(e){var t=e.length,n=Buffer.allocUnsafe(2*t),r=0,s=0,o=0;if(Buffer.isBuffer(e))for(r=0;rg&&(g=4*n,p=Buffer.allocUnsafe(g));var s=0;n>=3&&239==t[0]&&187==t[1]&&191==t[2]&&(s=3);for(var o=1,a=0,c=0;s>8):(i=55296+((r-=65536)>>10&1023),r=56320+(1023&r),p[a++]=255&i,p[a++]=i>>>8,p[a++]=255&r,p[a++]=r>>>8&255);return p.slice(0,a).toString("ucs2")},o[65001]=function(e,t){if(d&&Buffer.isBuffer(e))return t&&"buf"!==t?"arr"!==t?e.toString("binary"):[].slice.call(e):e;var n=e.length,r=0,i=0,s=0,o="string"==typeof e;4*n>g&&(g=4*n,p=Buffer.allocUnsafe(g));for(var a=0;a>6),p[s++]=128+(63&r)):r>=55296&&r<=57343?(r-=55296,++a,i=(o?e.charCodeAt(a):e[a].charCodeAt(0))-56320+(r<<10),p[s++]=240+(i>>>18&7),p[s++]=144+(i>>>12&63),p[s++]=128+(i>>>6&63),p[s++]=128+(63&i)):(p[s++]=224+(r>>12),p[s++]=128+(r>>6&63),p[s++]=128+(63&r));return t&&"buf"!==t?"arr"!==t?p.slice(0,s).toString("binary"):[].slice.call(p,0,s):p.slice(0,s)}}var I=function(){if(d){if(a[n[0]])return;var t=0,l=0;for(t=0;t=3&&239==i[0]&&187==i[1]&&191==i[2]&&(g=3);g>10&1023),f=56320+(1023&f),l[m++]=String.fromCharCode(C)),l[m++]=String.fromCharCode(f);break;case"ascii":if(d&&Buffer.isBuffer(i))return i.toString(v);for(g=0;g=2&&255==i[0]&&254==i[1]&&(g=2),d&&Buffer.isBuffer(i))return i.toString(v);for(p=2;g+1=2&&254==i[0]&&255==i[1]&&(g=2),p=2;g+1=4&&255==i[0]&&254==i[1]&&0===i[2]&&0===i[3]&&(g=4),p=4;g65535?(f-=65536,l[m++]=String.fromCharCode(55296+(f>>10&1023)),l[m++]=String.fromCharCode(56320+(1023&f))):l[m++]=String.fromCharCode(f);break;case"utf32be":for(c>=4&&255==i[3]&&254==i[2]&&0===i[1]&&0===i[0]&&(g=4),p=4;g65535?(f-=65536,l[m++]=String.fromCharCode(55296+(f>>10&1023)),l[m++]=String.fromCharCode(56320+(1023&f))):l[m++]=String.fromCharCode(f);break;case"utf7":for(c>=4&&43==i[0]&&47==i[1]&&118==i[2]&&(c>=5&&56==i[3]&&45==i[4]?g=5:56!=i[3]&&57!=i[3]&&43!=i[3]&&47!=i[3]||(g=4));g>4),-1!==(E=S.indexOf(String.fromCharCode(i[g+_++]))))&&(A.push((15&x)<<4|E>>2),-1!==(k=S.indexOf(String.fromCharCode(i[g+_++]))));)k<64&&A.push((3&E)<<6|k);for(y=n(1201,A),_=0;_255?(h[p]=f>>8,h[++p]=255&f):h[p]=255&f;else{if(!(b=t[r]))throw new Error("Unrecognized CP: "+r);switch(b){case"utf8":if(d&&v){p=(h=u(i,b)).length;break}for(g=0;g>6),h[++p]=128+(63&f)):f>=55296&&f<=57343?(f-=55296,m=(v?i.charCodeAt(++g):i[++g].charCodeAt(0))-56320+(f<<10),h[p]=240+(m>>>18&7),h[++p]=144+(m>>>12&63),h[++p]=128+(m>>>6&63),h[++p]=128+(63&m)):(h[p]=224+(f>>12),h[++p]=128+(f>>6&63),h[++p]=128+(63&f));break;case"ascii":if(d&&"string"==typeof i){p=(h=u(i,b)).length;break}for(g=0;g>8;break;case"utf16be":for(g=0;g>8,h[p++]=255&f;break;case"utf32le":for(g=0;g=55296&&f<=57343&&(f=65536+(f-55296<<10)+(i[++g].charCodeAt(0)-56320)),h[p++]=255&f,h[p++]=255&(f>>=8),h[p++]=255&(f>>=8),h[p++]=255&(f>>=8);break;case"utf32be":for(g=0;g=55296&&f<=57343&&(f=65536+(f-55296<<10)+(i[++g].charCodeAt(0)-56320)),h[p+3]=255&f,h[p+2]=255&(f>>=8),h[p+1]=255&(f>>=8),h[p]=255&(f>>=8),p+=4;break;case"utf7":for(g=0;g-1)h[p++]=I.charCodeAt(0);else{var A=n(1201,I);h[p++]=43,h[p++]=S.charCodeAt(A[0]>>2),h[p++]=S.charCodeAt(((3&A[0])<<4)+((A[1]||0)>>4)),h[p++]=S.charCodeAt(((15&A[1])<<2)+((A[2]||0)>>6)),h[p++]=45}else h[p++]=43,h[p++]=45}break;default:throw new Error("Unsupported magic: "+r+" "+t[r])}}return h=h.slice(0,p),d?s&&"buf"!==s?"arr"!==s?h.toString("binary"):[].slice.call(h):h:"str"==s?h.map(l).join(""):h},hascp:function(n){return!(!e[n]&&!t[n])},magic:t,cache:w},e}))},YfBG:function(e,t,n){self,e.exports=function(){return t={6835:function(e){"use strict";e.exports=JSON.parse('{"$schema":"http://json-schema.org/draft-07/schema#","$id":"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#","description":"Meta-schema for $data reference (JSON Schema extension proposal)","type":"object","required":["$data"],"properties":{"$data":{"type":"string","anyOf":[{"format":"relative-json-pointer"},{"format":"json-pointer"}]}},"additionalProperties":false}')},2689:function(e){"use strict";e.exports=JSON.parse('{"id":"http://json-schema.org/draft-04/schema#","$schema":"http://json-schema.org/draft-04/schema#","description":"Core schema meta-schema","definitions":{"schemaArray":{"type":"array","minItems":1,"items":{"$ref":"#"}},"positiveInteger":{"type":"integer","minimum":0},"positiveIntegerDefault0":{"allOf":[{"$ref":"#/definitions/positiveInteger"},{"default":0}]},"simpleTypes":{"enum":["array","boolean","integer","null","number","object","string"]},"stringArray":{"type":"array","items":{"type":"string"},"minItems":1,"uniqueItems":true}},"type":"object","properties":{"id":{"type":"string"},"$schema":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"default":{},"multipleOf":{"type":"number","minimum":0,"exclusiveMinimum":true},"maximum":{"type":"number"},"exclusiveMaximum":{"type":"boolean","default":false},"minimum":{"type":"number"},"exclusiveMinimum":{"type":"boolean","default":false},"maxLength":{"$ref":"#/definitions/positiveInteger"},"minLength":{"$ref":"#/definitions/positiveIntegerDefault0"},"pattern":{"type":"string","format":"regex"},"additionalItems":{"anyOf":[{"type":"boolean"},{"$ref":"#"}],"default":{}},"items":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/schemaArray"}],"default":{}},"maxItems":{"$ref":"#/definitions/positiveInteger"},"minItems":{"$ref":"#/definitions/positiveIntegerDefault0"},"uniqueItems":{"type":"boolean","default":false},"maxProperties":{"$ref":"#/definitions/positiveInteger"},"minProperties":{"$ref":"#/definitions/positiveIntegerDefault0"},"required":{"$ref":"#/definitions/stringArray"},"additionalProperties":{"anyOf":[{"type":"boolean"},{"$ref":"#"}],"default":{}},"definitions":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"properties":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"patternProperties":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"dependencies":{"type":"object","additionalProperties":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/stringArray"}]}},"enum":{"type":"array","minItems":1,"uniqueItems":true},"type":{"anyOf":[{"$ref":"#/definitions/simpleTypes"},{"type":"array","items":{"$ref":"#/definitions/simpleTypes"},"minItems":1,"uniqueItems":true}]},"format":{"type":"string"},"allOf":{"$ref":"#/definitions/schemaArray"},"anyOf":{"$ref":"#/definitions/schemaArray"},"oneOf":{"$ref":"#/definitions/schemaArray"},"not":{"$ref":"#"}},"dependencies":{"exclusiveMaximum":["maximum"],"exclusiveMinimum":["minimum"]},"default":{}}')},1030:function(e){"use strict";e.exports=JSON.parse('{"$schema":"http://json-schema.org/draft-06/schema#","$id":"http://json-schema.org/draft-06/schema#","title":"Core schema meta-schema","definitions":{"schemaArray":{"type":"array","minItems":1,"items":{"$ref":"#"}},"nonNegativeInteger":{"type":"integer","minimum":0},"nonNegativeIntegerDefault0":{"allOf":[{"$ref":"#/definitions/nonNegativeInteger"},{"default":0}]},"simpleTypes":{"enum":["array","boolean","integer","null","number","object","string"]},"stringArray":{"type":"array","items":{"type":"string"},"uniqueItems":true,"default":[]}},"type":["object","boolean"],"properties":{"$id":{"type":"string","format":"uri-reference"},"$schema":{"type":"string","format":"uri"},"$ref":{"type":"string","format":"uri-reference"},"title":{"type":"string"},"description":{"type":"string"},"default":{},"examples":{"type":"array","items":{}},"multipleOf":{"type":"number","exclusiveMinimum":0},"maximum":{"type":"number"},"exclusiveMaximum":{"type":"number"},"minimum":{"type":"number"},"exclusiveMinimum":{"type":"number"},"maxLength":{"$ref":"#/definitions/nonNegativeInteger"},"minLength":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"pattern":{"type":"string","format":"regex"},"additionalItems":{"$ref":"#"},"items":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/schemaArray"}],"default":{}},"maxItems":{"$ref":"#/definitions/nonNegativeInteger"},"minItems":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"uniqueItems":{"type":"boolean","default":false},"contains":{"$ref":"#"},"maxProperties":{"$ref":"#/definitions/nonNegativeInteger"},"minProperties":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"required":{"$ref":"#/definitions/stringArray"},"additionalProperties":{"$ref":"#"},"definitions":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"properties":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"patternProperties":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"dependencies":{"type":"object","additionalProperties":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/stringArray"}]}},"propertyNames":{"$ref":"#"},"const":{},"enum":{"type":"array","minItems":1,"uniqueItems":true},"type":{"anyOf":[{"$ref":"#/definitions/simpleTypes"},{"type":"array","items":{"$ref":"#/definitions/simpleTypes"},"minItems":1,"uniqueItems":true}]},"format":{"type":"string"},"allOf":{"$ref":"#/definitions/schemaArray"},"anyOf":{"$ref":"#/definitions/schemaArray"},"oneOf":{"$ref":"#/definitions/schemaArray"},"not":{"$ref":"#"}},"default":{}}')},38:function(e){"use strict";e.exports=JSON.parse('{"$schema":"http://json-schema.org/draft-07/schema#","$id":"http://json-schema.org/draft-07/schema#","title":"Core schema meta-schema","definitions":{"schemaArray":{"type":"array","minItems":1,"items":{"$ref":"#"}},"nonNegativeInteger":{"type":"integer","minimum":0},"nonNegativeIntegerDefault0":{"allOf":[{"$ref":"#/definitions/nonNegativeInteger"},{"default":0}]},"simpleTypes":{"enum":["array","boolean","integer","null","number","object","string"]},"stringArray":{"type":"array","items":{"type":"string"},"uniqueItems":true,"default":[]}},"type":["object","boolean"],"properties":{"$id":{"type":"string","format":"uri-reference"},"$schema":{"type":"string","format":"uri"},"$ref":{"type":"string","format":"uri-reference"},"$comment":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"default":true,"readOnly":{"type":"boolean","default":false},"examples":{"type":"array","items":true},"multipleOf":{"type":"number","exclusiveMinimum":0},"maximum":{"type":"number"},"exclusiveMaximum":{"type":"number"},"minimum":{"type":"number"},"exclusiveMinimum":{"type":"number"},"maxLength":{"$ref":"#/definitions/nonNegativeInteger"},"minLength":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"pattern":{"type":"string","format":"regex"},"additionalItems":{"$ref":"#"},"items":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/schemaArray"}],"default":true},"maxItems":{"$ref":"#/definitions/nonNegativeInteger"},"minItems":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"uniqueItems":{"type":"boolean","default":false},"contains":{"$ref":"#"},"maxProperties":{"$ref":"#/definitions/nonNegativeInteger"},"minProperties":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"required":{"$ref":"#/definitions/stringArray"},"additionalProperties":{"$ref":"#"},"definitions":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"properties":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"patternProperties":{"type":"object","additionalProperties":{"$ref":"#"},"propertyNames":{"format":"regex"},"default":{}},"dependencies":{"type":"object","additionalProperties":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/stringArray"}]}},"propertyNames":{"$ref":"#"},"const":true,"enum":{"type":"array","items":true,"minItems":1,"uniqueItems":true},"type":{"anyOf":[{"$ref":"#/definitions/simpleTypes"},{"type":"array","items":{"$ref":"#/definitions/simpleTypes"},"minItems":1,"uniqueItems":true}]},"format":{"type":"string"},"contentMediaType":{"type":"string"},"contentEncoding":{"type":"string"},"if":{"$ref":"#"},"then":{"$ref":"#"},"else":{"$ref":"#"},"allOf":{"$ref":"#/definitions/schemaArray"},"anyOf":{"$ref":"#/definitions/schemaArray"},"oneOf":{"$ref":"#/definitions/schemaArray"},"not":{"$ref":"#"}},"default":true}')},897:function(e,t,n){"use strict";n.d(t,{x:function(){return o}});var r=n(2602),i=n(9791),s=n(7907);var o=function(){function e(t,n){!function(t){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this),this.dom={};var r=this,i=this.dom;this.anchor=void 0,this.items=t,this.eventListeners={},this.selection=void 0,this.onClose=n?n.close:void 0,this.limitHeight=!!n&&n.limitHeight;var o=document.createElement("div");o.className="jsoneditor-contextmenu-root",i.root=o,(n=document.createElement("div")).className="jsoneditor-contextmenu",i.menu=n,o.appendChild(n),(o=document.createElement("ul")).className="jsoneditor-menu",n.appendChild(o),i.list=o,i.items=[],(n=document.createElement("button")).type="button",i.focusButton=n,(i=document.createElement("li")).style.overflow="hidden",i.style.height="0",i.appendChild(n),o.appendChild(i),function e(t,n,i){i.forEach((function(i){var o,a,c,l,h,d,u;"separator"===i.type?((c=document.createElement("div")).className="jsoneditor-separator",(h=document.createElement("li")).appendChild(c),t.appendChild(h)):(o={},a=document.createElement("li"),t.appendChild(a),(c=document.createElement("button")).type="button",c.className=i.className,o.button=c,i.title&&(c.title=i.title),i.click&&(c.onclick=function(e){e.preventDefault(),r.hide(),i.click()}),a.appendChild(c),i.submenu?((h=document.createElement("div")).className="jsoneditor-icon",c.appendChild(h),(h=document.createElement("div")).className="jsoneditor-text"+(i.click?"":" jsoneditor-right-margin"),h.appendChild(document.createTextNode(i.text)),c.appendChild(h),(l=i.click?(c.className+=" jsoneditor-default",(u=document.createElement("button")).type="button",(o.buttonExpand=u).className="jsoneditor-expand",(h=document.createElement("div")).className="jsoneditor-expand",u.appendChild(h),a.appendChild(u),i.submenuTitle&&(u.title=i.submenuTitle),u):((d=document.createElement("div")).className="jsoneditor-expand",c.appendChild(d),c)).onclick=function(e){e.preventDefault(),r._onExpandItem(o),l.focus()},o.subItems=u=[],d=document.createElement("ul"),(o.ul=d).className="jsoneditor-menu",d.style.height="0",a.appendChild(d),e(d,u,i.submenu)):((u=document.createElement("div")).className="jsoneditor-icon",c.appendChild(u),(u=document.createElement("div")).className="jsoneditor-text",u.appendChild(document.createTextNode((0,s.Iu)(i.text))),c.appendChild(u)),n.push(o))}))}(o,this.dom.items,t),this.maxHeight=0,t.forEach((function(e){e=24*(t.length+(e.submenu?e.submenu.length:0)),r.maxHeight=Math.max(r.maxHeight,e)}))}var t;return(t=[{key:"_getVisibleButtons",value:function(){var e=[],t=this;return this.dom.items.forEach((function(n){e.push(n.button),n.buttonExpand&&e.push(n.buttonExpand),n.subItems&&n===t.expandedItem&&n.subItems.forEach((function(t){e.push(t.button),t.buttonExpand&&e.push(t.buttonExpand)}))})),e}},{key:"show",value:function(t,n,s){this.hide();var o=!0,a=t.parentNode,c=t.getBoundingClientRect(),l=a.getBoundingClientRect(),h=(a=n.getBoundingClientRect(),this);this.dom.absoluteAnchor=(0,r.w)(t,n,(function(){h.hide()})),c.bottom+this.maxHeighta.top&&(o=!1),s=s?0:c.top-l.top,o?(l=t.offsetHeight,this.dom.menu.style.left="0",this.dom.menu.style.top=s+l+"px",this.dom.menu.style.bottom=""):(this.dom.menu.style.left="0",this.dom.menu.style.top="",this.dom.menu.style.bottom="0px"),this.limitHeight&&(this.dom.list.style.maxHeight=(a=o?a.bottom-c.bottom-10:c.top-a.top-10)+"px",this.dom.list.style.overflowY="auto"),this.dom.absoluteAnchor.appendChild(this.dom.root),this.selection=(0,i.getSelection)(),this.anchor=t,setTimeout((function(){h.dom.focusButton.focus()}),0),e.visibleMenu&&e.visibleMenu.hide(),e.visibleMenu=this}},{key:"hide",value:function(){this.dom.absoluteAnchor&&(this.dom.absoluteAnchor.destroy(),delete this.dom.absoluteAnchor),this.dom.root.parentNode&&(this.dom.root.parentNode.removeChild(this.dom.root),this.onClose&&this.onClose()),e.visibleMenu===this&&(e.visibleMenu=void 0)}},{key:"_onExpandItem",value:function(e){var t,n=this,r=e===this.expandedItem,s=this.expandedItem;s&&(s.ul.style.height="0",s.ul.style.padding="",setTimeout((function(){n.expandedItem!==s&&(s.ul.style.display="",i.removeClassName)(s.ul.parentNode,"jsoneditor-selected")}),300),this.expandedItem=void 0),r||((t=e.ul).style.display="block",setTimeout((function(){if(n.expandedItem===e){for(var r=0,i=0;ie[0].length)||(e=t,n=s,this.options.flex));s++);return e?((r=e[0].match(/\n.*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-1:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.yyleng=this.yytext.length,this._more=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],r=this.performAction.call(this,this.yy,this,i[n],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),r||void 0):""===this._input?this.EOF:void this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return void 0!==e?e:this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(e){this.begin(e)},options:{},performAction:function(e,t,n,r){switch(n){case 0:break;case 1:return 6;case 2:return t.yytext=t.yytext.substr(1,t.yyleng-2),4;case 3:return 17;case 4:return 18;case 5:return 23;case 6:return 24;case 7:return 22;case 8:return 21;case 9:return 10;case 10:return 11;case 11:return 8;case 12:return 14;case 13:return"INVALID"}},rules:[/^(?:\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\.[0-9]+)?([eE][-+]?[0-9]+)?\b)/,/^(?:"(?:\\[\\"bfnrt/]|\\u[a-fA-F0-9]{4}|[^\\\0-\x09\x0a-\x1f"])*")/,/^(?:\{)/,/^(?:\})/,/^(?:\[)/,/^(?:\])/,/^(?:,)/,/^(?::)/,/^(?:true\b)/,/^(?:false\b)/,/^(?:null\b)/,/^(?:$)/,/^(?:.)/],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13],inclusive:!0}}},n);t.parser=n,t.parse=n.parse.bind(n)},3879:function(e){"use strict";function t(){}var n={defaultSelected:!0,width:"auto",disabled:!1,searchable:!0,clearable:!1,sortSelected:!1,allowDeselect:!1,closeOnScroll:!1,nativeDropdown:!1,placeholder:"Select an option...",taggable:!1,tagPlaceholder:"Enter a tag..."};t.prototype={on:function(e,t){this._events=this._events||{},this._events[e]=this._events[e]||[],this._events[e].push(t)},off:function(e,t){this._events=this._events||{},e in this._events!=0&&this._events[e].splice(this._events[e].indexOf(t),1)},emit:function(e){if(this._events=this._events||{},e in this._events!=0)for(var t=0;t"+t.label+""}),r.each(t.children,(function(e,t){t.idx=l,c.appendChild(a.call(this,t,c)),l++}),this)):(t.idx=l,a.call(this,t),l++)}),this),this.config.data&&Array.isArray(this.config.data)&&(n=!(this.data=[]),c=!1,l=0,r.each(this.config.data,(function(e,t){i(t,"children")?(n=r.createElement("optgroup",{label:t.text}),c=r.createElement("ul",{class:"selectr-optgroup",role:"group",html:"
  • "+t.text+"
  • "}),r.each(t.children,(function(e,t){(s=new Option(t.text,t.value,!1,t.hasOwnProperty("selected")&&!0===t.selected)).disabled=i(t,"disabled"),this.options.push(s),n.appendChild(s),s.idx=l,c.appendChild(a.call(this,s,t)),this.data[l]=t,l++}),this)):((s=new Option(t.text,t.value,!1,t.hasOwnProperty("selected")&&!0===t.selected)).disabled=i(t,"disabled"),this.options.push(s),s.idx=l,a.call(this,s,t),this.data[l]=t,l++)}),this)),this.setSelected(!0);for(var h=this.navIndex=0;hthis.tree.lastElementChild.idx){this.navIndex=this.tree.lastElementChild.idx;break}if(this.navIndexthis.optsRect.top+this.optsRect.height&&(this.tree.scrollTop=this.tree.scrollTop+(e.top+e.height-(this.optsRect.top+this.optsRect.height))),this.navIndex===this.tree.childElementCount-1&&this.requiresPagination&&h.call(this)):0===this.navIndex?this.tree.scrollTop=0:e.top-this.optsRect.top<0&&(this.tree.scrollTop=this.tree.scrollTop+(e.top-this.optsRect.top)),n&&r.removeClass(n,"active"),r.addClass(this.items[this.navIndex],"active")}else this.navigating=!1}).bind(this),this.events.reset=this.reset.bind(this),(this.config.nativeDropdown||this.mobileDevice)&&(this.container.addEventListener("touchstart",(function(t){t.changedTouches[0].target===e.el&&e.toggle()})),(this.config.nativeDropdown||this.mobileDevice)&&this.container.addEventListener("click",(function(t){t.preventDefault(),t.stopPropagation(),t.target===e.el&&e.toggle()})),this.el.addEventListener("change",(function(t){var n;e.el.multiple?(n=e.getSelectedProperties("idx"),n=function(e,t){for(var n,r=[],i=e.slice(0),s=0;st?(r.addClass(this.container,"inverted"),this.isInverted=!0):(r.removeClass(this.container,"inverted"),this.isInverted=!1),this.optsRect=r.rect(this.tree)},l.prototype.getOptionByIndex=function(e){return this.options[e]},l.prototype.getOptionByValue=function(e){for(var t=!1,n=0,r=this.options.length;nthis.limit&&1i.EX?((0,f.addClassName)((n=this).frame,"busy"),n.dom.busyContent.innerText=t,setTimeout((function(){e(),(0,f.removeClassName)(n.frame,"busy"),n.dom.busyContent.innerText=""}),100)):e()}}).validate=n.validate,t._renderErrors=n._renderErrors;var g=[{mode:"preview",mixin:t,data:"json"}]},6210:function(e,t,n){"use strict";n.r(t),n.d(t,{showSortModal:function(){return o}}),t=n(483);var r=n.n(t),i=n(7907),s=n(9791);function o(e,t,n,o){var a=Array.isArray(t)?(0,s.getChildPaths)(t):[""],c=o&&o.path&&(0,s.contains)(a,o.path)?o.path:a[0],l=o&&o.direction||"asc";o='
    '+(0,i.Iu)("sort")+"
    "+(0,i.Iu)("sortFieldLabel")+'
    '+(0,i.Iu)("sortDirectionLabel")+'
    ',r()({parent:e,content:o,overlayClass:"jsoneditor-modal-overlay",overlayStyles:{backgroundColor:"rgb(1,1,1)",opacity:.3},modalClass:"jsoneditor-modal jsoneditor-modal-sort"}).afterCreate((function(e){var t=e.modalElem().querySelector("form"),r=e.modalElem().querySelector("#ok"),i=e.modalElem().querySelector("#field"),s=e.modalElem().querySelector("#direction");function o(e){s.value=e,s.className="jsoneditor-button-group jsoneditor-button-group-value-"+s.value}a.forEach((function(e){var t,n=document.createElement("option");n.text=""===(t=e)?"@":"."===t[0]?t.slice(1):t,n.value=e,i.appendChild(n)})),i.value=c||a[0],o(l||"asc"),s.onclick=function(e){o(e.target.getAttribute("data-value"))},r.onclick=function(t){t.preventDefault(),t.stopPropagation(),e.close(),n({path:i.value,direction:s.value})},t&&(t.onsubmit=r.onclick)})).afterClose((function(e){e.destroy()})).show()}},2558:function(e,t,n){"use strict";n.r(t),n.d(t,{showTransformModal:function(){return h}}),t=n(483);var r=n.n(t),i=(t=n(3879),n.n(t)),s=n(7907);function o(e){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function a(e,t,n,r){return"boolean"==typeof e||e instanceof Boolean||null===e||"number"==typeof e||e instanceof Number||"string"==typeof e||e instanceof String||e instanceof Date?JSON.stringify(e):Array.isArray(e)?function(e,t,n,r){for(var i=t?n+t:void 0,s=t?"[\n":"[",o=0;or)return s+"..."}return s+(t?"\n"+n+"]":"]")}(e,t,n,r):e&&"object"===o(e)?function(e,t,n,r){var i,s=t?n+t:void 0,o=!0,c=t?"{\n":"{";if("function"==typeof e.toJSON)return a(e.toJSON(),t,n,r);for(i in e)if(function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}(e,i)&&(o?o=!1:c+=t?",\n":",",c+=t?s+'"'+i+'": ':'"'+i+'":',(c+=a(e[i],t,s,r)).length>r))return c+"...";return c+(t?"\n"+n+"}":"}")}(e,t,n,r):void 0}var c=n(9791),l=n(4188);function h(e){var t=e.container,n=e.json,o=void 0===(o=e.queryDescription)?'Enter a JMESPath query to filter, sort, or transform the JSON data.
    To learn JMESPath, go to the interactive tutorial.':o,h=e.createQuery,d=e.executeQuery,u=e.onTransform,f=n;o='